sxosd

sardonyx

Начну с названия. SXOSD - сокращение от SardonyX’ OSD.

Делалось для себя. Может пригодится и другим самодельщикам, поэтому выкладываю здесь.

Исходники открыты, написаны на C с вкраплением асма. Заточено под AVR-GCC тулчейн. Собирается независимо от платформы под Windows, Linux, Mac и пр. Старался подстроится под следующие принципы: небольшая цена, простота изготовления, использования и ремонта, надежность, понятность интерфейса.

Вся инфа по сборке собрана тут: code.google.com/p/sxosd/

Ключевые элементы: ATmega8, LM1881, GPS - модуль. Скажу сразу, со smalltim osd прошу не путать, схемотехническое решение я подсмотрел здесь: www.garydion.com/projects/videoverlay/, а программное здесь: www.rcgroups.com/forums/showthread.php?t=1473207

GPS может использоватся любой, который выдает RMC и GGA-строки через UART при 4800 bps. Я пробовал em406/1Гц, и mtk3329/4Гц.

Отображает

  • полетное время до 99 минут
  • два напряжения до 20В
  • rssi в процентном значении
  • скорость где-то до 350 км/ч (зависит от GPS)
  • высоту до 9999 м
  • расстояние до 65535 м
  • направление на базу в градусах и стрелками.

Размеры, вес
SXOSD: 66х39 мм, вес 17г
GPS: 17х35мм, 8г

Плата еще дорабатывается, но в целом рабочая. SMD версию самой платы телеметрии сварганю позже, когда будет свободное время.

Тестовый полет длился не долго, у приемника аппы управления уменьшился радиус действия после последнего ремонта, носитель ezstar, камера ccd killer, видео lawmate 2.4, помехи от wifi (ноут)

Partisan

С высотомером проблемка? Может ещё кол-во спутников показывать?, а то может из за этого высоты лажает, (спутников маловато наловил, а уже в полёт.)

flygreen

Зачет. До ума довести и будет хорошая альтернатива изи осд.

sardonyx
Partisan:

С высотомером проблемка? Может ещё кол-во спутников показывать?, а то может из за этого высоты лажает, (спутников маловато наловил, а уже в полёт.)

Я даже не обратил внимания 😃 Вывести кол-во спутников можно, но не в этом проблемка. MTK3329 на открытой местности стабильно ловит 3D-fix. Перед полетом GPS был запитан минут 10 (в это время я корректировал ц.т.) и давно уже нашел нужное кол-во спутников. Проблема в погрешности определения высоты GPS-модулем, а это где-то +/- 20м. Меня устраивает данный разбег показаний. Можно было бы поцепить бародатчик, но это уже выход за пределы концепции “для простых задач - простая осд-плата”.

flygreen

А, где hex можно взять ? Что-то я codegoogle не узрел код .

sardonyx
flygreen:

А, где hex можно взять ? Что-то я codegoogle не узрел код .

Я намеренно не выкладывал, т.к. настройка предполагается через config.h до этапа компиляции. Как собрать под Windows поэтапно есть в code.google.com/p/sxosd/wiki/FAQ. Если что не понятно - объясню.

Dacor

Все здОрово. Но почему на английском языке? Мне кажется есть смысл “разжевать” все по-русски.

flygreen

B все-же hex стоит выложить. Один универсальный. Многие не смогут скомпилировать. На счет русского согласен. Думаю самодельщики сказали бы вам болшоее спасибо за доступную и понятную разработку.

sardonyx
Dacor:

Все здОрово. Но почему на английском языке? Мне кажется есть смысл “разжевать” все по-русски.

На английском языке от того, что я ориентировался не только на русскоязычную аудиторию. А английский язык как бы стандарт де-факто для международного общения. Так и для комментирования исходников.

offtop: меня дико напрягают комментарии на немецком в исходниках mikrokopter - так сказать писали только для себя - это национальный эгоизм.

Понимаю также, что на территории Ex-USSR многие учили немецкий, французкий и пр., у некоторых просто не сложилось с языками, поэтому постараюсь максимально разжевать на русском.

У многих вопрос с сборкой исходников начну с нее. Так как многие сидят под Windows, расскажу на примере этой ОС.

