Радиопередатчик на ардуино: Arduino — микромощный передатчик радиовещательного АМ-диапазона / Хабр

Содержание

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

В сети можно найти массу примеров использования радиомодулей на 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, Беспроводная связь, Электроника.

RFID Брелок 13.56MHZ Arduino

Увеличить

Артикул rfid_key1356

Технические характеристики:
Тип микросхемы: Mifare S50, стандарт ISO14443А
Рабочая частота: 13,56 Mhz
Тип карты: Read/Write
Время транзакции: 164 мс
Поддержка антиколлизии: Да
Объем памяти: 1024 байт, EEPROM
Рабочая температура: -30°С…+50°С
Температура хранения: -40°С…+75°С
Размеры(мм):37х30х3

Подробнее


    « Продолжить покупки

Описание

Применение:
смарт-брелок стандарта Mifare c объемом памяти 1024 байт.
Небольшие размеры, тонкий корпус, привлекательный внешний вид, выбор цветов корпуса.
Железное кольцо для крепления.
Может поставляться железный карабин.


Возможность перезаписи до 100000 циклов.
Поддержка антиколлизии, хранение данных до 10 лет.
Семейство MIFARE classic является самым распространённым для бесконтактных криптозащищённых карт,
работает в диапазоне 13.56МГЦ, совместима с ISO 14443A.



30 других товаров в этой категории:

  • Беспроводной приемник AC220V 10A 315МГц радио…

  • Брелок передатчик для беспроводной пульта 433…

    145,00 грн

  • Беспроводной пульт AC220V 10A 433 МГц 4 радио…

  • Беспроводной пульт DC 12В 10A 433 МГц 4 радио…

    589,00 грн

  • радио передатчик TX118SA-4 433 MГц RF 4 канала.
    ..

    75,00 грн

  • программируемый обучаемый RF приемник RX480E-4…

    83,25 грн

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Настенный пульт-выключатель 1 кнопка передатчик…

    299,75 грн

  • GSM реле открытие ворот RTU5024 1 канал реле…

    1 295,00 грн

  • мини программируемый обучаемый RF приемник 433.
    ..

    145,00 грн

  • мини программируемый обучаемый RF приемник 433…

    290,30 грн

  • мини программируемый обучаемый RF приемник 433…

    269,00 грн

  • Радио настенный 1 кнопка пульт-выключатель…

  • Радио настенный 2 кнопки пульт-выключатель…

  • Радио настенный 3 кнопки пульт-выключатель…

  • Радиореле AC220V 10A 433 МГц с пультом радио…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле.
    ..
  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт AC220V 10A 433 МГц радио…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Беспроводной пульт DC12V 10A 433 МГц радио реле…

  • Радио реле беспроводной приемник AC220V 10A 433…

  • Радио реле беспроводной приемник AC220V 10A 433.
    ..
  • Радио реле беспроводной приемник AC220V 10A 433…

  • Брелок со шторкой 4 кнопки передатчик для…

  • Беспроводной пульт 220V 10A 433 МГц радио…

Покупатели этого товара так же приобрели:

Arduino и модуль приемника радиочастотного передатчика

Беспроводная связь в любой форме стала неотъемлемой частью жизни человека, будь то дистанционное управление телевизором на короткие расстояния или радиосвязь на большие расстояния. Беспроводная связь — это передача данных по беспроводной сети, чтобы не было проблем с проводами и прямого контакта с самим устройством.

[adsense1]

Одним из самых простых и дешевых способов реализации беспроводной связи является использование модуля RF (радиочастотный модуль).

Arduino, с другой стороны, представляет собой недорогое решение для приложений микроконтроллеров с аппаратным и программным обеспечением с открытым исходным кодом. Arduino можно использовать во многих небольших приложениях реального времени с простым программированием и аппаратными компонентами.

Выберите следующий набор проектов Arduino, которые вы хотите изучить, в Electronicshub : Проекты Arduino »

Комбинируя два объекта, то есть беспроводную связь с Arduino, мы можем создавать широкий спектр приложений, таких как автомобили с дистанционным управлением, по беспроводной сети управляемые роботы, домашняя автоматизация, простая передача данных и т. д.

В этом проекте мы собираемся разработать систему, в которой две платы Arduino будут взаимодействовать друг с другом с помощью RF-модуля.

[adsense2]

Схема

Принципиальная схема

Поскольку это проект беспроводной связи, схема состоит из части передатчика и части приемника.

Схема для передатчика показана ниже.

Ниже показана схема для принимающей части проекта.

Необходимые компоненты

