Трансивер Radiocrafts RC1240

В поисках идеального трансивера я надыбал пару RC1240. Дорогие, падлы, по две тыщи штука. Намутил, пора приступать к жестоким экспериментам.

Итак, что нам обещают разработчики?

    • Дальность связи аж до 4х километров в идеальных условиях.
    • Многоканальный
    • Скорость передачи данных 4.800 кбит/с, полудуплексный режим.
    • Адресация на уровне протокола
    • 128 байтный буффер
    • Коррекция ошибок
    • Питание от 3 до 5 вольт

 

В общем, неслабый фарш. Хотя, за такие деньги это нормально. Немного потупив в мануалы я приступил к сборке.

Несколько дней назад меня предупредили, что эти радиомодули ОЧЕНЬ БОЯТСЯ статики. Чтож, кто предупрежден, тот вооружен. Перед работой обработал одежду и стул антистатиком (обычный бытовой, продается в хозмаге), а также зачистил на батарее отопления контактную площадку к которой прикладывался перед каждым взятием модуля в руки.

Трансивер RC1240 от Radiocrafts идет в планарном корпусе. с выводами площадками.

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

Бета версия отладочной платы. Финальный релиз содержит в себе ряд дополнений, не учтенных на этой плате 🙂

Проверка работы
Первым делом надо было добиться хоть какой то реакции от модуля, поэтому я решил подрубить его через MAX232 к компу, чтобы пообщаться напрямую.
Для этого мне нужны были выводы RxD, TxD, Config и, на всякий случай, Reset. Причем разработчики в даташите настойчиво уверяют в том, что можно сильно все упростить. То есть можно все изначально настроить, почти все выводы повесить на подтяжку и использовать только RxD и TxD. Но, как сообщил мне Сергей aka Dikoy (обитающий на форумах ixbt и rcdesign, маняьчит по радиоуправлению и беспилотным системам) , есть у этих модулей бывают проблемы с запуском, поэтому без RESET не обойтись. Остальные можно повесить на подтяжку в единицу. И вот тут

ВНИМАНИЕ!!!
Для подтяжки выводов к единице нельзя использовать напряжение питания! Для этого есть специальный выход VDD это выход с внутреннего стабилизатора на 2.7 вольт. Причем использовать этот питальник в своих гнусных целях нельзя! Он только для нужд передатчика. Так что все неиспользованные выводы, а у меня это CTS и RTS я посадил сразу на VDD.
Судя по таблице из даташита, на входах RXC, TXC, CONFIG, CTS, RTS cтоит сопротивление в 100кОм, а на RESET резистора нет и только защитный диод на внутреннюю шину 2.7 вольт, да подтягивающий резистор на 100к. Какой из этого вывод? А то что если RESET повесить в воздухе, то он подтянется до единицы. Если его прижать к земле, то будет сброс. А если подать извне на RESET стандартную пятивольтовую логическую единицу? Модуль сдохнет! Вот так вот, по крайней мере разница в 2.3 вольта (5-2.7 =2.3) рванет вверх по защитному диоду и накроет все, что висит на 2.7 вольтовом источнике. Поэтому нужно обезопасить себя от такой напасти. Ставим диод, лучше Шоттки, да еще резистор ограничительный на 10к. Вот теперь RESETу ничего не страшно.

Подключил MAX232 и кучу времени убил на то, чтобы получить от модуля хоть какую то реакцию. Я его и так и эдак, а он ни в какую. Под конец случайно поймал осциллографом какую то козюлину. Пригляделся очень похож на код символа &gt,. Обана!!! Подключил второй канал, чтобы сравнить вход и выход, послал на вход &gt, и понял на какие грабли я наступил неправильно выставил частоту порта. Почему то я считал, что по дефолту частота порта 4.800кбит/с, перепутал с частотой передачи радиотракта. А модуль, оказывается, общается на скорости 19.200кбит/с. Внимательней надо читать даташит!

Адресация
Модуль может работать в двух режимах:

    • В прозрачном режиме данные не буфферизируются и модуль работает просто как удлиннитель UART. Что вошло то тотчас вылезло наружу с другой стороны. И обратно. Как HM-TR433.
    • В адресном режиме у каждой стороны есть свой адрес, а также адрес подсети в которой он состоит. SystemID (SID), UniqueID (UID). SID должен быть один у всей группы модулей, а вот UID у всех разный. Для передачи мы задаем адрес принимающего модуля DestinationID (DID) и шлем байты. Все модули подсети принимают пакеты, сверяют адреса, проверяют корректность приема и если все правильно, и адрес совпадает, то, оторвав заголовок пакета, шлют его в UART.
      Также у каждого модуля есть такой параметр как широковещательный адрес. Он нужен если надо послать одну посылку сразу всем. По дефолту он 0xFF, но можно задать любой и наплодить таким образом кучу групп. Удобно, блин.
      Передача начинается в трех случаях:

      1. Входные данные забили пакет до конца (длинна пакета задается)
      2. Возникла пауза, по дефолту 2 секунды, но настраивается.
      3. Получен символ конца пакета (задается в настройках)

      Как только это случится данные полетят по воздуху принимающей стороне.

 

