- Arduino и радио модули 433 МГц
- Описание
- Подключение
- Библиотеки
- Примеры
- СХЕМА РАДИОУПРАВЛЕНИЯ НА 433 МГЦ
- Схема передатчика 433 МГц
- Схема приемника 433 МГц
- Приставка для диапазона 433 мГц
- Еще раз о передатчиках и приемниках 433 МГц
- Подключение передатчика
- Подключение приемника
- Формирование и обработка передаваемых данных
Arduino и радио модули 433 МГц
Описание
Радио модули с частотой 433 MHz – самый простой способ связать две Ардуины по беспроводному каналу. Чем они лучше радио 2.4 GHz, например nRF24?
- Неприхотливы к питанию
- Потребляют небольшой ток
- Занимают один пин МК
- В два раза дешевле
- Выше дальность связи при той же мощности
- Более высокая проникающая способность
Также на этой частоте работают пульты управления (брелоки) радио-реле и шлагбаумов, что позволяет перехватывать их команды и подменять при желании.
Модулей данного типа на китайских площадках существует несколько, продаются они парой (передатчик TX и приёмник RX), либо по отдельности.
Наборы GyverKIT до 2 партии комплектовались парой модулей как по центру на картинке выше (модель SYNxxx), со второй партии в наборах идут модули FS1000A и MX-RM-5V (слева на картинке) как более удобные для подключения и более стабильные в работе. Правые модули, несмотря на самый высокий ценник, работают хуже всех и к покупке не рекомендуются.
Ток потребления модулей:
- FS1000A [5V]: передача 12 мА, холостой 10 мкА
- MX-RM-5V [5V]: 3.7 мА
- SYN115 [3.3V]: передача 14 мА, холостой 0.5 мкА
- SYN480R [5V]: 4.5 мА
Для лучшего качества связи к модулям в пин ANT нужно припаять антенну длиной 17.3 см (четверть волны) в виде одножильного провода, при желании можно свернуть в спираль:
Подключение
Модули подключаются к питанию и data – на любой цифровой пин. “Зелёные” модули к Arduino подключаются напрямую, а синий передатчик – через делитель напряжения трёх 10к резисторах (есть в наборе). Для подключения к esp8266 делитель не нужен, там и так 3.3V на пине. На всех схемах передатчик слева, приёмник справа.
Библиотеки
Для данных модулей предлагается использовать библиотеку VirtualWire или RadioHead. Библиотеки очень сложные и тяжёлые по весу, и лично у меня китайские модули с ними не заработали. Причём со средними и правыми модулями с картинки из самого начала этого урока данные библиотеки в принципе не будут работать, так как у них слишком долгая синхронизация. Я написал свою библиотеку, Gyver433, которая работает даже в самых плохих условиях и выжимает максимум из этих модулей.
Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию Gyver433. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.
Примеры
Рассмотрим тестовый пример, который отправляет строку Hello from # :
Отправка
Приём
Библиотека позволяет отправлять данные любого типа (массив, структура) любой длины, что охватывает все возможные сценарии работы с радио.
Источник
СХЕМА РАДИОУПРАВЛЕНИЯ НА 433 МГЦ
Всем привет и сейчас рассмотрим ВЧ аппаратуру радиоуправления на микро-модулях. Три канала беспроводной передачи команд достаточно хороши для небольшого автомобиля или освещения комнаты. Робот чаще требует многоканального управления, предпочтительно пропорционального.
Схема передатчика 433 МГц
Система дистанционного управления основана на микроконтроллере PIC12F509. Этот контроллер, изготовленный компанией Microchip, представляет собой однокристальный 8-контактный микроконтроллер, предназначенный для схем с небольшим количеством элементов управления, имеющих 1 КБ флэш-памяти и 41 байт памяти SRAM, а также некоторые специальные функции (режим энергосбережения, спящий режим, восстановление из спящего режима путем изменения входного сигнала).
Модуль радиопередатчика на TLP434A (433,92 МГц). Этот маленький беспроводной передатчик идеально подходит для устройств дистанционного управления или передачи данных с удаленных объектов. На этот блок подается напряжение от 2 до 12 В. При напряжении 12 В и внешней антенне может быть достигнут предел дальности 200 м. Этот модуль может работать с декодером HT12D, MC145026 или аналогичным. В данном случае используется батарейка 3 В (на 40 метров).
Чтобы уменьшить напряжение в режиме ожидания и продлить срок службы батареи, есть перевод микроконтроллера в спящий режим (SLEEP) в течение большей части времени и вывода его из этого состояния только при нажатии клавиши. Потребляемый ток в режиме ожидания составляет около 0,1 мкА, а после нажатия он увеличивается до 15 мА.
Диоды D1 и D2 подают массу на TLP434A при нажатии любой кнопки. Таким образом, TLP434A вообще не потребляет энергию в режиме ожидания.
Схема приемника 433 МГц
Приемник RLP434A — это компактный радиоприемник, который работает непосредственно в комплекте с TLP434A на рабочей частоте 433,92 МГц. Решение идеально подходит для многих случаев, в том числе для управления роботами, когда команду можно передать не отправляя её по проводам. Решение удобно при скорости передачи данных до 4,8 кГц. Типичное потребление тока составляет 4,5 мА.
В кодировании, как и в обычном ШИМ, таймер и данные кодируются в одном синхронном потоке битов. В этом потоке каждый бит представлен переходом. Если бит равен «0», происходит переход с низкого уровня на высокий. Если бит равен «1», происходит переход от высокого к низкому.
Практическую реализацию системы Р/У и вариант прошивки для контроллера смотрите в этой статье. Правда там другая модель МК.
Комплекты таких трансиверов легко доступны. Их много в виде модулей AVT или TME. Другие элементы также распространены. Вы можете использовать РП системы от Motorola MC145026, MC145027, MC145028. Это наверное, самый популярный и самый доступный комплект (по цене около 100 рублей). Альтернативно системы Holtek HT12E, HT12D, но в два раза дороже.
Источник
Приставка для диапазона 433 мГц
Хочу рассказать о своей самоделке. Я занимаюсь системами радиосигнализации, радиоуправления, передачи данных и радиосвязи. Для ремонта и проверки передатчиков радиосигнализации, телеметрии и радиосвязи диапазона 433 мГц изготовил это устройство.
Диапазон 433 мГц — это специально выделенный диапазон, не требующий лицензии (при соблюдении определённых требований к аппаратуре).
Устройство представляет собой детекторный приёмник, настроенный на диапазон 433 мГц.
Рассмотрим принципиальную схему. Она очень проста и не требует источника питания.
Колебательный контур состоит из катушки L1 и подстроечного конденсатора C1. Контур настроен на частоту 433 мГц. Катушка одновременно выполняет роль приёмной антенны.
Контур достаточно широкополосен, поэтому берёт все каналы данного диапазона.
Наведённый в контуре сигнал выпрямляется высокочастотным германиевым диодом VD1 , фильтруется конденсатором C2 и поступает на высокоомный наушник BF1 или вольтметр, осциллограф.
Применение германиевого диода обусловлено его свойством детектировать более слабые по амплитуде сигналы, чем может кремниевый.
Демодулированный сигнал воспроизводится наушником, на основании этого и показаний вольтметра и осциллографа, можно определить работоспособность проверяемого передатчика. А именно, понять излучает он или нет. Есть ли модуляция несущей ( определяются только амплитудная и импульсная).
В процессе работы, приставка подносится к передатчику и на нём нажимается кнопка передачи команды. На радиостанции – кнопка или тангента. Либо передатчик подносится к приставке. Расстояние между ними должно быть 5 — 10 см.
Необходимо учитывать, что передатчики могут иметь различные виды модуляции. Если это амплитудная (АМ) или импульсная (ИМ), сигнал можно услышать в наушнике и увидеть на экране осциллографа. Если модуляция частотная (ЧМ), фазовая (ФМ) или просто немодулированная несущая, тогда наушник сигнал не воспроизведёт. Определить наличие сигнала на частотах диапазона 433 мГц можно будет подключив к выходу приставки вольтметр постоянного напряжения или осциллограф в режиме с открытым входом ( показывает постоянную составляющую).
Катушка выполнена из медного эмалированного или посеребрённого провода диаметром 1–2 мм. Её форма и размеры в миллиметрах показаны на рисунке.
Диод VD1 можно заменить на ГД507А, 1Д508А, ГД508А.
Подстроечный конденсатор – любой малогабаритный. При его монтаже на плату, желательно вывод, соединённый с ротором, припаять к нижнему по схеме (минусовому) проводу.
Конденсатор C2 – керамический.
При сборке конструкции все выводы деталей на плате делают короткими. Наушник соединяется с платой любым многожильным проводом.
Необходимо предусмотреть удобное крепление наушника на голове, чтобы обе руки были свободны. Автор применил готовые наушники, использовав один из ник.
Настроенную плату можно поместить в неметаллический корпус.
Источник
Еще раз о передатчиках и приемниках 433 МГц
Простейший комплект из приемника и передатчика ISM-диапазона 433 МГц завоевал заслуженную популярность в среде любителей электроники. Комплекты дешевы (даже в «Чипе-Дипе» их можно купить рублей за 300, а на Ali, говорят, вообще за полтинник), просты и надежны. Кроме того (о чем вы, возможно, не подозреваете), это самый дальнодействующий и проникающий способ беспроводного обмена данными — сигнал на частоте 433 МГц куда лучше проходит через препятствия и действует на более далеком расстоянии, чем в популярном диапазоне 2,4 ГГц (433 МГц полностью задерживаются стенкой в полметра бетона, а Wi-Fi умирает уже на 10 сантиметрах). Допускаю, что недавно появившиеся модули MBee-868, будучи снабженными соответствующей (направленной) антенной, «стреляют» дальше, но они как минимум на порядок дороже, сложнее в подключении, требуют управления энергосбережением и предварительной настройки. И вдобавок частота 868 МГц вдвое хуже проходит через препятствия (хотя, конечно, несравненно лучше частоты 2,4 ГГц).
О приемниках-передатчиках 433 МГц написано очень много (в том числе и на хабре, конечно). Однако, правильно включать в схему этот комплект по какой-то странной причине, кажется, не умеет никто. Когда я в который раз прочел вот тут, что комплект «принимал на 8-ми метрах в пределах прямой видимости, 9-ый метр осилить не удалось», мое терпение лопнуло. Какие еще 8 метров?! В 40-50 я бы поверил, хотя в реальности, наверное, дальность еще больше.
Стоит заметить, что я далее решаю задачу создания линии для передачи произвольных данных, а не просто управления какими-нибудь умными розетками или мотором модели катера. Моя задача сложнее, но все-таки расстояние надежной работы у меня оказывается гораздо больше. Причем в такой задаче важно не только и не столько расстояние в пределах прямой видимости (оно может служить только для сравнения), сколько способность проникать через различные препятствия.
У меня такой комплект работает за городом на расстоянии примерно 25-30 метров под острым углом к бревенчатой стенке, так, что на пути сигнала оказывается примерно метр (в сумме) стен и перегородок, причем частично экранированных фольгированным утеплителем. На гораздо меньшем расстоянии, почти прямо за стенкой, WiFi уже полностью теряет сигнал. В городе сигнал добивает от одного конца трехкомнатной городской квартиры к другому через две межкомнатные перегородки, а также с балкона, где по прямой линии между передатчиком и приемником не менее 80 сантиметров кирпичной кладки и гипсолитовая перегородка. Никаких более дорогих вариантов комплектов, упомянутых в приведенном обзоре, я не употреблял.
Дополнительный плюс комплекта в том, что в паузах передатчик не потребляет ничего, причем без всяких специальных режимов Sleep, просто по принципу своего устройства (ток потребления в покое сравним с токами коллекторной утечки запертого транзистора, то есть порядка 100 нА).
Давайте разберемся, в чем тут подводные камни.
Подключение передатчика
Передатчик (он носит название FS1000A), как мы видим из его схемы ниже, представляет собой простейший генератор на основе ПАВ-резонатора на 433 МГц. Генератор собран на транзисторе Q1, а транзистор Q2, на базу которого подаются цифровые данные — просто ключ, который подключает генератор к питанию (к шине GND) при наличии высокого уровня (логической единицы) на входе. Питание может быть от 5 до 12 вольт, причем, по утверждению производителей, чем выше питание, тем дальше работает связь.
Принципиальных преимуществ увеличенного питания в рамках своей задачи я не заметил. Тем не менее, не следует пренебрегать фактом, что особых требований к питанию тут не предъявляется, и при повышенном напряжении девайс будет работать только лучше. Удобно подключать передатчик непосредственно к напряжению с адаптера 9-12 вольт, аккумулятора или комплекта из 6 батареек (контакт Vin Arduino). При нестабилизированном питании, которое может превышать 12 вольт (как, например, у аккумуляторов) я обычно развязываю передатчик от основной схемы отдельным 9-вольтовым стабилизатором (можно простейшим 78L09), причем разницы в работе между питанием 9 и 12 вольт я не наблюдаю никакой. У Uno или Nano можно для питания самого контроллера и остальных схем (например, датчиков) при этом использовать встроенный стабилизатор 5 вольт, а для Mini (особенно — его дешевых клонов) я бы посоветовал поставить отдельный 5-вольтовый стабилизатор, подключив его к выводу 5V.
Следует отметить, что в последнее время стали появляться передатчики, выглядящие несколько нестандартно (см. рис. ниже). Оказалось, что отсутствие дросселя L1 (трехвиткового), от которого остались только отверстия — фикция, он просто заменен на соответствующий SMD-компонент. Хуже в этом варианте другое: неряшливая полиграфия может ввести в заблуждение относительно подключения выводов данных и питания. Правильное подключение показано на рисунке, оно для всех вариантов одинаково:
Самое поразительное в этом деле — то, что при перепутанном подключении данных и питания передатчик на небольших расстояниях продолжает работать! Если вы рассмотрите схему, то поймете в чем дело: база Q2 через резистор при этом оказывается подключенной к питанию, транзистор всегда открыт, и влияния на работу схемы не оказывает. А логический высокий уровень на шине питания просто запитывает в нужный момент генератор. Несуразности начинаются на некотором расстоянии — понятно, что из логического вывода источник питания получается плохой.
Подключение приемника
При приобретении приемника (он может носить название вроде MX-RM-5V или XD-RF-5V) обращайте внимание на длину выводов — мне как-то попалась целая партия с укороченными штырьками, отчего из стандартного разъема PBS приемник вываливался при малейшем перекосе и его приходилось к плате специально крепить.
У приемника схема гораздо сложнее (я ее не буду воспроизводить, но можете ознакомиться, например, тут). Она должна принять и усилить высокочастотный сигнал, отфильтровать частоту 433 МГц, выделить всплески и преобразовать их в логические уровни. Приемник имеет подстроечный дроссель (посередине платы), но без точных приборов для измерения амплитудно-частотной характеристики я его крутить не советую — скорее всего, вы ничего не улучшите, а только испортите.
Так как уже на небольшом расстоянии сигнал будет гораздо меньше помехи, понятно, что мы с помехами должны бороться по всем фронтам: и схемотехническими и программными методами. Последнее за нас делают библиотеки, но какая бы математика не применялась в программной обработке, желательно сначала сделать все для того, чтобы логическая единица на выходе появлялась только при всплеске полезного сигнала и не появлялась при наличии помехи. Иными словами, классно было бы от помех при приеме отстроиться заранее по максимуму.
Стандартный метод снижения помех, известный в мои времена каждому школьнику, собравшему хоть один радиоприемник или усилитель, заключается в том, что для чувствительных к помехам узлов необходимо делать отдельное питание, по максимуму изолированное от остальных схем. Можно его делать разными методами: когда-то ставили отдельный стабилитрон, сейчас часто изолируют питание проблемного узла LC-фильтром (так рекомендуется поступать, например, для АЦП, посмотрите даташиты на AVR-контроллеры). Но в наших условиях, когда современные компоненты невелики и дешевы, проще просто поставить на приемник отдельный от всего остального стабилизатор.
Стабилизатор, например, типа LP2950-5.0 плюс два необходимых конденсатора к нему в самом дешевом варианте (когда оба конденсатора — керамические, в диапазоне 1–3,3 мкФ) добавит к стоимости вашей схемы рублей шестьдесят максимум. Но я предпочитаю не экономить: на выходе ставлю обычный керамический, а на входе электролит (10–100 мкФ), причем твердотельный (полимерный) или танталовый. Обойтись керамическими конденсаторами и там и там можно, если входное напряжение 7-12 вольт поступает с батареек-аккумуляторов или с другого аналогового стабилизатора. Импульсные стабилизированные источники и простейшие нестабилизированные выпрямители требуют дополнительной фильтрации. Можно использовать дешевый алюминиевый электролит, если ставить параллельно ему керамический 0,1 мкФ, еще лучше поставить на входе последовательную индуктивность в несколько долей или единиц миллигенри.
Стабилизатор следует устанавливать прямо около приемника, длина проводников должна быть минимальна. Вместо LP2950 можно взять LM2931 или аналогичный с маленьким проходным напряжением (это особенно важно, если схема питается от батареек — для обычного LM78L05 входное напряжение должно быть не менее 7,5, а лучше 8-9 вольт).
Сравнив со случаем питания приемника непосредственно от Arduino, как рекомендуется во всех публикациях (исключений я не встречал), вы поразитесь полученному эффекту — дальность и способность проникать через стенки сразу увеличивается в разы. Приемник вместе со стабилизатором для удобства можно вынести в отдельную маленькую коробочку. Связать его выход с контроллером в основном корпусе можно любым трехжильным проводом (два питания и сигнальный проводник) длиной до 3 метров, а может быть и больше. Удобнее это потому, что еще нужны антенны, и по правилам будет лучше, если они будут параллельны друг другу в пространстве, а большие корпуса не всегда удается разместить так, чтобы антенны торчали в нужной ориентации.
В простейшем варианте в качестве антенн можно обойтись обрезками одножильного провода сечением не меньше 0,5 мм и длиной 17 см ± 1-3 мм. Не следует употреблять многожильный монтажный провод! В продаже имеются более компактные спиральные антенны, но я лично их эффективность не испытывал. Кончик антенны и у передатчика и у приемника запаивается в соответствующее отверстие в углу платы (не ошибитесь в модернизированном варианте передатчика — там слово ANT тоже не на месте, см. рис. выше).
Формирование и обработка передаваемых данных
Это второй крупный недостаток большинства обзоров по нашей теме: авторы ограничиваются какой-то локальной задачей, не формулируя ее в общем виде, как передачу произвольных данных одним пакетом. Как вы поняли из описания выше, передаваться нашим комплектом может только простая последовательность бит. Стандартная библиотека VirtualWire кодирует их специальным образом (каждая тетрада кодируется 6-ю битами, впереди добавляется синхронизирующий заголовок, и еще добавляется контрольная сумма для всего пакета) и на выходе превращает в более привычную последовательность байт. Но разбираться с ней уже приходится программисту самостоятельно.
Далее мы считаем, что передатчик и приемник подключены к Arduino. Кроме VirtualWire, в связи с бумом «умных домов», есть еще много всякого подобного, вроде RC-Switch или RemoteSwitch, но они ориентированы на другие задачи, и для передачи произвольных данных их употреблять явно не стоит.
Максимальная длина одного сообщения в VirtualWire равна 27 байт (см. документацию). Передача одного полного сообщения (оно автоматически дополняется сигнатурой 0xb38, значением длины сообщения и контрольной суммой) при выбранной мной скорости 1200 бит/с составляет 0,35 секунды.
Чем больше, кстати, выбранная скорость передачи, тем дальность передачи будет меньше. По опыту применения RS-232 известно, что при увеличении дальности допустимая скорость передачи экспоненциально падает: на скорости 19200 неэкранированная линия работает на 15 метров, на 9600 — 150 метров, а на скорости 1200 — более километра. Интересно было бы экспериментально выяснить характер этой зависимости для нашего случая, ведь очень много здесь зависит и от применяемой математики.
Инициализация передатчика в VirtualWire выглядит так:
Разберем принципы формирования данных на конкретном примере. Пусть у нас имеется выносной датчик температуры-влажности. Он выдает значения (переменные temperature и humidity) в формате действительного числа со знаком (float). Чтобы было проще разбираться на приемном конце, будем все приводить к виду положительного целого числа с числом десятичных разрядов не менее 4, переводить разряды по отдельности в ASCII-символы, передавать получившуюся строку, а на приемном конце выполнять обратные операции. Конечно, можно упростить задачу (например, обойтись без преобразования в ASCII и укоротить числа), но в таком виде она получается единообразной для почти любых разновидностей цифровых данных, что упрощает разборку при приеме.
На практике для формирования сообщения удобно воспользоваться типом String, примерно так:
Если требуется передавать более точные числа с большим количеством разрядов, то вы просто увеличиваете длину массива msg. Глобальные «волатильные» переменные tmpr и hum нужны в случае, если вы осредняете несколько показаний, в противном случае они тоже могут быть объявлены локальными внутри функции loop(). Сообщение, как видите, состоит из значений преобразованных температуры и влажности, в ASCII-строках по четыре байта каждое, предваряемых строкой из трех символов «DAH» (символы могут быть любыми другими из таблицы ASCII). Это сигнатура, которая позволит выделить данное сообщение из числа возможных других, посылаемых аналогичными устройствами. Не пренебрегайте сигнатурой, даже если вы полагаете, что других устройств поблизости в этом диапазоне не предвидится, заодно она служит дополнительной гарантией целостности принимаемых данных.
Заметьте также, что при преобразовании строки в массив необходимо указать на один символ больше, чем суммарная длина сообщения (3+4+4=11), это учитывается нулевой символ, замыкающий строку. А величина массива msg[] должна быть указана с запасом и может быть любой, в данном случае от 13 до 27 байт. При передаче все равно отправится ровно столько, сколько вернет функция strlen(msg), то есть 11 байт + нулевой символ.
В приемной части полученный массив ASCII-кодов придется разбирать (парсить). Но сначала нужно его принять. Для инициализации приема выполняются следующие действия:
Собственно прием с разборкой строки такой:
Надеюсь, у вас теперь будет меньше вопросов по применению этих дешевых и удобных в применении устройств.
Источник