В сети можно найти массу примеров использования радиомодулей на 433 МГц совместно с Arduino. Обычно эти примеры ограничиваются чем-то вроде «а давайте подключим библиотеку VirtualWire, воспользуемся парой процедур из нее, и опа, все магическим образом работает». Само собой разумеется, меня такое положение дел не устраивает, потому что я хочу знать точно, как эти модули общаются с Arduino, и что именно они передают в эфир. Давайте же во всем разберемся!
Так выглядят классические радиомодули на 433 МГц:
На фото слева находится передатчик, а справа — приемник. Модули осуществляют одностороннюю связь. Для двусторонней потребуется два приемника и два передатчика. На AliExpress комплект из двух передатчиков и двух приемников обойдутся вам в районе 2$ с доставкой, или даже дешевле.
Как ни странно, в пределах одной комнаты модули вполне сносно обмениваются данными без каких-либо антенн. Однако для лучшей работы антенны к ним лучше припаять. В качестве антенны можно использовать медный провод длиной 1/4 длины волны, то есть, в нашем случае, около 17 сантиметров. Это будет так называемая штыревая антенна. В качестве альтернативы можно использовать цилиндрические спиральные антенны. Они существенно короче штыревых антенн (4-15% длины волны), правда и радиус действия у них меньше. Как вы можете видеть по фото, я решил использовать штыревые антенны. Штыревая антенна и цилиндрическая спиральная антенна являются частными случаями монополя.
Fun fact! Существуют другие, но совместимые передатчики на 433 МГц, в частности раз и два. Кроме того, есть и альтернативный приемник. Но он не вполне совместим, так как на выходе всегда выдает какой-то сигнал, независимо от того, осуществляется ли реально сейчас передача, или нет.
Для своих экспериментов я также использовал купленный на eBay пульт от гаража с внутренним DIP-переключателем:
При некотором везении такие пульты все еще можно найти как на eBay, так и на AliExpress по запросу вроде «garage door opener 433mhz with dip switch». Но в последнее время их вытесняют «программируемые» пульты, умеющие принимать и копировать сигнал других пультов. Доходит вплоть до того, что продавцы высылают пульты без DIP-переключателя даже в случае, если он явно изображен на представленном ими фото и указан в описании товара. Полагаться на внешнюю схожесть пульта с тем, что использовал я, также не стоит. Впрочем, если вы решите повторить шаги из этой заметки, наличие или отсутствие DIP-переключателя не сыграет большой роли.
Модули крайне просто использовать в своих проектах:
Как приемник, так и передатчик, имеет пины 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:
Здесь мы видим такие же короткие и длинные сигналы, что нам показал осциллограф. Кстати, такой способ кодирования сигнала называется On-Off Keying. Это, пожалуй, самый простой способ передачи информации при помощи радиоволн, который только можно вообразить.
Используя GNU Radio, можно пойти чуть дальше, и построить зависимость амплитуды сигнала от времени. Соответствующий проект (исходники на GitHub):
Запускаем, и на Scope Plot видим:
Практически такой же сигнал, что нам показал осциллограф!
Как видите, копеечные радиомодули на 433 МГц дают нам огромный простор для творчества. Их можно использовать не только друг с другом, но и со многими другими устройствами, работающими на той же частоте. Можно вполне успешно использовать их в чисто аналоговых устройствах без какого-либо микроконтроллера, например, с таймером 555. Можно реализовывать собственные протоколы с чексуммами, сжатием, шифрованием и так далее, безо всяких ограничений, скажем, на длину пакета, как у NRF24L01. Наконец, модули прекрасно подходят для broadcast посылки сообщений.
А какие потрясающие применения этим радиомодулям приходят вам на ум?
Дополнение: Также вас могут заинтересовать посты Наблюдаем за самолетами при помощи RTL-SDR и ADS-B, Декодируем сигнал с OOK-модуляцией и паяем кликер и Изучаем сигналы NRF24L01 с помощью LimeSDR.
Метки: SDR, Беспроводная связь, Электроника.
eax.me
Данное устройство позволяет управлять четырьмя нагрузками по радиоканалу. В качестве процессора используется PIC12F675. В нем залиты ключи активации для всех 4х каналов. В качестве радиомодулей применены дешевые FS1000A с несущей частотой 433 МГц.
На схеме транзистор на выводе 7 контроллера показан для примера коммутации мощной нагрузки в ключевом режиме. Номера внутри «схемы МК» номера каналов управления. Переключатель используется для активации режима триггера. Во включенном состоянии — кратковременное нажатие на пульте активирует нагрузку и приемник удерживает ее до тех пор, пока не поступит следующее нажатие. Выключенное состояние — кратковременное нажатие кнопки на пульте — кратковременное включение нагрузки.
Все каналы независимы и можно использовать одновременно все. Устройство довольно легко повторяется. Дальность активации нагрузок по прямой видимости до 70 метров. Вся сложность при изготовлении заключается в прошивке микроконтроллера PIC12F675. Для прошивки использовал программу winpic800 и вот такой очень простой COM-программатор:
Транзистор полевой BS170 заменил на 2N7000. Как программатор поведет себя с переходниками USB-COM не знаю.
При первом чтении МК ОБЯЗАТЕЛЬНО записываем или гравируем на чипе последние 4 символа в коде. До прошивки, открываем hex файл и добавляем в конец кода значения константы (4 символа — они разные для каждого МК). Это заводская константа, если ее не записывать, то можно выкинуть контроллера. Затем только прошиваем микроконтроллер. WinPic800 сама записывает значения константы и прошивает все правильно, но на всякий случай лучше записать их где-нибудь.
Прошивка написана товарищем «4uvak» с сайта «паяльник». Вот архив с файлами, в том числе на печатные платы. А вот готовое устройство дистанционного управления по радиоканалу:
Пульт ДУ упаковал так:
При изготовлении, прежде чем думать о том, что устройство не работает — проверьте, работают ли модули FS1000A. Провести испытание можно по этой схеме. Светодиод должен немного подмигивать при нажатии кнопки у передатчика.
Насчет антенн — это куски провода 0.5-1 мм в диаметре, длиной 16 см. Это как раз 1/4 волны с учетом коэффициента укорочения. В спираль антенны не советую закручивать, диаграмма направленности при этом будет не круговая, а похожа на штаны.
Где можно использовать такую штуку? Практически везде, где используется электричество. Самый простой вариант — в качестве нагрузки приемника реле использовать и коммутировать уже все что угодно, начиная от настольных ламп и утюгов, заканчивая компьютерами и замками. А можно и машинку на радиоуправлении сделать — команды ведь как раз четыре (^ v < >).
Автор прошивки 4uvak, сборка и испытание схемы BFG5000.
Форум
Обсудить статью ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ ПО РАДИОКАНАЛУ
radioskot.ru
Отчасти поэтому, отчасти от нечего делать, пошел на Aliexpress искать решение своей проблемы. А именно — обучаемого пульта, чтобы скопировать один из работающих брелков, и горя не знать.
В общем, это у меня так и не получилось, но зато брелки пригодились для управления светом дома.
Если честно, это уже второй комплект брелков. Первый оказался совершенно бесполезным, потому что я допустил стратегический просчет. Я не очень хорошо разбираюсь во всякой там воротно-гаражно-шлагбаумной автоматике, поэтому сначала попер напролом. И заказал обычные брелки с фиксированным жестко зашитым кодом.
Почему? Эти брелки — программируемые и жестко прошитые — выглядят одинаково, и я подумал, что китайцы, вероятно, сами не знают, что продают. Но когда получил заказ, то понял — знают.
Помимо того, что первые брелки оказались необучаемыми, их код нельзя было прописать в контроллере Nice FLO X1R. В общем, так у меня оказалась пара симпатичных брелков для ношения ключей.
Во второй раз я оказался умнее, и купил именно что обучаемые брелки. Пришли в спартанском виде: маленький желтый конвертик, в котором два брелка в индивидуальных целлофановых пакетиках.
Качество изготовления, по-моему, очень хорошее. Брелки довольно увесистые (26 г), из гладкого пластика (АБС, наверное) с металлической вставой и металлическим карабином для ключа или кольца с ключами. Серебристая окантовка — пластик. Еще плюс — сдвижная шторка, которая защищает кнопки от случайного нажатия. Дома, разумеется, не нужно, но для уличного применения — самое то.
Разбираются элементарно. Выкручиваем три самореза, разнимаем половинки корпуса, вынимаем серебристую окантовку, которая по совместительству фиксирует плату.
Батарейка уже внутри, что само по себе приятно.
mysku.me
При создании некоторых проектов, требуется разделить выполняемые задачи между несколькими arduino.
В этом уроке мы научимся соединять две Arduino по радиоканалу, на частоте 433,920 МГц, используя радио модули FS1000A и MX-RM-5V, на расстоянии до 100 м. Данное расстояние можно увеличить, припаяв антенны к передатчику (FS1000A) и приёмнику (MX-RM-5V), см. схему подключения.
Для реализации проекта нам необходимо установить библиотеки:
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki — Установка библиотек в Arduino IDE.
Первый усилитель любого приёмника и последний усилитель любого передатчика, это антенна. Самая простая антенна — штыревая (отрезок провода определённой длины). Длина антенны (как приёмника, так и передатчика), должна быть кратна четверти длины волны несущей частоты. То есть, штыревые антенны, бывают четвертьволновые (L/4), полуволновые (L/2) и равные длине волны (1L).
Длинна радиоволны вычисляется делением скорости света (299’792’458 м/с) на частоту (в нашем случае 433’920’000 Гц).
L = 299’792’458 / 433’920’000 = 0,6909 м = 691 мм.
Таким образом длина антенн для радио модулей на 433,920 МГц может быть: 691 мм (1L), 345 мм (L/2), или 173 мм (L/4). Антенны припаиваются к контактным площадкам, как показано на схеме подключения.
Радиопередатчик подключён к выводу D12 (можно подключить к любому выводу Arduino). Радиоприёмник подключён к выводу D2 (при работе с библиотекой iarduino_RF433, его можно подключить только к выводам использующим внешние прерывания). Trema четырехразрядный LED индикатор подключён к цифровым выводам D6 и D7 (можно подключить к любым выводам Arduino). Светодиод подключён к цифровому выводу D11 (для изменения яркости нужны выводы, которые используют ШИМ). Trema потенциометр и слайдер подключены к аналоговым входам A1 и A0 (можно подключить к любым аналоговым входам).
У радиоприёмника имеются два выхода DATA, они электрически соединены между собой, так что Вы можете использовать любой выход.
Приёмник MX-RM-5V критичен даже к небольшим пульсациям на шине питания (см. раздел недостатки).
Для питания Arduino, используйте внешний источник питания, а не шину USB.
Библиотека iarduino_RF433 (а также библиотеки RemoteSwitch и RCSwitch), в отличии от библиотеки VirtualWire, использует не аппаратный таймер, а внешнее прерывание. Это даёт возможность использовать другие библиотеки использующие первый аппаратный таймер и использовать любые выводы ШИМ, но радиоприёмник можно подключить только к тем выводам, которые используют внешнее прерывание:
Плата Arduino | Выводы использующие внешнее прерывание |
---|---|
Uno, ProMini, Nano, Ethernet | 2, 3 |
Leonadro, Micro | 2, 3, 0, 1, 7 |
Mega 2560 | 2, 3, 18, 19, 20, 21 |
Due | Любые выводы |
При старте (в коде setup) скетч настраивает работу радиопередатчика, указывая скорость передачи данных и номер трубы. После чего, постоянно (в коде loop), считывает показания с Trema потенциометра и Trema слайдера, сохраняя их в массив data, и отправляет его радиопередатчику.
При старте (в коде setup) скетч настраивает работу радиоприёмника, указывая те же параметры что и у передатчика, а также инициирует работу с LED индикатором. После чего, постоянно (в коде loop), проверяет нет ли в буфере данных, принятых радиоприёмником. Если данные есть, то они читаются в массив data, после чего значение 0 элемента (показания Trema слайдера) выводится на LED индикатор, а значение 1 элемента (показания Trema потенциометра) преобразуются и используется для установки яркости светодиода.
lesson.iarduino.ru
Отличная схема на полевом транзисторе. Показала хорошую стабильность, низкое потребление и очень неплохую чувствительность по звуку. Не содержит дефицитных деталей, легко повторяется.
Приблизительная дальность действия — 150-200 м (в диапазоне 100 МГц чуть меньше — 50-100 м). Это на хороший приемник, само собой. Несущая чистая, без паразитных излучений, хорошая акустическая чувствительность.
Почти все радиодетали — SMD типоразмера 0805. Катушка L1 представляет собой 4.5-5.5 витков провода 0.4-0.5 мм, намотанные на оправке диаметром 4 мм.
Принципиальная схема:
Варианты печатных плат:
Рабочая частота задается параметрами контура L1, C6, C7 (на схеме указаны номиналы для частоты ~100 МГц).
Для повышения рабочей частоты до 400-433 МГц необходимо использовать следующие номиналы: С6 — 6,8 пФ, С7 — 18 пФ, L1 — 2,5 вит провода 0,4-0,5 мм на оправке 2мм, связь с варикапом С5 — 2,2…3,3 пФ. Также имеет смысл уменьшить ёмкость между антенной и стоком до 1-3 пФ.
Микрофон любой миниатюрный электретный (от домофона, китайских магнитол и прочего).
Минус, как правило, соединен с корпусом. Проверять микрофоны следует «продувкой»: включить тестер в режиме измерения сопротивления и подуть в микрофон, если сопротивление меняется, значит он рабочий.
Если есть микрофон от старого телефона Самсунга С100, то берите его — получите очень нехилую чувствительность радиомикрофона (будет слышно каждый шорох).
В качестве антенны — кусок провода длиной в четверть длины волны (на 100 МГц ~70 см, на 400 МГц ~19 см).
Варикап ВВ135 можно заменить на ВВ134. Также можно использовать ВВ133, но тогда придется уменьшить емкость связи с варикапом (на 400 МГц поставить 1,5-2,2 пФ, а на 100 МГц — 5,6-6,8 пФ). Иначе будет перемодуляция.
Транзистор BC847 можно заменить на аналоги: BC846, BC850, MMBTA05, MMBTA06, MMBTA42. Цоколевка у них у всех одна и та же.
Батарейки CR2032 хватает приблизительно на 6-8 часов непрерывной работы (потребляемый схемой ток — 2,5-4 мА). Литий-ионного аккумулятора от мобильника хватит на несколько недель работы.
Радиомикрофон собирается на плате из двустороннего стеклотекстолита толщиной 1.5 мм. Необходимо соединить «землю» с обеих сторон через сквозные отверстия в плате (чем больше, тем лучше). Для уменьшения влияния окружающих предметов на частоту жучка, элементы монтажа можно закрыть экраном высотой 4-6 мм из луженой жести. Для повышения стабильности и увеличения излучаемой мощности для намотки катушки L1 рекомендуется использовать посеребрённый провод.
Собранные радиомикрофоны:
Повторяемость устройства очень хорошая, при правильном и качественном монтаже начинает работать сразу. Нужно только подстроить частоту путем растяжения/сжатия витков катушки L1. Больше никаких настроек не требуется.
Если не заработало — ищите ошибки в монтаже, сопли в пайке, неисправные или не туда запаянные детали. Вполне возможно, что схема работает, просто сигнал не попадает в диапазон вашего приемника. Тут вам очень бы пригодился индикатор поля (волномер).
electro-shema.ru