Самодельный комплект радиоуправления на основе телефона-трубки (433МГц). Дистанционное управление по радиоканалу Управление по радиоканалу 433 мгц servo

Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять Bluetooth и Wi-Fi модули. Но одно дело передавать видео и здоровенные файлы, а другое - управлять машинкой или роботом на 10 команд. С другой стороны радиолюбители часто строят, налаживают и переделывают заново приемники и передатчики для работы с готовыми шифраторами/дешифраторами команд. В обеих случаях можно использовать достаточно дешевые RF-модули. Особенности их работы и использования под катом.

Типы модулей

RF-модули для передачи данных работают в диапазоне УКВ и используют стандартные частоты 433МГц, 868МГц либо 2,4ГГц (реже 315МГц, 450МГц, 490МГц, 915МГц и др.) Чем выше несущая частота, тем с большей скоростью можно передавать информацию.
Как правило, выпускаемые RF-модули предназначены для работы с каким-либо протоколом передачи данных. Чаще всего это UART (RS-232) или SPI. Обычно UART модули стоят дешевле, а так же позволяют использовать нестандартные (пользовательские) протоколы передачи. Вначале я думал склепать что-то типа такого , но вспомнив свой горький опыт изготовления аппаратуры радиоуправления выбрал достаточно дешевые HM-T868 и HM-R868 (60грн. = менее $8 комплект). Существуют также модели HM-*315 и HM-*433 отличающиеся от нижеописанных лишь несущей частотой (315МГц и 433МГц соответственно). Кроме того есть множество других модулей аналогичных по способу работы, поэтому информация может быть полезной обладателям и других модулей.

Передатчик

Почти все RF-модули представляют собой небольшую печатную плату с контактами для подключения питания, передчи данных и управляющих сигналов. Рассмотрим передатчик(трансмиттер) HM-T868
На нем имеется трехконтактный разъем: GND(общий), DATA(данные), VCC(+питания), а также пятачок для припайки антенны(я использовал огрызок провода МГТФ на 8,5см - 1/4 длинны волны).

Приемник

Ресивер HM-R868, внешне, очень похож на соответствующий ему трансмиттер

но на его разъеме есть четвертый контакт - ENABLE, при подаче на него питания приемник начинает работать.

Работа

Судя по документации, рабочим напряжением является 2,5-5В, чем выше напряжение, тем большая дальность работы. По сути дела - это радиоудлинитель: при подаче напряжения на вход DATA передатчика, на выходе DATA приемника так же появится напряжение (при условии что на ENABLE также будет подано напряжение). НО, есть несколько нюансов. Во-первых: частота передачи данных (в нашем случае - это 600-4800 бит/с). Во-вторых: если на входе DATA нету сигнала более чем 70мс, то передатчик переходит в спящий режим(по-сути отключается). В-третьих: если в зоне приема ресивера нету работающего передатчика - на его выходе появляется всякий шум.

Проведем небольшой эксперимент: к контактам GND и VCC трансмиттера подключим питание. Вывод DATA соединим с VCC через кнопку или джампер. К контактам GND и VCC ресивера также подключаем питание, ENABLE и VCC замыкаем между собой. К выходу DATA подключаем светодиод (крайне желательно через резистор). В качестве антенн используем любой подходящий провод длинной в 1/4 длинны волны. Должна получиться такая схемка:


Сразу после включения приемника и/или подачи напряжения на ENABLE должен загореться светодиод и гореть непрерывно (ну или почти непрерывно). После нажатии кнопки на передатчике, со светодиодом также ничего не происходит - он продолжает гореть и дальше. При отпускании кнопки светодиод мигнет(погаснет и снова загорится) и продолжает гореть дальше. При повторном нажатии и отпускании кнопки все должно повторится. Что же там происходило? Во время включения приемника, передатчик находился в спящем состоянии, приемник не нашел нормального сигнала и стал принимать всякий шум, соответственно и на выходе появилась всякая бяка. На глаз отличить непрерывный сигнал от шума нереально, и кажется, что светодиод светит непрерывно. После нажатия кнопки трансмиттер выходит из спячки и начинает передачу, на выходе ресивера появляется логическая «1» и светодиод светит уже действительно непрерывно. После отпускания кнопки передатчик передает логический «0», который принимается приемником и на его выходе также возникает «0» - светодиод, наконец, гаснет. Но спустя 70мс передатчик видит что на его входе все тот же «0» и уходит в сон, генератор несущей частоты отключается и приемник начинает принимать всякие шумы, на выходе шум - светодиод опять загорается.

