Использование RF-модулей. Использование RF-модулей Технические параметры S2-LP
На этом уроке мы решим задачу по передаче радиосигнала между двумя контроллерами Ардуино с помощью популярного приемопередатчика с частотой 433МГц. На самом деле, устройство по передаче данных состоит из двух модулей: приемника и передатчика. Данные можно передавать только в одном направлении. Это важно понимать при использовании этих модулей. Например, можно сделать дистанционное управление любым электронным устройством, будь то мобильный робот или, например, телевизор. В этом случае данные будут передаваться от пульта управления к устройству. Другой вариант — передача сигналов с беспроводных датчиков на систему сбора данных. Здесь уже маршрут меняется, теперь передатчик стоит на стороне датчика, а приемник на стороне системы сбора. Модули могут иметь разные названия: MX-05V, XD-RF-5V, XY-FST, XY-MK-5V, и т.п., но все они имеют примерно одинаковый внешний вид и нумерацию контактов. Также, распространены две частоты радиомодулей: 433 МГц и 315 МГц.
1. Подключение
Передатчик имеет всего три вывода: Gnd, Vcc и Data.Подключаем их к первой плате Ардуино по схеме: Собираем оба устройства на макетной плате и приступаем к написанию программ.
2. Программа для передатчика
Для работы с радиомодулями воспользуемся библиотекой RCSwitch . Напишем программу, которая будет каждую секунду по-очереди отправлять два разных сообщения. #include3. Программа для приемника
Теперь напишем программу для приемника. Для демонстрации факта передачи мы будем зажигать светодиод, подключенный к выводу №3 на плате Ардуино. Если приемник поймал код B1000 — включим светодиод, а если B0100 — выключим. #includeЗадания
Теперь можно попробовать потренироваться и сделать разные полезные устройства. Вот несколько идей.- Пульт для светильника. На стороне приемника , включенный в цепь питания светильника (осторожно, 220 Вольт!). На стороне передатчика: . Написать программы для приемника и передатчика, которые по нажатию кнопки будут включать удаленное реле. При повторном нажатии кнопки реле будет выключаться.
- Уличный термометр с радиоканалом. На стороне передатчика разместить . Предусмотреть автономное питание от батареек. На стороне приемника: . Написать программы для приемника и передатчика, которые позволят выводить показания температуры с удаленного датчика на дисплее.
Заключение
Итак, теперь мы знаем простой и недорогой способ передавать данные на расстоянии. К сожалению, скорость передачи и дистанция в таких радиомодулях весьма ограничены, так что мы не сможем полноценно управлять, например квадрокоптером. Однако, сделать радиопульт для управления простым бытовым прибором: светильником, вентилятором или телевизором, нам под силу. На основе приемопередатчиков с частотой 433 МГц и 315 МГц работает большинство радиоканальных пультов управления. Имея Ардуино и приемник, мы можем декодировать сигналы управления и повторить их. Подробнее о том, как это сделать мы напишем в одном из следующих уроков!Рано или поздно, в создаваемых проектах появится необходимость дистанционного управления. Одним из самых бюджетных решений является использование радиоприемника и радиопередатчика. Простейший пример их использования вы найдете в данной статье, а дальше все зависит только от ваших нужд и фантазии.
В первую очередь берем 2 платы Arduino и подключаем к ним приемник и передатчик, как показано на рисунке:
Компоненты для повторения (купить в Китае):
Перед тем как преступить к работе, нужно указать, что для полноценной работы, к модулям необходимо припаять антенну. Рекомендуемая длина антенны для передатчиков с частотой 433 МГц равна 17 см.
Библиотека необходимая для работы с модулем VirtualWire
Её необходимо распаковать и добавить в папку "libraries" в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.
Пример программного кода
#include
Разберем этот код для полного понимания.
Во первых мы формируем строку strMsg. Используем тип String, т.к. с ним проще работать (можно конкатенировать его с числами, используя оператор "+").
Поскольку все передатчики работают в одном диапазоне частот, то каждый приемник будет принимать информацию с каждого передатчика находящегося в зоне досягаемости. Для того, чтобы отсеять лишние символы в простейшем случае можно просто предварить команды каким-то специальным символом. В нашем случае это символ "z".
После этого преобразовываем тип String к стандартному массиву символов при помощи метода toCharArray и передаем его в команду vw_send .
Наш код будет отправлять строку "z c 123".
Перейдем к коду приемника:
Пример программного кода
// Тестировалось на Arduino IDE 1.0.1
#include
Сообщение будет считано в буфер buf, который нужно разобрать.
В первую очередь проверяем наличие служебного символа "z", затем считываем код команды и затем преобразовываем строковое представление параметра в число.
Информация получена и разобрана, что делать дальше зависит от конкретной задачи.
В данной статье рассмотрен простейший вариант общения. В идеале нужно задуматься о кодировании передаваемой информации, т.к. её будут получать не только ваши приемники.
P.S. Работая с данными модулями, мы наткнулись на один не приятный подводный камень, а именно конфликт, невозможность работы с библиотекой "servo.h".
Радио модули: передатчик (FS1000A) и приёмник (MX-RM-5V) - предназначены для передачи данных по радиоканалу, на нелицензируемой частоте 433,920 МГц, лежащей в диапазоне LPD433 (Low Power Device) предназначенном для маломощных устройств.
Характеристики передатчика FS1000A
- Рабочая частота: 433.920 МГц (указывается на металлическом корпусе модуля);
- Дальность передачи: до 100 м (в зоне прямой видимости, без антенны);
- Выходная мощность: до 40 мВт;
- Напряжение питания: 3 ... 12 В;
- Ток потребления в режиме ожидания: 0 мА;
- Ток потребления в режиме передачи: 20 .. 30 мА;
- Рабочая температура: -10 ... 70 °C;
- Габариты: 19х19х8 мм;
- Вес: 2 г;
Характеристики приёмника MX-RM-5V
- Рабочая частота: 433.920 МГц (указывается в таблице на печатной плате, если это не шаблон 123456789);
- Тип модуляции: ASK - амплитудная манипуляция;
- Дальность приёма: до 100 м (в зоне прямой видимости, без антенны);
- Напряжение питания: 5В;
- Ток потребления: 4 мА;
- Габариты 30х14х17 мм;
- Вес: 4 г;
Подключение
Для удобства подключения к Arduino воспользуйтесь , или .
Передатчик подключается к любым выводам , а подключение приёмника зависит от типа используемой библиотеки:
- При использовании библиотек , RemoteSwitch, RCSwitch, приёмник подключается только к выводу использующему внешнее прерывание. Но данные библиотеки не используют аппаратные таймеры, а значит не ограничивают Вас в использовании ШИМ.
- При использовании библиотеки , приёмник подключается к любому выводу . Но библиотека использует первый аппаратный таймер, что накладывает ограничение на использование как данного таймера, так и его выводов ШИМ.
Питание
- К выводам Vcc и GND передатчика, подаётся напряжение 2 ... 12 В постоянного тока.
- К выводам Vcc и GND приёмника, подаётся напряжение 5 В постоянного тока.
Подробнее о модулях
- Передатчик использует цифровой вход для передачи сигнала с использованием амплитудной манипуляции ASK (Amplitude Shift Keying). Амплитудная манипуляция (ASK) отличается от амплитудной модуляции (AM - amplitude modulation) тем, что модулировать можно любой сигнал (как цифровой, так и аналоговый), а манипулировать только цифровым.
- Данные передаются по радиоканалу на расстоянии до 100 м в пределах прямой видимости (указано производителем)
- Расстояние уверенного приёма можно увеличить, если подключить антенны к передатчику и приёмнику.
- Приёмник имеет два, электрически соединённых, цифровых выхода (можно использовать любой). На выходе устанавливается уровень логической «1» при наличии несущей частоты в радиоканале и уровень логического «0» при её отсутствии.
- В приёмнике реализован блок автоматической регулировки усиления (AGC - Automatic Gain Control) благодаря которому увеличивается дальность приёма, но при отсутствии сигнала от передатчика, на выходе приёмника наблюдаются хаотичные чередования логических уровней.
- Приемник критичен даже к незначительным пульсациям на шине питания. Если таковые имеются, то приемник принимает их за информационный сигнал, усиливает и выводит на выход в виде логических уровней. Пульсации на шине питания могут вызывать такие устройства как: сервоприводы, LED индикаторы, устройства с собственными генераторами или использующие ШИМ и т.д.
- Влияние пульсаций на приёмник можно снизить несколькими способами, вот некоторые из них:
- Использовать, для питания Arduino, внешний источник, а не шину USB. Так как напряжение на выходе многих внешних источников питания контролируется или сглаживается. В отличии от шины USB, где напряжение может существенно «проседать».
- Установить на шине питания приёмника сглаживающий конденсатор.
- Использовать отдельное стабилизированное питание для приёмника.
- Использовать отдельное питание для устройств вносящих пульсации в шину питания.
Антенны
Первый усилитель любого приёмника и последний усилитель любого передатчика, это антенна. Самая простая антенна - штыревая (отрезок провода определённой длины). Длина антенны (как приёмника, так и передатчика), должна быть кратна четверти длины волны несущей частоты. То есть, штыревые антенны, бывают четвертьволновые (L/4), полуволновые (L/2) и равные длине волны (1L).
На том же Aliexpress нашел недорогие радиомодули. Небольшие платы (не больше 2-3 см) с распаянными на них передатчиком и приемником диапазона 315МГц или 433МГц (указываем при заказе). В пересчете на один модуль цена получается 20-25 рублей. Юго-восточные соседи именуют данные конструкции так: RF wireless receiver module & transmitter module board.
Оказалось - очень интересные и полезные устройства для решения задачи передачи небольшого объема данных на короткие расстояния (в пределах 10-20 метров). Продаются, как правило, комплектами: передатчик + приемник.
Вроде бы радиопередатчик, но согласно «Перечня радиоэлектронных средств, для которых не требуется разрешений на использование», устройства дистанционного управления охранной сигнализации и оповещения в диапазоне 315/433МГц ±0,2% с выходной мощностью до 10 мВт могут эксплуатироваться без специальной регистрации. Радиочастотные модули очень просты в применении - для включения модуля достаточно подать питание, передаваемые данные и подключить антенну.
Такие модули широко распространены в бытовой технике. Они применяются, например в схемах: дистанционного управления люстрой, беспроводного дверного звонка и т.д.
Передатчик
Приемник
Радиомодуль приемника собран на печатной плате несколько большего размера 15х30мм по примерной схеме показанной на рисунке слева (схемка взята отсюда). За совпадение изображенного с оригиналом не ручаюсь, но общий принцип работы из рисунка ясен: есть транзисторный приемник ВЧ сигнала, к выходу которого через ФНЧ подключен компаратор на операционном усилителе. Таким образом, при наличии сигнала на входе приемника в указанном диапазоне, на выходе получаем "единицу", при отсутствии сигнала - "ноль". Приемник, имевшийся в моем распоряжении, несколько отличается от приведенной схемы. В частности, подстройка частоты производится не конденсатором, а индуктивностью (см фото), а выход операционного усилителя прямо подключен к линии DATA.
Примерные параметры устройства (по данным продавца с вышеуказанного сайта):
- Питание (VCC) +5В.
- Потребляемый ток не замерял, обещают - не выше 4мА.
- Чувствительность приемника обещают на уровне 5мкВ...
Подключение модуля: GND - общий провод питания, VCC - питание приемника, DATA - выход приемника - можно трактовать как TTL сигнал и подавать его на вход микроконтроллера. К выводу ANT подключается антенна, в качестве которой можно оспользовать "четверть-волновый штырь" - отрезок провода 17см для диапазона 433МГц (но можно и подлиннее что-нибудь прицепить).
Fun fact! Существуют другие, но совместимые передатчики на 433 МГц, в частности раз и два . Кроме того, есть и альтернативный приемник . Но он не вполне совместим, так как на выходе всегда выдает какой-то сигнал, независимо от того, осуществляется ли реально сейчас передача, или нет.
Для своих экспериментов я также использовал купленный на eBay пульт от гаража с внутренним DIP-переключателем:
При некотором везении такие пульты все еще можно найти как на eBay, так и на AliExpress по запросу вроде «garage door opener 433mhz with dip switch». Но в последнее время их вытесняют «программируемые» пульты, умеющие принимать и копировать сигнал других пультов. Доходит вплоть до того, что продавцы высылают пульты без DIP-переключателя даже в случае, если он явно изображен на представленном ими фото и указан в описании товара. Полагаться на внешнюю схожесть пульта с тем, что использовал я, также не стоит. Впрочем, если вы решите повторить шаги из этой заметки, наличие или отсутствие DIP-переключателя не сыграет большой роли.
Модули крайне просто использовать в своих проектах:
Как приемник, так и передатчик, имеет пины VCC, GND и DATA. У приемника пин DATA повторяется дважды. Питаются модули от 5 В. На фото слева собрана схема, в который светодиод подключен к пину DATA приемника. Справа собрана схема с передатчиком, чей пин DATA подключен к кнопке и подтягивающему резистору. Плюс в обоих схемах используется стабилизатор LM7805. Проще некуда.
Запишем сигнал при помощи Gqrx и откроем получившийся файл в Inspectrum:
Здесь мы видим такие же короткие и длинные сигналы, что нам показал осциллограф. Кстати, такой способ кодирования сигнала называется On-Off Keying . Это, пожалуй, самый простой способ передачи информации при помощи радиоволн, который только можно вообразить.
Запускаем, и на Scope Plot видим:
Практически такой же сигнал, что нам показал осциллограф!
Как видите, копеечные радиомодули на 433 МГц дают нам огромный простор для творчества. Их можно использовать не только друг с другом, но и со многими другими устройствами, работающими на той же частоте. Можно вполне успешно использовать их в чисто аналоговых устройствах без какого-либо микроконтроллера, например, с таймером 555 . Можно реализовывать собственные протоколы с чексуммами, сжатием, шифрованием и так далее, безо всяких ограничений, скажем, на длину пакета, как у NRF24L01 . Наконец, модули прекрасно подходят для broadcast посылки сообщений.
А какие потрясающие применения этим радиомодулям приходят вам на ум?
Дополнение: Также вас могут заинтересовать посты