naza2frsky - адаптер смартпорта для FrSky за 3$

alezz

Есть такой замечательный проект адаптера naza под S.Port FrSky как NazaToFrSky code.google.com/p/nazatofrsky/ Все хорошо но в качестве адаптера используется не дешевая плата Teensy 3.1 Родилась идея адаптировать код под Ардуинку, например самую дешевую Arduino Mini Pro. Сказано - сделано:

Работает только в новом режиме телеметрии D16, со старыми приемниками серии D использовать не получится. Еще было опасение потянет ли “грибок” назы аж три устройства: саму назу, minnazaOSD и naza2frsky, как позже показала практика - тянет.

В данный момент пишется:
Координаты GPS, высота GPS, количество спутников (в ячейку Current), курс по магнитному компасу. Должна писаться скорость, но это пока не проверено. То что мы хотим видеть на экране аппы указываем в компаньоне:

Кроме того, мне всегда интересно что творится с моторами у назы в полете, поэтому сделал 4 входа на которые можно подать PWM сигнал, ячейки в которые пишутся соответствующие уровни обозначены синим на рисунке выше. На основе логов теперь можно рисовать в Excel вот такие картинки:

Видно что передние моторы недогружены, что не удивительно учитывая снятый подвес спереди 😃

Но, конечно, самое основное это GPS координаты. Благо компаньон теперь поддерживает переход в GoogleEarth:

Соответственно можно разглядывать свои закарлюки на спутниковых картах, это то чем могли похвастаться АРМовцы, но не могли назаводы:

В принципе этот адаптер можно использовать не только как адаптер для назы, но и как универсальный под любой контроллер (нет смысла для АРМ т.к. там уже есть свой шикарный проект diydrones.com/…/amp-to-frsky-x8r-sport-converter) В экспериментальных целях добавил 3 аналоговых входа, ячейки AccX, AccY, AccZ - проверил, работает. В итоговой прошивке отключил, т.к. мне без надобности, но включить в исходнике проблем нет, нужно расскоментарить 3 строчки

В принципе еще есть над чем поработать, разобраться со скоростью, климбом (должен писаться но почему-то не пишется), добавить дату и время по GPS и т.д. Так что подключайтесь, исходники (и готовую прошивку) прилагаю. Хотя и в таком виде работает, правда в связи с нелетной погодой удалось сделать только один пробный вылет 😃 Так что большой статистики пока нет, да и таранису моему аж 3 дня

naza2frsky.cpp.rarnaza2frsky.rar

kostya-tin

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

czuryk
kostya-tin:

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

Я бы сказал даже нужно. Через делитель легко оцифровывается и передается.
Так же неплохо бы подумать как передать емкость батареи.
С учетом, что у ардуины при этом остается много свободной периферии, можно еще что то из датчиков прицепить.

ssilk

Хорошая штука… Вот если бы кто такую к другим приемникам прикрутил… Не у всех же таранис…)

alezz

адаптер по идее должен работать с любым приемником с новой телеметрией D16 (целых три штуки пока есть X8R, X6R, X4R), на какую аппу передавать в принципе все равно. Просто на таранисе все удобно и понятно

По поводу датчиков - напряжения, тока и т.д. Написал же что опробовал три аналоговых входа ардуинки - все работает. Естественно пишет уровни, чтобы пересчитать в понятное напряжение нужно добавить математику (одну строчку) или на передаче или на приеме, можно пересчитывать уровни в реальные значения уже в аппе, тот же таранис lua скрипты поддерживает

ssilk
alezz:

на какую аппу передавать в принципе все равно

Я имел ввиду приемники не Фрскай вообще, у меня, к примеру, 2 футабовских телеметрийных приемника есть… И аж 6 страниц телеметрии в аппе можно назначить… )

czuryk
alezz:

адаптер по идее должен работать с любым приемником с новой телеметрией D16 (целых три штуки пока есть X8R, X6R, X4R), на какую аппу передавать в принципе все равно. Просто на таранисе все удобно и понятно

Видимо автор сообщения имел в виду передатчик.

По поводу доп датчиков, я вот думаю компас поставить, или компас есть в Назе? И он отдает данные с него по телеметрии?

И еще если хотите мерить напряжение аккума, на котором висит сама ардуина через стаб, нужно в скетче включить опорное напряжение.

alezz

ну извините ребята нету у меня футабы, чем богаты как говорится 😃

czuryk:

По поводу доп датчиков, я вот думаю компас поставить, или компас есть в Назе? И он отдает данные с него по телеметрии?

написал же

alezz:

В данный момент пишется:
Координаты GPS, высота GPS, количество спутников (в ячейку Current), курс по магнитному компасу.

czuryk:

И еще если хотите мерить напряжение аккума, на котором висит сама ардуина через стаб, нужно в скетче включить опорное напряжение.

фишка то в чем, взять ардуинку за 3$ и сделать то что ты сам хочешь! Самое ценное из того что уже готово это передача данных в смартпорт. А что вы будете передавать, ограничение только в вашей фантазии, по сути я то предложил не готовое коммерческое устройство, а набор сделай сам 😃