Из вышесказанного следует, что если на входе трансмиттера сигнал будет отсутствовать менее 70мс и находится в правильном диапазоне частот, то модули будут вести себя как обычный провод (на помехи и другие сигналы мы пока не обращаем внимания).

Формат пакета

RF-модули данного типа можно подключить напрямую к аппаратному UART или компьютеру через MAX232, но учитывая особенности их работы я бы посоветовал использовать особые протоколы, описанные программно. Для своих целей я использую пакеты следующего вида: старт-биты, байты с информацией, контрольный байт(или несколько) и стоп-бит. Первый старт-бит желательно сделать более длинным, это даст время чтобы передатчик проснулся, приемник настроился на него, а принимающий микроконтроллер(или что там у Вас) начал прием. Затем что-то типа «01010», если на выходе приемника такое, то это скорее всего не шум. Затем можно поставить байт идентификации - поможет понять какому из устройств адресован пакет и с еще большей вероятностью отбросит шумы. До этого момента информацию желательно считывать и проверять отдельными битами, если хоть один из них неправильный - завершаем прием и начинаем слушать эфир заново. Дальше передаваемую информацию можно считывать сразу по байтам, записывая в соответствующие регистры/переменные. По окончании приема выполняем контрольное выражение, если его результат равен контрольному байту - выполняем требуемые действия с полученной информацией, иначе - снова слушаем эфир. В качестве контрольного выражения можно считать какую-нибудь контрольную сумму, если передаваемой информации немного, либо Вы не сильны в программировании - можно просто посчитать какое-то арифметическое выражение, в котором переменными будут передаваемые байты. Но необходимо учитывать то, что в результате должно получится целое число и оно должно поместится в количество контрольных байт. Поэтому лучше вместо арифметических операций использовать побитовые логические: AND, OR, NOT и, особенно, XOR. Если есть возможность, делать контрольный байт нужно обязательно так как радиоэфир - вещь очень загаженная, особенно сейчас, в мире электронных девайсов. Порой, само устройство может создавать помехи. У меня, например, дорожка на плате с 46кГц ШИМ в 10см от приемника очень сильно мешала приему. И это не говоря о том, что RF-модули используют стандартные частоты, на которых в этот момент могут работать и другие устройства: рации, сигнализации, радиоуправление, телеметрия и пр.

Такс, в порядке работы над коммерческим проектом (и не спрашивайте о каком — не скажу), который сожрал все мое свободное время огромной зазубренной ложкой, раскурил до самого пепла радиомодули HopeRF HM-R433/HM-T433 . Сегодня собрал полудуплексную схему на четырех модулях и провел сеанс дальнобойной приемо-передачи.

Итак, что из себя представляла установка:

Блок А:

  • Передатчик: HM-T433
  • Приемник: HM-R433
  • Расположение блока: 5 этаж, на столе. У северной стены.
  • Питание: 5 вольт.
  • Скорость передачи: 4800 бод.
  • Длина пакета данных: 10 байт.

Блок Б:
  • Передатчик: HM-T433
  • Приемник: HM-R433
  • Антенна передатчика: Кусок провода МГТФ длинной 17см (1/4 от длины волны 433Мгц сигнала) загнутый абы как.
  • Антенна приемника: та же херня.
  • Расположение модулей: параллельно друг другу, на расстоянии 2см, усики антенн разбросаны в разные стороны, на манер тараканьих.
  • Расположение блока: У меня в руках, на земле. С южной стороны дома (смотри схему)
  • Питание: 5 вольт.
  • Скорость передачи: 4800 бод.
  • Длина пакета данных: 10 байт.
Условие передачи:
Блок Б дает десятибайтный пакет блоку А, тот, убедившись, что пакет принят без искажений, шлет подтверждение обратно на блок Б, те же десять байт. Блок Б, получив подтверждение зажигает зеленый диод. Передача идет с обрывом несущей. Т.е. после отправки пакета передатчик вырубается полностью.

