OSD на ATmega1281

Vlado

Итого 16 байт, для скорости 4800= 26,6 мс.
Период передачи пакетов 30 мс.
Поочередная передача (и надеюсь прием…) пакетов на одной из 2 частот.
Проще- невозможно, сложнее- имхо не к чему.
С OSD планирую связь по SPI-подобному протоколу ( с передачей,кроме собственно значений каналов, уровень RSSI и кол-во дропов в сек) с относительно медленной скоростью ( 1 бит за TV-строку).

4800 это еще терпимо хотя напрашивается 1200 и 2400. Можно обойтись полосой 45 кГц как говориться как с куста вынь и полож. Там еще надо включать вайтенинг и этот забыл… где нолики и еденички кодируются переходом, дабы избежать постоянной составляющей, ведь там FSK, непосредственная модуляция а то уведет несущую.
А с софтом надеюсь что поделитесь:) а то со временем катастрофа. Еще бы неплохо обратно координаты и остальные параметры что бы вслепую летать.

Иван

присоединяюсь - есть 3 штуки 23х рфмов, 2 на платках уже и чот нивкакую не заводятся:( убил на них 2 недели, видно что обмен между мк и модулем идет но гдет я неправильно мыслю:( - перредать ничего не вышло, так и лежат уже 2 месяца

msv

Реализовал подобие FHSS, немного причесал код для приемника и передатчика (тест) + конфигуратор/загрузчик:LRS433_test.rar
Хоть и слеплено все на скорую руку, работает на удивление стабильно.
Всех с наступающим!

Vlado
msv:

Всех с наступающим!

Пользуясь случаем в этой ветке всех с Новым Годом!
Код скомпилился без ошибок спасибки, но подозреваю мне может не подойти.
Навскидку, еще не поизучал код. Конфигуратор? Может все же в коде таблицу с регистрами это более универсально и не привязанно к диапазону. Далее по параметрам, навскидку девиации приемлимые получались ±45кГц а там вроде такого нет. А так конечно здорово, требуем продолжения:)
пусть всем будет Jazz ( не путать с дизель генератором язз 30)

Syberian
Vlado:

пусть всем будет Jazz

ЙАААЗЗЗЬЬ1!111

Желаю Сергею вылезти из беты, не распыляться и довести свой однокристальный шедевр ОСД+АП до серии! Пусть злопыхают поклонники АРМ и DSP, есть еще виртуозы в AVR и мы еще не сказали свое последнее CLI RJMP -1 😉

avisenja

может кому интересно: !!! НЕ РЕКЛАММА !!!

Есть чел в гонконге, предложил меги1281 по 8,80 дол, оплата через пайпал, если кому интересно дам его адрес.

msv

Всех доброжелателей с Новым годом! И спасибо! Вдохновляете на новые трудовые подвиги…
В редких перерывах между затянувшимися отмечаниями Великого народного праздника, дописал-таки вчерне софт LRS… Передатчик принимает PPM, приемник выдает PWM по своим каналам и передает по UART для АП/ОСД. Вполне удовлетворен 8 битовой разрядностью на канал. Особенно когда поставил в передатчике гистерезис в половину ширины квантования, вообще никаких життеров не стало, сервы ( хоть цифровые, но самые дешевые с ХС) очень точно отрабатывают движения стиков. В диапазон 8-бит загнал значения от 0.8ms до 2.2ms. Даже когда со стика в крайних положениях идет от 1 до 2мс (те, используется на полных ход стика всего ~180 квант из 256) нужно сильно постараться шевельнуть стик так, что-бы значение канала изменить только на 1.
АП/OSD уже принимает (и понимает) значения приемника по UART. Особенно понравилось, что теперь “палки” качества сигнала показывают не абстрактных попугаев, а вполне конкретные dbm (пока от -70 до -20 с шагом 10). Хотя с получением значения RSSI в приемнике немножко пришлось повозиться, пока не понял, что он выдает уровень именно в момент чтения, те у меня первоначально получалось на границе между пакетами…

targetorsk
avisenja:

может кому интересно: !!! НЕ РЕКЛАММА !!!

Есть чел в гонконге, предложил меги1281 по 8,80 дол, оплата через пайпал, если кому интересно дам его адрес.

Напишите плз сюда или в личку

Vlado

доброжелателей с Новым годом!

И Вам того же.

новые трудовые подвиги…

Эта завсегда.

Великого народного праздника, дописал-таки вчерне софт

О, на это и надежда, праздники длинные.

принимает PPM, приемник выдает PWM по своим каналам и передает по UART для АП/ОСД.

а как насчет параллельного обратного TX канала через RFM22?

АП/OSD уже принимает (и понимает) значения приемника по UART. Особенно понравилось, что теперь “палки” качества сигнала показывают не абстрактных попугаев, а вполне конкретные dbm (пока от -70 до -20 с шагом 10)

А ну с палками ИМХО актуальнее диапазон от -100dBm что бы не прозевать момент когда вырубят, да и задача OSD вернуть на базу.
Вот так вот мотивируем а когда ознакомиться поближе сможем:)

