RSS лента

{gorbln}

Радиомодемы OpenBee 433 Мгц на модулях RFM22B

Оценить эту запись
09.10.2013 в 02:45 (15916 Показов)
Заказал я как-то (не подумав) модули RFM22B. При цене 15 баксов за пару - планировал всех обмануть и сделать дешёвые радиомодемы, аналоги телеметрийных модулей для ардупилота.

Получилось так. Ценник вышел - около 12 баксов за 1 модем.
За подробностями - добро пожаловать далее.

Обновлено 09.10.2013 в 03:07 [ARG:5 UNDEFINED]

Метки: openbee, rfm22b
Категории
Без категории

Комментарии

  1. Аватар для {gorbln}
    ВНИМАНИЕ!
    Плата переработана, в этом сообщении ссылки изменены и ведут на актуальную версию.
    Итак.
    Радиомодемы для ардупилота сделаны на других модулях HopeRF (ниже в комментариях есть ссылка на них незадорого), поэтому, естественно, прошивка от них не подойдёт для RFM22B. Стал искать варианты. Нашёл 4 штуки:
    1) Радиомодем на основе телеметрийного канала проекта OpenLRS/OpenLRSng. Из плюсов - т.н. хоппинг - переключение между несколькими частотными каналами (до 6). Минус - аплинк со стороны земли забит командами управления, ибо это всё-таки аппаратура управления, а потом уже радиомодем.
    2) RF22 - крутая библиотека для работы с модулями RFM под ардуино. Можно сделать всё. В том числе сотовую сеть модемов. Но надо раскуривать мануалы, долго и упорно, а учитывая, что я никаким местом не программист - не мой вариант.
    3) Проект OPLink. Главный минус - процессор STM. Ацкое УГ, с непомерными требованиями порога вхождения. Точнее, не проц УГ, а среда разработки. Не вариант вообще.
    4) Проект OpenBee от DIYDrones. Сделан на RFM и ардуине, open-source software. Есть схема. Минус - нет хоппинга и меню для изменения настроек (прикрутить можно, но уже лень).

    Остановился я на последнем варианте, как наиболее понятном, и удовлетворяющем наличию радиодеталей.
    В оригинале плата радиомодема исполнена в форм-факторе ZigBee. Мне это было ни к чему, поэтому плата была разведена простая прямоугольная:

    Вся плата разведена в 1 слое. Номиналы подписаны прямо на чертеже. Можно было сделать верхний слой, но мне это показалось неудобным, в итоге ардуина ProMini просто напаивается сверху проволочками. В файле жёлтым (в слое К2) подписано к каким ногам ардуины идут какие контакты на плате. На пины выведены Rx, Tx, и питание. Питается плата 5 вольтами, установлен стабилизатор на 3.3. При желании можно над RFMкой установить экран из тонкой жести, для пущей помехоустойчивости. Я не ставил - лень.
    Пара слов про диоды-индикаторы. Они сделаны с общим анодом, что потребовало изменения оригинального скетча. Сделано это потому, что у меня были трёхцветные светодиоды с общим анодом, и я их использовал. Если кто-то будет использовать индикаторы с общим катодом или отдельные диоды - можно использовать другой вариант платы (также есть в файле) и оригинальную прошивку.
    Фото платы (версия устаревшая, ещё без стабилитронов, но для общего понятия без разницы):

    "нижняя" сторона - здесь установлена RFM-ка, стабилизатор и индикатор.


    "верхняя" сторона - здесь припаяна ардуина и пины для связи.

    Компилировать проект и прошивать платы надо в СТАРОЙ версии Arduino IDE - 0.22. Иначе ничего не собирается, а если и собирается, то работает неправильно!

    Чтобы поменять скорость порта и идентификатор радиоканала - надо перекомпилировать проект. В остальном - минусов нет.
    Проверил модемы на скорости 115К, 9600 и 57К - работают без проблем, при условии, что проект компилировался в старой версии Arduino IDE.

    После продолжительных тестов, удалось связать АРМ с MissionPlanner-ом при помощи этих модемов. Скорость желательно делать не меньше 57К, либо надо отключать передаваемые в поток параметры. Дальность не проверял, задачи такой пока не стоит. Вся эта бодяга затевалась, чтобы настраивать ПИДы, не подключая проводов на поле.
    Обязательно отключать контакт TX от OSD, если таковое есть, иначе ничего не работает как надо. Собственно, это написано в "родной" вики ардукоптера.

    Линки:
    OpenBee на Flytron-е
    Исходники OpenBee
    Моя версия скетча, подправленная под другие светодиоды (переименовать в OpenBee.zip - хостинг режет доступ к Zip-ам)
    Плата в формате Sprint Layout - актуальная
    Плата в формате Sprint Layout - устаревшая
    В устаревшем варианте жирными белыми линиями в слое К1 показаны линии реза для изготовления платы не ЛУТом, а нарезкой (ножом или на станке). Как показала практика - ЛУТом по времени так же, а результат красивее. Но если кому вдруг понадобится - вот.

    В планах:
    1) Полностью переделать входные цепи RX и TX. В идеале - LLC. Попроще - стабилитрон. Сделано, работает.
    2) После прихода новых плат на Si4432 - полный редизайн модемов. Ардуина будет питаться, как ей и положено, 5 вольтами, а передатчик - тремя. Согласовываться будут уже они между собой. В качестве основного процессора думаю поставить Atmega8.
    Разработка закончена, всё работает!
    3) Если уж совсем попрёт - сделать настроечный режим, активизирующийся перемычкой.
    Сделано, будет имплементировано в новой версии железа.
    Работает и в новой, и в старой версии, плата выбирается дефайном.
    Обновлено 11.11.2013 в 23:08 [ARG:5 UNDEFINED]
  2. Аватар для P_L_Z
    наверное и на [URL="http://www.aliexpress.com/item/SI4432-wireless-module-1000meters-long-distance-240-960mhz-Special-promotions/929600736.html"]такой[/URL] штуке заработает ?
  3. Аватар для {gorbln}
    Цитата Сообщение от P_L_Z
    наверное и на такой штуке заработает ?
    По виду, распиновке и описанию - это тот же самый модуль (только в 2 раза дешевле). Однако, чипы на HopeRF-овских модулях промаркированы по другому. Если модуль такой же - то, с учётом того, что программа влазит в 8-ую мегу, которая стоит 20 рублей, можно сделать модемы вообще по 6 баксов, что уже укладывается в концепцию "бюджетный аналог рцтаймера"!
    Заказал себе пару для эксперимента, спасибо за ссылку!

    Вот, кстати, что пишут про RFM22 на AVRFreaks:
    The IC on the RFM modules is a SiLabs Si4431 (RFM23) or Si4432 (RFM22). This chip can also be found on the EZRadioPro modules by SiLabs.
    Так что есть все шансы на успех!
    Обновлено 09.10.2013 в 14:22 [ARG:5 UNDEFINED]
  4. Аватар для {gorbln}
    Снял термоусадку, перезалил фотки. А то уж больно страшные были.
  5. Аватар для P_L_Z
    у меня должны скоро прийти , заказывал чтобы сделать приемников под openlrs , но теперь видемо буду делать модемы)
  6. Аватар для alexeykozin
    а какая выходная мощность и возможно ли раскачать?
    родные телеметрийные модули всем хороши - кроме мощности
  7. Аватар для P_L_Z
    100миливат , если србирать на rfm22bp то1 ватт, также существуют недорогие усилители на 5-7ватт

    с родными модемами дела не имел но подозреваю что прикрутив к ним человеческие антенны можно существенно повысить уровень сигнала
  8. Аватар для {gorbln}
    Народ, повремените радоваться. Я так и не смог пока связать APM с MissionPlanner-ом при помощи этих модемов. Есть несколько предположений, сейчас их проверяю. Хотя в терминале всё передаётся изумительно, никаких косяков ни на какой скорости.

    Так. Походу, косяк с неработой пролифика и с неработой АРМ имеет общую причину. А именно - напряжение на ноге RX ардуины с моим делителем получается 1.6 вольта, что очевидно мало. надо менять делитель. сейчас ещё поэкспериментирую - расскажу
  9. Аватар для {gorbln}
    Заставил работать модемы с АРМом!
    Необходимо изменить делитель напряжения на ногу RX, а именно: сопротивления плеч должны быть 3.9К и 8.2К вместо 470 Ом и 1К.
    Лучше даже побольше, 4.7К/10К, например.
    Скорость нужна 57600. На меньшей скорости канал банально забивается флудом контроллера и связь установить очень трудно.
    Ну и - преобразователь USB-UART на стороне компьютера должен быть FTDI.
  10. Аватар для P_L_Z
    рассматривая APM модемы в интернетах , заметил что на плате у кроме модуля почти ничего нет
    а вот эти модули по халяве [url]http://www.aliexpress.com/item/2pcs-lot-HM-TRP-915M-HM-TRP-high-performance-transparent-FSK-transceiver/1321281392.html[/url]
  11. Аватар для Lazy
    Цитата Сообщение от P_L_Z
    также существуют недорогие усилители на 5-7ватт
    Здесь нужен двунаправленный усилитель. Всё далеко не так просто.
  12. Аватар для P_L_Z
    [QUOTE=Lazy;bt109473]Здесь нужен двунаправленный усилитель. Всё далеко не так просто.[/QUOTE]

    всеголишь однонаправленный + переключатель , да и вроде на rfm22b можно включить отдельно rx tx антенны
  13. Аватар для Lazy
    Да да, всё очень просто....
  14. Аватар для P_L_Z
    [QUOTE=Lazy;bt109489]Да да, всё очень просто....[/QUOTE]

    правда ?
  15. Аватар для Lazy
    Да ясное дело....Берём готовую микруху, подключаем всё как в даташите и ничего не работает. Время переключения RX/TX должно быть не хуже 2 мс.
  16. Аватар для {gorbln}
    Цитата Сообщение от Lazy
    Берём готовую микруху, подключаем всё как в даташите и ничего не работает.
    О дааааа!!!! Как это знакомо =))))
  17. Аватар для Lazy
    До боли.
    Я к тому, что сделать переключаемый усилитель мощности для этих устройств - далеко не тривиальная задача, решаемая на коленке.
  18. Аватар для {gorbln}
    Тривиальная, если однонаправленный. Но это для задач радиоуправления, а не для телеметрии.
  19. Аватар для Lazy
    Однонаправленный купить ничего не стоит. Двунаправленный, 10 Вт - 2 штуки баксов.
  20. Аватар для {gorbln}
    Ну там по описанию к микрухе - можно раздельные антенны ставить, и типа всё пучком. Но это по описанию =) А про него мы как раз выше во мнениях сошлись - подключаешь - и ничего не работает =)))
  21. Аватар для Lazy
    Два антенных тракта? Давайте станем реалистами.
  22. Аватар для P_L_Z
    ...но в даташите,ж ... как так ?? :)
  23. Аватар для {gorbln}
    Поправил схемотехнику модема. Убрал делитель напряжения, всунул вместо него стабилитрон. Работает отлично. Исчезли проблемы с Prolific-ом и ардуиной. Могу рекомендовать к повторению!!!
  24. Аватар для Иван
    Тестил на RFM23BP - работает, можно компилить и в 023 дуне.. на дальность пока не тестил. Тестил через гипер терминал слал на него с другого компа поток от жпс эмулятора со скростью 115к и частотой 10герц
  25. Аватар для {gorbln}
    Цитата Сообщение от P_L_Z
    рассматривая APM модемы в интернетах , заметил что на плате у кроме модуля почти ничего нет
    а вот эти модули по халяве http://www.aliexpress.com/item/2pcs-...321281392.html
    Скромный реверс-инжиниринг данных модулей показал, что по факту это Si1000:

    Однако, ценник на эти модули не отличается гуманностью, и легче купить на али HM-TRP.
    Ещё, 3DRobotics не ставят никаких ограничителей на вход модулям. Получается, входы 5V tolerant, хотя в даташите про это не сказано ничего. По входу (TX/RX) стоит только резистор. Питание модуля - 3.3В, делается стабилизатором на плате модема.

    Заказал себе пару HM-TRP, посмотрим, есть ли реальная разница с RFM22/Si4432
    Апдейт: Реальная разница есть, да ещё какая. Но она не в аппаратной части (там как раз всё абсолютно идентично), а в софте. SiK firmware - мощная прошивка, в которой сделано всё, что я хотел сделать в этом модеме. Расковырять её "по-быстрому" и переделать под ардуину у меня не получилось.
    Обновлено 22.09.2014 в 12:38 [ARG:5 UNDEFINED]
  26. Аватар для {gorbln}
    Сделал редизайн модема на модули Si4432.
    Результатом доволен. Минимум соплей, красивый вид, технологичная конструкция.
    Все задуманные фишки сделал - настроечное меню работает, даже на ATMega8, в которой оно немного усечено, но полностью работоспособно (убраны красивости и свистелки).
    В ближайшее время напишу статейку, и выложу отдельной записью.
    Пока - картинка для привлечения внимания:
  27. Аватар для Georg2012
    Добрый день! заинтересовала Ваша работа с модемом на модуле Si4432. Где можно посмотреть скетч на этот модуль для ардуино. Заранее благодарен!
  28. Аватар для {gorbln}
  29. Аватар для appolinari
    Скажите пожалуйста, какой радиус связи у ваших модемов на модуле Si4432?
    Пытаюсь сделать нечто подобное, на (arduino pro mini + Si4432) Связь пропадает через 20 - 30 метров.
    Заранее благодарен!
  30. Аватар для {gorbln}
    Не могу дать вам ответа, ибо не делал тестов на дальность. Целью изначально было лишь настраивать коптер без проводов, цели на дальность не ставилось. Многое зависит от антенн и их взаимного расположения. У меня и на модулях HM-TRP связь, бывало, пропадала в 10 метрах в неблагоприятной ситуации.
  31. Аватар для Иван
    Цитата Сообщение от appolinari
    Скажите пожалуйста, какой радиус связи у ваших модемов на модуле Si4432?
    Пытаюсь сделать нечто подобное, на (arduino pro mini + Si4432) Связь пропадает через 20 - 30 метров.
    Заранее благодарен!
    Есть пара ньюансов - si была на "соплях" к дуне прицеплена, ВСЕ это было запитано на 3.3, но заработало только когда кондер на на 6800мкф в дырки модулей по питанию поставил.
    Это первый был
    Второй - мощность какую поставили?
    Есть ещё опенби проект - его пробовали слить дуням?
  32. Аватар для appolinari
    Ясно, Спасибо!
    Возможно вы сможете пролить свет на ещё одну сторону этого модуля...
    Не подскажите, как можно програмно изменить его частоту и мощность?
    ОпенБии скачал пару часов назад. Ещё не разбирался что там да как...
  33. Аватар для Иван
    Цитата Сообщение от appolinari
    Ясно, Спасибо!
    Возможно вы сможете пролить свет на ещё одну сторону этого модуля...
    Не подскажите, как можно програмно изменить его частоту и мощность?
    ОпенБии скачал пару часов назад. Ещё не разбирался что там да как...
    Смотря на какую поменять хотите, вообще и в этом и в других проектах в клиентах кода есть подсказки.
    Мошьность менять - ищите слова в коде типа power они точно есть, я так делал
    А вообще, для начала - комменты к коду читайте.
  34. Аватар для appolinari
    На какую менять, я сам не знаю... По идее, частота должна быть адекватно состыкована с антеной. А их китайский английский трудно понять.
    В описании модуля написано :"SI4432 470MHz 1000m Wireless Module 470M 433mhz".
    Ниже они пишут так:
    Ses the American SI4432 the latest version of IC, stable performance
    Frequency range: 433.92M
    High sensitivity up to -121dBm
    Maximum output power: 20dBm
    Data transfer rate: 0.123-256kbps
    FSK, GFSK and OOK modulation mode

    А в подсказках к модулю RF22, в библиотеке пишут, что по умолчанию модуль инициализируется на 434MHz:
    "Defaults after init are 434.0MHz, 0.05MHz AFC pull-in, modulation FSK_Rb2_4Fd36"
    Что в принципе не так уж и далеко от заявленых выше 433.92MHz, особенно если учесть китайские припуски в точности.. Проверить мне их не чем. Вот и приходится искать правду в сети...
    Ведь и скорость как то можно менять в пределах 0.123-256kbps
  35. Аватар для {gorbln}
    Всё же в коде есть. Файл "Functions_RFM.ino":
    if (AIRSPEED==38){
    // 38.4Kbps data rate
    _spi_write(0x6e, 0x09); //case RATE_384K
    _spi_write(0x6f, 0xD5); //case RATE_384K

    _spi_write(0x1c, 0x02); // case RATE_384K
    _spi_write(0x20, 0x68);// 0x20 calculate from the datasheet= 500*(1+2*down3_bypass)/(2^ndec*RB*(1+enmanch))
    _spi_write(0x21, 0x01); // 0x21 , rxosr[10--8] = 0; stalltr = (default), ccoff[19:16] = 0;
    _spi_write(0x22, 0x3A); // 0x22 ncoff =5033 = 0x13a9
    _spi_write(0x23, 0x93); // 0x23
    _spi_write(0x24, 0x02); // 0x24
    _spi_write(0x25, 0x6; // 0x25
    _spi_write(0x2a, 0x1e);
    }
    Это настройка модуля на скорость в канале 38К

    _spi_write(0x6d, 0x07); // 7 set power max power
    Вот мощность. 7-максимум, 1-минимум, 0-выключено (вроде так)

    if (AIRSPEED==38) _spi_write(0x72, 0x1F); // frequency deviation setting to 19.6khz (for 38.4kbps)
    Вот ширина канала где настраивается (все эти параметры в датащите написано как рассчитывать)

    //band 435.000
    _spi_write(0x75, 0x53);
    _spi_write(0x76, 0x7D);
    _spi_write(0x77, 0x00);
    Здесь задаётся, что мы используем диапазон 433 мегагерца. Чип работает от 200 до 900 (грубо), но все частоты поделены на диапазоны, для каждого свои настройки.

    _spi_write(0x75, 0x40 + frequency_constant);
    _spi_write(0x76, byte1);
    _spi_write(0x77, byte0);
    Это частота настраивается.
  36. Аватар для {gorbln}
    З.Ы. Я разбирался в OpenBee, и понаисправлял там косяков. Их там было более чем достаточно. Да и сейчас есть, вот, пока искал вам куски кода, нашёл две штуки, исправил, перевыложил.

    Как обычно, описание на хабре, все файлы лежат здесь.
  37. Аватар для appolinari
    Спасибо! Направление уразумел. Буду копать дальше. пытался скопировать из файла "Functions_RFM.ino" функции, которые пишут в регисторы... Фокус не удался. Я до этого смотрел файл "RH_RF22.h" из библиотеки "radio_head", нашёл адреса регистров, в которые записаны данные. Пока не сильно представляю себе, как менять эти данные, но думаю что разберусь. Щаз разбираюсь с "SPI" функциями.
  38. Аватар для appolinari
    Нашёл в библиотеке дефолтные настройки для RH_RF22.
    При запуске устанавливается
    частота: 434.0 MHz,
    мощность: 8dbm,
    скорость: "FSK, No Manchester, Rb= 2.4kbs, Fd= 36 kHz"
    На данной конфигурации связь модулей в городе, при почти прямой видимости держалась около 170метров.
    Сегодня поменял настройки на:
    частота: 433.92 MHz,
    мощность: 17dbm, (при 20dbm связь держалась не долго, ардуино виснет)
    скорость: "FSK, No Manchester, Rb= 19.2kbs, Fd= 9.6 kHz"
    Расстояние возросло почти вдвое. Связь была при тех же условиях (на том же месте) на дистанции чуть более трёхсот метров.
  39. Аватар для Иван
    Попробуйте кондер повесить прямо на пины питания модуля - должно перестать виснуть. Виснет из-за проседания питания при передаче.
  40. Аватар для appolinari
    Я замерял потребление в режиме приём/передача. При отдаче в 20dbm, потребление 0,12А. Модуль запитан от зарядного устройства с отдачей в пол ампера. Так что я не думаю, что проседание тому виной. Тут скорее, какие то наводки влияют. Надо "экранировать" всё.