Скачиваем исходники из svn-репозитория используя прогу downloadsvn.codeplex.com указав при этом путь sxosd.googlecode.com/svn/trunk/ . В качестве каталога назначения указываем любую папку (желательно пустую). Нажимаем старт. После синхронизации исходники должны появится в этой папке.

Далее скачиваем toolchain компилятора (связку утилит по-нашему). Сборок под Windows окружения AVR-GCC достаточно много. Я рекомендую сборку от MHV www.makehackvoid.com/node/578/release. Так как она наиболее свежая. WINAVR давно не обновлялся

Запускаем консоль из меню “Пуск” - MHV AVR Shell , т.к. она содержит в переменных пути к заголовкам. Если просто cmd запустить, компилятор не сможет найти их (хидеры). Переходим в католог с исходниками использую команду cd <путь>.

Редактируем config.h и Makefile по мере необходимости. Редактор должен автоматом определять различные варианты конца строк, например WordPad. В Makefie меняем строки PROG=avrispmkii и PORT=usb на то, чем вы собираетесь прошивать. Подробная инфа в файле <путь к mhv тулчейну>\bin\avrdude.conf. Примечание: для avrispmkii требуется libusb dirver вместо умолчального jungle. Часто используется программатор USB ASP, он так и называется usbasp или “пять проводков” - stk200, только надо проверить распиновку.

Для сборки выполняем команду make. Для загрузки на плату - make upload. Опробовал вышесказанное, собирается и прошивается нормально. Ничего сложного как может показаться. Все просто, делаем в описаной выше последовательности: скачиваем исходники -> редактируем config.h и Makefile -> make -> make upload

В принципе, кому надо HEX - выполняйте только ‘make’ - результатом будет sxosd.hex.

PS. Вот топик на RCG: www.rcgroups.com/forums/showthread.php?t=1842196
PPS. Я вел разработку под Linux. От того некоторые нюансы.

flygreen:

B все-же hex стоит выложить. Один универсальный.
Многие не смогут скомпилировать.

Если призадуматься, то можно было бы два hex’а выложить, под два варианта
платы: с жпс и без. То есть без жпс будет тупо верхняя строка с временем и
напряжениями отображаться и все. На текущий момент это можно осуществить
комментированием USE_GPS в config.h. Сложнее с rssi, сейчас в конфиге
задается верхний и нижний пределы и чуточку попозже добавлю возможность выбора
нормального или инвертированного сигнала. Но если делать универсальную
прошивку, то прийдеться пожертвовать процентами - будет просто напряжение в
вольтах - так пойдет? Как по мне ужасно неудобно считывать, особенно когда
максимальный сигнал соответсвует минимальному напряжению. Делать калибровку
через меню мне влом и это выход за концепции платы.

2 months later
sardonyx

Универсальный hex с отображением вольтажа RSSI (не в процентах): sxosd.googlecode.com/svn/trunk/sxosd.hex
Универсальный hex для простого варианта без GPS (отображаются часы, и три напряжения):
sxosd.googlecode.com/svn/trunk/sxosd_wo_gps.hex

hfuse:0xC9
lfuse:0xFF

Переразвел плату в Kicad под smd (их выложу позже). Сильно не пинать, я еще только учусь.

jusupoff
sardonyx:

Переразвел плату в Kicad под smd (их выложу позже). Сильно не пинать, я еще только учусь.

Плату можно (и нужно) сделать в 1,5 раза меньше. А судя по картинкам можно в 2 раза ужать. Пощадки под пайку разъемов - 1,6-2,0 мм в диаметре. Пользователи туда руками будут пихать свои разъемы, ваши мизерные площадки в миг оторвут от платы. Не вникая в схему - плохо вижу нормальную разводку земли на плате. Также не вижу максимально близко к ногам МК блокирующих конденсаторов по питанию. Кварц надо максимально близко к ногам без всяких перепрыгиваний дорожек на другую сторону. Танталовые и керамические кондеры на входе по питанию.
Это на вскидку.
Иначе задолбаетесь ловить глюки от импкльсных помех. И еще (самое главное) правильно развести земпю. Одна точка, пока земли на плате не видно вообще.
Поверьте, эти мелочи обеспечивают работу конечного устройста. Сам на этих граблях стоял не раз.