msv

Обратный канал пока не планирую. Летать по приборам не интересно, да и 100мвт линк вряд-ли обеспечит надежную связь на вменяемых расстояниях. Правда приемник при потери канала периодически включается на передачу, для поиска gmrs рацией (режим - “маяк”).

Vlado:

актуальнее диапазон от -100dBm

Сейчас много по работе приходится заниматься установкой WiFi подобных систем на 2.4 и 5.8. Практика показывает, что при уровнях меньше -75…-80 даже со стационарными антеннами вне крупных населенных пунктов ни о какой надежности канала говорить не приходится. 433 имхо несравнимо более шумный диапазон, поэтому -70 выбрал нижней границей именно

Vlado:

что бы не прозевать момент когда вырубят

. Практические испытания покажут куда скорректировать эти границы.
Выложу все hexы/исходники тоже после полевых испытаний, те. не раньше весны (если будет положительный результат конечно…).
Сейчас надо дописать еще режим бинда приемника, а то пока приходится конфигурацию вливать по uart и в передатчик и приемник.

Vlado

полевых испытаний, те. не раньше весны (если будет положительный результат конечно…).

А весна это когда (это когда выборы)? А как мы подготовимся к встрече кода, нужно жеж железо подготовить😒
Я тут чьи-то уши прожужал по поводу propagation losses. Получается по грубым
прикидкам на 10 км -129.5dB а энергетика канала при front end 30dBm - 165dB
и антеннах по 8dBi остается в запасе 35dB вполне может хватить и на 100мвт и приличный SNR.

WiFi подобных систем на 2.4 и 5.8

А что ставим? Cisco?

alexeykozin

2 msv возможно ли ваш проект использовать в сокращенном виде?
собственно очень интересует осд система для Ardupilot и ArdupilotMega, кто то заметит что осд для нее уже придумали и она скоро будет в продаже, но она основана на схеме ремзиби, у нее три существенных недостатка
1 очень дорогая микруха видечипа
2 прожорливая по току эта микруха по тактильным ощущениям не меньше ампера
3 закрытый программный код - ни продебажить ни понять чего он от тебя хочет.

За прошедшие полгода я спаял и протестировал “вдоль и поперек” плату сенсоров которая ardupilot imu v2 flat (это типа 6DOF ) 3D гиро + 3D аксель, вход жпс, возможность подключения компаса с отлаженным кодом их обработки, есть библиотеки под баро, на выходе по сериалу устройство выдает результат в простом и понятном виде. логично было бы его применить вместо пиродатчиков. Кстати себестоимость деталей вполне сносная - около 1500р

лично моя потребность это осд система без дорогих и прожорливых по току деталей, в которую по сериалу можно передать данные о горизонте и вывести в определенное место на экране показания датчиков телеметрии (возможно также по сериалу передавать координаты начала строки и желаемый текст)
а функции стабилизации и навигации от дать на откуп ардупилоту, такое решение упростило бы код за счет что не надо учитывать кучу прерываний - один процессор - одна функция - ОСД, но надежная и универсальная.

поскольку задача не такая уж и простая, позвольте несколько вопросов

  • я особо в с++ и тем более в ассемблерных вставках не кумекаю, возможно ли это реализовать в среде более всокого уровня, на Arduino?
  • какой чип следует выбрать? обязательно 1281 или потянет 328 / 1280 / 2560? (эти чипы поддерживает ардуино )

если вам интересена тема заменить пиродатчики на ardupilot imu v2 flat
я бы мог посодействовать бесплатно выслав заводскую печатную плату (я заказывал в резоните для себя, но при заказе одной ценник 2000р а 20шт стоят 2500, вот я и заказал с запасом)

2 all
в теме было еще обсуждение, про 10 герцовые жпс, и утилиту MiniGps 1.4
я в последнее время активно пробиваю тему поиска надежного и точного приемника, попутно нарыл последнюю версию, 1.7 - в ней особо нового не прибавилось, но опция 10 герц есть, я пробовал один из своих модулей, реально вываливает десяток строк с одной секундной меткой при записи в лог,
если кому надо качнуть можно тут: hobby.msdatabase.ru/…/ardupilot-gps

