Радиомодем 3DRadio на модулях HM-TRP с нуля

Решил состряпать запись по прошивке модулей HM-TRP для их работы в качестве радиомодемов для телеметрии.
Процесс оказался не особо интуитивно понятный, мало ли кому пригодится.

Собственно, что нужно для прошивки такого модуля в радиомодем 3DR?

  1. Сам модуль
  2. Программатор процессоров Silabs. Программатор для регуляторов оборотов на ардуине - подходит, но с оговорками. См. ЗЗЫ в конце записи.
  3. Компьютер с LPT-портом (можно с платой расширения)
  4. Windows 98 / XP / ME
    Пункты 3 и 4 в данный момент перестали быть обязательными - см. ЗЗЫ в конце записи.
  5. 3-вольтовый FTDI адаптер (или 5-вольтовый и стабилизатор на 3.3)

Итак. В модуле с завода залита родная HopeRF-овская прошивка. Надо её снести и записать туда загрузчик от 3DR.
Делается это при помощи программатора для процессоров Silicon Laboratories, работающего по интерфейсу C2. Родной программатор стоит порядка 30 баксов, и покупать его, чтобы прошить 2 платки - тупо. Процесс поиска альтернатив навёл на 2 разработки на ардуине (раз и два) и на 2 программатора от LPT. С ардуиновскими дело не заладилось. Наиболее похож на рабочий программатор от OlliW, который используется для программирования регуляторов оборотов, но к нему нет софта, который бы позволял залить любую прошивку в любой силабс - это дело жёстко заточено на регуляторы. Тем не менее - этот программатор правильно определил тип процессора, что говорит о его общей работоспособности. (что в общем-то и подтвердилось впоследствие - см. способ от Drinker-а)
Прошивка 3DR состоит из 2 частей - бутлоадера и собственно прошивки. С помощью С2 программатора достаточно залить только бутлоадер.
Бутлоадеры - разные для каждого из типов радиомодулей - 433, 868, 915 и 470 (?) МГц.
Я заливал бутлоадер при помощи вот такого LPT программатора:

Пользовался софтиной “Slabprog”. Для того, чтобы залить бутлоадер подключаем программатор к контактам модуля, обозначенными на картинке красными точками:

Также надо подать питание 3.3 вольта на контакты, обозначенные синим (3.3в) и жёлтым(GND). Я использовал для этого 3-вольтовый FTDI адаптер.
Далее. Грузимся в Windows XP. Я использовал грузящуюся с флешки WinPE. Запускаем Slabprog. Подключаем программатор к LPT порту. Подключаем питание к радиомодулю.
В SlabProg-е можно попробовать прочитать всю память модуля - у меня выдало ошибку. Зато определился процессор (16 05). Далее жмём “Open”, выбираем нужный бутлоадер, далее “ALLMEM ERASE”, “ALLMEM PROGRAM”, “ALLMEM VERIFY” (с небольшими промежутками). Потом жмём “DEVICE RESET” - на радиомодуле должен загореться красный светодиод. Это свидетельствует о том, что бутлоадер залит.

Дальше проще.
Отсоединяем питание, программатор, грузимся в основную рабочую систему, запускаем Mission Planner.
Радиомодуль надо подключить к FTDI адаптеру (3-вольтовому!) в соответствии с “боевой” схемой включения. А именно - по картинке выше, +3V: синяя точка, GND: жёлтая, TX (со стороны FTDI): зелёная, RX FTDI: голубая. (собственно, все контакты подписаны на обратной стороне, это я уж так, для полноты картины).
Фиолетовой точкой на картинке обозначен вывод, при замыкании которого на землю радиомодем уходит в режим бутлоадера (для обновления прошивки). Первый раз ничего замыкать не надо - модем и так находится в режиме бутлоадера.
В мишн планнере выбираем закладку “Initial setup -> 3DRadio”. Проверяем, какой порт выбран сверху справа (нужен тот, к которому подключен радиомодуль). Нажимаем “Upload firmware (local)”. Планнер должен найти модуль и начать вливать в него прошивку - красный светодиод на модуле будет мигать. По окончании - надо настроить модуль. Выбираем скорость 57600, жмём “load settings”, настраиваем как считаем нужным - ГОТОВО!