sardonyx

Спасибо за советы, буду учитывать в дальнейшем. В качестве оправдания - плата работает что на lm7805, что на рекомовском импульснике одинаково, правда питание идет от отдельной батареи 😃 Но для питания от ходовой батареи надо что-то городить. Земля - да, знаю. Не стал заполнять пустые места ибо пока так удобнее для ловли тараканов и установки компонентов, размеры которых отличаются от заданных

5 months later
sardonyx
jusupoff:

Плату можно (и нужно) сделать в 1,5 раза меньше. А судя по картинкам можно в 2 раза ужать…

Ужал в два раза. Накидал фильтрующих кондеров. На питание - LDO. Предусмотрел несколько дополнительных контактов на будущее: два на вход АЦП, один выход. Можно будет задействовать в будущем, например, под датчики тока, температуры и повесить пищалку.

Размеры.
OSD: 40x19 мм, вес 5 г
GPS: 30x17 мм, вес 8 г

На данный момент работаю над косяками, которые допустил при разводке. Попутно пишу простую графическую конфигурялку прошивки (win/lin/mac, rus/eng).

Работаю вяло, допилю не скоро.

1 month later
sardonyx

Дописал конфигурялку. Есть предложение поучаствовать в тестировании. Раздаю бесплатно несколько комплектов плат в обмен на отзыв/тестовое видео. В ввиду неактуальности стоимости доставки зарубеж, заявки принимаю только от жителей Украниы (коих тут не мало). Кол-во розданных комплектов будет зависеть от кол-ва заявок. Единственное условие от меня - наличие рабочего носителя со всем необходимым для фпв. Чтобы не затянулось до лета. Если кому придется отказать - не обижайтесь.

16 days later
sardonyx

В общем на данный момент уже получили/в ближайшее время получат комплекты для тестирования следующие пользователи:

fat.hamster (уже вышел из тестирования - потерял модель)
Molotov
Raider
Dacor
hotoj
SanRomStaV
sergey-1t91
alexmx

Замечания постараюсь учесть и исправить по мере возможности.

PS. Ссылка на конфигурялку (сборка под win): sxlab.info/stuff/sxosd_fw_tools.zip [62MB] Включает в себя AVR-GCC и пайтон, запускается из распакованного архива.

Shuricus

Было бы круто, если можно было его подключить к назе и к Арду.

Хотел уточнить, в чем отличие от кучи похожих осдешек с хобиткинга?

sardonyx

Не вижу смысла адаптировать sxosd под коптеры. Она больше самолетная. У каждого коптерного мозга (их валом) свой протокол обмена данными с osd. И у почти каждого мозга есть своя родная осд. Если делать универсальную - то надо дублировать датчики, которые на коптере и так пристутсвуют. В текущем виде при нулевой скорости не будет показывать направление на базу. Впрочем, никто не запрещает самостоятельно адаптировать под собственные нужды - проект открытый.

Я сильно растянул проект по времени. Начал, когда на ХК ничего не было. Сейчас действительно валом похожих. И не только на ХК. Просто я делал под себя, с учетом того, что мне не нравилось в других осд и довел проект до более-менее юзабельного состояния. Вот. Насколько оно востребовано будет другими пилотами - покажет время. Я не гонюсь за универсальностью и учетом всех мнений, у меня свои планы на применение осд. Отмечу только, что возможно (до этого еще очень далеко) она будет интегрирована в RTF-комплекты.

Shuricus

Дело в том, что адаптировать практически уже ничего не надо - все прошивки для упомянутых выше вариантов готовы. Протокола ровно три - Наза, Арду, Мультиви. Для них для всех есть одна единственная ОСД - Миним. На ней часто горит чип, и нет удобного подключения расширений.

Ваш вариант адаптируется только правкой готовых прошивок и добавлением нескольких входов на атмегу. Никакие датчики вообще не нужны и даже ЖПС - все данные идут с полетного контроллера. Я бы еще интегрировал ЛЦ фильтр по питанию.

