Как настроить смартфоны и ПК. Информационный портал
  • Главная
  • Windows Phone
  • Использование RF-модулей. Дистанционное управление по радиоканалу Запоминание кнопок пульта контроллером

Использование RF-модулей. Дистанционное управление по радиоканалу Запоминание кнопок пульта контроллером

  • Простота подключения. Рассматриваемые модули , в отличии от 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) }

    Fun fact! Существуют другие, но совместимые передатчики на 433 МГц, в частности раз и два . Кроме того, есть и альтернативный приемник . Но он не вполне совместим, так как на выходе всегда выдает какой-то сигнал, независимо от того, осуществляется ли реально сейчас передача, или нет.

    Для своих экспериментов я также использовал купленный на eBay пульт от гаража с внутренним DIP-переключателем:

    При некотором везении такие пульты все еще можно найти как на eBay, так и на AliExpress по запросу вроде «garage door opener 433mhz with dip switch». Но в последнее время их вытесняют «программируемые» пульты, умеющие принимать и копировать сигнал других пультов. Доходит вплоть до того, что продавцы высылают пульты без DIP-переключателя даже в случае, если он явно изображен на представленном ими фото и указан в описании товара. Полагаться на внешнюю схожесть пульта с тем, что использовал я, также не стоит. Впрочем, если вы решите повторить шаги из этой заметки, наличие или отсутствие DIP-переключателя не сыграет большой роли.

    Модули крайне просто использовать в своих проектах:

    Как приемник, так и передатчик, имеет пины VCC, GND и DATA. У приемника пин DATA повторяется дважды. Питаются модули от 5 В. На фото слева собрана схема, в который светодиод подключен к пину DATA приемника. Справа собрана схема с передатчиком, чей пин DATA подключен к кнопке и подтягивающему резистору. Плюс в обоих схемах используется стабилизатор LM7805. Проще некуда.

    Запишем сигнал при помощи Gqrx и откроем получившийся файл в Inspectrum:

    Здесь мы видим такие же короткие и длинные сигналы, что нам показал осциллограф. Кстати, такой способ кодирования сигнала называется On-Off Keying . Это, пожалуй, самый простой способ передачи информации при помощи радиоволн, который только можно вообразить.

    Запускаем, и на Scope Plot видим:

    Практически такой же сигнал, что нам показал осциллограф!

    Как видите, копеечные радиомодули на 433 МГц дают нам огромный простор для творчества. Их можно использовать не только друг с другом, но и со многими другими устройствами, работающими на той же частоте. Можно вполне успешно использовать их в чисто аналоговых устройствах без какого-либо микроконтроллера, например, с таймером 555 . Можно реализовывать собственные протоколы с чексуммами, сжатием, шифрованием и так далее, безо всяких ограничений, скажем, на длину пакета, как у NRF24L01 . Наконец, модули прекрасно подходят для broadcast посылки сообщений.

    А какие потрясающие применения этим радиомодулям приходят вам на ум?

    Дополнение: Также вас могут заинтересовать посты

    Принципиальная схема системы радиоуправления, построенной на основе телефона-трубки, рабочая частота - 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.

    Я уже писал про использование приемников и передатчиков работающих в диапазоне 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 метра в пределах прямой видимости.

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

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

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

    Лучшие статьи по теме