Радиоуправляемое реле своими руками. Самодельный комплект радиоуправления на основе телефона-трубки (433МГц) Что это за антенна


  • Простота подключения. Рассматриваемые модули , в отличии от nRF24L01+ , питаются от напряжения 5 В.
  • Доступность. Радио модули выпускаются множеством производителей, в различном исполнении и являются взаимозаменяемыми.
  • Недостатки:

    • На частоте 433,920 МГц работают множество других устройств (радио люстры, радио розетки, радио брелки, радио модели и т.д.), которые могут «глушить» передачу данных между радио модулями .
    • Отсутствие обратной связи. Модули разделены на приёмник и передатчик . Таким образом, в отличии от модуля nRF24L01+ , приемник не может отправить передатчику , сигнал подтверждения приёма.
    • Низкая скорость передачи данных, до 5 кбит/сек.
    • Приёмник MX-RM-5V критичен даже к небольшим пульсациям на шине питания. Если Arduino управляет устройствами вносящими даже небольшие, но постоянные, пульсации в шину питания (сервоприводы, LED индикаторы, ШИМ и т.д.), то приёмник расценивает эти пульсации как сигнал и не реагирует на радиоволны передатчика. Влияние пульсаций на приёмник можно снизить одним из способов:
      • Использовать, для питания Arduino, внешний источник, а не шину USB. Так как напряжение на выходе многих внешних источников питания контролируется или сглаживается. В отличии от шины USB, где напряжение может существенно «проседать».
      • Установить на шине питания приёмника сглаживающий конденсатор.
      • Использовать отдельное стабилизированное питание для приёмника.
      • Использовать отдельное питание для устройств вносящих пульсации в шину питания.

    Нам понадобится:

    • Радио модули FS1000A и MX-RM-5V х 1 комплект.
    • Trema светодиод (красный , оранжевый , зелёный , синий или белый) x 1шт.
    • Набор проводов «мама-мама» для подключения радио модулей х 1 комплект.

    Для реализации проекта нам необходимо установить библиотеки:

    • Библиотека iarduino_RF433 (для работы с радио модулями FS1000A и MX-RM-5V).
    • Библиотека iarduino_4LED , (для работы с Trema четырехразрядным LED индикатором).

    О том как устанавливать библиотеки, Вы можете ознакомиться на странице 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). Антенны припаиваются к контактным площадкам, как показано на схеме подключения.

    Видео:

    Схема подключения:

    Приёмник:

    При старте (в коде setup) скетч настраивает работу радиоприёмника , указывая те же параметры что и у передатчика , а также инициирует работу с LED индикатором . После чего, постоянно (в коде loop), проверяет нет ли в буфере данных, принятых радиоприёмником . Если данные есть, то они читаются в массив data, после чего значение 0 элемента (показания Trema слайдера) выводится на LED индикатор , а значение 1 элемента (показания Trema потенциометра) преобразуются и используется для установки яркости светодиода .

    Код программы:

    Передатчик:
    #include // Подключаем библиотеку для работы с передатчиком FS1000A iarduino_RF433_Transmitter radio(12); // Создаём объект radio для работы с библиотекой iarduino_RF433, указывая номер вывода к которому подключён передатчик int data; // Создаём массив для передачи данных void setup(){ radio.begin(); // Инициируем работу передатчика FS1000A (в качестве параметра можно указать скорость ЧИСЛО бит/сек, тогда можно не вызывать функцию setDataRate) radio.setDataRate (i433_1KBPS); // Указываем скорость передачи данных (i433_5KBPS, i433_4KBPS, i433_3KBPS, i433_2KBPS, i433_1KBPS, i433_500BPS, i433_100BPS), i433_1KBPS - 1кбит/сек radio.openWritingPipe (5); // Открываем 5 трубу для передачи данных (передатчик может передавать данные только по одной из труб: 0...7) } // Если повторно вызвать функцию openWritingPipe указав другой номер трубы, то передатчик начнёт передавать данные по вновь указанной трубе void loop(){ data = analogRead(A1); // считываем показания Trema слайдера с вывода A1 и записываем их в 0 элемент массива data data = analogRead(A2); // считываем показания Trema потенциометра с вывода A2 и записываем их в 1 элемент массива data radio.write(&data, sizeof(data)); // отправляем данные из массива data указывая сколько байт массива мы хотим отправить delay(10); // пауза между пакетами }
    Приемник:
    #include // Подключаем библиотеку для работы с приёмником MX-RM-5V #include // Подключаем библиотеку для работы с четырёхразрядным LED индикатором iarduino_RF433_Receiver radio(2); // Создаём объект radio для работы с библиотекой iarduino_RF433, указывая номер вывода к которому подключён приёмник (можно подключать только к выводам использующим внешние прерывания) iarduino_4LED dispLED(6,7); // Создаём объект dispLED для работы с функциями библиотеки iarduino_4LED, с указанием выводов дисплея (CLK , DIO) int data; // Создаём массив для приёма данных const uint8_t pinLED=11; // Создаём константу с указанием вывода ШИМ к которому подключён светодиод void setup(){ dispLED.begin(); // Инициируем работу LED индикатора radio.begin(); // Инициируем работу приёмника MX-RM-5V (в качестве параметра можно указать скорость ЧИСЛО бит/сек, тогда можно не вызывать функцию setDataRate) radio.setDataRate (i433_1KBPS); // Указываем скорость приёма данных (i433_5KBPS, i433_4KBPS, i433_3KBPS, i433_2KBPS, i433_1KBPS, i433_500BPS, i433_100BPS), i433_1KBPS - 1кбит/сек radio.openReadingPipe (5); // Открываем 5 трубу для приема данных (если вызвать функцию без параметра, то будут открыты все трубы сразу, от 0 до 7) // radio.openReadingPipe (2); // Открываем 2 трубу для приёма данных (таким образом можно прослушивать сразу несколько труб) // radio.closeReadingPipe(2); // Закрываем 2 трубу от приёма данных (если вызвать функцию без параметра, то будут закрыты все трубы сразу, от 0 до 7) radio.startListening (); // Включаем приемник, начинаем прослушивать открытую трубу // radio.stopListening (); // Выключаем приёмник, если потребуется } void loop(){ if(radio.available()){ // Если в буфере имеются принятые данные radio.read(&data, sizeof(data)); // Читаем данные в массив data и указываем сколько байт читать dispLED.print(data); // Выводим показания Trema слайдера на индикатор analogWrite(pinLED, map(data,0,1023,0,255)); // Устанавливаем яркость свечения светодиода в соответствии с углом поворота Trema потенциометра } // Если вызвать функцию available с параметром в виде ссылки на переменную типа uint8_t, то мы получим номер трубы, по которой пришли данные (см. урок 26.5) }

    Эттот приемник разрабатывался как "конструкция выходного дня" и предназначен для
    мониторинга частоты 433мгц, оценки обстановки в эфире, прослушивания сигналов AM/WFM/PWM передатчиков, а так же при работе с направленной антенной для пеленгации и поиска радиомаячков и радиомикрофонов. Приемник выполнен по неодноратно испытанной в аппаратуре радиоуправления схеме сверхрегенератора с транзистором работающем в барьерном режиме. В УНЧ используется широко распространенная микросхема ОУ LM358, один из ее усилителей работает как предварительный с регулировкой усиления а второй- как повторитель для согласования с низкоомными головными телефонами с сопротивлением катушек 20-50ом. В отличии от аналогичных приемников радиоуправления частота среза ФНЧ после детектора понижена до 3-4кгц для снижения шумов в отсутствие сигнала, а так же увеличена емкость кондесатора, шунтирующего вход антенны для снижения влияния резонансной направленной антенны "волновой канал" на настройку контура детектора. Чувствительность приемника ориентировочно составляет единицы микровольт, полоса пропускания порядка 1мгц. Сигнал передатчика 423мгц мощностью 80мвт с расстояния >2м принимается на уровне, сравнимом с уровнем шумов (при настройке приемника на 433мгц). Частота приема определяется настройкой катушки L2 и может быть изменена в больших пределах.

    Принципиальная схема приемника
    Светодиод желтого свечения с прямым напряжением около 2в служит для стабилизации режима сверхрегенератора а так же индикатором включения. Диапазон напряжения питания 3.7-0в, потребляемый ток при питании от 9в в отсутствие сигнала составляет 4ма, при приеме сигнала и полной громкости- 12ма. Регулировка приемника сводится к настройке (путем сжатия- растяжения витков катушки L2) контура сверхрегенератора на необходимую частоту.


    Фото собранной платы приемника.



    Приемник с 3-х элементной антенной "волновой канал"

    Первоначально планировалось подключение напрвленной антенны через полосковые линии связи на 2-х стороннем фольгированном стеклотекстолите но из-за неустойчивой работы приемника при прикосновении к элементам антенны соединение активного вибратора со входом приемника пришлось выполнить на 2-х проводной линии (из проводов плоского кабеля) длиной 160мм.

    Подключение сделано на винтах поскольку установочные размеры BNC разьема превышают размер платы приемника.


    Это фото приемника с обычной штыревой антенной 17см.

    Рисунок печатной платы.
    Монтаж выполнен на 2-х стороннем фольгированном стеклотекстолите толщиной 1мм. Контакты, помеченные белым цветом соединяются с фольгой на нижней стороне платы (землей) короткими отрезками провода. Внимание! плату для ЛУТ печатать ЗЕРКАЛЬНО!

    Я уже писал про использование приемников и передатчиков работающих в диапазоне 433 МГц применительно к своим поделкам. В этот раз хотелось бы сравнить их разные вариации и понять есть ли между ними разница, и какие предпочтительней. Под катом конструирование тестового стенда на базе arduino, немного кода, собственно, тесты и выводы. Любителей электронных самоделок приглашаю под кат.

    Лежат у меня разные приемники и передатчики данного диапазона, решил обобщить и классифицировать данные устройства. Тем более, что в конструировании устройств без радиоканала обойтись довольно сложно, особенно если поделка не должна находиться в стационарном положении. Кто-то возможно возразит, что сейчас довольно немало решений на wi-fi и стоит использовать их, однако, отмечу что не везде их использование целесообразно, к тому же иногда не хочется мешать себе и соседям занимая столь ценный частотный ресурс.

    В общем, это все лирика, перейдем к конкретике, сравнению подлежат следующие устройства:
    Самый распространенный и дешевый комплект передатчика и приемника:


    Купить можно, например, стоит $0.65 за приемник вместе с передатчиком. В моих прошлых обзорах использовался именно он.

    Следующий комплект позиционируется как более качественный:


    Продается за $2.48 в комплекте с антеннками пружинками для данного диапазона.

    Собственно предмет обзора, продается отдельно в виде приемника:

    Следующее устройство участвующее в данном мероприятии является передатчиком:


    Где конкретно я его купил - не помню, впрочем, не так важно.

    Для того чтобы обеспечить равные условия всем участникам припаяем одинаковые в виде спирали:


    Также, я припаял выводы для вставки в макетку.

    Для экспериментов потребуются две отладочные платы arduino (я взял Nano), две макетные платы, провода, светодиод и ограничивающий резистор. У меня получилось так:

    Для тестов я решил использовать библиотеку , ее нужно распаковать в каталог "libraries" установленной среды arduino IDE. Пишем нехитрый код передатчика, который будет стоять стационарно:
    #include RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); mySwitch.enableTransmit(10); } void loop() { mySwitch.send(5393, 24); delay(5000); }
    Пин данных передатчиков будем подключать к выходу 10 arduino. Передатчик будет каждые 5 секунд посылать в эфир цифру 5393.

    Код приемника немного более сложный, из-за подключения внешнего диода через ограничительный резистор к выводу 7 arduino:
    #include #define LED_PIN 7 RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); digitalWrite(LED_PIN, 0); mySwitch.enableReceive(0); } void loop() { if (mySwitch.available()) { int value = mySwitch.getReceivedValue(); if (value == 0) { Serial.print("Unknown encoding"); } else { Serial.print("Received "); uint16_t rd = mySwitch.getReceivedValue(); if(rd==5393){ digitalWrite(LED_PIN, 1); delay(1000); digitalWrite(LED_PIN, 0); delay(1000); } } mySwitch.resetAvailable(); } }
    Приемник подключен к выводу 2 arduino Nano (в коде используется mySwitch.enableReceive(0), так как вход 2 соответствует 0-му типу прерывания). Если принята та цифра которая отправлялась, то на секунду мигнем внешним диодом.

    Благодаря тому, что все передатчики имеют одинаковую распиновку, в ходе эксперимента их можно будет просто менять:


    У приемников ситуация аналогична:





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


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

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


    При его использовании расстояние уверенного приема сокращалось на 1-2 метра. Остальные передатчики работали абсолютно одинаково.

    А вот с приемниками все оказалось сложнее. Почетное 3-е место занял приемник из этого комплекта:


    Он начал терять связь уже на 6 метрах в пределах прямой видимости (на 5 метрах - при использовании аутсайдера среди передатчиков)

    Второе место занял участник из самого дешевого комплекта:


    Уверненно принимал на 8-ми метрах в пределах прямой видимости, 9-ый метр осилить не удалось.

    Ну и рекордсменом стал предмет обзора:


    Доступный участок прямой видимости (12 метров) оказался для него легкой задачей. И я перешел к приему через стены, итог 4 капитальные бетонные стены, при расстоянии порядка 40 метров - он принимал уже на грани (шаг вперед прием, шаг назад светодиод молчит). Таким образом, предмет обзора однозначно могу рекомендовать к покупке и использованию в поделках. При его использовании можно при равных расстояниях снижать мощность передатчика, либо при равных мощностях увеличивать расстояние уверенного приема.

    Согласно рекомендациям, увеличить мощность передачи (а следовательно и расстояние приема) можно повышая напряжение питания передатчика. 12 Вольт позволило увеличить исходное расстояние на 2-3 метра в пределах прямой видимости.

    На этом заканчиваю, надеюсь информация окажется кому то полезной.

    Планирую купить +122 Добавить в избранное Обзор понравился +121 +225

    Простое решение для вашей задачи!

    Есть в наличии

    Купить оптом

    Технические характеристики

    Рабочая частота (мГц) 433
    Тип питания постоянный
    Количество входов (шт) 1
    Количество выходов (шт) 1
    Рекомендованная температура эксплуатации (°С) -15...+60
    Напряжение питания приемника (В) 5
    Напряжение питания передатчика (В) 12
    Вес, не более (г) 20
    Ток потребления приемника (мА) 1,5
    Ток потребления передатчика (мА) 10
    Входная чувствительность (мкВ) 1,5
    Дальность действия (м) 100
    Длина приемника (мм) 19
    Длина передатчика (мм) 30
    Выходная мощность передатчика (мВт) 10
    Входной уровень данных передатчика (В) 5
    Выходной уровень данных приемника (В) 0,7
    Ширина передатчика (мм) 15
    Высота передатчика (мм) 10
    Ширина приемника (мм) 19
    Высота приемника (мм) 10
    Вес 22

    Схемы

    Использование комплекта без применения микроконтроллеров.

    Комплект поставки

    • Плата передатчика - 1 шт.
    • Плата приемника - 1 шт.
    • Инструкция - 1 шт.

    Что потребуется для сборки

    • Для подключения понадобится: провод, паяльник, бокорезы.

    Условия эксплуатации

    • Температура - -15С до +50С шт.
    • Относительная влажность - 20-80% без образования конденсата шт.

    Меры предосторожности

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

    Вопросы и ответы

    • Возможно ли приобрести несколько приемников к одному передатчику? Если в помещении будут стоять несколько приемников, то будут ли все они срабатывать от одного передатчика?
      • 1. Можно. 2. Будет.
    • Могу ли я управлять приемником, одним из предлогаемых пультов 433 МГц
      • Можно, но что бы не было ложных срабатываний необходимо за приемником установить микроконтроллер и запрограммировать его на купленный дополнительный пульт.
    • Доброго времени суток!!!Возможно ли на данном устройстве,уменьшить дальность действия до 30 см?
      • До 30 см не пробовали. Но дальность регулируется с помощью уменьшения длинны антенны на приемнике и передатчике.
    • Добрый день, подскажите пожалуйста, данный комплект приёмника с передатчиком подлежит программированию, или это аналаговые приборы.
      • Это аналоговые приборы. Предназначены для совместной работы с микроконтроллером.

    На этом уроке мы решим задачу по передаче радиосигнала между двумя контроллерами Ардуино с помощью популярного приемопередатчика с частотой 433МГц. На самом деле, устройство по передаче данных состоит из двух модулей: приемника и передатчика. Данные можно передавать только в одном направлении. Это важно понимать при использовании этих модулей. Например, можно сделать дистанционное управление любым электронным устройством, будь то мобильный робот или, например, телевизор. В этом случае данные будут передаваться от пульта управления к устройству. Другой вариант — передача сигналов с беспроводных датчиков на систему сбора данных. Здесь уже маршрут меняется, теперь передатчик стоит на стороне датчика, а приемник на стороне системы сбора. Модули могут иметь разные названия: MX-05V, XD-RF-5V, XY-FST, XY-MK-5V, и т.п., но все они имеют примерно одинаковый внешний вид и нумерацию контактов. Также, распространены две частоты радиомодулей: 433 МГц и 315 МГц.

    1. Подключение

    Передатчик имеет всего три вывода: Gnd, Vcc и Data.
    Подключаем их к первой плате Ардуино по схеме: Собираем оба устройства на макетной плате и приступаем к написанию программ.

    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();

    Задания

    Теперь можно попробовать потренироваться и сделать разные полезные устройства. Вот несколько идей.
    1. Пульт для светильника. На стороне приемника , включенный в цепь питания светильника (осторожно, 220 Вольт!). На стороне передатчика: . Написать программы для приемника и передатчика, которые по нажатию кнопки будут включать удаленное реле. При повторном нажатии кнопки реле будет выключаться.
    2. Уличный термометр с радиоканалом. На стороне передатчика разместить . Предусмотреть автономное питание от батареек. На стороне приемника: . Написать программы для приемника и передатчика, которые позволят выводить показания температуры с удаленного датчика на дисплее.

    Заключение

    Итак, теперь мы знаем простой и недорогой способ передавать данные на расстоянии. К сожалению, скорость передачи и дистанция в таких радиомодулях весьма ограничены, так что мы не сможем полноценно управлять, например квадрокоптером. Однако, сделать радиопульт для управления простым бытовым прибором: светильником, вентилятором или телевизором, нам под силу. На основе приемопередатчиков с частотой 433 МГц и 315 МГц работает большинство радиоканальных пультов управления. Имея Ардуино и приемник, мы можем декодировать сигналы управления и повторить их. Подробнее о том, как это сделать мы напишем в одном из следующих уроков!




    

    2024 © kubanteplo.ru.