для отображения вкладок setup нажмите Ctrl + Alt + S

Syberian
alexeykozin:

какой чип следует выбрать? обязательно 1281 или потянет 328 / 1280 / 2560?

Ардуино, точнее, GCC, допускает ассемблерные вставки, но там настолько все мутно, что не стоит связываться.
Без ассемблера при скорости атмеги 16 МГц возможно делать только унылые текстовые ОСД с огромными буквами.

Выбор чипа при одинаковой тактовой определяется его объемом SRAM - это напрямую связано с тем, что нужно выводить на экран. Если это более-менее пристойная графика, то нужно делать экранный буфер на весь экран (ширина*высота). При разрешении 128х128 пикселей это 2 кБ памяти только под буфер. 240х240 (практически максимум для атмеги по разрешению) - это 7.2кБ. 8 кБ памяти имеют 1280, 2560, 1281…
Если тупо 4 строки по 20-40 знаков, то подойдет любая атмега, т.к. буфер только символьный 160 байт, а шрифт берется из flash.

Для примера, как все работает, в т.ч. ассемблерные вставки, посмотрите MegaPirate OSD - перешитый Hobbyking E-OSD, исходники открыты, автор йа. Там и графика, и текст, а чип - всего лишm atmega88. Видео по сети тоже валяются.

alexeykozin

спасибо огромное за ликбез!
и за код и за выкладку по ттх чипов.

сразу возникла гипотеза- вопрос как к автору что если к примеру не весь экран держать в рам, а поделить на несколько зон,
и к примеру если брать за раскладку сабжевое осд - есть средняя зона в которой искусственный горизонт - его черточки можно высчитать и на лету в на верхнюю и нижнюю части для вывода текста затратить рам?

или держать в рам не весь экран а подготавливать процессу выводящему биты несколько строк налету?

Syberian

Собственно, так и сделано в мегапирате 😃 В центре панель 64х64 точки, индикатор крена, тангажа и указатель “домой”.
Сверху и снизу по 2 строки по 40 символов + одна статусная строка с мигающими символами всяких аварий, 5 символов.
Центральная панель держится целиком в памяти, а вот строки - это один массив в 160 байт, в котором только ASCII-коды символов. В строчном прерывании знакогенератор (программный) подставляет соответствующие символы из шрифта.
В принципе, можете повторить (или даже купить - $12) схему Е-ОСД, там кроме резисторов, пары кондеров, atmega88 и одного транзистора ничего нет. Кварц там на 24МГц: разогнали чип. Распространения переделка не получила, т.к. для получения ком-порта нужно паяться к ноге микрухи в корпусе 5х5мм 😃

У меня на ютубе есть несколько роликов с megapirate osd
www.youtube.com/user/syberian1980?feature=mhee

Если есть какие-то еще вопросы, пишите в личку, не будем тему Сергея засорять.

msv

Да я не против… 😃 А то мои монологи уже всем надоели…

alexeykozin

2 msv
вовсе нет, очень интересно, даже неудобно лишний раз спросить…
в обсуждении была картинка с алгоритмом автопилота (страница 2 пост 54) , я распечатал чтоб изучить но не читаются надписи, непонятно. хорошоб покрупнее

Vlado

А то мои монологи уже всем надоели…

Отнюдь, все по делу, ждемс не дождемся исходников.

Syberian

Даже если Сергей их выложит, там, подозреваю, черт ногу сломит. Сплошной асм. Имею в виду ОСД. Другими средствами такую красивую картинку не получить, да еще и навигация…

Vlado

если Сергей их выложит, там, подозреваю, черт ногу сломит.

Ну дык уже влез, железо на мази, приходится на кого то полaгаться. Тут по ходу присматриваюсь к OpenPilot GCS.

msv
alexeykozin:

была картинка с алгоритмом автопилота…

Сейчас она малость устарела… Будет время, пройдусь по коду, обновлю… Кстати тогда был разочарован, что не было никаких вопросов, замечаний, предложений…

ВитГо

Кстати, Сергей, а генерацию видео при помощи SPI делаете или вручную сдвиг делаете ?

msv

К сожалению передающий регистр SPI в атмегах не буферирован и выводить им графику не получится. Приходится программно двигать. Ближе к началу темы есть исходный код вывода строки.

alexeykozin

простите за дилетантский вопросик, а в атмегах нельзя делать непосредственный сдвиг в выходном порту
типа portb<<1 ?
чтоб сдвиг за один такт, конечнож потеряются остальные выводы порта для использования с другим функционалом, но у атмеги их полно