Деталь передатчика

  • Arduino UNO (или любая другая плата Arduino) [Купить здесь]
  • Модуль передатчика 434 МГц (или модуль 315 МГц)
  • Светодиод [Купить здесь]
  • Резистор 1 кОм
  • Макетная плата (макетная плата)
  • Соединительные провода
  • Блок питания (адаптер или батарея)

Часть приемника

  • Arduino UNO (или любая другая плата Arduino) [Купить здесь]
  • Модуль приемника 434 МГц (или модуль 315 МГц)
  • Светодиод
  • Резистор 1 кОм
  • Макетная плата (макетная плата)
  • Соединительные провода
  • Блок питания (адаптер или батарея)
  • РЧ-модуль

Описание компонентов

Arduino UNO :

Arduino UNO — это недорогая плата микроконтроллера с открытым исходным кодом для прототипирования электроники. В этом проекте две платы Arduino будут обмениваться данными с помощью беспроводной связи.

Радиочастотный модуль :

Радиочастотный модуль — это дешевый модуль беспроводной связи для недорогого применения. Радиочастотный модуль состоит из передатчика и приемника, которые работают в диапазоне радиочастот. Обычно частота, на которой эти модули обмениваются данными, составляет 315 МГц или 434 МГц.

Image Пара РЧ-модулей

В этом проекте мы используем пару РЧ-передатчик-приемник на частоте 434 МГц. Этот модуль можно использовать для связи на расстоянии до 40 метров.

Схема

Часть передатчика

Часть передатчика состоит из Arduino UNO и модуля передатчика 434 МГц. Можно использовать внешний светодиод, но светодиода на плате будет достаточно. Конструкция передающей части выглядит следующим образом.

Модуль RF-передатчика состоит из 4 контактов: VCC, GND, Data и Antenna. Контакты VCC и GND подключены к 5V и земле соответственно. Вывод данных подключается к любому из цифровых входов/выходов Arduino. Здесь он подключен к контакту 12.

Штырь антенны должен быть подключен к антенне, которая представляет собой не что иное, как провод, намотанный в виде катушки.

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

Приемная часть

Приемная часть состоит из Arduino UNO и модуля приемника 434 МГц. Внешний светодиод можно использовать вместе с токоограничивающим резистором, но светодиода на плате будет достаточно. Конструкция приемной части следующая.

Модуль радиочастотного приемника состоит из 4 контактов: VCC, GND, данных и антенны. Контакты VCC и GND подключены к контакту 3,3 В Arduino и земле соответственно. Контакт данных подключен к контакту 12 Arduino.

Антенна, аналогичная модулю передатчика, подключается к контакту антенны модуля приемника 434 МГц. В проекте используется встроенный светодиод, подключенный к 13-му -му -му выводу Arduino, хотя всегда можно использовать внешний светодиод.

Рабочий процесс

В этом проекте дается простая демонстрация радиочастотной связи с помощью плат Arduino UNO. Целью проекта является успешная передача данных между модулями RF Transmitter-Receiver с использованием двух плат микроконтроллеров Arduino UNO. Работа проекта объясняется здесь.

Примечание : Проект может быть реализован как с помощью специальной библиотеки VirtualWire.h, так и без нее. В реализованном здесь проекте используется библиотека. Если мы хотим реализовать проект без библиотеки, то нам нужно изменить приемную часть схемы.

VirtualWire.h — это специальная библиотека для Arduino, созданная Майком Макколи. Это коммуникационная библиотека, которая позволяет двум Arduino взаимодействовать друг с другом с помощью радиочастотного модуля, то есть пары передатчик-приемник. Эта библиотека состоит из нескольких функций, которые используются для настройки модулей, передачи данных модулем передатчика и приема данных модулем приемника.

В этом проекте передатчик просто отправляет два символа, т.е. он отправляет символ «1» и с задержкой в ​​несколько секунд отправляет символ «0». Всякий раз, когда отправляется «1», светодиод на передающей стороне проекта будет включен. Поскольку эта «1» передается через радиочастотную связь, приемник будет получать данные «1».

Когда приемник получает «1», Arduino на стороне приемника проекта включит светодиод на своей стороне.

Аналогично, когда данные «0» передаются радиочастотным передатчиком, светодиод на стороне передатчика выключается. В результате приемник теперь получает «0», а светодиод на стороне приемника также гаснет.

Следовательно, приемник имитирует действия передатчика.

Примечание : Как было сказано ранее, проект использует специальную библиотеку под названием VirtualWire. Эта библиотека использовала функцию «Таймер» микроконтроллера и может влиять на свойства, связанные с таймером, такие как, например, ШИМ.

Следовательно, следующую схему можно использовать для аналогичной реализации без использования какой-либо библиотеки.

Изображение Альтернативная схема

