Радиомодули 433 МГц: передатчик FS1000A и приёмник MX-RM-5V

Простая пара радиомодулей для Arduino: характеристики, подключение и пример — самодельный пульт для радиорозеток на библиотеке RCSwitch.
Назначение и особенности
Комплект из передатчика FS1000A и приёмника MX-RM-5V передаёт данные по радиоканалу на частоте 433 МГц. Производитель заявляет уверенный приём на 50–100 м в прямой видимости; результат зависит от условий связи и напряжения питания. Дальность увеличивают антеннами на обоих модулях, причём простейшая антенна — отрезок провода длиной 17 см.
Сильные стороны таких модулей — низкая стоимость компонентов и простое подключение к Arduino. Слабые — отсутствие обратной связи, небольшая скорость передачи и помехи: на той же частоте работают радиолюстры, радиорозетки, брелоки и радиоуправляемые модели.
Характеристики
| Несущая частота | 433 МГц |
| Питание передатчика | 3–12 В |
| Питание приёмника | 5 В |
| Ток передатчика | 8 мА |
| Ток приёмника | 4,5 мА |
| Чувствительность приёмника | -106…-110 дБм |
| Выходная мощность передатчика | 32 мВт |
| Пропускная способность передатчика | до 8 кб/с |
| Пропускная способность приёмника | до 5 кб/с |
| Рабочая температура | -20…+80 °C |
Выводы модулей
У передатчика FS1000A три вывода и площадка под антенну: VCC (питание 3–12 В), GND, DATA (вход модуляции) и ANT. Схема собрана на двух транзисторах, модуляция амплитудная: высокий логический уровень на входе DATA включает передатчик.

У приёмника MX-RM-5V четыре вывода и площадка под антенну: VCC (5 В), GND и два вывода DATA. Оба вывода данных соединены между собой, использовать можно любой. Приёмник отличается высокой чувствительностью и имеет автоматическую регулировку усиления, но плохо переносит пульсации питания: он усиливает их и воспринимает как полезный сигнал.

Для Arduino существует несколько библиотек под эти модули: VirtualWire, RemoteSwitch и RCSwitch.
Пример: пульт для радиорозеток
Чаще всего пару используют для передачи данных между двумя платами Arduino, но на 433 МГц работает и много бытовой техники, которой можно управлять самостоятельно. В источнике рассмотрен пульт для радиорозеток UNIEL — на случай, когда кнопок штатного пульта не хватает.

Такая розетка вставляется в обычную, а прибор подключается уже к ней. Радиус действия на открытой местности — до 25 м, частота команд 433,9 МГц. Переключателями в пульте задаётся код группы; в каждой розетке выставляется тот же код группы и собственный индивидуальный код. Розеткам, которые должны срабатывать одновременно, назначают одинаковый код.

Для пульта нужны плата Arduino UNO, макетная плата, передатчик FS1000A, клавиатура 4x4 и провода. Приёмник MX-RM-5V требуется только на подготовительном этапе.
Шаг 1. Чтение протокола штатного пульта
Сначала выясняют, в каком формате пульт общается с розетками. К Arduino подключают приёмник и загружают пример ReceiveDemo_Advanced из библиотеки RCSwitch. Приём включается строкой mySwitch.enableReceive(0) — это прерывание 0, то есть вывод 2 платы. При нажатии кнопок пульта в монитор порта (9600 бод) выводятся принятое значение, длина в битах, длительность импульса и номер протокола.
Для розеток UNIEL получены такие параметры: код длиной 24 бита, длительность импульса 312 микросекунд, протокол 1.
Шаг 2. Скетч пульта
Во втором скетче используются библиотеки RCSwitch и Keypad. Клавиатура 4x4 описана матрицей символов; строки подключены к выводам 13, 12, 11, 10, столбцы — к 7, 6, 5, 4. В setup() задаются вывод передатчика, mySwitch.setPulseLength(312) и mySwitch.setProtocol(1), после чего всем розеткам отправляется команда выключения.
Каждой из 16 клавиш сопоставлена пара «код группы — код розетки» в виде строк из пяти нулей и единиц, а текущее состояние хранится в массиве. Нажатие клавиши меняет состояние на противоположное и вызывает switchOn или switchOff с нужными кодами. Группу и код для каждой клавиши можно назначить любые.
Если что-то не работает
- Нет связи между модулями — проверить подключение приёмника и передатчика.
- Связь пропадает с расстоянием — припаять к обоим модулям антенны по 17 см; возможно, превышена максимальная дальность.
- Розетки не переключаются — проверить код группы и код розетки, а также параметры радиопередачи в скетче.