Проведение опыта:
Щелкая кнопкой передачи и фтыкая в зеленую лампочку, я начал спускаться по лестнице. К моей радости, даже когда я спустился на первый этаж зеленая лампочка бодро сигнализировала о том, что передача идет без помех, несмотря на то, что меня от другого блока отделяло как минимум 5 бетонных плит перекрытий, не считая кирпичных стен. После я вышел из подъезда и подорвался к противоположному углу дома. Примерно на 50 метрах от подъезда связь прервалась и ответа не было. Тогда я начал возвращаться обратно. Связь восстановилась лишь когда я подошел почти вплотную к своему подъезду. Поначалу мне казалось, что наверху тупо зависла софтина, оказалось все ок. В чем была причина не знаю. Возможно, стоящее в тот момент возле подъезда, такси имело у себя на борту 433МГц передатчик и насрало мне в эфир. Так как следующий отход на другой конец здания подтвердил дальность и качество приема. Это при том, что на прямой видимости, между мной и другим концом был практически весь кирпичный дом, продольно.

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

  • У нас два приемника и два передатчика.
  • Приемник можно заглушить выходом Enable , так что он не будет принимать.
  • А вот передатчик передает всегда когда на входе есть активность. Засыпает он спустя 70ms бездействия.
  • А еще мы знаем, что два передатчика одновременно фурычить не могут — несущие у них разные, а значит приемники посылают в пешее эротическое путешествие обоих. Ну или того чей сигнал слабее.

Чтобы организовать в таких мерзких условиях дуплекс приходится извращаться.
Для передачи нужно во-первых инициализировать несущую. Проблема в том, что когда несущей нет, то приемник ловит всякую муть, а входящая линия UART принимающего контроллера захлебывается от дерьма. Так что тут, в целях экономии ресурсов проца, имеет смысл выставить минимальную скорость приема 600бод, чтобы его реже дергало прерыванием от UART RX . Сразу слать байт нельзя — так как у нас на входе мусор, а протокол RS232 отличается тем, что конец байта практически не отличим от середины, то если тупо взять и послать, то с вероятностью в 90% у нас произойдет смешение части байта из окружающего мусора и нахлынувшими данными из вдруг образовавшегося канала. Получится рассинхронизация и на выходе будет полная ахинея.
Так что вначале надо поднять несущую и синхронизировать протокол. Несущая у нас встает как только меняется состояние линии DATA , а вот с протоколом хитрее. Вспомним пост про — видите, спокойное состояние UART’a — высокий уровень. Так что после подъема несущей нужно выставить DATA в High , дольше чем на один байт по текущей скорости протокола, но не дольше чем на 70ms — иначе у нас передатчик опять заснет. При этом на выходе DATA приемника тоже выставится High и UART , спокойно прожевав очередную порцию дерьма из эфира, успокоится и приготовится к приему нормального корма. Дальше можно слать данные.
Чтобы не заморачиваться с дрыганьем ножкой и вычислением задержек,можно просто послать раза три число 255 — это фактически сплошной высокий уровень, с небольшим провалом в виде старт бита. Но на одном из байтов таки произойдет синхронизация и дальше можно слать данные. И повышать скорость передачи (помните я чуть выше говорил про понижение до минимума), после взаимной договоренности сторон.

На прием тоже есть пара хитростей. Сразу же после передачи нам нужно дождаться А) Когда байт таки отправится до конца Б) когда наш собственный передатчик заснет от бездействия. Т.е. это 70ms + время на передачу байта . Чтобы не словить сигнал от своего же передатчика. Как только наш передатчик отвалится можно врубать приемник и начинать ждать несущей от вражеской станции. Отличить полезный сигнал от дерьма очень просто — достаточно за начало передачи взять 10 одинаковых байт. Как только пришло 10 одинаковых байт — опа, есть коннект. Вероятность появления 10 одинаковых байт в мусоре эфира микроскопическая. Особенно если это байты численно близкие к нулю. (в среднем, шум, по значениям, колеблется от 50 до 255, крайне редко проваливаясь ниже 20)

Организация сети:
А если нам нужно не два, а больше приемо передатчиков? Как быть? А тут рулит эстафета aka Token Ring — когда передатчик по очереди передает служебный байт-эстафетную палочку. Получив этот пакет передатчик имеет право вещать. Если же ему вещать нечего, то он отсылает это право другому и так по кругу. Разумеется делается это все программно.

Приколы с контроллером:
При отладке этого девайса у меня сдохли три (!!!) ATTiny2313 . В первой убился порт PB4 — там висела кнопка и она стала самопроизвольно срабатывать. Замеряю напряжение подтяжки (внутренней) — 0.5 вольта вместо положенных 4.5. Вот засада:/ Заменил (точнее перепаял, т.к. была в SOIC — фен рулит! :)). Это к вопросу о внешней подтяжке резисторами. Внешняя подтяжка рулит, что бы там не бубнили любители минимализма на плате! Зажал я пару резисторов и, в итоге, просрал три контроллера, а так, может быть, даже и не заметил бы пробоя ноги.

