На сегодняшний день все популярнее становятся примочки, работающие с микроконтроллером по радиочастотным схемам (модулям). В статье мы постараемся разобраться как же все-таки можно работать с двумя модулями - приемником XY-MK-5V и передатчиком XY-FST (FS1000A) (такова маркировка на платах модулей). Внешне же такие модули выглядят следующим образом:
Именно эти модули работают на частоте 433 МГц, но как видно из фото, возможны конфигурации таких же модулей, работающих на частотах 315 МГц и 330 МГц. И насколько мне известно, количество конфигураций по частоте этими тремя не ограничивается. Важно отметить, что оба модуля должны быть настроены на одну и ту же частоту, в противном случае они не будут работать друг с другом. Мало ли кому-нибудь взбредет в голову. :)
Данные модули представляют простое схемное решение суперрегенеративных приемников заданной частоты, предназначенные для приема (передачи) цифрового сигнала. Работает все предельно просто. Передатчик имеет три вывода - два по питанию и один для данных. Приемник также имеет два вывода по питанию и два вывода для приема данных микроконтроллером, эти два вывода данных фактически являются одним выводом, просто впаяны параллельно друг другу. Таким образом, если на вывод данных передатчика подать логическую единицу, на выводе данных приемника также появится логическая единица. Грубо говоря такие модули являются радиочастотными удлинителями одного вывода микроконтроллера, заменяющими провод. Все просто и сердито, к тому же стоимость комплекта приемника и передатчика крайне не велика и составляет примерно 1 условную единицу в зависимости от жажды наживы продавца.
Хочется также отметить несколько фишек таких модулей относительно вышесказанного. Если мы берем два модуля, подключаем их к питанию, к выводу данных приемника подключаем светодиод, а к выводу данных передатчика подключаем или плюс питания или минус. Как ожидается светодиод будет или гореть, или не гореть в зависимости от того куда подключен вывод данных передатчика. А не тут то было! В обоих случаях будем иметь просто хаос на выводе данных приемника, а самые наблюдательные могут заметить в начальный период подключения вывода данных передатчика к плюсу, что светодиод коротко ярко вспыхивает и снова начинает хаотически изменять яркость. Все дело в том, что в радиоэфире очень много помех, особенно в городских условиях. Теперь вы спросите и зачем же нам такое "шило"? Не стоит паниковать! Помните, в начальный момент то светодиод на долю секунда все же срабатывал как ожидалось в самом начале - горит, не горит? Так вот берем и просто увеличиваем частоту импульсов на выводе данных передатчика. Можно подключить генератор туда, а осциллографом наблюдать за состоянием вывода данных приемника. Генератор настраиваем на частоту прямоугольных импульсов от 10 Гц до 10 кГц. И на экране осциллографа происходит то чудо, которого мы ожидаем - прямоугольник, подобный тому, что на генераторе, может быть только слегка искаженный.
Забегая немного вперед, осциллограмма от приемника, передается значение в двоичном виде 1110-1110:
А если передатчик находится в состоянии покоя, данные не передаются, осциллограмма от приемника будет иметь просто хаотический набор импульсов:
Данные все же будут передаваться не постоянно, вывод данных передатчика не все время будет принимать сигналы от микроконтроллера, поэтому необходима будет защита от подобного хаотического сигнала (шума).
Итак, рассмотрим параметры модулей приемника и передатчика:
Приемник:
- напряжение питания 5 В
- потребляемый ток 4 мА
- частота 433,92 МГц
- чувствительность -105дБ
- антенна - 32 см одножильного провода
Передатчик:
- расстояние передачи от 20 до 200 метров в зависимости от напряжения питания и условий окружающей среды
- напряжение питания от 3,5 до 12 В
- скорость передачи до 4 kb/s
- мощность передатчика 10 мВт
- частота 433 МГц
- длинна антенны 25 см
Таким образом, мы с вами рассмотрели сами радиочастотные модули, их работу и параметры, остается только подключить их к микроконтроллеру и передавать данные, чем и займемся дальше.
Рисуем схему электрическую принципиальную:
Схема демонстрирует связь между двумя микроконтроллерами по радио каналу по средствам модулей XY-MK-5V и XY-FST (FS1000A). Прошивка и исходный код для обоих микроконтроллеров прилагаются ниже.
Логика работы следующая - микроконтроллер Attiny13 динамически изменяет переменную и постоянно передает ее значение по радиоканалу на микроконтроллер Atmega8. Во втором микроконтроллере данные принимаются и значение переменной выводится на LCD дисплей. Ради справедливости стоит отметить, что все же иногда проскакивают помехи в полезные данные. Выше было указано, что шум как-то нужно фильтровать. Организована фильтрация так - чтобы принять полезные данные, первый байт передачи должен быть как бы адресным. Как только значение первого байта совпадет с заложенным, то второй байт можно смело принимать как полезные данные. Данные передаются несколько раз подряд для предотвращения потери данных. Все достаточно просто. Для увеличения помехоустойчивости длину адресной информации можно увеличить до двух или трех байт.
Сигнал для передатчика формируется в зависимости от числа, которое нужно передать. Число в двоичном виде представляет собой последовательность нулей и единиц. Таким образом в зависимости от состояния каждого бита в байте на передатчик подается ноль или единица - так формируется прямоугольный (цифровой) сигнал. Приемник этот сигнал принимает и также в зависимости от состояния (ноль или единица) формируется 8 бит байта и получаем переданное число и далее делаем с ним (с принятой информацией) все что нам нужно.
Для индикации используется жидко кристаллический (ЖК или LCD) дисплей. Мною использовался дисплей 2004А - 4 строки по 20 символов, однако можно применять дисплей более привычный - 2 строки по 16 символов. ЖК дисплей подключается к микроконтроллеру по четырех битной системе. Переменный резистор R2 необходим для регулировки контраста символов на дисплее. Вращением движка этого резистора добиваемся наиболее четких для нас показаний на экране. Подсветка ЖК дисплея организована через вывод "А" и "К" на плате дисплея. Подсветка включается через резистор, ограничивающий ток - R1. Чем больше номинал, тем более тускло будет подсвечиваться дисплей. Однако пренебрегать этим резистором не стоит во избежание порчи подсветки. Кнопки S1 и S2 необходимы для сброса микроконтроллеров. К выводам reset обоих микроконтроллеров подключены резисторы, подтягивающие плюс питания к выводу. Это необходимо для предотвращения самопроизвольного перезапуска микроконтроллеров в случае наличия помех или шума.
Питается вся схема от простого модуля питания на силовом трансформаторе. Переменное напряжение выпрямляется четырьмя диодами VD1 - VD4 марки 1N4007, пульсации сглаживаются конденсаторами C1 и C2. Четыре выпрямительных диода можно заменить одним диодным мостом. Трансформатор применен марки BV EI 382 1189 - преобразует 220 вольт переменного тока в 9 вольт переменного тока. Мощность трансформатора составляет 4,5 Вт, этого вполне достаточно и еще с запасом. Такой трансформатор можно заменить любым другим силовым трансформатором, подходящим для Вас. Либо данный питающий модуль схемы заменить на импульсный источник напряжения, можно собрать схему обратноходового преобразователя либо применить иже готовый блок питания от телефона, например - все это дело вкусов и потребностей. Выпрямленное напряжение с трансформатора стабилизируется на микросхеме линейного стабилизатора L7805, ее можно заменить на отечественный аналог пяти вольтового линейного стабилизатора КР142ЕН5А, либо применить другу микросхему стабилизатора напряжения в соответствии с подключением ее в схеме (например LM317 или импульсные стабилизаторы LM2576, LM2596, MC34063 и так далее).
Если схему планируется использовать не просто как знакомство с RF модулями, то второму микроконтроллеру будет необходим отдельный источник питания.
Вся схема была собрана и отлаживалась на макетных платах для микроконтроллеров Atmega8 и Attiny13:
Как видно, модули использовались без антенн, конечно же на небольшом расстоянии связь будет осуществляться, но качество связи будет хуже. Моему примеру не стоит следовать в этом плане - не ленитесь сделайте антенны для модулей и припаяйте их. Производитель указывает длину антенн 32 и 25 сантиметров для приемника и передатчика соответственно. Однако в примечании пишется, что важно использовать антенну длинной 17 см. Тут я немного и запутался какой же длинны должна быть все же антенна. Также производитель отмечает, что расположение антенны также сказывается на качестве приема сигнала. Здесь наилучшее расположение можно подобрать методом научного тыка - в каком положении лучше сигнал, там и расположить антенну. В китайских устройствах с применением подобных модулей ее делают в виде спирали и располагают просто вдоль приемника.
Несколько слов о применении - при помощи таких схем можно передавать и принимать информацию о температуре или еще о чем-нибудь в точках, отдаленных от основного микроконтроллера. Также при помощи принятого кода можно управлять какими-либо не сложными схемами дистанционно (по типу включить / выключить). Ну и вообще применять там, где только захочется.
Для программирования нужно знать конфигурации фьюз битов микроконтроллеров для Atmega8:
и Attiny13:
К статье прилагаются прошивки для микроконтроллеров, исходники в AVR studio, а также видео демонстрирующее работу схемы и передачу информации от микроконтроллера к микроконтроллеру (tiny13 считает от 0 до 255 и передает постоянно значение другому микроконтроллеру, на котором это значение отображается на экране LCD дисплея, на видео значение будет передаваться до 111 и в этот момент разъединим линию данных от модуля передатчика, цифра останется в последнем переданном состоянии - 111).
Список радиоэлементов
Обозначение | Тип | Номинал | Количество | Примечание | Магазин | Мой блокнот |
---|---|---|---|---|---|---|
IC1 | МК AVR 8-бит | ATmega8 | 1 | Поиск в магазине Отрон | ||
IC2 | МК AVR 8-бит | ATtiny13A | 1 | Поиск в магазине Отрон | ||
VR1 | Линейный регулятор | L7805AB | 1 | Поиск в магазине Отрон | ||
VD1-VD4 | Выпрямительный диод | 1N4007 | 4 | Поиск в магазине Отрон | ||
RF1 | RF приемник | XY-MK-5V | 1 | Поиск в магазине Отрон | ||
RF2 | RF передатчик | FS1000A | 1 | XY-FST | Поиск в магазине Отрон | |
C1, C9 | Электролитический конденсатор | 10 мкФ | 2 | Поиск в магазине Отрон | ||
C2, C4-C7, C10 | Конденсатор | 100 нФ | 6 | Поиск в магазине Отрон | ||
C3 | Электролитический конденсатор | 1000 мкФ | 1 | Поиск в магазине Отрон | ||
C8 | Электролитический конденсатор | 220 мкФ | 1 | Поиск в магазине Отрон | ||
R1 | Резистор | 22 Ом | 1 | Поиск в магазине Отрон | ||
R2 | Подстроечный резистор | 10 кОм | 1 | Поиск в магазине Отрон | ||
R3, R4 | Резистор | 10 кОм | 2 | Поиск в магазине Отрон | ||
HG1 | LCD-дисплей | 2004A | 1 | Поиск в магазине Отрон | ||
Tr1 | Трансформатор | BV EI 382 1189 | 1 | 220В - 9В AC | Поиск в магазине Отрон | |
S1, S2 | Тактовая кнопка | TC-A109 | 2 | Поиск в магазине Отрон | ||
Скачать список элементов (PDF)
Прикрепленные файлы:
- mega8.hex (3 Кб)
- tiny13.hex (1 Кб)
- исходники.rar (31 Кб)
Комментарии (32) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
Подсоединяю выход attiny к входу Меги просто проводником, без RF-модулей. Подключаю ЛСД. На экране ничего, хотя видно, что активность на PB0 attiny и PC5 atmega присутствует. Далее в Студии ставлю перед while (1) на 3 секунды число. Число показалось, дальше пустой экран. Это я к тому, что библиотека ЛСД работает.
[Автор]
[Автор]
Вообще должно быть вполне правдоподобно на 100 метров прямой видимости при питании передатчика от 12 Вольт
[Автор]
[Автор]
Подскажите приемник надо как-то настраивать дополнительно? Если да, то поподробней объясните...
[Автор]
Если посчитаете для 433 Мгц, то окажется, что четверть волны как раз и составляет ~17 см.
[Автор]
МК использую atTiny85? Программирую через Ардуину, библиотеку использую VirtualWire (манчестерская мне сложновата - ума не хватает).
Передатчик atTiny85+FS1000A работает прекрасно!
Собирал приемник на ардуине - все ловит великолепно. А вот приемник на atTiny85 почему-то не получается.
Я заливаю ардуиновский скетч в него, соответственно меняю пины, в качестве сигнализации приема выставил светодиод... И не работает... не принимает, не мигает.
В сети можно много вариантов найти atTiny85+передатчик, но вот atTiny85+приемник не могу найти.
Потому застрял. Можете подсказать, что делать?
Для понимания ситуации точнее прикрепляю схему соединения, и ниже сам скетч:
int led = 4;
int radar = 2;
void setup() {
vw_set_rx_pin(radar);
vw_set_ptt_inverted(true);
vw_setup(1000);
vw_rx_start();
pinMode(led, OUTPUT);//светодиод в качестве сигнализации того, что связь есть
digitalWrite(led, HIGH);
delay (100);//светодиод оповестил о работе
}
void loop()
{
digitalWrite(led, LOW);
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
vw_wait_rx();
if (vw_get_message(buf, &buflen)) // Non-blocking
{
if (buf[0] == 'g'){
if (buf[1] == 't'){
digitalWrite(led, HIGH);//если сигнал прошел проверку, то зажигаем светодиод
delay(1000);
}
}
}
}
[Автор]
А вообще инклуд пустой, может быть нужно библиотеку подключить для этого?
Что значит "алгоритм работы приема?"
На ардуине данный скетч работает спокойно. Меняю пины и заливаю на atTiny и не работает.
[Автор]
[Автор]
Посмотрите, пожалуйста, на фотки - может, китайский товарисч просто брак недоделанный прислал?..