Пользователь
0,0
рейтинг
17 марта 2012 в 18:30

Использование RF-модулей

Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять 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 image
На нем имеется трехконтактный разъем: GND(общий), DATA(данные), VCC(+питания), а также пятачок для припайки антенны(я использовал огрызок провода МГТФ на 8,5см — 1/4 длинны волны).

Приемник


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

Что еще можно почитать


HM-T и HM-R — описание и документация на сайте производителя.
1, 2 и 3 — интересные статьи и наблюдения (много чего полезного можно найти в комментариях).
Слава @KoteSoft
карма
43,2
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (26)

  • 0
    А где можно их купить?
  • 0
    И какое расстояние получилось?
    • 0
      В пределах 20м с железобетонными перекрытиями все нормально работало. Большее расстояние у меня пока не возникало ни желания ни возможности проверять. По этому даташиту должно быть 160м у 868МГц. У 433МГц написано 240м.
      • 0
        То что пишут в даташитах для реальных условий можно смело делить на 5.
        • 0
          Вот тест на дальность для 433МГц.
          • 0
            Тест тестом, но в радиосвязи столько нюансов что его можно использовать только как грубый ориентир. Лет 10 назад я любил показывать гостям-электронщикам забавный опыт: при одинаковой мощности (20 мВт) и чувствительности (-122 Дбм) на частоте 435 МГц на расстоянии 35 км связь была (прямая видимость на тестовый передатчик в главном здание МГУ, 19 этаж), а на 30 метров (такой же передатчик в моём доме) связи не было.
  • НЛО прилетело и опубликовало эту надпись здесь
    • +1
      Nordic можно взять, они недорогие, в две стороны работают да ещё и протокол связи там уже реализован какой-никакой.
      • 0
        да, нордик это хорошо. во-первых это уже настоящий трансивер + протокол нижнего уровня. во-вторых, у них много интересных девайсов, типа радиомодуля+контроллера с хардварным usb. ну и стоит копейки.
    • +1
      HopeRF выпускает неплохие трансиверы. Например, серия RFM12B/22B/27 — модули с кучей настроек, очередями приема-передачи, автосинхронизацией и прочими вкусностями :)
  • +4
    Шлак, не используйте их. Чуть дороже можно найти вещи куда более продвинутые, а головняка с ними меньше.
    • 0
      А какие порекомендуете?
      • +5
        Выше уже порекомендовали RFM12 — куда более достойная альтернатива.

        HM-TR*** не стоит тоже брать. Прошивка у них глючная до ужаса. Слетают настройки невпопад

        Самое клевое и удобное с чем я работал это RC1240, но дорогие падлы.
        • +1
          Спасибо! Я Aurel купил наугад — скоро буду испытывать. Если будет плохо работать, попробую RFM.
      • +2
        Еще вот эта серия понравилась:
        easyelectronics.ru/transiver-drf7020d27.html

        Если раскочегарить их на полную мощу на 8ми вольтовом питании, то будет просто зверская штука.
        • 0
          Посмотрел описание этих железок, интерфейс конфигурационной софинки ну прям один-в-один как у APC220. Те же яйца, только вид сбоку?
          • 0
            По моему это просто те же яйца.
            • 0
              Твои (судя по написанному у тебя) только на 9600 умеют? Мои стабильно пашут на 19200 (расстояние мелкое, по квартире, но с кучей стен, на дальние дистанции ещё не проверял). Можешь в статье добавить что не только 9600 могут, а то всё ж разница есть.
            • 0
              Есть ещё APC230, так там вообще под 2 км заявляют дальность (но только на 9600).
  • 0
    А меня APC220 порадовали. Жаль что дуплекс не умеют, а в остальном — красота. Как раз сейчас на них тележку и делаю.
  • 0
    Кто нибудь работал с такими модулями? SPI, $23 за 5 шт. на ебее.
    • 0
      У меня 3 штуки лежат, месяц назад пробовал но толи из-за ограниченности времени (1 выходные) толи из-за кривых рук, но уставить связь между 2 модулями не смог) а готового примера по ним не нашел)

      Так что я не рекомендую.

      p.s я брал по 3$ за штуку на том же ебай
  • 0
    В конце марта jt5.ru выпустит платку Колибри — это Atmega168 + RF трансивер EZRadioPRO® 868Mhz (SPI).
    Это ардуино-совместимая платформа, с флешкой на 4Мбит, с керамической антенной (есть также возможность подключить внешнюю антенну). Есть пример кода как под Ардуино, так и под AVRStudio.

    • 0
      а разве частоты 868Mhz свободные? мне казалось 433.92Мгц и 2.4Ггц только.
      • 0
        да, свободны.

        Цитата:
        В Российской Федерации на основании Решения Государственной комиссии по радиочастотам (ГКРЧ) № 08-24-01-001 от 28.04.2008 и № 07-20-03-001 от 07.05 2007 для ISM, выделены частотные диапазоны 433.075 — 434.750 МГц и 868,7-869,2 МГц. Эти частоты могут использоваться без оформления соответствующего разрешения ГКРЧ при условии соблюдения требований по ширине полосы, излучаемой мощности (до 10 мВт для диапазона 434 МГц и до 25 мВт для диапазона 868 МГц) и назначению готового изделия.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.