Во многих проектах, использующих в качестве основы плату Ардуино, возникает потребность в передаче различных команд или информации на некоторое расстояние. В этом случае радиосвязь – лучшее из возможных решений. Дистанционное управление квадрокоптерами, самолетами, машинками, катерами, передача тревожных сообщений в различных охранных системах…
Все это немыслимо сегодня без использования различных радиомодулей, коих, к слову сказать, выпускается сейчас превеликое множество. Особый интерес представляют модули, обеспечивающие связь на дальние расстояния. Но, как ни странно, описаний таких радиомодулей и конструкций, сделанных с их использованием, в интернете кот наплакал.
Задумывая канал связи для хитрой автомобильной охранной системы, я заказал себе на Алиэкспрессе радиомодуль от EBYTE на базе микросхемы SI4463 мощностью 500 мВт. Надо сказать, что подобных модулей на частоты от 170 до 915 МГц с выходной мощностью от 100 мВт до 1 Вт существует достаточно много.
Например, модуль
E31-230 МГц на 500мВт
или
E31-433 МГц на 1 Вт
или
E30-170 МГц на 500 мВт
Мне нужен был радиомодуль, который обеспечит оповещение в городской среде на расстояние метров 300 – 500 с учетом прохождения радиосигнала через стены зданий. Был соблазн взять максимально дальнобойный модуль мощностью 1 Вт, использующий протокол LoRa. Обещанная дальность радиосвязи по прямой видимости для них равнялась - 8000 метров. Но цена на такие радиомодули зашкаливала за 1000 руб. К тому же мощность их показалась мне избыточной.
В результате был куплен менее мощный модуль на 500 мВт, но его подключение к Ардуино вызвало ряд трудностей.
Дело в том, что выводы радиомодулей серии типа Е50, Е53 и т.д. производителя CDSENET несколько отличаются от выводов наиболее распространенных среди ардуинщиков модулей на микросхеме SI4463.
А описаний схем подключения их к Ардуино в интернете, похоже, совсем нет.
Рассмотрим для примера типичный радиомодуль такого плана CDSENET E36-TTL-100.
Как видим, он имеет 7 выводов. С четырьмя выводами все понятно:
GND – это земля.
VCC – питание 3,5 – 5,5 В.
TXD – выход сигнала.
RXD – вход сигнала.
А вот что делать с оставшимися выводами, не совсем понятно.
Долгое время запустить радиомодуль, даже имея
описание похожего модуля, мне не удавалось. С большим трудом на англоязычных форумах я нашел подсказку и путем экспериментов пришел к решению проблемы.
Оказалось, что выводы М0 и М1 управляют режимами работы радиомодуля. Для стандартного режима работы с Ардуино нам нужно соединить оба этих вывода с землей. Если же вы хотите использовать все возможные режимы работы модуля, такие как режим сохранения энергии или спячки, то эти выводы следует подсоединять к цифровым выводам Ардуино и подавать на них либо низкий, либо высокий уровень. Как это делать, расписано в даташите.
Вывод AUX при этом выполняет вспомогательную функцию. Когда модуль не готов к работе на этот вывод подается «низкий уровень». Когда радиомодуль готов к работе – высокий.
То есть в скетче мы имеем возможность контролировать готовность радиомодуля к передачи данных. Впрочем, вполне можно обойтись и без этого.
Схема подключения радиомодуля к Ардуино Нано у меня выглядела так.
|
Схема подключения радиомодуля CDSENET E36-TTL-100 к Ардуино Нано |
Выводы TXD и RXD радиомодуля я подсоединил к цифровым выводам Ардуино D10 и D11, назначив их в скетче RXD и TXD соответственно.
Это важный момент. Вывод RXD радиомодуля должен быть подсоединен к выводу TXD ардуино. А вывод TXD к RXD.
Скетч для отправки радиосообщения, состоящего из одной цифры "5" будет выглядеть таким образом:
Скетч для приемника будет выглядеть так:
Дальность передачи таких модулей превзошла все мои ожидания. Модуль мощностью 100 мВт по прямой передавал данные на расстояние 1 км. А модуль в 500 мВт был успешно испробован на дальность 3 км. На большем расстоянии экспериментов я еще не делал.
Предвижу замечания въедливых читателей по поводу разрешенных мощностей передатчика и радиочастот.
Будем считать, что все мои опыты имели чисто научно-познавательную цель. Я ни в коей мере не хочу призывать кого-то к нарушению установленных правил радиообмена.
Пусть каждый решает сам, соблюдать ли их, когда злоумышленники угоняют вашу машину или обворовывают вашу квартиру.
Настройка радиомодулей
Много вопросов возникает по настройке подобных радиомодулей. Хотя, честно говоря, у меня такой надобности не возникло, так как дефолтные настройки вполне удовлетворяли. Но поменять частоту передачи или адрес частенько бывает необходимо.
Рассмотрим, как это можно сделать на примере радиомодуля E50-TTL-500 производства фирмы EBYTE. Даташит на этот модуль можно посмотреть
тут.
Для настройки радиомодуля лучше всего использовать специальный модуль
E15-USB-T2 . Его можно купить отдельно, но у меня продавец приложил его в подарок к радиомодулю.
Для того, чтобы ввести этот переходник в режим настройки радиомодуля, нужно снять две перемычки, как показано на фото.
Радиомодуль втыкается в переходник, переходник в USB порт компютера.
Если нет такого переходника можно подключить радиомодуль к компьютеру через любой TTL свисток. Чтобы ввести радиомодуль в режим программирования, следует на контакты М0 и М1 радиомодуля подать плюс.
Теперь нам понадобится программа AccessPort. Ее можно скачать
тут.
Распаковать и запустить файл AccessPort.exe
Смотрим номер компорта, на котором открылся наш модуль, и указываем его в окне программы AccessPort. Соединяемся.
В нижнем окне набираем команду: C1 C1 C1
Появляется ответ: С0 00 00 18 DC 44
Это означает, что радиомодуль работает на дефолтный настройках.
Чтобы их изменить, нужно набрать команду С0, а за ней пять цифр (байтов), в которых зашифрованы новые параметры работы радиомодуля.
Как это сделать?
В даташите есть такая таблица:
Первые два байта (00 00) задают адрес, по которому будет доставлятся радиосообщение. Первый байт - верхний адрес. Второй байт - нижний адрес. Эти два байта должны быть одинаковыми на передатчике и приемнике. Каждый из этих байтов можно менять в пределах от 00H до FFH.
Третий байт кодирует сразу три параметра радиомодуля - тип протокола UART ( 8N1 по умолчанию), скорость передачи по UARTу (9600 bps по умолчанию),и скорость передачи данных по радиоканалу (1 kbps по умолчанию).
Как мы видим, по умолчанию этот третий байт равен 18. Эта цифра получается следующим образом:
Смотрим в таблицу. Тип протокола кодируется в двоичной системе bin битом 00, скорость по UARTу - 011, скорость по радиоканалу - 000.
Записываем эти биты подряд - 00011000 Их нам нужно перевести в шеснадцатеричую систему HEX. Для этого открываем калькулятор Windows, в окне вид выбираем "Программист", слева ставим точку напротив Bin. Набираем 00011000. Переносим точку и ставим ее напротив HEX. Видим результат - 18.
Теперь, например, мы хотим изменить скорость передачи модуля по радиоканалу и установить 10 kbps.
Тогда по битам, согласно таблицы, у нас будет 00011100. Переводим в HEX и получаем - 1С.
Значит, чтобы изменить скорость передачи и сделать ее равной 10kbps нам в программе AccessPort.exe нужно ввести команду: С0 00 00 1С DC 44
Четвертый байт кодирует частоту, на которой будет осуществляться радиопередача. Частота высчитывается по формуле - 148 MHz + значение четвертого байта * 0,1 MHz
В настройках по умолчанию четвертый байт имеет значение DC. Это в HEX. Переводим в десятичную систему - ставим точку напротив Dec. Получаем - 220.
Подставляем в формулу - 148 +220*0,1 = 170. То есть дефолтная частота передачи - 170 MHz.
Попробуем в дефолтной настройке изменить частоту и сделать ее равной, например, 160 MHz. Для этого решим уравнение - 148 +х*0,1 = 160
У нас получается, х = 120. Переводим это число в HEX и получаем - 78.
Соответственно команда будет выглядеть так - С0 00 00 18 78 44
Последний байт кодирует еще 5 различных параметров радиомодуля, самым важным из которых для нас является мощность передатчика. По умолчанию она установлена на максимум. Принцип кодирования аналогичен разобранному ранее.
Валерий МИШАКОВ