Вот, такой вот “3DR radio from scratch” =)

З.Ы. Кто знает нормальный программатор С2 на ардуине - поделитесь информацией в комментах, а то этот LPTшный гемор - никакой радости не доставляет.

З.З.Ы. Кому неохота заморачиваться с LPT и WinXP - несколько “бубновый”, но вполне рабочий способ прошить процессор от тов.Drinker:
Итак.
Качаем olliw.eu/…/ow-silprog-blhelitool-blhelibox-2013102…
Подключаем ардуинку (у меня нано) к компу, запускаем AvrBurnTool_v101 и шьём ейо. Теперь у нас есть программатор.
Далее.
Подключаем радиомодуль к земле и питалову ардуинки (у меня модуль напаян на платку со стабилизатором на 3.3в, поэтому я подал 5 вольт, голый модуль неадо подключить к 3.3в ардуинки).

Теперь.
Зырим сюда olliw.eu/…/owsilprog-arduino-nano-setup-02-02-wp1-…
Находим на радиомодуле ряд из 4 дырок. Нижний провод с фотки подключаем ко 2-й от проца дырке, средний - к 1-й. Верхний нафиг не нужен, мы уже к земле подключили модуль.
Прим. {gorbln}: если юзаем Arduino ProMini - подключаем 1-ую от проца дырку (C2CK) к контакту D11, а вторую (C2DAT) - к контакту D12 ардуины.

Качаем хексы бутлодера и радио …taulabs.org:8080/…/SiK_origin-master_20131212_074… - не работает, оставлено для истории
Качаем отсюда - drive.google.com/folderview?id=0B1eG0s2wbI2lYzZNOE…
Качаем мегадринкеропрошивальщик yadi.sk/d/Df6keA1GFkesi 😃 - не работает, оставлено для истории. Качать можно с того же гугл диска. Terminal.exe

Запускаешь дринкеропрошивальщег, выбираешь порт и скорость 38400
Внизу в строку вводишь строку rie
В ответ должно на каждую букву приити ответ ок.
Если так, то кнопкой open выбираешь хекс с бутлодером (у тебя bootloader~hm_trp~868.hex) и пошла прошивка.
После каждой строчки будет ок, кроме десятка последних. (это важно!)

Тут гимор начинаецца легкий.
Надо ЗАПОМНИТЬ какая строчка последняя с результатом ОК.
Открываем хекс на редактирование, удаляем последнюю строку (:00000001FF)
И с КОНЦА вырезаем все оставшиеся строки до последней с “ок” и вставляем их ПЕРЕД той самой строкой.

Повторяем процедуру (rie, open)
Вуаля - бутлодер прошит!

Дальше - как и описано - подключить к Mission Planner-у, прошить основную прошивку, настроить.

  • 14320
Comments
Lazy

Купил готовые модемы и есть мне щастие…

gorbln

Ну… Это неспортивно! А как же зуд в руках и желание съэкономить полцены? =D

Lazy

Сэкономить 40 баксов и потратить полдня? Как то у меня калькулятор не стыкуется. 😃

SergDoc

думаю на семёрке тоже покатит, только драйвер прямого доступа к портам нарыть?

gorbln

ну, драйвер, да. А ещё - исходники программатора. короче задача нетривиальная.

gorbln

Добавил способ прошивки для людей, обделённых LPT-ой =)
Спасибо тов. Drinker-у за это дело!

Prsh

Черт, подумал я, зачем ж я купил Toolstick!..но дочитал до слов “кроме десятка последних” и решил - а и ладно, пусть будет…😃 А если серьезно, то большое спасибо за информацию.