Настройка модуля RC1240
Вкурив в эту нехитрую систему я подключился к модулю и послал ему сигнал на конфигурацию кратковременно посадив вывод CONFIG на землю. Модуль бодренько отозвался дежурным приглашением &gt,
Набрав команду 0 я получил дамп его параметров. Убедившись, что все в дефолте, я отправил следующую последовательность:
М,0x19,0x02,0xFF,X

    • M вход в режим программирования памяти. Ответом от модуля должна быть &gt,
    • 0x19 адрес ячейки куда я хочу записать, там лежит UID. Ответа не должно быть
    • 0х02 новое значение UID, будет нумер дыва. Ответа также нет
    • 0хFF записать значение в память. Ответ &gt,
    • X выход из режима конфигурации. Ответа также нет, так как модуль уже готов к приему данных.

 

Опять бросил конфиг в землю, послал 0, получил дамп настроек и убедился что в 0х19 ячейке красуется не дефолтная единичка, а двойка.

Второму модулю я таким же образом подправил уже DID, чтобы слал первому. Кстати, DID можно задавать и по быстрому, без записи в память. Конфиг к земле, а дальше команда T и следующим байтом новый адрес назначения. Потом выход из конфиг режима X и работаем уже по другому адресу. Но эта настройка временная, до первого ресета. А вот то что мы в память пишем это дефолтные установки.

Собрал кольцо, то есть выход из MAX232 по воздуху загнал на вход его же, но через другой модуль. Один передает, второй принимает. Послал байт он вернулся. Ок, отлично. Поменял модули местами. Послал вернулся. Замечательно! Прием и передача работают. Но как то медленно задержка в 2 секунды словно байт еле ползет. Хм подумал На ум, ничего более умного чем ожидание пока пакет целиком наполнится не пришло. Наверняка таймаут пакета! А длинна пакета у нас, по дефолту, 128 байт вот он и ждет пока не наполнится. Взял и уменьшил пакет до одного байта, перезаписав параметр PACKET_LENGTH по адресу 0х0F. Все отлично, все летает. Впрочем, можно было и таймаут уменьшить.

Подключение RC1240 к микроконтроллеру.
По UART играться неинтересно, надо бы ближе к реальному применению быть. Взял и подцепил все это дело на МК И вот тут начались проблемы. Сигнал идет с ошибками. Что за нафиг? Полез глядеть осциллографом, а там не прямоугольные импульсы, а какая то размазанная хрень. Словно оплыли все, как сосульки фронты ни к черту. А все почему? Да потому что разработчики взяли и вкрутили на выход 100кОмное сопротивление. НАФИГА??? Хз. Да, это защищает вход почти до ста вольт перегрузки, но блин, при этом ток мизерный просто, а значит выход TxD не может пересилить подтяжку входа RxD у AVR. Вот засада то. Надо усилить слабый выход модуля.

Порылся по закромам, нашел два транзистора КТ315, на них и сделал. Вот вам, кстати, в копилочку, преобразователь с 3.3 вольтовой логики на 5 вольтовую.

Итоговая схема подключения RC1240 к микроконтроллеру получилась такой

Тест на дальность.
Может мне повезет? и я смогу, таки, обеспечить уверенный прием на каких то жалких 100 метров? Настраиваю на двух модулях прием-передачу одного байта. В качестве антенны цепляю привычне уже проволочные штыри на 1/4 волны. И обламываюсь. На прямой видимости (5й этаж, подоконник земля, вижу антенну на подоконнике невооруженным глазом) дальность не превышает 100 метров. Реально же четко дает уверенный лишь метрах на 40. Да что это за дерьмо то такое? Обещано было 4км!!! ГРРРР!!! Пробовал спиральную антенну (17 витков, диаметр витка 6мм, длинна обмотки 3см как раз для 433Мгц, по какому то мануалу, найденному в Сети) еще хуже.

Скорей всего в городе просто конкретно засрана 433 мегагерцовая частота. И модуль просто теряется в этом хаосе. Иначе как обьяснить тот факт, что в подьезде через 5 межэтажных перекрытий прием идеальный, а на 50 метрах прямой видимости Epic fail.
В следующий раз будем брать и тестить RC1290, работающие на 916 Мгц, может там меня будет ждать счастье. Вот только найти бы еще где их купить. Куда ни сунемся, только RC1240, а RC1290 под заказ в течении какого то опупенно долгого времени. А так очень приятный в работе модуль. С удобным управлением и кучей прикольных фишек. Если не обращать внимание на приколы со слабыми выводами, то все замечательно. Но, вот на 433 мгц я бы брать не советовал.

UPD:
Укоротил радио тракт. Точнее отрезал дорожку (длинна ее миллиметров 8, не больше, была) и припаял антенну напрямую к модулю. Врубил на одном конце непрерывную посылку и смог убежать почти на 700 метров по практически прямой видимости. А вот в обратную сторону сигнал упорно не хотел лезть. Видать дома всякие компьютеры и прочие бытовые приборы создавали фон, заглушающий полезный сигнал. Но уже это неплохо. Девайс реабилитировался. Показав дальность под 500 метров в условиях города. В принципе, большего от него при такой мощности никто не ждал.

5 1 голос

Оцените статью!

guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии