Использование радио модулей RF-2400 от Inhaos

    На хабре недавно была опубликована статья про радио модули, на мой взгляд, в ней незаслужено обделены вниманием 2.4 GHz устройства с SPI интерфейсом. Привлекают они ценой в два-три бакса за штуку, и готовым протоколом общения, включающим адресацию, CRC, отсылку подтверждения и прочие удобства.


    Модули RF-2400Р от Inhaos построены на чипе BK2421, который похоже слизан с Nordic NRF24L01. Поэтому, для работы с ними можно использовать библиотеку Mirf, написанную под Nordic.

    Задача, которую я решал, состояла в организации обмена данными между несколькими модулями, поэтому логика работы, использованная в Mirf и построенная на взимодействии между парой модулей оказалась не совсем удобна. Вместо этого был организован некий виртуальный кусок памяти, синхронизируемый по радио интерфейсу, который использовали несколько устройств одновременно. Получилась вот такая библиотечка для ардуино.


    Кроме RF-2400Р модулей Inhaos предлагает очень симпатичный USB «свисток» RF-2410U построенный на том же BK2421 но уже в связке с микроконтроллером C8051F321, который идет с прошитым бутлоадером и может быть запрограммирован по USB, с помощью поставляемого загрузчика.

    На мой взгляд получается очень доступное и интересное решение для системы типа «умный дом» — куча дешевых радио модулей, которые благодаря цене можно встраивать даже в лампочки и компактный управляющий интерфейс в виде «свистка», который можно воткнуть в любой комп не заморачиваясь с дополнительными проводами и наличием последовательного порта.

    RF- 2400 Demo


    Чтобы упросить процесс знакомства с этими устройствами и проиллюстрировать их совместную работу, вашему вниманию представляется следующее демо.

    Железо

    1. Клиентское устройство — ардуино + RF-2400P
    2. Серверное устройство — ардуино + RF-2400P
    3. Наблюдатель — Windows PC + RF-2410U

    В принципе, без (1) или (3) можно обойтись.

    Софт

    1. Библиотека RFSync и ардуино скрипты для клиентской и серверной части.
    2. Прошивка для RF-2410U, и драйвера для него.
    3. Клиентское Windows приложение RF-2410U.


    Логика работы


    1. На клиентской ардуно плате, текущее время записывется в синхронизируемый массив по адресу 0.
    2. На серверной плате, после синхронизации, данные прочитанные но адресу 0 дублируются по адресу 5.
    3. После выполнения синхронизации на клиентской плате читается значение по адресу 5 и высчитывается, время потраченное на синхронизацию.
    4. Весь этот цирк процесс синхронизации наблюдается на Windows машине с подключенным RF-2410U модулем с помощью клиентского приложения.


    Запуск

    1. Подключаем RF-2400P модули к платам ардуино по следующей схеме:
    Модуль Ардуино
    MISO 12
    MOSI 11
    SCK 13
    CE 8
    CSN 7
    3.3 V 3.3 V
    GND GND

    2. Копируем код библиотеки в папку ардуино и прошиваем клиентский и серверный скрипты.

    3. Наблюдаем обмен данными через последовательный интерфейс.


    4. Загружаем прошивку в RF-2410U.
    • убедитесь что модуль не подключен к компьютеру
    • запустите приложение для прошивки.
    • выберите прошивку, нажимите «Download»
    • вставьте RF-2410U модуль в USB порт
    • дождитесь сообщения Download Succeed



    5. При подключении RF-2410U попросит драйвера, дайте их ему.

    6. Осталось загрузить клиентское приложение нажать кнопку старт и наблюдать в реальном времени процесс синхронизации.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 31

      +2
      Подскажите, какова дальность связи?
      0
      Действительно, удобно, но для ардуино занимается аж 5 портов (если я правильно понял). А как с энергопотреблением?
        0
        Насчет портов — да, за удобства надо платить, но с другой стороны можно цеплять другие SPI устройства на эти же пины. Про энергопотребление надо даташит смотреть. Но там есть возможности регулировки мощности передачи и отключения модуля.
          0
          А почему «аж»? SPI — это 4 вывода, здесь Nordic конечно отличился выводом OE, но это на 1 больше, откуда «аж» (кстати, есть еще IRQ). Один модуль == одна сенсорная нода, чем вы остальные ноги забивать собираетесь, большинство из них в большинстве случаев будет не задействовано (в этом смысле Arduino на atmega328 — слишком жирно, туда надо attiny13).
            0
            признаю, погорячился :)
          0
          Подерживаю вопрос насчёт мощности передатчика и примерной дальнобойности в прямой видимости. На оф сайте про это ни слова, так что могу предположить что радиус действия удручающе мал :-( И ещё ни слова про дуплекс. Вряд ли эти трансиверы умеют полный дуплекс но мало ли?
            0
            О, нашёл в даташите. Open transmission distance of about 20-50 meters(for reference only)
              0
              Не врут, где то так и получается: уверенный прием в пределах квартиры.
              0
              Дуплекса конечно нет. Выйти на улицу проверить дальность связи в прямой видимости так и не собрался.
                0
                Дальность зависит от наличия усилителя мощности и антенны. Смотреть на модуль с антеной на плате и спрашивать про дальность imho бесполезно, ну разве что в первый раз с таким сталкиваешься, в остальном, все так же как с каким-нибудь смартфоном и Bluetooth — 10-30м, частота-то та же. Найти nRF24 с PA и выводом на SMA не проблема, было бы желание потратить больше денег. Но зачем? Если на 20000км бить, так это либо мегаватты, либо GSM (с платой за трафик), а эти модули предназначены для того, чтобы стоить копейки, и быть тыканными в каждую щель (а там уже подымать mesh network если надо).
                  0
                  Тут же автор описывал законченный модуль, т.е. уже с каким-никаким усилителем и антенной на борту. Я вот смотрю на лежащий под рукой APC220 и читаю мануал по нему где указана максимальная дальность при идеальных условиях при родной антенне. В реальности, конечно, дальность поменьше, но на 200-300 метров бьёт гарантированно. Я по-этому и спрашивал, ибо 10-30 метров мне мало, а APC220 некоторыми нюансами не совсем устраивает.
                    0
                    По приведённой вами ссылочке интересная железка, спасибо. Кстати, там как раз приведены примерные данные про ориентировочную дальнобойность :-) Делить всё на два и почти актуально будет.
                      0
                      Все-таки «дальнобойность» — не очень научное понятие, если им пользоваться, гарантированы разочарования («больше 2 стен не бьет», пичаль, особенно, если стены металлические). Стоит добавить ясности, что оригинальный nRF24L01+ дает до +0dBm сигнал с чипа, а BK2421, являющийся его китайским «усовершенствованием» — уже +5dBm. Дальше нужно добавить gain (или loss) используемой антенны — четвертьволновой, полуволновой или полноволновой (вот здесь я уже пасс, может woddy поможет ;-) ). В том модуле от itead еще PA на +20dBm. Вот так можно по крайней мере сравнивать, у какого модуля волна «толще» (и знать, как ее увеличить, ибо незачем в 10 раз больше платить, если можно проводок припаять).

                      Кроме мощности, на дальность еще влияет скорость передачи (иными словами, полоса пропускания канала). Забавно, что типичный WiFi имеет те самые +20dBm, а правило (правой? левой? третьей?) руки о дальности устройств 2.4Ghz действует и на не него — те же самые 10-30м, из-за большей скорости. Вот и ваш APC220 заявлен на километр (кстати, напишите, на каком он реально чипе сделан плиз), а скорость? 9600бит/с. Ну вот и нордик на 256кбит/с будет бить подальше чем на 2мбит/с (диапазон его скоростей).
                        0
                        APC220 на adf7020-1BCPZ. По паспорту заявлено 1000м при 9600бит/с, я проверял метров 200 на 19200бит/с. Использую для управления ездящими хреновинками, мегабитные скорости не нужны. Но очень не хватает фулд-дуплекса :-(
                          0
                          По поводу фулл-дуплекса что сказать — тот же здравый смысл: чтобы был реальный фулл-дуплекс, нужно 2 физических канала — 2 провода, либо 2 частоты (и 2 антенны соответственно). Реально радиотехнологий, имеющих «железный» дуплекс — раз-два и обчелся. Вон, 802.11n с MIMO антеннами его несомненно имеет ;-). Большинство других радиотехнологий — нет, в частности за ненадобностью. Вместо этого используются различные *DMA (TDMA, CDMA) которые при достаточной скорости передачи и подходящем размере пакета дают тот самый «дуплекс» на полудуплексном носителе, вполне пригодный для realtime audio например (GSM, гарнитуры Bluetooth, etc.)

                          В этом смысле, гигарцевые частоты лучше, поскольку частотная полоса больше и скорость тоже выше. Еще один плюс — малые размеры антенны. А вот по дальности и «пробиваемости» однозначно проигрывают субгигагерцовому диапазону. Где тут компромисс — не знаю, но я бы побоялся ставить 2.4GHz на *управление* летающей моделью, так что ваш APC220 на 433MHz вполне там к месту IMHO. А антенну в конце концов можно протянуть по «фюзеляжу» ;-).
                            0
                            Не, для самолёта эт у меня только обратный канал, с борта на землю. А вот как управление — как раз аппа на 2.4ГГц :-)
                          0
                          Ппро стены я молчу, между комнатой и кухней три стены (железобетон), пробивает без проблем, линк на 19200, но это не особо интересует. Дальнобойность интересует первым делом в прямой видимости (телеметрия на р/у самолётике).
                    0
                    брал дешевые китайские модули www.buyincoins.com/details/perfect-high-quality-new-nrf24l01-2-4ghz-wireless-transceiver-module-arduino-product-9036.html, качество не устроило. через 2 стены уже переставали работать. может с лучшей антенной лучше результат будет.
                      +1
                      На 2.4Ггц радикально лучше не будет, очень хорошо стены сигнал ослабляют.
                      В домах — вся надежда на диапазон 433 Мгц.
                        0
                        Знаю вас по другим форумам, обычно дельные советы даете. Но тут странно — может вы за неправильную цену модуль брали? Потому что модуль за $2.5, бьющий через 2 стены — это просто хит, не палите ссылки ;-). С усилителем на 10 киловатт будет уже другая цена и другой чемодан батареек для переносной версии. А так эти модули можно брать мешками, подмешивать в штукатурку, и пускать по ним потом mesh сети.

                        P.S. Модуль от BIC сделан по рефенсной схеме от Nordic с четвертьволновой антенной, модуль описываемый здесь в статье (и который на iteadstudio к примеру) — судя по всему на полуволновой, а вы бы вот действительно, написали бы статью, какой проводок, какой толщины и длины, в какую точку платы запаять, а то большинство тут имеет об этом только теоретическое представление и сами пробовать не полезут ;-).
                          0
                          спасибо за замечание :)
                          я в радомодулях не разбираюсь. была конкретная задача, я её решал тем что было под рукой. меня удивило что вайфай через пару стен при мощности 20мвт работает, а этот модуль упорно теряет пакеты. прикручивать антенны и проводить опыты некогда было, подключил другой гораздо более дорогой модуль :)
                        –1
                        А не пробовали включать через SPI-расширитель? Микросхемы эти вродебы неочень дорого стоят, зато решится вопрос с занятыми портами.
                          0
                          Какие расширители SPI? Зачем?
                          0
                          Спасибо за статью. IMHO, этот Inhaos вылупился недавно, сам слежу за ним где-то с пол-годика на ebay, и тут на тебе — статья на хабре ;-).

                          > На мой взгляд получается очень доступное и интересное решение для системы типа «умный дом» — куча дешевых радио модулей, которые благодаря цене можно встраивать даже в лампочки

                          Те же самые мысли. Я долгое время разбирался с Bluetooth-модулями, как казалось бы, самыми легкими в управлении, но разочаровался из-за емкости сети (реально park mode фиг кто поддерживает, и того ограничение на 7 устройств) и емкости потребления (не смог заставить HC-04 потреблять менее 2мА, даже в спящем режиме).

                          Вернулся к nRF24, IMHO да, вся надежда на них ;-). Надо только написать нормальный протокол. Чтоб, простите, без всяких эмуляций SharedMem по радиоканалу :-D.
                            0
                            А какой протокол «нормальный»?
                              0
                              Вот несколько requirement'ов:

                              1. API, соответствующий предметной области. Если суть работы состоит в передаче и приеме пакетов, то пусть методы протокола так и называются.
                              2. Consistent API. Этим грешат NRF24 и RF24 (пара самых развитых библиотек, что я знаю, названия блещут разнообразием ;-) ).
                              3. Полный API по управлению модулем, без assumption'ов, что юзер будет пользовать только то, что написал автор — юзер хочет пользовать все возможности модуля. Этим грешат все библиотеки ;-).
                              4. Поддержка даже самых простых сценариев взаимодействия по протоколу (на сенсорной ноде нажали кнопку — она проснулась, отправила один пакет без подтверждения, заснула).
                              5. Поддержка даже самых сложных сценариев взаимодействия по протоколу — mesh routing в сетях из миллионов нод. (Реализовывать сразу не надо, но надо продумать, как это сделать.)
                              6. Модульность реализации — чтобы можно было выбрать МК под фичи конкретной ноды, и минимальную ноду можно было собрать даже на самом простом МК.
                              7. Поддержка security: encryption, replay protection, pairing, key distribution.
                                0
                                Круто. Когда планируется первая бета? :)

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

                                  0
                                  Писать с нуля очень, очень не люблю, верю в open source и т.п. И на данный момент закончил обзор существующих решений, и увы, ничего нересурсоемкого (а я-то как раз отметил такое требование) и open-source'ового не нашел. Есть интересные пропраетарные решения от вендоров — Jazelle от Nordic, SimpliciTI oт TI, MiWi от Microchip. Для код доступен, его даже можно использовать для себя, и можно даже без royalty. Но вот третьим лицам права на дальнейшие свободные изменения передавать нельзя, т.е. они не являются open-source.

                                  Главный вин этих устройств в дешевизне, не только по деньгам а и по потребляемым мипсам и килобайтам.


                                  Если вы намекаете, что «для более „серьезных“ примений есть более подходящие средства», то been there, did that, вот мои каменты в соседней теме — там при виртуальных возможностях куда больший бардак и хотелки, что сводит на нет всю пользу от них. Собственно, интерес к Nordic'у — это результат последнего прозрения на эту тему.

                                  сам по себе весьма не плох, и свести на нет часть этих преимуществ


                                  Я бы разделял «простоту» и «примитивность». Для меня штука с громким названием «Enhanced ShockBurst» это пример именно последнего качества. Очень хорош для обучения (вот один из старейших ресурсов по nRF24 как раз посвящен обучению, туда же я отношу и эту вашу статью и мою вчерашнюю rapid prototype по управлению жалюзи). Еще хорош для выброса на рынок некачественных продуктов. Например, если вы фирма Microsoft, то можете позволить себе впаривать попуасам клавиатуры, которые снифаются направо и налево.

                                  И не нужно думать, что у nRF24 на роду написано быть такими. О том, «как надо», Nordic показывает на примере nRF24LE1, у которого встроенный AES акселератор и random генератор.
                            0
                            Нересурсоемкую реализацию криптографии, вы еще долго искать будете :)

                            Успехов в написании библиотеки. Я бы бесплатно за такую работу не взялся. На мой взгляд эти модули, при всех их достонствах, не более чем игрушки для хобби проектов.
                              0
                              nRF24LE1 старший брат RF-2410U, а значит криптография на C8051 крутится. Для ваших запросов, кстати, отличное решение — всю библиотеку можно спихнуть на отдельный МК. Только вот цена возрастает в 4 раза, и я так думаю, что исходниками прошивки Nordic делиться не собирается.

                            Only users with full accounts can post comments. Log in, please.