gorbln

На здоровие! Способ с ардуиной, конечно, не айс - но он работает (сам проверял) - и работает под вин7 и на компе без лпт, что актуально для ноутов. Я два дня протрахался с установкой WindowsPE на флешку, поэтому способ с ардуиной не так уж и плох. =)

karavaev

Готовый модем на 433Мгц
С самого начала эксплуатации постоянно рвалось соединение, оказались укомплектован антеннами не на ту частоту.
Купил новые антенны, вроде дома работал хорошо, поехал летать и соединение с модулем не установилось.
Теперь постоянно горит зеленый светодиод и моргает красный с периодом 1 сек. Такие симптомы были и раньше, но как то он оживал и работал кое как.

процессор (16 04)
Залил бутлоадер, затем “ALLMEM PROGRAM”, выполнить операцию “ALLMEM VERIFY” не получилось. Сразу загорелся красный светодиод.

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

Как можно его реанимировать?

gorbln

Net ID, частота и прочие нужные параметры правильно установлены?

karavaev

Я не могу подключиться к модулю через FTDI
Хотя прошивка заливается когда он находиться в состоянии бутлоадера

5yoda5

Здравствуйте, у меня другая проблема.
Модули друг друга видят - в МП отражается как параметры/номер прошивки наземного модуля, так и “удаленного”. Но через модуль - не коннектится “no heartbeat received”. Такое ощущение, что сам контроллер не видит модуль.

gorbln

А со скоростью-то точно всё нормально?

ST33

Здравствуйте, Егор! Спасибо огромное за подробную инструкцию! У меня как раз было два HM-TRP и необходимость в модемах 3DRadio 😃.
Прошивал через Ардуину. Получилось довольно быстро и просто.
Теперь вопросы: не получается скачать по этой ссылке “Качаем хексы бутлодера и радио jenkins.taulabs.org:8080/job/...546e1ab095.zip
Скачал бутлодер на 433 из первой части статьи (где про LPT). “Upload firmware (local)”, “load settings” “Save settings” проходят успешно.
Связь с Mission Planner получается установить 1 раз на 30 попыток (примерно 😃). С Droid planner (на Galaxy S2 и S3) вообще не коннектится. Светодиоды на модулях работают так: зеленый горит постоянно (иногда гаснет), красный мигает.
Модули рабочие - на заводской прошивке более 600 м уверенной передачи данных GPS.

gorbln

Поправил заметку - бутлоадеры теперь можно скачать с моего гуглодиска.

Странное поведение светодиодов. Такого быть не должно, попробуйте перепрошить всё заново.

ST33

Спасибо за оперативный ответ! Вечером попробуйю перепрошить.

ST33

Прошил новые бутлоадеры - связь с ПК установилась без проблем! С Андроидом (Droid planner) все равно не работает 😦. Поиск ответа в сети показал, что проблема может быть с версией прошивки Андроида. Буду копать дальше.

gorbln

Связь с андроидом не зависит от прошивки радиомодулей =)
Она зависит от того, видит ли андроид FTDI адаптер, встроенный в наземный модуль (в случае модулей 3DR - в случае самодельных - непонятно к чему подключать UART в андроиде)

ST33

FTDI адаптер не видит 😦 (у меня на PL2303 с ebay). Перерыл весь инет, в т.ч. и соответствующие топики на местном форуме: устанавливал USB host controller и кучу других приложений - толку нет. Приложение USB Contlor Panel видит адаптер и даже что-то принимает с модуля (ну и передает соответственно, видно по миганию светодиода). Однако Droid Planner так ничего и не видит 😦 Тем не менее, на ПК в Mission Planner все работает! Большое спасибо!!!

gorbln

Дык ёлки… PL2303 - это вообще, просто люто НЕ FTDI. Это пролифик, и дрова в планшете должны быть для пролифика. И далеко не факт, что они вообще в природе существуют. Попробуйте с FTDI адаптером, всё-таки, который FTDI =)))

