Как работает RC-переключатель для Arduino. Какие протоколы поддерживает библиотека rc-switch. Как подключить и настроить RC-передатчик и приемник 433 МГц к Arduino. Примеры использования RC-переключателя в проектах умного дома.
Что такое RC-переключатель и для чего он нужен
RC-переключатель (Remote Control Switch) — это устройство для беспроводного управления электроприборами по радиоканалу. Он позволяет дистанционно включать и выключать различные устройства, такие как лампы, розетки, электромоторы и др.
Основные компоненты системы RC-переключателя:
- Передатчик — отправляет команды по радиоканалу
- Приемник — принимает команды и управляет нагрузкой
- Микроконтроллер (например, Arduino) — обрабатывает сигналы
- Исполнительное устройство (реле) — включает/выключает нагрузку
Наиболее распространенная частота для RC-переключателей — 433 МГц. Это нелицензируемый диапазон, разрешенный для маломощных устройств.
Как работает RC-переключатель на базе Arduino
Принцип работы RC-переключателя на Arduino следующий:

- Arduino подключается к радиопередатчику 433 МГц
- При нажатии кнопки Arduino формирует кодированный сигнал
- Передатчик отправляет сигнал по радиоканалу
- Приемник 433 МГц принимает сигнал
- Arduino декодирует принятый сигнал
- При совпадении кода Arduino активирует реле
- Реле включает или выключает подключенное устройство
Для кодирования и декодирования сигналов используется специальная библиотека, например rc-switch.
Библиотека rc-switch для Arduino
Библиотека rc-switch — это популярное решение для работы с RC-переключателями на базе Arduino. Она позволяет легко отправлять и принимать закодированные радиосигналы.
Основные возможности rc-switch:
- Поддержка популярных протоколов кодирования (PT2262, EV1527 и др.)
- Отправка команд на 433/315 МГц передатчики
- Прием и декодирование сигналов с 433/315 МГц приемников
- Управление беспроводными розетками и реле
- Эмуляция различных пультов ДУ
- Простой API для интеграции в проекты
Библиотека rc-switch значительно упрощает разработку проектов с использованием RC-переключателей на Arduino.

Подключение RC-передатчика и приемника к Arduino
Для создания системы RC-переключателя на Arduino понадобятся следующие компоненты:
- Arduino (Uno, Nano или другая совместимая плата)
- Передатчик 433 МГц
- Приемник 433 МГц
- Реле для управления нагрузкой
- Макетная плата и провода для соединения
Схема подключения модулей к Arduino:
- Подключите VCC передатчика и приемника к 5V на Arduino
- Подключите GND передатчика и приемника к GND на Arduino
- Подключите DATA передатчика к пину 10 на Arduino
- Подключите DATA приемника к пину 2 на Arduino
- Подключите сигнальный пин реле к пину 4 на Arduino
После подключения модулей можно приступать к программированию Arduino с использованием библиотеки rc-switch.
Настройка и программирование RC-переключателя
Для работы с RC-переключателем на Arduino необходимо выполнить следующие шаги:
- Установите библиотеку rc-switch через менеджер библиотек Arduino IDE
- Подключите библиотеку в скетче: #include <RCSwitch.h>
- Создайте объект RCSwitch: RCSwitch mySwitch = RCSwitch();
- В setup() настройте пины: mySwitch.enableTransmit(10);
- Для отправки команды используйте метод send()
- Для приема используйте available() и getReceivedValue()
Пример простого скетча для отправки команды:

Этот код будет отправлять команду с кодом 1234 каждую секунду.
Примеры использования RC-переключателя в проектах
RC-переключатели на базе Arduino можно применять во многих проектах умного дома и автоматизации. Вот несколько популярных примеров:
1. Беспроводное управление освещением
Используя RC-переключатель, можно дистанционно включать и выключать светильники. Это удобно для управления труднодоступными лампами или создания сценариев освещения.
2. Автоматизация гаражных ворот
RC-переключатель позволяет открывать и закрывать гаражные ворота с помощью пульта или смартфона. Можно добавить датчики для автоматического закрытия.
3. Умные розетки
Подключив реле к розетке, можно управлять питанием любых электроприборов дистанционно. Это полезно для экономии энергии и повышения безопасности.