В результате получаем замечательную альтернативу Миниму, на которую спрос будет просто огромен. В отличии от этой версии, поскольку на серьезных самолетах все летают с такими ОСД как я описал, а для полетов вокруг себя ОСД с ЖПС не особо нужен, либо можно купить пачкой на Хобях.

hotoj

Я тоже за интеграцию с протоколом mavlink

sardonyx

Платформ хватает. Из открытых как минимум стоит упомянуть openpilot, uavp и mikrokopter. Сам летаю на МК с EPI-OSD. И именно под МК я бы не стал адаптировать - меня устраивает EPI, хоть она на том же MAX7456 как и миним. Согласен что эта микруха ненадежна - ставится в разрыв, греется и нередко вылетает. Но ведь есть такой проект как мобидрон. Чем не вариант?

Я предпочту ограничится определенным ф-ционалом своей осд в том виде как есть. Лишь немного усовершенствовав. У меня накопилось достаточно незавершенных проектов и я ленив. Мне бы свой вылизать код, а вы тут предлагаете в чужом ковыряться 😃 И как я уже отметил, проект открыт. Есть желание - улучшайте, адаптируйте.

STRIMSS

Артур, где покупали комплектующие? Начал собирать платку сам, если заказывать все в магазинах России, выходит дороже чем купить осд с хобей.

sardonyx

Будете первым 😃 Делаете THT (through hole technology) версию? Когда я только начинал эксперименты, то пошел в местную радиолавку в Херсоне и купил все необходимое. Даже учитывая, что цены в розничных магазинах в регионах с приличной наценкой (и в Херсоне всего по сути один такой магазинчик - конкуренции нет), мне обошлось это все примерно в $6 (50 грн на то время). Причем две детальки: мега и элэмка составляли львинную долю этой цифры. Рассыпуха обошлась где-то в $1. Все равно ниже раза в два чем на тех же хобях (хотя смотря с чем сравнивать)

Я не мониторю цены российских поставщиков, но к примеру в том же харьковском Космодроме цены заметно ниже чем на местах. То есть по идее если заказывать в инете - должно выйти еще дешевле. Но я специально выбирал такие комплектующие, чтобы не было проблем достать их, должны быть в любом “хуторе”. Не думаю, что Орле так туго с этим.

STRIMSS
sardonyx:

Делаете THT (through hole technology) версию?

Если правильно понял- то да. Заказал половину деталей которые россыпью продают, остальные не менее 100-1000шт только партиями не стал, на работе в старых платах поищу. Осд больше ради интереса стал собирать чем за необходимостью (на коптере и бикслере AIOP-ы стоят с минимосд), а это на одноразовый пенолет можно 😁
Кстати, что за атмега на , не 328p?

sardonyx

А-я-яй, Иван! Невнимательны 😃 В первом посте этой темы есть указание, что вся информация по проекту собрана здесь: code.google.com/p/sxosd/ Переходим по ссылке, там сразу же видно ссылку на инфу по плате: code.google.com/p/sxosd/wiki/PCB, где собственно есть список всего необходимого (BOM - bill of materials).


refdes          description     pack    value   qty
============================================================
Q1              crystal         -       16 MHz  1
C1,C2           capacitor       -       22pF    2
C3,C4,C5,C6     capacitor       -       0.1uF   4
R2              resistor        1/8W    100     1
R3              resistor        1/8W    10      1
R4              resistor        1/8W    680K    1
R5,R8           resistor        1/8W    330     2
R1,R6,R7,R9     resistor        1/8W    1K      4
IC1             ATmega8         DIP28   -       1
IC2             LM1881          DIP8    -       1
IC3             LM7805          TO220   -       1
ISP             Header 6 pins   -       -       1
L1              inductor        -       10 uH   1
POWER,RESET,
BAT1,BAT2,RSSI  2pin connector  -       -       5
D1              1n4004 diode    -       -       1
D2,D3           1n4148 diode    -       -       2
GPS,VID_CONN    3pin connector  -       -       2
LED1            3mm LED         -       -       1

Жирной строкой я выделил микроконтроллер.

В приведенной вами табличке 88 мега в корпусе смд, просто восьмая - в DIP корпусе. Вам, по идее, нужно последнее. На текущий момент код заточен под восьмую мегу.