Потом опять сдохла ножка PB4 , попутно унеся в могилу еще и ногу RXD . Да что за засада??? Неужели статика? Сколько десятков ATTiny2313 пустил в оборот — ни одна от статики не сдохла, а тут уже вторая. Что то тут нечисто. Ладно, хрен с ней, у меня еще в палке этих ATTiny2313 штук 70 лежит. Перепаял. Фен воистину рулит!!!

Когда на третьей микросхеме сдохла нога PB4 я стал искать где же собака порылась… Статика… не статика это как авиабомба — дважды в одну и ту же воронку не падает. Схемотехника? Да не, откуда там пробои — пассивка одна вокруг… И тут я вспомнил когда пробивало ногу — когда я антенну передатчика сворачивал в этакое колечко вокруг платы и закрывал в коробочку, а после жал на передачу… Гляжу — точка запайки антенны передатчика в аккурат над ногой процессора, а потом антенна идет с другой стороны платы вдоль дорожки от этой злосчастной ноги. Дорожка длинная, сантиметра три-четыре. Вот сижу и чешу репу — неужели наводка с антенны модуля столь мощная была, что пробивала нафиг транзистор в МК? На всякий случай между антенной и платой проложил кусок фольгированного текстолита и заземлил его на массу. Выглядит как броня, зато теперь ножки не дохнут. От так!

З.Ы.
На этом тему модулей HopeRF HM-R433/HM-T433 считаю закрытой.
Разве что библиотечку кода под обработку этого барахла потом предоставлю, когда отлажу и вычищу все баги. Вопросы в комменты.

Принципиальная схема системы радиоуправления, построенной на основе телефона-трубки, рабочая частота - 433МГц. В конце 90-х были очень популярны телефоны-трубки, да и сейчас они повсюду продаются. Но, сотовая связь болееудобна и сейчас повсеместно вытесняет стационарную.

Купленные когда-то телефонные аппараты становятся ненужными. Если так образовался ненужный, но исправный телефон-трубка с переключателем «тон/пульс», на его основе можно сделать систему дистанционного управления.

Чтобы телефон-трубка стал генератором DTMF-кода нужно его переключить в положение «тон» и подать на него питание, достаточное для нормальной работы его схемы тонального набора. Затем, с него подать сигнал на вход передатчика.

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

На рисунке 1 показана схема передатчика такой системы радиоуправления. Напряжение на телефон-трубку ТА подается от источника постоянного тока напряжением 9V через резистор R1, который является в данном случае нагрузкой схемы тонального набора ТА. Когда нажимаем кнопки на ТА на резисторе R1 присутствует переменная составляющая сигнала DTMF.

С резистора R1 НЧ сигнал поступает на модулятор передатчика. Передатчик состоит из двух каскадов. На транзисторе VТ1 выполнен задающий генератор. Его частота стабилизирована резонатором на ПАВ на 433,92МГц. На этой частоте и работает передатчик.

Рис. 1. Принципиальная схема передатчика на 433МГц к телефонной трубке-номеронаберателю.

Усилитель мощности выполнен на транзисторе VТ2. Амплитудная модуляция осуществляется в этом каскаде, путем смешения сигнала ЗЧ с напряжением смещения, поступающим на базу транзистора. НЧ-сигнал DTMF кода с резистора R1 поступает в цепь создания напряжения на базе VТ2, состоящую из резисторов R7, R3 и R5.

Конденсатор С3 совместно с резисторами образует фильтр, разделяющий РЧ и НЧ. Нагружен усилитель мощности на антенну через П-образный фильтр C7-L3-C8.

Чтобы радиочастота с передатчика не проникала в схему телефонного аппарата питание на него подается через дроссель L4, заграждающий путь РЧ сигналу. Приемный тракт (рисунок 2) сделан по сверхрегенеративной схеме. На транзисторе VТ1 выполнен сверхрегенеративный детектор.

УРЧ нет, сигнал от антенны поступает через катушку связи L1. Принятый и продетектированный сигнал выделяется на R9, входящем в состав делителя напряжения R6-R9, создающего среднюю точку на прямом входе ОУ А1.

Основное усиление НЧ происходит в операционном усилителе А1. Его коэффициент усиления зависит от сопротивления R7 (при налаживании им можно корректировать усиление до оптимального). Затем через резистор R10, которым регулируется уровень продетектирован-ного сигнала, DTMF - код поступает на вход микросхемы А2 типа КР1008ВЖ18.