Предоставлен эскиз для обоих проектов, т.е. одного с использованием библиотеки и другого без использования библиотеки.

Приложения

  • Как упоминалось во введении к проекту, беспроводная связь с использованием RF-модулей имеет широкий спектр приложений, таких как
    • Машинки на радиоуправлении
    • Домашняя автоматизация
    • Робототехника

Project Images

Arduino RF Transmitter Receiver Module

Arduino RF Transmitter Receiver Module

Arduino RF Transmitter Receiver Module

Arduino RF Transmitter Receiver Module

Arduino RF Transmitter Receiver Module

Arduino RF Transmitter Receiver Module

Receiver Code с библиотекой

Код передатчика с библиотекой

Код приемника без библиотеки

Код передатчика без библиотеки

Передатчик RF Link — 434 МГц — WRL-10534

Ресурсы и дальнейшее развитие

последнее обновление

В зависимости от используемой вами библиотеки Arduino вы можете соединить этот RF Link с ESP8266 для управления разъемами беспроводного дистанционного управления, которые используют ту же частоту. Вот один из примеров проекта.

  • Hackster.io: Умный дом 433 МГц RF <-> Шлюз MQTT с некоторыми дополнениями

2 из 2 нашел это полезным:

Проверка передатчика RF Link

последнее обновление

Чтобы убедиться, что РЧ-ссылки работают, мы рекомендуем сначала попытаться заставить РЧ-ссылки работать с нашим примером кода. Тем не менее, я протестировал RF-модули с библиотекой VirtualWire и программным обеспечением Arduino 1.0.6 IDE. Мне удалось заставить его работать с этой библиотекой => VirtualWire 1.20. Эта библиотека работала как с Arduino 0023, так и с Arduino 1.0.6.

RF Links

Пример кода, используемого с микроконтроллером Arduino, объясняет настройку для каждого RF Link. Это установка, которая будет работать с любой полосой частот RF Link.

Код передатчика (модуль с 4 контактами)

Контакт 3 вашего Arduino должен подключаться к контакту 2 вашего передатчика RF Link 434 МГц. Кнопка подключена к передающему Arduino на контакте 8 отдельно от передатчика RF Link. При нажатии кнопки на передатчике на приемнике должен загореться соответствующий светодиод и будет отправлен символ.

Код приемника (8-контактный модуль)

Контакт 2 вашего Arduino должен подключаться к контакту 2 вашего приемника RF Link 434 МГц. Когда кнопка нажата со стороны передатчика, соответствующий светодиод на этой стороне загорится на контакте 8. Следует отметить, что соответствующий светодиод не загорится на стороне приемника, если у вас нет соответствующего символа для проверки. если это то, что получено. Например, если вы отправляете строку символов «Pin 4», светодиод приемника не загорается при отправке символов «Pin ». Он загорится только тогда, когда увидит цифру «4».

Примечание 1: Кажется, что когда код приемника скомпилирован с помощью Arduino 0023, отправленные символы показывают символ и пробел сразу после него в последовательном мониторе.

При компиляции с помощью Arduino 1.0.6 вы получаете шестнадцатеричное значение и пробел, связанный с отправленным символом ASCII. Вы можете проверить это, проверив таблицу ASCII, и она покажет, что отправленное шестнадцатеричное значение действительно является символом, отправленным получателем. Это как-то связано со сменой версий с Arduino 0023 на Arduino 1.0 и выше. Что-то было изменено в компиляторе или как определена функция в Arduino IDE.

Примечание 2: RF Links — это дешевые беспроводные модули, поэтому вы можете столкнуться с прерывистой передачей данных/повреждением данных после определенного расстояния. У них много шума. Лучшим и более безопасным вариантом может быть использование беспроводных модулей XBee Series 1.

Примечание 3: Мне известно, что виртуальная библиотека является EOL и что библиотека RadioHead заменяет ее. Я узнал в середине обновления кода. У вас не должно быть проблем с библиотекой, хотя это EOL.


Основной навык:

Программирование

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

2 Программирование

Уровень навыка: Новичок . Вам потребуется лучшее понимание того, что такое код и как он работает. Вы будете использовать программное обеспечение начального уровня и инструменты разработки, такие как Arduino. Вы будете иметь дело непосредственно с кодом, но доступны многочисленные примеры и библиотеки. Датчики или экраны будут связываться с последовательным или TTL.
Просмотреть все уровни навыков


Основной навык:

Электрические прототипы

Если для этого требуется питание, вам нужно знать, сколько, что делают все контакты и как их подключить. Возможно, вам придется обращаться к таблицам данных, схемам и знать все тонкости электроники.

2 Электрическое прототипирование

Уровень навыка: Новичок .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *