Содержание
Как организовать цифровую связь, используя дешевые, по ценам eBay, RF модули 433/315 МГц, вы узнаете из этого небольшого обзора. Эти радиомодули обычно продают в паре – с одним передатчиком и одним приемником. Пару можно купить на eBay по $4, и даже $2 за пару, если вы покупаете 10 штук сразу.
Большая часть информации в интернете обрывочна и не очень понятна. Поэтому мы решили проверить эти модули и показать, как получить с их помощью надежную связь USART -> USART.
Распиновка радиомодулей
В общем, все эти радиомодули имеют подключение 3 основных контакта (плюс антенна);
Передатчик
- Напряжение vcc (питание +) 3В до 12В (работает на 5В)
- GND (заземление -)
- Приём цифровых данных.
Приемник
- Напряжение vcc (питание +) 5В (некоторые могут работать и на 3.3 В)
- GND (заземление -)
- Выход полученых цифровых данных.
Передача данных
Когда передатчик не получает на входе данных, генератор передатчика отключается, и потребляет в режиме ожидания около нескольких микроампер. На испытаниях вышло 0,2 мкА от 5 В питания в выключенном состоянии. Когда передатчик получает вход каких-то данных, он излучает на 433 или 315 МГц несущей, и с 5 В питания потребляет около 12 мА.
Передатчик можно питать и от более высокого напряжения (например 12 В), которое увеличивает мощность передатчика и соответственно дальность. Тесты показали с 5 В питанием до 20 м через несколько стен внутри дома.
Приемник при включении питания, даже если передатчик не работает, получит некоторые статические сигналы и шумы. Если будет получен сигнал на рабочей несущей частоте, то приемник автоматически уменьшит усиление, чтобы удалить более слабые сигналы, и в идеале будет выделять модулированные цифровые данные.
Важно знать, что приемник тратит некоторое количество времени, чтобы отрегулировать усиление, так что никаких "пакетов" данных! Передачу следует начинать с "вступления" до основных данных и затем приемник будет иметь время, чтобы автоматически настроить усиление перед приёмом важных данных.
Тестирование RF модулей
При испытаниях обоих модулей от +5В источника постоянного тока, а также с 173 мм вертикальной штыревой антенной. (для частоты 433,92 МГц это "1/4 волны"), было получено реальных 20 метров через стены, и тип модулей не сильно влияет на эти тесты. Поэтому можно предположить, что эти результаты типичны для большинства блоков. Был использован цифровой источник сигнала с точной частотой и 50/50 скважностью, это было использовано для модуляции данных передатчика.
Обратите внимание, что все эти модули, как правило, стабильно работают только до скорости 1200 бод или максимум 2400 бод серийной передачи, если конечно условия связи идеальные (высокий уровень сигнала).
Выше показан простой вариант блока для последовательной передачи информации микроконтроллеру, которая будет получена с компьютера. Единственное изменение – добавлен танталовый конденсатор 25 В 10 мкф на выводы питания (Vcc и GND) на оба модуля.
Вывод
Множество людей используют эти радиомодули совместно с контроллерами Arduino и другими подобными, так как это самый простой способ получить беспроводную связь от микроконтроллера на другой микроконтроллер, или от микроконтроллера к ПК.
Иногда, между устройствами требуется установить беспроводное соединение. В последнее время для этой цели все чаще стали применять 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-модули используют стандартные частоты, на которых в этот момент могут работать и другие устройства: рации, сигнализации, радиоуправление, телеметрия и пр.
- Цена: $4.22 за 2 штуки
- Перейти в магазин
Я уже писал про использование приемников и передатчиков работающих в диапазоне 433 МГц применительно к своим поделкам. В этот раз хотелось бы сравнить их разные вариации и понять есть ли между ними разница, и какие предпочтительней. Под катом конструирование тестового стенда на базе arduino, немного кода, собственно, тесты и выводы. Любителей электронных самоделок приглашаю под кат.
Лежат у меня разные приемники и передатчики данного диапазона, решил обобщить и классифицировать данные устройства. Тем более, что в конструировании устройств без радиоканала обойтись довольно сложно, особенно если поделка не должна находиться в стационарном положении. Кто-то возможно возразит, что сейчас довольно немало решений на wi-fi и стоит использовать их, однако, отмечу что не везде их использование целесообразно, к тому же иногда не хочется мешать себе и соседям занимая столь ценный частотный ресурс.
В общем, это все лирика, перейдем к конкретике, сравнению подлежат следующие устройства:
Самый распространенный и дешевый комплект передатчика и приемника:
Купить можно, например, тут, стоит $0.65 за приемник вместе с передатчиком. В моих прошлых обзорах использовался именно он.
Следующий комплект позиционируется как более качественный:
Продается тут за $2.48 в комплекте с антеннками пружинками для данного диапазона.
Собственно предмет обзора, продается отдельно в виде приемника:
Следующее устройство участвующее в данном мероприятии является передатчиком:
Где конкретно я его купил — не помню, впрочем, не так важно.
Для того чтобы обеспечить равные условия всем участникам припаяем одинаковые медные антеннки в виде спирали:
Также, я припаял выводы для вставки в макетку.
Для экспериментов потребуются две отладочные платы arduino (я взял Nano), две макетные платы, провода, светодиод и ограничивающий резистор. У меня получилось так:
Для тестов я решил использовать библиотеку RC-Switch, ее нужно распаковать в каталог ‘libraries’ установленной среды arduino IDE. Пишем нехитрый код передатчика, который будет стоять стационарно:
Пин данных передатчиков будем подключать к выходу 10 arduino. Передатчик будет каждые 5 секунд посылать в эфир цифру 5393.
Код приемника немного более сложный, из-за подключения внешнего диода через ограничительный резистор к выводу 7 arduino:
Приемник подключен к выводу 2 arduino Nano (в коде используется mySwitch.enableReceive(0), так как вход 2 соответствует 0-му типу прерывания). Если принята та цифра которая отправлялась, то на секунду мигнем внешним диодом.
Благодаря тому, что все передатчики имеют одинаковую распиновку, в ходе эксперимента их можно будет просто менять:
У приемников ситуация аналогична:
Для обеспечения мобильности приемной части я использовал пауэр банк. Первым делом, собрав схему на столе, убедился, что приемники и передатчики работают в любом сочетании друг с другом. Видео теста:
Как видно, из-за малой нагрузки пауэр банк через некоторое время отключает нагрузку, и приходится нажимать кнопку, это тестам не помешало.
Вначале про передатчики. В ходе эксперимента выявлено, что разницы между ними нет, единственное, безымянный, маленький подопытный работал немного хуже своих конкурентов, вот этот:
При его использовании расстояние уверенного приема сокращалось на 1-2 метра. Остальные передатчики работали абсолютно одинаково.
А вот с приемниками все оказалось сложнее. Почетное 3-е место занял приемник из этого комплекта:
Он начал терять связь уже на 6 метрах в пределах прямой видимости (на 5 метрах — при использовании аутсайдера среди передатчиков)
Второе место занял участник из самого дешевого комплекта:
Уверненно принимал на 8-ми метрах в пределах прямой видимости, 9-ый метр осилить не удалось.
Ну и рекордсменом стал предмет обзора:
Доступный участок прямой видимости (12 метров) оказался для него легкой задачей. И я перешел к приему через стены, итог 4 капитальные бетонные стены, при расстоянии порядка 40 метров — он принимал уже на грани (шаг вперед прием, шаг назад светодиод молчит). Таким образом, предмет обзора однозначно могу рекомендовать к покупке и использованию в поделках. При его использовании можно при равных расстояниях снижать мощность передатчика, либо при равных мощностях увеличивать расстояние уверенного приема.
Согласно рекомендациям, увеличить мощность передачи (а следовательно и расстояние приема) можно повышая напряжение питания передатчика. 12 Вольт позволило увеличить исходное расстояние на 2-3 метра в пределах прямой видимости.
На этом заканчиваю, надеюсь информация окажется кому то полезной.