4. Система полива растений
RC-переключатель может активировать насосы или клапаны для автоматического полива по расписанию или при определенных условиях.
5. Управление вентиляцией
С помощью RC-переключателя можно включать и выключать вентиляторы для поддержания оптимального микроклимата в помещении.
Протоколы кодирования, поддерживаемые rc-switch
Библиотека rc-switch поддерживает несколько популярных протоколов кодирования для RC-переключателей:
- PT2262 / PT2272
- EV1527
- SC5262 / SC5272
- HT6P20X
Наиболее распространенным является протокол PT2262, который использует триггерное кодирование. Каждая команда состоит из последовательности коротких и длинных импульсов, представляющих биты 0 и 1.
Пример кодирования команды в протоколе PT2262:
«`text Команда: 1011001010 Кодированный сигнал: ▄▄▄▄▄▄▄▄▄▄█▄▄▄▄▄█▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄█▄▄▄▄▄▄▄█▄▄▄▄▄█ 1 0 1 1 0 0 1 0 1 0 ▄ — короткий импульс (бит 0) █ — длинный импульс (бит 1) «` Библиотека rc-switch автоматически кодирует и декодирует сигналы в соответствии с выбранным протоколом.
Безопасность и шифрование в RC-переключателях
При использовании RC-переключателей важно учитывать вопросы безопасности, так как простые протоколы могут быть легко перехвачены или подделаны. Вот несколько рекомендаций по повышению безопасности:
- Используйте протоколы с плавающим кодом (например, KeeLoq)
- Применяйте дополнительное шифрование данных
- Ограничьте мощность передатчика для уменьшения радиуса действия
- Используйте уникальные коды для каждого устройства
- Периодически меняйте коды доступа
Для критически важных систем рекомендуется использовать более защищенные протоколы связи, такие как Wi-Fi с шифрованием или специализированные решения для IoT.
Расширение возможностей RC-переключателя
Базовую функциональность RC-переключателя на Arduino можно расширить различными способами:
Интеграция с другими датчиками
Подключив дополнительные датчики (движения, освещенности, температуры), можно создать более сложные системы автоматизации. Например, включать свет при обнаружении движения в темное время суток.