Схема декодера DTMF-кода на микросхеме А2 почти не отличается от типовой, разве что, используется только три разряда выходного регистра. Полученный в результате декодирования трехразрядный двоичный код поступает на десятичный дешифратор на мультиплексоре К561КП2. И далее, - на выход. Выходы обозначены соответственно номерам, которыми подписаны кнопки.

Рис. 2. Схема приемника радиоуправления с частотой 433МГц и с дешифратором на К1008ВЖ18.

Чувствительность входа К1008ВЖ18 зависит от сопротивления R12 (вернее, от соотношения R12/R13).

При приеме команды логическая единица возникает на соответствующем выходе.

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

Детали

Антенна представляет собой проволочную спицу длиной 160 мм. Катушки L1 и L2 передатчика (рис. 1) одинаковые, они имеют по 5 витков ПЭВ-2 0,31, бескаркасные, внутренним диаметром 3 мм, намотаны виток к витку. Катушка L3 - такая же, но намотана с шагом в 1 мм.

Катушка L4 - готовый дроссель на 100 мкГн или больше.

Катушки приемника (рис.2) L1 и L2 при монтаже расположены вплотную друг к другу, на общей оси, так как будто бы одна катушка является продолжением другой. L1 - 2,5 витка, L2 - 10 витков, ПЭВ 0,67, внутренний диаметр намотки 3 мм, каркаса нет. Катушка L3 - 30 витков провода ПЭВ 0,12, она намотана на постоянном резисторе МЛТ-0,5 сопротивлением не менее 1М.

Шатров С. И. РК-2015-10.

Литература: С. Петрусь. Радиоудлинитель ИК ПДУ спутникового тюнера, Р-6-200.

Данное устройство позволяет управлять четырьмя нагрузками по радиоканалу. В качестве процессора используется PIC12F675. В нем залиты ключи активации для всех 4х каналов. В качестве радиомодулей применены дешевые FS1000A с несущей частотой 433 МГц.

Схема передатчика радиоуправления 433 МГц

На схеме транзистор на выводе 7 контроллера показан для примера коммутации мощной нагрузки в ключевом режиме. Номера внутри "схемы МК" номера каналов управления. Переключатель используется для активации режима триггера. Во включенном состоянии - кратковременное нажатие на пульте активирует нагрузку и приемник удерживает ее до тех пор, пока не поступит следующее нажатие. Выключенное состояние - кратковременное нажатие кнопки на пульте - кратковременное включение нагрузки.

Все каналы независимы и можно использовать одновременно все. Устройство довольно легко повторяется. Дальность активации нагрузок по прямой видимости до 70 метров. Вся сложность при изготовлении заключается в прошивке микроконтроллера PIC12F675. Для прошивки использовал программу winpic800 и вот такой очень простой COM-программатор:

Транзистор полевой BS170 заменил на 2N7000. Как программатор поведет себя с переходниками USB-COM не знаю.

При первом чтении МК ОБЯЗАТЕЛЬНО записываем или гравируем на чипе последние 4 символа в коде. До прошивки, открываем hex файл и добавляем в конец кода значения константы (4 символа - они разные для каждого МК). Это заводская константа, если ее не записывать, то можно выкинуть контроллера. Затем только прошиваем микроконтроллер. WinPic800 сама записывает значения константы и прошивает все правильно, но на всякий случай лучше записать их где-нибудь.

Прошивка написана товарищем "4uvak" с сайта "паяльник". Вот архив с файлами, в том числе на печатные платы. А вот готовое устройство дистанционного управления по радиоканалу:

Пульт ДУ упаковал так:

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

Насчет антенн - это куски провода 0.5-1 мм в диаметре, длиной 16 см. Это как раз 1/4 волны с учетом коэффициента укорочения. В спираль антенны не советую закручивать, диаграмма направленности при этом будет не круговая, а похожа на штаны.

Где можно использовать такую штуку? Практически везде, где используется электричество. Самый простой вариант - в качестве нагрузки приемника реле использовать и коммутировать уже все что угодно, начиная от настольных ламп и утюгов, заканчивая компьютерами и замками. А можно и машинку на радиоуправлении сделать - команды ведь как раз четыре (^ v < > ).

Обсудить статью ДИСТАНЦИОННОЕ УПРАВЛЕНИЕ ПО РАДИОКАНАЛУ

На этом уроке мы решим задачу по передаче радиосигнала между двумя контроллерами Ардуино с помощью популярного приемопередатчика с частотой 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 МГц работает большинство радиоканальных пультов управления. Имея Ардуино и приемник, мы можем декодировать сигналы управления и повторить их. Подробнее о том, как это сделать мы напишем в одном из следующих уроков!