ST33

Ясно, буду копать дальше 😃 Заодно закажу себе на ebay микросхему FT232RL FTDI SSOP-28.

ST33

Пришла FT232RL c ebay (за 2,35$). Запаял схему - с Galaxy SIII работает (иногда не с первого раза, возможно переходник глючит). Пока в “реальном бою” не проверял, но в домашних условиях с APM 2 все четко работает.

gorbln

К слову про пролифик.
Оказалось, что дрова на него для андроида очень даже существуют. И даже есть фирменная тестировочная утилитка. Но у меня на Prestigio Multipad - приёма не было. Передача идёт (ну, по крайней мере, светодиод на модуле мигает), а вот приёма при замыкании TX-RX не происходит. Планнер не проверял - руки не дошли.
FTDI так не проверял, но Droid Planner с ним работает отлично.

Добрый_Ээх

А есть вариант прикрутить к ардупилоту что-то более мощное, например RFM12BP или видел на ебее вообще одноваттные?

gorbln

См. предыдущую запись. Там я как раз описываю самодельный модем отдельно на радиомодуле и процессоре. Скажу сразу - модем 3DR уделывает мою поделку как лежачую. Причём дело не в мощности - она одинаковая. В 3DR-овском модеме много софтовых улучшений сделано.
Есть мысль сделать самодельный модем с возможностью подключения любого радиомодуля но нужен программист. Денег платить я возможности не имею, сам программист никакой.

Добрый_Ээх

А, спасиб читал, но поделка имеет такую же мощность что и 3ДР, а если использовать трансивер в 5-10 раз мощнее смысл будет?

cheguev

Здравствуйте!
имею клон 3dr на силабовской схеме, земля на юсб, хочу из земли переделать разьем как на воздухе. Почитал на других источниках - вроде можно напрямую подключать, но и должны быть фильтры и преобразователь… У вас картинки не отражаются больше. Не могли бы помочь?

gorbln

Картинки сдохли, к сожалению, вместе с хостингом. Но там ничего для вас полезного не было.
Сделать из наземного модема воздушный - можно. Вопрос только - зачем? И что значит “напрямую подключать”? Напрямую куда?

cheguev

Спасибо! Уже нашел картинки. api.ning.com/files/…/PhotoJan0480016AM.png

api.ning.com/files/…/PhotoJan0423938PM.jpg

Напрямую это значит без стабилизатора и фильтров. Прочитал, что лучше с ними - т.е. фактически делать копию платы 3dr на которой сидит модуль hm trp, чтобы избежать шумов и выхода из строя.
Вот и интересно было что брать дополнительно нужно.

Нужно было сделать соединение 2 navi ctrl mikrokopter для реализации follow me.

slon197

Здравствуйте, Егор. Можно поподробнее с места про гимор.
Как я понял после прошивки в HEX редакторе мы в бутлоадере удаляем :00000001FF, далее (вместо :00000001FF) вписываем те строки, которые в прошивальщике имеют окончание er, причем которая была последней вписывается первой.

gorbln

Приветствую!
Всё, как написано - смотрим в терминале, какая последняя строчка с “ОК”, запоминаем. Допустим, это восьмая строчка с конца. Теперь удаляем последнюю, вырезаем оставшиеся шесть, и вставляем перед той, которая последняя с ОК (которая была восьмой с конца). Всё. Если вдруг ситуация повторяется (опять на какой-то строчке - не ок) - повторяем действия в том же порядке.

Карабас

Привет. Спасибо за инструкцию.
А есть способ вернуть родную магазинную прошивку?

Карабас

Еще одна мелочь не упомянута. Модемы - 3 вольтовые, а APM - 5 вольтовый. Нужно ставить хотя бы резисторы в линии rx tx, иначе со временем сгорит. На заводских модулях, если судить по картинке - стоят, но не знаю какие. Мне было бы тоже интересно. Наверное 100-300 Ом достаточно