Ардуино: радиомодуль на 433 МГц
На этом уроке мы решим задачу по передаче радиосигнала между двумя контроллерами Ардуино с помощью популярного приемопередатчика с частотой 433МГц.
На самом деле, устройство по передаче данных состоит из двух модулей: приемника и передатчика. Данные можно передавать только в одном направлении. Это важно понимать при использовании этих модулей.
Например, можно сделать дистанционное управление любым электронным устройством, будь то мобильный робот или, например, телевизор.
В этом случае данные будут передаваться от пульта управления к устройству. Другой вариант — передача сигналов с беспроводных датчиков на систему сбора данных.
Здесь уже маршрут меняется, теперь передатчик стоит на стороне датчика, а приемник на стороне системы сбора.
Модули могут иметь разные названия: MX-05V, XD-RF-5V, XY-FST, XY-MK-5V, и т.п., но все они имеют примерно одинаковый внешний вид и нумерацию контактов. Также, распространены две частоты радиомодулей: 433 МГц и 315 МГц.
1. Подключение
Передатчик имеет всего три вывода: Gnd, Vcc и Data.
Подключаем их к первой плате Ардуино по схеме:
Передатчик MX-05V 433МГц | GND | VCC | Data |
Ардуино Уно №1 | GND | +5V | 2 |
У приемника четыре вывода, но один не используется.
Схема подключения ко второй плате Ардуино идентична первой:
Приемник XD-RF-5V 433МГц | GND | VCC | Data |
Ардуино Уно №2 | GND | +5V | 2 |
Собираем оба устройства на макетной плате и приступаем к написанию программ.
2. Программа для передатчика
Для работы с радиомодулями воспользуемся библиотекой RCSwitch. Напишем программу, которая будет каждую секунду по-очереди отправлять два разных сообщения.
#include RCSwitch mySwitch = RCSwitch(); void setup() { mySwitch.enableTransmit(2); } void loop() { mySwitch.send(B0100, 4); delay(1000); mySwitch.send(B1000, 4); delay(1000); }
Разберем программу. Первое что мы сделали — объявили объект для работы с передатчиком и назвали его mySwitch.
RCSwitch mySwitch = RCSwitch();
Затем, внутри стандартной функции setup включили передатчик и указали вывод, к которому он подключен:
mySwitch.enableTransmit(2);
Наконец, в основном цикле программы loop отправляем сначала одно сообщение, а затем и второе с помощью функции send:
mySwitch.send(B1000, 4);
Функция send имеет два аргумента. Первый — это отправляемое сообщение, которое будет отправляться в эфир в виде пачки импульсов. Второй аргумент — это размер отправляемой пачки.
В нашей программе мы указали сообщения в формате двоичного числа. На это указывает английская буква «B» в начале кода B1000. В десятеричном представлении это число превратится в восьмерку. Так что мы могли вызвать функцию send так:
mySwitch.send(8, 4);
Также send умеет принимать двоичные строки:
mySwitch.send(“1000”, 4);
3. Программа для приемника
Теперь напишем программу для приемника. Для демонстрации факта передачи мы будем зажигать светодиод, подключенный к выводу №3 на плате Ардуино. Если приемник поймал код B1000 — включим светодиод, а если B0100 — выключим.
#include RCSwitch mySwitch = RCSwitch(); void setup() { pinMode( 3, OUTPUT ); mySwitch.enableReceive(0); } void loop() { if( mySwitch.available() ){ int value = mySwitch.getReceivedValue(); if( value == B1000 ) digitalWrite( 3, HIGH ); else if( value == B0100 ) digitalWrite( 3, LOW ); mySwitch.resetAvailable(); } }
Функция available возвращает истину, если передатчик принял хоть какие-то данные:
mySwitch.available()
Функция getReceivedValue извлекает из потока данных одну пачку и декодирует её в число. В программе мы присваиваем полученное число переменной value:
int value = mySwitch.getReceivedValue();
Задания
Теперь можно попробовать потренироваться и сделать разные полезные устройства. Вот несколько идей.
- Пульт для светильника. На стороне приемника модуль реле, включенный в цепь питания светильника (осторожно, 220 Вольт!). На стороне передатчика: тактовая кнопка. Написать программы для приемника и передатчика, которые по нажатию кнопки будут включать удаленное реле. При повторном нажатии кнопки реле будет выключаться.
- Уличный термометр с радиоканалом. На стороне передатчика разместить датчик температуры. Предусмотреть автономное питание от батареек. На стороне приемника: символьный ЖК дисплей. Написать программы для приемника и передатчика, которые позволят выводить показания температуры с удаленного датчика на дисплее.
Заключение
Итак, теперь мы знаем простой и недорогой способ передавать данные на расстоянии. К сожалению, скорость передачи и дистанция в таких радиомодулях весьма ограничены, так что мы не сможем полноценно управлять, например квадрокоптером. Однако, сделать радиопульт для управления простым бытовым прибором: светильником, вентилятором или телевизором, нам под силу.
На основе приемопередатчиков с частотой 433 МГц и 315 МГц работает большинство радиоканальных пультов управления. Имея Ардуино и приемник, мы можем декодировать сигналы управления и повторить их. Подробнее о том, как это сделать мы напишем в одном из следующих уроков!
Изменено: 17 Сен, 2016 15:17
Источник: http://robotclass.ru/tutorials/arduino-radio-433mhz/
Работа с падиомодулями 433МГц
Опубликовано 28.08.2013 20:29:00
Рано или поздно, в создаваемых проектах появится необходимость дистанционного управления. Одним из самых бюджетных решений является использование радиоприемника и радиопередатчика. Простейший пример их использования вы найдете в данной статье, а дальше все зависит только от ваших нужд и фантазии.
В первую очередь берем 2 платы Arduino и подключаем к ним приемник и передатчик, как показано на рисунке:
Компоненты для повторения (купить в Китае):
Arduino UNO, либо Arduino Nano, либо Arduino Mega
Радиомодули 433МГц
Соединительные провода (перемычки)
Перед тем как преступить к работе, нужно указать, что для полноценной работы, к модулям необходимо припаять антенну. Рекомендуемая длина антенны для передатчиков с частотой 433 МГц равна 17 см.
Библиотека необходимая для работы с модулем VirtualWire
Её необходимо распаковать и добавить в папку “libraries” в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.
Далее подключаем плату с передатчиком и заливаем следующий код:
// Тестировалось на Arduino IDE 1.0.1
#include void setup(void)
{
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Устанавливаем скорость передачи (бит/с)
} void loop(void)
{
int number = 123;
char symbol = 'c';
String strMsg = “z “;
strMsg += symbol;
strMsg += ” “;
strMsg += number;
strMsg += ” “;
char msg[255];
strMsg.toCharArray(msg, 255);
Serial.println(msg);
vw_send((uint8_t *)msg, strlen(msg));
vw_wait_tx(); // Ждем пока передача будет окончена
delay(200);
}
Разберем этот код для полного понимания.
Во первых мы формируем строку strMsg. Используем тип String, т.к. с ним проще работать (можно конкатенировать его с числами, используя оператор '+').
Поскольку все передатчики работают в одном диапазоне частот, то каждый приемник будет принимать информацию с каждого передатчика находящегося в зоне досягаемости. Для того, чтобы отсеять лишние символы в простейшем случае можно просто предварить команды каким-то специальным символом. В нашем случае это символ 'z'.
Далее передадим символ 'c', который может означать выполнение какой-то команды и число 123, как параметр к этой команде. На практике удобно работать именно таким образом.
После этого преобразовываем тип String к стандартному массиву символов при помощи метода toCharArray и передаем его в команду vw_send.
Наш код будет отправлять строку 'z c 123'.
Перейдем к коду приемника:
// Тестировалось на Arduino IDE 1.0.1
#include void setup()
{
Serial.begin(9600);
vw_set_ptt_inverted(true); // Необходимо для DR3100
vw_setup(2000); // Задаем скорость приема
vw_rx_start(); // Начинаем мониторинг эфира
} void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения
uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длина буфера if (vw_get_message(buf, &buflen)) // Если принято сообщение
{
// Начинаем разбор
int i;
// Если сообщение адресовано не нам, выходим
if (buf[0] != 'z')
{
return; }
char command = buf[2]; // Команда находится на индексе 2
// Числовой параметр начинается с индекса 4
i = 4;
int number = 0;
// Поскольку передача идет посимвольно, то нужно преобразовать набор символов в число
while (buf[i] != ' ')
{
number *= 10;
number += buf[i] – '0';
i++;
}
Serial.print(command);
Serial.print(” “);
Serial.println(number);
}
}
Сообщение будет считано в буфер buf, который нужно разобрать.
В первую очередь проверяем наличие служебного символа 'z', затем считываем код команды и затем преобразовываем строковое представление параметра в число.
Информация получена и разобрана, что делать дальше зависит от конкретной задачи.
В данной статье рассмотрен простейший вариант общения. В идеале нужно задуматься о кодировании передаваемой информации, т.к. её будут получать не только ваши приемники.
P.S. Работая с данными модулями, мы наткнулись на один не приятный подводный камень, а именно конфликт, невозможность работы с библиотекой “servo.h”.
Для решения этой проблемы необходимо использовать библиотеку ServoTimer2 единственным отличием которой от стандартной Servo.h является то, что в функцию write необходимо передавать количество микросекунд, подробнее о которых расписано в нашей статье Подключение сервоприводов к Arduino.
Купить в России Радиомодули 433 МГц
В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.
Источник: http://zelectro.cc/arduino-radio-transmitter-receiver
Записки программиста
В сети можно найти массу примеров использования радиомодулей на 433 МГц совместно с Arduino.
Обычно эти примеры ограничиваются чем-то вроде «а давайте подключим библиотеку VirtualWire, воспользуемся парой процедур из нее, и опа, все магическим образом работает».
Само собой разумеется, меня такое положение дел не устраивает, потому что я хочу знать точно, как эти модули общаются с Arduino, и что именно они передают в эфир. Давайте же во всем разберемся!<\p>
Так выглядят классические радиомодули на 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.
Источник: https://eax.me/433mhz-rf-modules/
RF РАДИОМОДУЛИ НА 433 МГЦ
Источник: http://radioskot.ru/publ/spravochnik/rf_radiomoduli_na_433_mgc/2-1-0-1119
Arduino и беспроводной радиомодули на 433 МГц
ПодробностиКатегория: ArduinoОпубликовано 20.05.2015 16:00Автор: AdminПросмотров: 21261
Радиомодули на 433 МГц или RF модули очень полезная штуки которые вместе с Arduino позволяют передавать данные от передатчика к приемнику без проводов.
В среде Arduino для этого есть специальная библиотека с примерами программ для работы с такими радиомодулями. Данные модули отлично подойдут для реализации проектов с дистанционным управлением и небольшим объемом передаваемых данных. Радиус действия таких модулей порядка 150 метров.
Данные датчики не используют какие либо протоколы передачи данных, все что поступает на вход data in передатчика передается приемнику. И приемник и передатчик имеют 4 вывода – земля,питание,антенна и данные.
Для того чтобы посмотреть что приходит в приемник его можно подключить к com порту компьютера. И посмотреть данные через программы мониторинга порта, можно использовать тернинал порта среды Arduino.
При подключении в терминале будет непрерывный поток данных, среди которого появляются те данные что мы шлем в передатчик.
Библиотека VirtualWire позволяет извлекать из этого потока данные отсылаемые передатчиком.
Передатчик
Характеристики передатчика:
- напряжение – от 3 до 12 В;
- мощность на выходе – 32 мВт;
- рабочий ток – 8мА;
- скорость передачи данных – 8 кб/сек;
- рабочие температуры – от -20 до 80 градусов С.
Приемник
Характеристики приемника:
- напряжение: 5 В;
- ток: 5,5 мА;
- рабочая частота: 315-433 МГц;
- скорость приема 9,6 кб/сек.
Код передатчика#include char *controller; void setup() { pinMode(13,OUTPUT); vw_set_ptt_inverted(true); // vw_set_tx_pin(12); vw_setup(4000);// speed of data transfer Kbps } void loop(){ controller=”1″ ; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Wait until the whole message is gone digitalWrite(13,1); delay(2000); controller=”0″ ; vw_send((uint8_t *)controller, strlen(controller)); vw_wait_tx(); // Wait until the whole message is gone digitalWrite(13,0); delay(2000); }
Код приемника #include void setup() { vw_set_ptt_inverted(true); // Required for DR3100 vw_set_rx_pin(12); vw_setup(4000); // Bits per sec pinMode(13, OUTPUT); vw_rx_start(); // Start the receiver PLL running } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // Non-blocking { if(buf[0]=='1'){ digitalWrite(13,1); } if(buf[0]=='0'){ digitalWrite(13,0); } } }
Схемы подключения радиомодулей передатчика и приемника
Радиомодули в действии
Источник: http://www.radio-magic.ru/arduino-projects/198-arduino-rm
Сравнительный обзор устройств дистанционного управления на частоте 433 МГц
Устройства дистанционного управления (ДУ) давно и прочно вошли в нашу жизнь. Это и инфракрасные пульты для управления бытовыми приборами, и беспроводные звонки, и автомобильные сигнализации и т.д. Отчасти их созданию послужила лень, отчасти технические ограничения, но теперь все мы пользуемся такими устройствами весьма широко.
Есть особый класс устройств дистанционного управления по радиоканалу на одной из нелицензируемых частот в полосе от 433,075 до 433,790 Мгц – их можно свободно использовать для любых нужд, правда, с некоторыми ограничениями по мощности излучаемого сигнала.
Именно эти устройства получили, пожалуй, наибольшее распространение в системах дистанционного управления по радиоканалу. Они недорого стоят, просты в установке и обслуживании, имеют небольшие габариты и не требуют специальных антенн – достаточно куска провода.
С помощью таких устройств можно на расстоянии включить освещение на садовом участке, открыть калитку или автоматические ворота, включить электродвигатель или нагреватель.
Ограничения, накладываемые на мощность передатчика, сказываются на дальности действия. Стандартное значение дальности не превышает 100 метров на открытом пространстве.
В помещении дальность существенно зависит от свойств материалов, через которые распространяется электромагнитное излучение передатчика и геометрии самого помещения.
В этом случае только натурный эксперимент может помочь определить дальность.
Следует отметить, что и в этом классе устройств дистанционного управления есть специальные модели с повышенной дальностью работы. Также дальность можно повысить, если применить направленные антенны на стороне передатчика и/или приемника.
В предлагаемом обзоре мы рассмотрим устройства дистанционного управления для DIY-проектов, завоевавшие популярность пользователей продукции компании Мастер Кит. Все эти устройства прошли испытания реальной эксплуатацией в течение заметного времени, надежны и просты в использовании.
Для удобства мы свели описания устройств ДУ в таблицу, расположенную в конце обзора. Таблица поможет выбрать самые подходящие из них для ваших проектов.
Предлагаемые устройства можно разделить, прежде всего, на две категории:
– комплекты ДУ, включающие в себя пару передатчик-приемник (кнопочный пульт-передатчик в виде брелка или печатной платы с контактами; приемник в виде платы с контактами или исполнительными элементами); при этом приемник уже настроен на прием сигналов именно от того передатчика, который входит в комплект;
– отдельные передатчики и приемники, требующие настройки для работы в паре.
Передатчики, в свою очередь, могут быть специализированными и предназначенными для работы с определенным видом приемников, и универсальными. Это необходимо учитывать, если вы приобретаете устройства по отдельности, или предполагаете использовать несколько брелков-передатчиков с одним приемником, а также несколько приемников с одним брелком.
Следует отметить, что с целью уменьшения возможных ложных срабатываний исполнительной устройство приемника, как правило, включается через приблизительно одну секунду после нажатия кнопки или подачи управляющего сигнала на передатчик.
Несколько слов о терминологии основных режимов работы исполнительных устройств (как правило, реле) модулей ДУ:
– в режиме «кнопка» исполнительное реле приемника срабатывает в момент нажатия кнопки или подачи управляющего сигнала на передатчик и удерживается в этом состоянии, пока кнопка нажата; при отпускании кнопки реле также отпускает;
– в режиме «триггер» однократное нажатие кнопки включает реле, вторичное нажатие – выключает.
При разработке проектов на предлагаемых устройствах ДУ необходимо учитывать, что они не обеспечивают обратную связь, поэтому контроль срабатывания исполнительных систем остается отдельной задачей.
Рассмотрим кратко особенности некоторых модулей дистанционного управления.
Простую и надежную одноканальную систему ДУ можно собрать на модуле MK333 с дополнительными брелками-передатчиками MK336.
Миниатюрный приемник с прилагаемым корпусом можно питать как переменным напряжением 220В, так и постоянным 12В при подключении последнего за встроенным блоком питания от переменного напряжения.
Система может работать только в триггерном режиме – одна кнопка передатчика включает реле приемника, вторая – выключает. Посмотрите видео, размещенное в конце описания, из которого можно узнать, как заменить выключатель торшера на дистанционный с помощью модуля MK333.
Широкие возможности для собственных проектов предоставляет комплект MP324M с четырехкнопочным пультом и четырехканальным приемником с выходами уровня TTL (транзисторно-транзисторной логики). Используя дополнительные модули, можно реализовать несколько режимов исполнительных систем с помощью одного приемника.
Дополнительный брелок – MP324M/передатчик.
Если для вашего проекта необходимо два мощных канала управления, обратите внимание на устройство MP325M, имеющее на борту два реле по 2 кВт и работающее в режимах «кнопка» и «триггер», устанавливаемые для каждого канала отдельно с помощью перемычек (джамперов) на плате. Прочтите статьи, посвященные применению этого устройства:
Модуль ДУ MP326M дает возможность управлять четырьмя каналами с настраиваемыми режимами «кнопка» и «триггер» для каждого канала.
Устройство MP426 SE также имеет четыре канала, но, в отличие от предыдущего, работает в трех режимах – «кнопка», «триггер» и «перебор каналов».
Для реализации проектов с применением микроконтоллеров подойдут комплекты приемник-передатчик MP433 и MP433PRO. Эти пары являются аналоговыми устройствами, не осуществляющими кодировку передаваемого сигнала.
Вы сами можете сформировать уникальные кодирующие последовательности, затрудняющие их несанкционированную дешифровку.
С помощью микроконтроллера, например, широко распространенной платформы Ардуино, на основе предлагаемых модулей можно реализовать многоканальное управление радиоуправляемыми моделями.
Устройство MP433PRO отличается увеличенным расстоянием – до 600 м в свободном пространстве и расширенным диапазоном температур, позволяющим использовать его вне помещений.
Универсальный пульт дистанционного управления MP433/передатчик является поистине находкой для пользователей систем ДУ! Он предназначен для совместной работы с беспроводными системами диапазона 433 МГц с ASK модуляцией и поддерживает большое количество встраиваемых систем управления освещением и розеток с фиксированным и обучающим кодом, например, таких как WOKEE и TELEIMPEX и им подобные. Также пульт поддерживает системы, построенные на микросхемах SC5262 / SC5272, HX2262 / HX2272, PT2262 / PT2272, EV1527, RT1527, FP1527, HS1527, SC5211, HS2260, SC1527, SC2262.
Приемники MP911, MP912 и MP913 управляются от предлагаемого отдельно пульта-передатчика MP913 и отличаются режимами работы и числом каналов. Первый из этих приемников реализует одноканальный режим «кнопка», второй – одноканальный «триггер», третий – двухканальная «кнопка».
В этом обзоре мы упомянем стоящий особняком модуль MP8036mhz, который является настоящей базой для управления беспроводными устройствами в диапазоне 433 МГц. Этот модуль может работать в режимах сканера, дубликатора, репитера, маяка. В режиме сканера благодаря наличию дисплея можно увидеть код, передаваемый сканируемым передатчиком.
Модуль имеет четыре логических входа для подключения 4-х кнопок управления или линий контроля и восемь TTL-выходов для подключения силовых модулей. Дальность работы с беспроводными приемниками достигает 600 метров (при использовании комплекта MP433PRO).
При использовании направленных антенн дальность может быть увеличена до нескольких километров.
Несколько слов в заключение.
Прежде чем добавлять или «обучать» передатчики, внимательно прочтите описания этих процедур на сайте. Производимые действия отличаются для разных устройств!
Обращаем ваше внимание на имеющиеся в описаниях устройств ДУ комплекты с дополняющими их модулями. Например, вместе с парой передатчик-приемник MP324M можно приобрести силовое реле MP146 и источник питания PW1245, что обойдется вам дешевле, чем покупка этих устройств по отдельности. Комплектом (MP324M + MP146 + PW1245) – дешевле!
Сравнительная таблица популярных устройств дистанционного управления на частоте 433 МГц
Как организовать цифровую связь, используя дешевые, по ценам eBay, RF модули 433/315 МГц, вы узнаете из этого небольшого обзора. Эти радиомодули обычно продают в паре – с одним передатчиком и одним приемником. Пару можно купить на eBay по $4, и даже $2 за пару, если вы покупаете 10 штук сразу. Большая часть информации в интернете обрывочна и не очень понятна. Поэтому мы решили проверить эти модули и показать, как получить с их помощью надежную связь USART -> USART. Распиновка радиомодулейВ общем, все эти радиомодули имеют подключение 3 основных контакта (плюс антенна); Передатчик
Приемник
Передача данныхКогда передатчик не получает на входе данных, генератор передатчика отключается, и потребляет в режиме ожидания около нескольких микроампер. На испытаниях вышло 0,2 мкА от 5 В питания в выключенном состоянии. Когда передатчик получает вход каких-то данных, он излучает на 433 или 315 МГц несущей, и с 5 В питания потребляет около 12 мА. Передатчик можно питать и от более высокого напряжения (например 12 В), которое увеличивает мощность передатчика и соответственно дальность. Тесты показали с 5 В питанием до 20 м через несколько стен внутри дома. Приемник при включении питания, даже если передатчик не работает, получит некоторые статические сигналы и шумы. Если будет получен сигнал на рабочей несущей частоте, то приемник автоматически уменьшит усиление, чтобы удалить более слабые сигналы, и в идеале будет выделять модулированные цифровые данные. Тестирование RF модулейПри испытаниях обоих модулей от +5В источника постоянного тока, а также с 173 мм вертикальной штыревой антенной. (для частоты 433,92 МГц это “1/4 волны”), было получено реальных 20 метров через стены, и тип модулей не сильно влияет на эти тесты. Поэтому можно предположить, что эти результаты типичны для большинства блоков. Был использован цифровой источник сигнала с точной частотой и 50/50 скважностью, это было использовано для модуляции данных передатчика. Выше показан простой вариант блока для последовательной передачи информации микроконтроллеру, которая будет получена с компьютера. Единственное изменение – добавлен танталовый конденсатор 25 В 10 мкф на выводы питания (Vcc и GND) на оба модуля. ВыводМножество людей используют эти радиомодули совместно с контроллерами Arduino и другими подобными, так как это самый простой способ получить беспроводную связь от микроконтроллера на другой микроконтроллер, или от микроконтроллера к ПК. Форум |
||||||||
Артикул | Функциональное назначение | Питание | Число каналов управления | Максимальная мощность одного канала управления | Дополнительный брелок-передатчик | Дальность | Режимы работы | Особенности |
MK333 | Комплект брелок-передатчик+приемник | ~220В | 1 | ~1000 Вт (7А) | MK336 | 40м | Только триггер | – самый миниатюрный приемник;- корпус для приемника в комплекте;- до 20 дополнительных брелков. |
MK336 | Брелок-передатчик | Бат.12В | – | – | – | 40м | – | – дополнительный брелок для MK333 |
MP324M | Комплект брелок-передатчик+приемник | =5В (приемник)Бат.12В (передатчик) | 4 | Маломощный, TTL-уровни | MP433/передатчикMP325M/передатчикMP324M/передатчик | 100м | Кнопка | – для реализации режимов «триггер» и «импульс» используется MP146;- диапазон рабочих температур приемника от -40 до +80 градусов;- при использовании брелка MP433/передатчик число подключаемых брелков неограниченно. |
MP324M/передатчик | Брелок-передатчик | Бат.12В | 4 | – | – | 100м | – | – подходит для MP324M, MP326M- 4 кнопки;- можно заменить на MP433/передатчик. |
MP325M | Комплект брелок-передатчик+приемник | =12В (приемник)Бат.12В (передатчик | 2 | ~2000 Вт (10А) | MP433/передатчикMP325M/передатчикMP324M/передатчик | 100м | Кнопка, триггер | – при использовании брелка MP433/передатчик число подключаемых брелков неограниченно;- светодиодная индикация состояний реле;- входы типа «триггер» для сброса реле. |
MP325M/передатчик | Брелок-передатчик | Бат.12В | 2 | – | – | 100 м | – | – дополнительный брелок для MP325M |
MP326M | Комплект брелок-передатчик+приемник | =12В (приемник)Бат.12В (передатчик | 4 | ~2000 Вт (10А) | MP325M/передатчикMP324M/передатчик | 100 м | Кнопка, триггер | – светодиодная индикация состояний реле;- сброс реле в режиме «триггер»;- неограниченное число дополнительных брелков MP324M/передатчик. |
MP426 SE | Комплект брелок-передатчик+приемник | =12В (приемник)Бат.12В (передатчик | 4 | ~1000 Вт (5А) | MP433/передатчик | 100м | Кнопка, триггер, перебор каналов | – три режима работы;- неограниченное число дополнительных брелков MP324M/передатчик. |
MP433 | Комплект передатчик+приемник на печатных платах | =5В (приемник)=12В (передатчик) | – | Маломощный, TTL-уровни | – | 100 м | – | – аналоговые модули без кодирования для использования в проектах с микроконтроллерами и другими кодерами и декодерами;- миниатюрное исполнение;- низкое энергопотребление. |
MP433/передатчик | Брелок-передатчик-дубликатор | Бат.12В | 4 | – | – | 100 м | – | – дублирование передатчиков;- поддержка до 4-х разных приемников;- работа с большим числом беспроводных систем с фиксированными и обучающими кодами. |
MP433PRO | Комплект передатчик+приемник на печатных платах | =5В (приемник)=3-12В (передатчик) | – | Маломощный, TTL-уровни | – | 600 м | – | – расстояние до 600 м;- рабочая температура от -40 до +60 градусов;- аналоговые модули без кодирования для использования в проектах с микроконтроллерами и другими кодерами и декодерами;- миниатюрное исполнение;- низкое энергопотребление. |
MP910 | Брелок-передатчик | Бат.12В | 2 | – | – | 100 м | – | – передатчик для MP911, MP912 и MP913 |
MP911 | Приемник | 12В | 1 | ~2000 Вт (10А) | MP910 | 100 м | Кнопка | – питание переменным или постоянным напряжением 12В;- возможно построение системы с несколькими приемниками с использованием MP433/передатчик;- изменение кодировки перемычками. |
MP912 | Приемник | 12В | 1 | ~2000 Вт (10А) | MP910 | 100 м | Триггер | – питание переменным или постоянным напряжением 12В;- возможно построение системы с несколькими приемниками с использованием MP433/передатчик;- изменение кодировки перемычками. |
MP913 | Приемник | 12В | 2 | ~2000 Вт (10А) | MP910 | 100 м | Кнопка | – питание переменным или постоянным напряжением 12В;- 2 канала с реле;- возможно построение системы с несколькими приемниками с использованием MP433/передатчик;- изменение кодировки перемычками. |
MP8036mhz | Сканер, дубликатор, ретранслятор, маяк | =9-14В | 4 входных8 выходных | Маломощный, TTL-уровни | – | До 600 м | – | – многофункциональный модуль управления беспроводными устройствам;- входные и выходные линии TTL-уровней для подключения кнопок и силовых модулей;- дисплей, пользовательское меню;- поддержка большого количества беспроводных систем диапазона 433МГц. |
Источник: https://masterkit.ru/blog/articles/sravnitelnyj-obzor-populyarnykh-ustrojstv-distantsionnogo-upravleniya-na-chastote-433-mgts
Передача данных с помощью радиомодулей на Ардуино
Радиомодули на 433 МГц или RF модули очень полезная штуки которые вместе с Arduino позволяют передавать данные от передатчика к приемнику без проводов.
В среде Arduino для этого есть специальная библиотека с примерами программ для работы с такими радиомодулями.
Данные модули отлично подойдут для реализации проектов с дистанционным управлением и небольшим объемом передаваемых данных. Радиус действия таких модулей порядка 150 метров.
Данные модули не используют какие либо протоколы передачи данных, все что поступает на вход data in передатчика передается приемнику. И приемник и передатчик имеют 4 вывода – земля,питание,антенна и данные.
Для того чтобы посмотреть что приходит в приемник его можно подключить к com порту компьютера. И посмотреть данные через программы мониторинга порта, можно использовать тернинал порта среды Arduino.
При подключении в терминале будет непрерывный поток данных, среди которого появляются те данные что мы шлем в передатчик.
Библиотека VirtualWire позволяет извлекать из этого потока данные отсылаемые передатчиком.
Передатчик
Характеристики передатчика:
- напряжение – от 3 до 12 В;
- мощность на выходе – 32 мВт;
- рабочий ток – 8мА;
- скорость передачи данных – 8 кб/сек;
- рабочие температуры – от -20 до 80 градусов С.
Приемник
>
Характеристики приемника:
- напряжение: 5 В;
- ток: 5,5 мА;
- рабочая частота: 315-433 МГц;
- скорость приема 9,6 кб/сек.
Код передатчика
#include
char *controller;
void setup() {
pinMode(13,OUTPUT);
vw_set_ptt_inverted(true); //
vw_set_tx_pin(12);
vw_setup(4000);// speed of data transfer Kbps
}
void loop(){
controller=”1″ ;
vw_send((uint8_t *)controller, strlen(controller));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,1);
delay(2000);
controller=”0″ ;
vw_send((uint8_t *)controller, strlen(controller));
vw_wait_tx(); // Wait until the whole message is gone
digitalWrite(13,0);
delay(2000);
Код приемника
#include
void setup()
{
vw_set_ptt_inverted(true); // Required for DR3100
vw_set_rx_pin(12);
vw_setup(4000); // Bits per sec
pinMode(13, OUTPUT);
vw_rx_start(); // Start the receiver PLL running
}
void loop()
{
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) // Non-blocking
{
if(buf[0]=='1'){
digitalWrite(13,1);
}
if(buf[0]=='0'){
digitalWrite(13,0);
}
}
}
Схемы подключения радиомодулей передатчика и приемника
Источник: http://micpic.ru/home/proekty-na-arduino/191-peredacha-dannykh-s-pomoshchyu-radiomodulej-na-arduino.html
Подключение радио передатчика и приемника 433 MГц к Arduino
Дайте объективную оценку и проголосуйте.
Загрузка…
Для полноценной работы модуля, необходимо припаять антенну. Рекомендуемая длина антенны для приемопедатчиков с частотой 433 МГц равна 170-178 мм (1/4 от длинны волны).
Дальность связи можно улучшить и за счет подачи на модуль более мощного питания – если оно составит 12 В, то дальность и надежность связи возрастут.
Работают приемник и передатчик в режиме модуляции ООК/ASK (1 — передатчик включен, 0 — передатчик выключен).
Технические характеристики:
Передатчик:
- Напряжение питания: 3V — 12V;
- Ток потребления: мин ≤ 9 мА(3V) — макс ≤ 40 мА(12V);
- Рабочая частота: 433.920 МГц, согласованно с приемником;
- Модуляция сигнала: АМ ООК / ASK;
- Выходная мощность передатчика: до 25 мВт;
- Диапазон рабочих температур: −20…+80 °C;
- Максимальная пропускная способность: 8 кб/сек;
- Дальность передачи: до 500 м (при прямой видимости и с антенной);
- Размеры: 19х19х8 мм.
Приемник:
- Напряжение питания: 5.0V +/-0,5 V;
- Ток потребления: ≤ 5.5mA (5.0V);
- Приемник: АМ ООК / ASK;
- Рабочая частота: 433.920 МГц, согласованно с передатчиком;
- Ток через вывод DATA: ≤ 5mA;
- Размеры: 30х14х7 мм.
Комплектация:
Беспроводной передатчик 433 МГц — 1 шт.
Беспроводной приемник 433 МГц — 1 шт.
Назначение выводов передатчика
- ATAD — данные
- VCC — питание «+»
- GND — питание «-«
- ANT — антенна
Назначение выводов приёмника
- GND — питание «-«
- DATA — данные
- VCC — питание «+»
- ANT — антенна
Схема подключения радио передатчика и приемника 433 MГц к Arduino
Пример программного кода:
Для реализации радиопередачи используется библиотека VirtualWire.
Код передатчика:
Подключив Радио передатчик 433 MГц к ардуино по вышеприведенной схеме, Вы можете попробовать в действии его уже прямо сейчас!
Для этого необходимо всего лишь выбрать в выпадающем списке ниже, Вашу плату, указать порт и нажать Run on Arduino.
Код приемника:
Подключив Радио приемник 433 MГц к ардуино по вышеприведенной схеме, Вы можете попробовать в действии его уже прямо сейчас!
Для этого необходимо всего лишь выбрать в выпадающем списке ниже, Вашу плату, указать порт и нажать Run on Arduino.
Что бы прочитать данные из порта, выберите используемый COM порт, скорость и нажмите Connect.
Видео-демонстрация работы радио модуля Arduino:
Купить Arduino в Украине — arduinomania.in.ua
Источник: http://arduinolife.in.ua/md05/
Подключение радиомодуля XY-MK-5V / FS1000A к Arduino
Сегодня мы займёмся подключением радиомодуля, а точнее, двух модулей – приёмника XY-MK-5V и передатчика FS1000A – к Arduino. Тоже к двум.
Эта пара отличается очень низкой стоимостью, при этом имеет весьма неплохой радиус передачи (около 50-ти метров в условиях города). Радиопередатчик FS1000A и радиоприёмник XY-MK-5V должны работать на одной частоте.
«Из коробки» они настроены на несущую частоту 433 МГц. Это распространённая частота для радиосвязи.
Например, она используется для связи домашней метеостанцией типа Oregon Scientific с выносными метеодатчиками (мы к ним ещё вернёмся), и в других «умных» приборах, передающих данные «по воздуху».
Внешний вид приёмника XY-MK-5V и передатчика FS1000A
2Подключение к Arduino радиопередатчика FS1000A и приёмника XY-MK-5V
Прежде чем подключать передатчик FS1000A к Arduino, необходимо к контактной площадке, обозначенной на плате ANT, припаять отрезок провода сечением примерно 0,25…0,5 мм и длиной 17,3 см. Это будет антенной.
Частоте 433 МГц соответствует длина волны, равная примерно 69 см. При длине антенны, равной 1/4 от длины волны, волновой вибратор (антенна) находится в резонансе с длиной волны, и её эффективность максимальна. Отсюда число 17,3 см (= 69 / 4).
Передатчик FS1000A можно запитать напряжением от 3,3 до 12 В. В зависимости от поданного напряжения дальность передачи может несколько меняться: при большем напряжении – большая дальность. Мы подадим на передатчик напряжение 5 В, и остальные выводы подключим согласно схеме.
Схема подключения передатчика FS1000A к Arduino
Приёмник XY-MK-5V подключается тоже просто. Вывод “DATA” сдвоен, можно подключаться к любому.
Схема подключения приёмника XY-MK-5V к Arduino
3Пример простейшей передачи данных от Arduino по радиоканалу
Для первого эксперимента возьмём стандартный скетч мигания светодиодом Blink и немного модифицируем его: будем посылать команду мигнуть светодиодом с одного Arduino (передатчика) к другому (приёмнику). Первый скетч – для передатчика. Он предельно простой.
#define prd 4 // пин DATA передатчика FS1000A #define ledPin 13 // вывод встроенного светодиода void setup() { pinMode(ledPin, OUTPUT); // работаем как выход pinMode(prd, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); digitalWrite(prd, HIGH); delay(1000); digitalWrite(ledPin, LOW); digitalWrite(prd, LOW); delay(1000); }
Скетч приёмника немного сложнее. Т.к. мы принимаем аналоговый сигнал по радиоканалу, который может быть сильно забит шумами и помехами, нам нужно задать пороги отсеивания.
#define prm A0 // пин DATA приёмника XY-MK-5V #define ledPin 13 // встроенный светодиод const int upperThreshold = 70; // верхний порог const int lowerThreshold = 50; // нижний порог void setup() { pinMode(ledPin, OUTPUT); } void loop() { int data = analogRead(prm); // читаем данные с аналогового входа if (data > upperThreshold) { digitalWrite(ledPin, LOW); // ???? } if (data < lowerThreshold) { digitalWrite(ledPin, HIGH); // ???? } }
Источник: https://soltau.ru/index.php/arduino/item/456-podklyuchenie-radiomodulya-xy-mk-5v-fs1000a-k-arduino
Прием сигнала от нескольких передатчиков 433МГц на Arduino
Недавно купил несколько передатчиков на 433МГц и появилась необходимость принимать информацию от двух передатчиков.
На приемники/передатчики нужно припаять антенну для более стабильной работы. Я использовал обычный жесткий провод длиной 17 см предварительно сделав его в виде пружины.
Так как у меня было в наличии всего две ардуины, в качестве третьего передатчика я решил запрограммировать Atmega328. Получился вот такой передатчик:
На плате стоит датчик влажности DHT11 и датчик температуры DS18B20, хотя можно было использовать один датчик DHT22.
В качестве еще передатчика использовал Arduino Nano:
Эти передатчики, в отличии от первого, передают просто числа 22 и 11.
Схема подключения очень проста:
Vcc к +5, GND к -5В а шина данных ADATA к D12 пину ардуины.
Код передатчика:
#include #include “LowPower.h”
void setup(void)
{ vw_set_ptt_inverted(true); // Необходимо для DR3100 vw_setup(2000); // Устанавливаем скорость передачи (бит/с)
} void loop(void)
{ //Прерывание на 8 сек, написано так в мануале а на самом деле на 22сек LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF); int number = 22; char symbol = 'b'; String strMsg = “f “; strMsg += symbol; strMsg += ” “; strMsg += number; strMsg += ” “; char msg[255]; strMsg.toCharArray(msg, 255); Serial.println(msg); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Ждем пока передача будет окончена delay(300);
}
Здесь используется две библиотеки VirtualWire и LowPower. (внизу статьи ссылки на библиотеки) Первая библиотека отвечает за передачу данных а вторая экономит потребление энергии.
Строка:
LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF);
понижает энергопотребление на 8сек(так сказано в даташите библиотеки), на самом деле мк не работает порядка 23сек. Ниже идет код формирования и передачи пакета информации в эфир, рассмотрим подробнее.
Переменная strMsg содержит в себе строку которую мы будем передавать. Мы передаем вот такую строку: f_b_22_ (нижнее подчеркивание символизирует пробел).
Код другого передатчика:
#include #include “LowPower.h”
void setup(void)
{ vw_set_ptt_inverted(true); // Необходимо для DR3100 vw_setup(2000); // Устанавливаем скорость передачи (бит/с)
} void loop(void)
{ //Прерывание на 8 сек, написано так в мануале а на самом деле на 22сек LowPower.idle(SLEEP_8S, ADC_OFF, TIMER2_OFF, TIMER1_OFF, TIMER0_OFF, SPI_OFF, USART0_OFF, TWI_OFF); int number = 11; char symbol = 'a'; String strMsg = “z “; strMsg += symbol; strMsg += ” “; strMsg += number; strMsg += ” “; char msg[255]; strMsg.toCharArray(msg, 255); Serial.println(msg); vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Ждем пока передача будет окончена delay(200);
}
Отличие программ в том что в первой код передатчика символ “z” а во втором “f” и еще главная особенность в том что программы работают с разными задержками, сначала одна вещает в эфир информацию а потом другая, что предотвращяет накладывания сигналов друг на друга.
Дальше рассмотрим код приемного устройства:
#include void setup()
{ Serial.begin(9600); vw_set_ptt_inverted(true); // Необходимо для DR3100 vw_setup(2000); // Задаем скорость приема vw_rx_start(); // Начинаем мониторинг эфира
} void loop()
{ uint8_t buf[VW_MAX_MESSAGE_LEN]; // Буфер для сообщения uint8_t buflen = VW_MAX_MESSAGE_LEN; // Длина буфера if (vw_get_message(buf, &buflen)) { int i; int j; if (buf[0] == 'z') { i = 4; int number = 0; while (buf[i] != ' ') { number *= 10; number += buf[i] – '0'; i++; } Serial.print(“1- “); Serial.println(number); } else { if (buf[0] == 'f') { j = 4; int number2 = 0; while (buf[j] != ' ') { number2 *= 10; number2 += buf[j] – '0'; j++; } Serial.print(“2- “); Serial.println(number2); } } }
}
Прием и обработка осуществляется в цикле while (buf[i] != ' ') после того как мы определили от какого датчика пришла информация.
Фото приемника:
По сути приемник имеет три задействованных выхода плюс, земля и данные но почему-то сделали два пина выводящих данные.
Прикрепленные файлы:
- priem.ino (2 Кб)
- send_delay1.ino (1 Кб)
- send_delay2.ino (1 Кб)
Источник: http://cxem.gq/arduino/arduino119.php