О работе пультов и радиомодулей на 433 МГц

18 сентября 2017

В сети можно найти массу примеров использования радиомодулей на 433 МГц совместно с Arduino. Обычно эти примеры ограничиваются чем-то вроде «а давайте подключим библиотеку VirtualWire, воспользуемся парой процедур из нее, и опа, все магическим образом работает». Само собой разумеется, меня такое положение дел не устраивает, потому что я хочу знать точно, как эти модули общаются с Arduino, и что именно они передают в эфир. Давайте же во всем разберемся!

Так выглядят классические радиомодули на 433 МГц:

Радиомодули на 433 МГц

На фото слева находится передатчик, а справа — приемник. Модули осуществляют одностороннюю связь. Для двусторонней потребуется два приемника и два передатчика. На AliExpress комплект из двух передатчиков и двух приемников обойдутся вам в районе 2$ с доставкой, или даже дешевле.

Как ни странно, в пределах одной комнаты модули вполне сносно обмениваются данными без каких-либо антенн. Однако для лучшей работы антенны к ним лучше припаять. В качестве антенны можно использовать медный провод длиной 1/4 длины волны, то есть, в нашем случае, около 17 сантиметров. Это будет так называемая штыревая антенна. В качестве альтернативы можно использовать цилиндрические спиральные антенны. Они существенно короче штыревых антенн (4-15% длины волны), правда и радиус действия у них меньше. Как вы можете видеть по фото, я решил использовать штыревые антенны. Штыревая антенна и цилиндрическая спиральная антенна являются частными случаями монополя.

Fun fact! Существуют другие, но совместимые передатчики на 433 МГц, в частности раз и два. Кроме того, есть и альтернативный приемник. Но он не вполне совместим, так как на выходе всегда выдает какой-то сигнал, независимо от того, осуществляется ли реально сейчас передача, или нет.

Для своих экспериментов я также использовал купленный на eBay пульт от гаража с внутренним DIP-переключателем:

Пуль от гаража с DIP-переключателем

При некотором везении такие пульты все еще можно найти как на eBay, так и на AliExpress по запросу вроде «garage door opener 433mhz with dip switch». Но в последнее время их вытесняют «программируемые» пульты, умеющие принимать и копировать сигнал других пультов. Доходит вплоть до того, что продавцы высылают пульты без DIP-переключателя даже в случае, если он явно изображен на представленном ими фото и указан в описании товара. Полагаться на внешнюю схожесть пульта с тем, что использовал я, также не стоит. Впрочем, если вы решите повторить шаги из этой заметки, наличие или отсутствие DIP-переключателя не сыграет большой роли.

Модули крайне просто использовать в своих проектах:

Пример использования радиомодулей на 433 МГц

Как приемник, так и передатчик, имеет пины VCC, GND и DATA. У приемника пин DATA повторяется дважды. Питаются модули от 5 В. На фото слева собрана схема, в который светодиод подключен к пину DATA приемника. Справа собрана схема с передатчиком, чей пин DATA подключен к кнопке и подтягивающему резистору. Плюс в обоих схемах используется стабилизатор LM7805. Проще некуда.

Fun fact! Один из способов угона автомобилей или кражи из них ценных вещей заключается в том, чтобы во время, когда водитель ставит автомобиль на сигнализацию, глушить несущую пульта от сигнализации, те самые 433 МГц. Водитель в спешке может на заметить, что машина не мигнула фарами, и оставить ее без сигнализации. Приведенная выше схема с приемником и светодиодом в сущности является вполне законченным устройством, определяющим, не глушит ли кто-нибудь соответствующие частоты.

При нажатии на кнопку светодиод загорается. Если посмотреть на сигнал, выдаваемый приемником, с помощью осциллографа, он будет выглядеть как-то так:

Сигнал, соответствующий нажатию кнопки

Вскоре после отпускания кнопки на какое-то время появляется, и затем исчезает, шум. Сказать по правде, мне этот эффект не совсем понятен. Он может возникать в результате дребезга контактов, либо просто потому что модули не рассчитаны на продолжительную передачу постоянного сигнала.

Если же попробовать понажимать кнопки на пульте, светодиод замигает. Осциллограмма при этом будет примерно следующей:

Осциллограмма сигнала, принятого от пульта

Можно заметить явное соответствие между полученным сигналом, и положением DIP-переключателей в пульте в сочетании с нажатой кнопкой. Это соответствие иллюстрирует следующая табличка, где точка представляет короткий сигнал на осциллограмме, а тире — длинный:

DIP Switch:   1  1  0  1  0  0  1  0
Замочек      -- -- .. -- .. .. -- .. .. .. .. -- .
Вверх        -- -- .. -- .. .. -- .. .. .. -- .. .
Квадратик    -- -- .. -- .. .. -- .. .. -- .. .. .
Вниз         -- -- .. -- .. .. -- .. -- .. .. .. .

Как видите, каждый бит информации передается дважды. К сожалению, на данном этапе нельзя с полной уверенностью сказать, то ли это особенность работы приемника, то ли пульт действительно так передает данные, например, для борьбы с помехами. Понять, что же действительно происходит в эфире, нам поможет Software-Defined Radio. Я лично использовал LimeSDR, но в данном конкретном случае подойдет, пожалуй, любая железка, в том числе и RTL-SDR. Тема SDR ранее подробно рассматривалась в заметке Начало работы с LimeSDR, Gqrx и GNU Radio.

Запишем сигнал при помощи Gqrx и откроем получившийся файл в Inspectrum:

OOK сигнал в Inspectrum

Здесь мы видим такие же короткие и длинные сигналы, что нам показал осциллограф. Кстати, такой способ кодирования сигнала называется On-Off Keying. Это, пожалуй, самый простой способ передачи информации при помощи радиоволн, который только можно вообразить.

Используя GNU Radio, можно пойти чуть дальше, и построить зависимость амплитуды сигнала от времени. Соответствующий проект (исходники на GitHub):

Декодирование OOK в GNU Radio

Запускаем, и на Scope Plot видим:

Scope Plot амплитуды OOK сигнала

Практически такой же сигнал, что нам показал осциллограф!

Как видите, копеечные радиомодули на 433 МГц дают нам огромный простор для творчества. Их можно использовать не только друг с другом, но и со многими другими устройствами, работающими на той же частоте. Можно вполне успешно использовать их в чисто аналоговых устройствах без какого-либо микроконтроллера, например, с таймером 555. Можно реализовывать собственные протоколы с чексуммами, сжатием, шифрованием и так далее, безо всяких ограничений, скажем, на длину пакета, как у NRF24L01. Наконец, модули прекрасно подходят для broadcast посылки сообщений.

А какие потрясающие применения этим радиомодулям приходят вам на ум?

Дополнение: Также вас могут заинтересовать посты Наблюдаем за самолетами при помощи RTL-SDR и ADS-B, Декодируем сигнал с OOK-модуляцией и паяем кликер и Изучаем сигналы NRF24L01 с помощью LimeSDR.

Метки: , , .


Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.