Управление через интернет
Добавив модуль Wi-Fi или Ethernet, можно управлять RC-переключателем удаленно через интернет. Это позволит контролировать устройства из любой точки мира.
Создание сценариев и расписаний
Используя RTC-модуль, можно настроить включение и выключение устройств по расписанию. А применив микро-SD карту, можно хранить сложные сценарии работы.
Голосовое управление
Интегрировав RC-переключатель с системами голосового управления (Google Assistant, Alexa), можно управлять устройствами с помощью голосовых команд.
Мониторинг энергопотребления
Добавив датчик тока, можно отслеживать энергопотребление подключенных устройств и создавать системы умного энергосбережения.
Расширяя базовую функциональность, можно создавать сложные и интеллектуальные системы домашней автоматизации на основе простых RC-переключателей.
Еще одна библиотека для работы с 433 MHz устройствами / Хабр
Всем привет!
Хочу поделиться JAVA библиотекой для работы с радио-устройствами домашней автоматизации (обычно 433.92 МГц) над которой я работаю в последнее время. Она еще достаточно сырая для серьезного использования, но для домашних поделок — в самый раз
Адрес на github — github.com/eschava/rf-protocols-java
Предпосылки к созданию
После покупки Cubietruck решил перенести на него все задачи умного дома, которые выполнялись на Ардуино. В основном это прием и передача радио-сообщений устройствам домашней автоматизации (розетки, датчики, отопление)
Все, что было найдено в сети, было либо сделано только для Raspberry Pi, либо слишком заточено под какую-то определенную функциональность. Поэтому решил реализовать все самому, используя привычный язык разработки (Java) и сделать как можно более гибким и расширяемым (реестр фабрик и все такое, как это принято в джаве)
Для работы с RF устройствами посредством GPIO портов выбрал достаточно малоизвестную, но многообещающую библиотеку libbulldog которая позволяет абстрагироваться от платформы на которой все запущено. На данный момент поддерживаются (теоретически) Raspberry Pi, BeagleBoard, Cubieboard, но тестировалось только на Cubieboard3 (aka Cubietruck) который есть у меня в наличии.
Также поддерживается (опять же теоретически) популярная библиотека для Raspberry PI Pi4j, но, к сожалению, не было возможности опробовать ее на практике
Основные идеи
- Независимость от платформы
- Автономность всех компонент (для реализации любых задач)
- Легкая расширяемость (поддержка новых устройств и платформ)
- Декодированные сообщения поддерживают два интерфейса: обычный вызов методов (getTemperature()) и обращение к свойствам по имени
- Максимальный вынос настроек за пределы кода для более точной подстройки под устройства без изменения кода
Что реализовано
На данный момент реализованы следующие протоколы
— Oregon V2 (датчики температуры, влажности, такие как THN132N, THR238NF, THWR800, THGN132N и т. д.)
— Oregon V3 (датчики температуры, влажности)
— Oregon SL109 (датчики температуры, влажности)
— Owl (датчики потребляемого тока Owl Micro+)
— PT2262/PT2272 (китайские радиореле, соответствующая ардуино библиотека называется RC-switch)
— RemoteSwitch (китайские радиореле, название по аналогии с известной ардуино библиотекой)
— несколько утилит для исследования и диагностики протоколов (см. далее)
— MQTT клиент для бесшовной интеграции с системами умного дома (см. далее)
В планах добавить поддержку как можно большего количества популярных радио протоколов (в первую очередь хотелось бы Noolite и La Cross)
Архитектура
Работа с радио-протоколами разбита на три уровня:
— непосредственно сигналы, поступающие от приемника на GPIO порт (уровень сигналов)
— сигналы трансформируются в пакеты. Как правило это последовательность битов (уровень пакетов)
— пакеты анализируются и становятся сообщениями. Сообщения уже имеют конкретные пользовательские свойства (температура, команда и т.д.) (уровень сообщений)
Каждый уровень независим от соседних и может использоваться повторно (например преобразование из сигналов в пакеты часто одинаковое для многих устройств, но уже формирование сообщений из пакетов уникально)
Все протоколы могут максимально настраиваться с помощью .properties файлов, так как многие константы (например продолжительность импульсов) могут варьироваться для разных устройств
Утилиты для исследования протоколов
Их на данный момент две. Покажу как используя обе из них, разобраться с протоколом от радио-брелоков с микросхемой PT2262 (самый популярный на aliexpress)
— breakdown: служит для исследования длины импульсов поступающих от приемника. Как правило, когда устройство не посылает данные в эфир, на GPIO порт от приемника поступает шум с разнообразной длиной импульсов, но если нажать кнопку на передатчике или дождаться сигнала, то заметно, что принимаемые импульсы по продолжительности попадают в некоторые группы. Например для кнопки включения программа выдаст такие данные (продолжительность импульсов в микросекундах):
cubie@Cubian:~/gpio$ sudo java -cp bulldog.cubieboard.jar:rf-protocols-0.1-SNAPSHOT.jar -DpropertiesFile=breakdown.properties -Dlistener.groupCount=20 -Dlistener.maxLength=2000 rf.protocols.analysis.breakdown.BreakdownMain <100 <200 <300 <400 <500 <600 <700 <800 <900 <1000 <1100 <1200 <1300 <1400 <1500 <1600 <1700 <1800 <1900 <2000 >=2000 2054 1099 573 223 137 92 45 48 13 12 9 8 5 3 5 6 1 0 2 1 30 2399 1417 686 317 155 111 52 30 6 2 7 0 3 2 1 0 0 1 1 1 7 2479 1396 675 319 189 103 59 28 5 6 4 0 1 0 1 2 3 0 0 1 5 2333 1351 751 316 199 91 34 26 9 7 2 2 2 2 1 3 2 0 1 1 7 2307 1254 712 297 175 108 106 20 6 5 1 3 1 0 0 1 2 2 0 1 9 1249 714 368 164 182 158 33 12 3 6 0 4 10 110 63 2 2 0 1 0 12 1 0 1 0 171 232 0 0 0 0 0 1 0 252 127 3 0 0 0 0 22 0 0 0 0 173 226 0 0 0 0 0 0 1 247 131 2 0 0 0 0 21 1 0 1 0 201 196 0 0 0 0 0 0 1 217 156 4 0 0 0 0 20 0 0 0 0 216 188 0 0 1 0 0 0 0 218 159 4 0 0 0 0 22 0 0 0 1 195 205 0 0 0 0 0 1 0 227 152 2 0 0 0 0 21
Первая половина строчек — шум, вторая — зажата кнопка на брелоке
Из вывода утилиты становится понятно, что импульсы попадают в следующие группы: (400, 600) и (1300, 1600) (если еще немножко поэкспериментировать с группами, то можно выяснить, что есть еще импульсы из группы (15000, 16000))
Теперь попробуем понять, как чередуются импульсы из этих групп. Для этого нам понадобится следующая утилита
— intervals: позволяет дать интервалам импульсов имена и увидеть их последовательность. Назовем первую группу «0», вторую «1», а последнюю, самую длинную, «S». И будем выводить только группы, в которых не меньше 20 импульсов подряд, попадающих в эти интервалы:
cubie@Cubian:~/gpio$ sudo java -cp bulldog.cubieboard.jar:rf-protocols-0.1-SNAPSHOT.jar -DpropertiesFile=pt2262.properties rf.protocols.analysis.intervals.IntervalsMain [678]10010101100110101001010[1296] (23) [-1]01011001010101011001010110011010100101010101010S0101011001010101011001010110011010100101010101010S0101011001010101011001010110011010100101010101010S0101011001010101011001010110011010100101010101010[150716] (197) [770]100101011001101010010101010[1281] (27) [3418]S0101011001010101011001010110011010100101010101010S0101011001010101011001010110011010100101010101010S0101011001010101011001010110011010100101010101010S010101100101010101100101011001[934] (181)
(Пояснение — числа в квадратных скобках это продолжительность импульсов перед и после последовательности. Иногда помогает понять почему последовательность прервалась посредине, число в круглых скобках — количество сигналов в последовательности)
Видно, что последовательность между импульсами под названием S всегда одинакова для одной кнопки и выглядит как
0101011001010101011001010110011010100101010101010
Если поизучать последовательности, получаемые от разных кнопок, то можно увидеть что это всегда группы из символов
0101
1010
0110
плюс всегда нолик в конце (синхронизация)
Похоже на троичную систему счисления. Дадим им имена 0,1 2 и получим последовательность
020020221000 для кнопки включения и
020020220100 для кнопки выключения
Можно считать, что дело сделано.
MQTT клиент
Также в библиотеку входит MQTT клиент, который может быть запущен как отдельное приложение для бесшовной интеграции с готовыми системами умного дома (планировалось с openHAB)
Клиент:
— автоматически посылает MQTT сообщения для всех полученных данных. Например температура, полученная от Oregon устройства, будет опубликована по топику
rf/OregonV2/Temperature
— слушает топики rf/send/PROTOCOL и отправляет радиокоманды с данными, полученными по топику. Например чтобы просимулировать команду от брелока из предыдущего пункта, нужно отправить команду 020020221000 по топику rf/send/pt2262
Запуск:sudo java -cp bulldog.cubieboard.jar:mqtt-client-0.4.0.jar:ST4-4.0.8.jar:rf-protocols-0.1-SNAPSHOT.jar:antlr-runtime-3.5.2.jar -DpropertiesFile=mqtt.properties rf.protocols.external.paho.MqttMain
Как запустить самостоятельные приложения, входящие в библиотеку
На данный момент все самостоятельные приложения, входящие в библиотеку, запускаются как обычные Java-приложения с методом main()
Также все имеют -DpropertiesFile параметр для задания файла с настройками (пины, библиотека для работы с пинами и прочее). Примеры .properties файлов есть на github’е ( github. com/eschava/rf-protocols-java/tree/master/examples )
Кроме приложений, описанных раннее, есть еще следующие:
Вывод всех полученных сообщений на консольsudo java -cp bulldog.cubieboard.jar:rf-protocols-0.1-SNAPSHOT.jar -DpropertiesFile=protocols.properties rf.protocols.analysis.PrintAllMessages
Вывод всех полученных пакетов (более низкоуровневые данные, чем сообщения, как правило это шестнадцатеричный дамп пакетов)sudo java -cp bulldog.cubieboard.jar:rf-protocols-0.1-SNAPSHOT.jar -DpropertiesFile=protocols.properties rf.protocols.analysis.PrintAllPackets
Отправка сообщения по протоколуsudo java -cp bulldog.cubieboard.jar:rf-protocols-0.1-SNAPSHOT.jar -DpropertiesFile=sendmessage.properties -Dprotocol=RemoteSwitch -Dmessage=111110222220 rf.protocols.analysis.SendStringMessage
Вроде бы все
Жду отзывов, баг-репортов, фич-реквестов и прочих страшных слов
RCSwitch20 — релейный переключатель с дистанционным управлением
Описание
RCSwitch20 — это релейный переключатель с дистанционным управлением . Его можно включать и выключать с помощью контроллера RC . Некоторые примеры применения RCSwitch20:
- Мощное вспомогательное оружие в боевом турнире RC.
- Свечи накаливания на радиоуправляемых автомобилях с нитро.
- Мощная система освещения на радиоуправляемых самолетах, лодках и автомобилях.
- Бытовая техника и домашняя автоматизация.
- Некритическая автомобильная электрическая электрика, такая как Glow Wire
Особенности
Технические характеристики:
- Тип ретранс. Размеры: 43,4 мм x 38,3 мм x 17,4 мм
Ресурсы
Вопросы и ответы (6)
fritzing требует разрешения для загрузки. пожалуйста, предоставьте мне доступ к файлу fritzing. ( Мохаммед Табиш пател , 03.05.2022 )
Извините за эту проблему. Позвольте мне проверить с моей командой. В то же время отправьте электронное письмо по адресу [email protected].
Может ли он работать с 2-элементным Lipo на стороне сигнала RC? (Рабочее напряжение) Или 6В это максимум? Будет ли он гореть на 8. 4v? Можно ли изменить точку срабатывания переключателя?
(Саураб Шривастава, 26.09.2016)
Привет, нормальное напряжение питания для RC-переключателя составляет 5 В, а максимальное — 6 В. Что вы подразумеваете под триггерной точкой? Вход для управления переключателем RC зависит от ваших настроек на контроллере TX/RX. Если у вас есть дополнительные вопросы, вы можете задать их на нашем техническом форуме, так как эта сессия предназначена только для краткого запроса. Спасибо. 🙂
Можно ли это использовать с XYD-6D-350? (Mr.B27, 09.09.2016)
Привет. Да, вы можете использовать его, но для поддержания тока необходимо использовать соленоидный пускатель двигателя. Если у вас есть дополнительные вопросы, вы можете задать их на нашем техническом форуме, так как эта сессия предназначена только для краткого запроса. Спасибо. ??
Я использовал RCSwitch20 в течение 2 лет, и недавно он стал чувствителен к температуре. Обычно он отключается через 1,4-1,5 мс, но нейтральная зона снижается до менее 1 мс при температуре около 100 градусов (F) и возвращается при охлаждении. Я проверил ответственные части на плате и обнаружил, что конденсатор C2 очень чувствителен к теплу. Не могли бы вы сказать мне номер емкости cpacitor C2, чтобы я мог попытаться исправить его, прежде чем выбрасывать?
( Цунэтаро Сакурай, 29 лет/05/2016 )
Я полагаю, что наш друг из Elefine связался с нами по этому вопросу, и наша техническая команда ответила на него. Вы также можете связаться с нашей командой преподавателей по адресу [email protected]
. это можно использовать как контроллер (Джефф, 19.05.2015)
Как контроллер? Не совсем понимаю, что вы имеете в виду. Это устройство будет получать входные данные от приемника RC и включать/выключать реле в соответствии с сигналом RC.
привет .. как управлять двигателем вперед-назад с помощью RC-переключателя, пожалуйста, совет … tq (Эми, 29 лет/03/2015 )
RCSwitch20 может только включать/выключать двигатель, но не может изменять направление вращения двигателя.
Задать вопрос
Ваше имя
Электронная почта
Ваш вопрос
Отзывы (11)
- Средняя оценка:
5 из 5
Всего отзывов (11)
5
100%
4
0%
3
0%
2
0%
1
0% 9003
- 32
0%
- 13199239000
9000 9000
9000 9000 9291299000
9000 9000
- 992992910009000
- 132
RCS10A,
RCSwitch20,
Контроллер роботов,
Драйвер двигателя постоянного тока rcswitch20,
мотор,
Водитель,
rcs10a
RC-переключатель Pololu со средним полевым МОП-транзистором нижнего плеча
Обзор
0Типовая схема подключения RC-переключателя Pololu с МОП-транзисторным транзистором среднего нижнего плеча.
RC-переключатель Pololu со средним полевым МОП-транзистором нижнего плеча можно использовать со стандартными любительскими системами радиоуправления для радиоуправляемых переключателей или приложений с простым интерфейсом. Примеры использования включают преобразование дополнительных выходов RC-приемника или сервоконтроллера в простые сигналы высокого/низкого уровня, которые могут управлять светодиодами или реле, и подключение RC-систем к проектам микроконтроллеров, которые не имеют необходимых ресурсов для декодирования RC-интерфейса. Два выхода указывают на наличие действительного сигнала и на то, включен ли переключатель, а встроенный полевой МОП-транзистор нижнего плеча включается, когда переключатель включен, что позволяет плате напрямую управлять умеренными нагрузками. Коммутатор также оснащен обратным (или обратным) диодом на выходах нагрузки, так что вы можете подключить к ним катушку, такую как двигатель или реле, без каких-либо дополнительных внешних компонентов.
Встроенный регулятор позволяет питать коммутатор от напряжения от 2,5 В до 16 В. Это позволяет питать плату от 4- или 5-элементного NiMH или NiCD аккумуляторного блока. Аккумулятор обычно подключается к радиоуправляемому приемнику или сервоконтроллеру, который передает питание на радиоуправляемый переключатель. МОП-транзистор на плате может выдавать до 15 А при напряжении питания 5 В и может работать с напряжением питания нагрузки до 30 В. мкс гистерезиса), чтобы решить, включать ли полевой МОП-транзистор. По умолчанию порог составляет примерно 1700 мкс, при этом активация переключателя происходит выше порога (более длинные импульсы), но у коммутатора есть режим обучения, который позволяет изменить порог и направление активации. Функция безопасного запуска снижает вероятность неожиданной активации.
Это компактное устройство имеет размеры 0,6″ × 0,825″ и весит чуть более грамма (0,04 унции) без прилагаемых штифтов.
RC-переключатель Pololu с МОП-транзисторным транзистором среднего нижнего плеча с клеммными колодками и разъемами, припаянными к компонентной стороне.
RC-переключатель Pololu с МОП-транзисторным транзистором средней мощности на макетной плате.
Выходы и светодиодный индикатор
RC-переключатель сообщает о своем состоянии с помощью желтого светодиодного индикатора. Информация о состоянии также предоставляется на двух выходных контактах:
- Контакт GOOD указывает на наличие действительного сигнала RC (частота импульсов 10–330 Гц, ширина импульса 0,5–2,5 мс).
- Контакт OUT показывает, включен ли полевой МОП-транзистор.
Дополнительную информацию об использовании переключателя Pololu RC со средним полевым МОП-транзистором нижнего плеча можно найти в руководстве пользователя.
Аппаратное обеспечение в комплекте
12-контактный прямой разъемный штекерный разъем 0,1″ и две 3,5-мм 2-контактные клеммные колодки входят в комплект поставки RC-переключателя Pololu со средним полевым МОП-транзистором нижнего плеча.