czuryk
alezz:

фишка то в чем, взять ардуинку за 3$ и сделать то что ты сам хочешь!

Это воотще уникальная ценность ардуины. Потратил 3$ и открыл для себя целый мир)

alezz:

А что вы будете передавать, ограничение только в вашей фантазии

Собственно этим и занимаюсь)))
Но если честно - очень трудно себе представить чего еще летательному аппарату не хватает)) Может быть маленького 3д принтера?)
А если серьезно, хотелось бы кодключаится к CAN-у, чтобы получать данные от Назы по ее ошибкам и дешифровывать их голосом самого тарансиса. Но к сожалению у 328p только один UART, а софтварно данные на 115200 не разобрать.

alezz
czuryk:

А если серьезно, хотелось бы кодключаится к CAN-у, чтобы получать данные от Назы по ее ошибкам и дешифровывать их голосом самого тарансиса. Но к сожалению у 328p только один UART, а софтварно данные на 115200 не разобрать.

ну так бери не с “грибка” а прямо с CAN шины, UART хоть и один но ни кто не заставляет брать и оттуда и оттуда одновременно. Протокол CAN шины практически сломан www.rcgroups.com/forums/showthread.php?t=2071772
единственное что нужно еще это CAN трансивер, что несколько усложняет жизнь и удорожает решение

czuryk
alezz:

единственное что нужно еще это CAN трансивер, что несколько усложняет жизнь и удорожает решение

Ну на ali SN65HVD232Q продают 10шт по 600р ( по одной не хотят ), 600р по мне так не слишком большая цена за такой функционал.

Можно с кем нибудь из Питера скооперироваться взять 50/50.

alezz

если честно, меня в первую очередь интересовал трек с GPS координатами, плюс крайние зафиксированные координаты на экране аппы, в первую очередь как страховка при попытке улета в Китай 😃 С режимами работы назы как-то и по светодиодам сориентируюсь на OSD 😉

czuryk

Меня тоже больше GPS волнует.
А данные по режимам назы отображаются на iOSDmini? Я что то не заметил.

alezz

я в первом посте писал что использую minnazaOSD rcopen.com/forum/f123/topic340007 Там полетные режимы (и частично ошибки) отображаются на экран по светодиодам, пыхи светодиодов дублируются на экран тоже. Конечно это способ так себе, но зато все что нужно это 3 резистора 😃

czuryk

Ну у меня уже есть iOSDmini… выкидывать ее как то жалко. Да и к тому же я по очкам летаю, а если на них всякий избыток информации выводить - плохо видно. Вместо изображения с камеры сообщения рассматривать))
Удобней по мне так, чтобы таранис их голосом проговаривала. Так что наверно после того как реализую Ваш проект, буду потихоньку ближе к CAN-у подбираться)))
А пока можно прилепить RGB-сенсор к назовской мигалке и интерпритировать ее ардуиной. Тоже конечно колхоз… но…

alezz
czuryk:

А пока можно прилепить RGB-сенсор к назовской мигалке и интерпритировать ее ардуиной. Тоже конечно колхоз… но…

ну я как бы намекаю, что в опенсорсной minnazaosd есть готовая библиотека NazaLed которая занимается декодированием этих пыхов. Прикручивайте эту библиотеку к naza2frsky и заставляйте говорит ваш таранис, если есть такое желание 😉 Всего то нужно - три резистора

alezz

Обновил naza2frsky По сравнению с первой версией сделано много изменений:

  • оптимизирован диалог по смартпорту, теперь адаптер отвечает только на то что его спрашивают
  • оптимизирована обработка данных от назы, ранее были замечены замирания в обработке данных которые лечились только перезагрузкой, надеюсь баг в прошлом
  • в лог пишется дата и время по GPS
  • добавил сглаживание PWM входов
  • самое интересное, разобрался со входами А2, А3, А4. Фактически открыта дверь для подключения аналоговых датчиков (любых). Теперь вместо количества спутников в ячейку current пишется статус GPS в ячейку А2. Статус = кол-во*спутников + тип фиксации, например статус 83 значит что наза видит 8 спутников, тип фиксации 3D

naza2frsky.cpp.rarnaza2frsky.rar

Михаил_Карпов
alezz:

Обновил naza2frsky

Что бы не было бардака, советую добавить куда-нибудь номер версии.
Либо рядом файлик положить типа ридми.тхт, или в ino вшить в шапку.
А то в naza2frsky.ino есть версия, но она как была 0.1 так и осталась.
В README.md вообще ничего.

alezz
Михаил_Карпов:

А то в naza2frsky.ino есть версия, но она как была 0.1 так и осталась.

хорошо, в будущем обращу внимание. Но надеюсь это финал 😃

czuryk
alezz:

хорошо, в будущем обращу внимание. Но надеюсь это финал 😃

Ну может народ раскачается форков еще понаделает.
Кстати исходники лучше хранить на GitHube в репозитории.