Рано или поздно, в создаваемых проектах Arduino появится необходимость дистанционного управления. Одним из самых бюджетных решений является использование радиоприемника и радиопередатчика, такими являются WL101-341 и WL102-341. Подключаются WL101-341 и WL102-341 к Arduino очень просто, библиотеки уже существуют (к примеру RadioHead), так что не составит большого труда обмениваться данными между ардуинками. Простейший пример их использования вы найдете в данной статье, а дальше все зависит только от ваших нужд и фантазии.
- 1 Установка библиотеки RadioHead
- 2 Описание методов класса RH_ASK
- 2.1 RH_ASK ()
- 2.2 virtual bool init()
- 2.3 virtual bool available()
- 2.4 virtual bool recv (uint8_t *buf, uint8_t *len)
- 2.5 virtual bool send(const uint8_t *data, uint8_t len)
- 2.6 virtual uint8_t maxMessageLength()
- 2.7 void setModeIdle()
- 2.8 void setModeRx()
- 2.9 void setModeTx()
- 2.10 void handleTimerInterrupt()
- 2.11 uint16_t speed()
- 3 Подключение WL101-341 и WL102-341 к Arduino
- 4 Пример передачи данных рандомной длины
- 5 Материалы
- 6 Похожие записи
Установка библиотеки RadioHead
RadioHead Packet Radio — это библиотека для встроенных микропроцессоров. RadioHead предоставляет полную объектно-ориентированную библиотеку для отправки и получения пакетированных сообщений через различные распространенные радиопередачи данных и другие виды транспорта на ряде встроенных микропроцессоров/микроконтроллеров. Установить библиотеки можно следующим образом:
- Скачиваем библиотеку с сайта RadioHead, на данный момент последняя версия: RadioHead-1.89.zip;
- Распаковываем архив в
\Documents\Arduino\libraries
;
- Библиотека установлена.
Описание методов класса RH_ASK
Для работы с данными радиомодулями будет использован класс RH_ASK. RH_ASK работает с рядом недорогих РЧ трансиверов ASK (амплитудная манипуляция), таких как RX-B1 (также известный как ST-RX04-ASK); Передатчик TX-C1 и приемопередатчик DR3100; Приемопередатчик FS1000A / XY-MK-5V; HopeRF RFM83C / RFM85. Поддерживает ASK (OOK).
RH_ASK ()
Конструктор. В настоящее время поддерживается только один экземпляр RH_ASK на скетч.
RH_ASK::RH_ASK (uint16_t speed = 2000, uint8_t rxPin = 11, uint8_t txPin = 12, uint8_t pttPin = 10, bool pttInverted = false )
Параметры:
speed
— Желаемая скорость в битах в секунду
rxPin
— Пин, который используется для получения данных от приемника
txPin
— Пин, который используется для отправки данных на передатчик
pttPin
— Пин, который подключен к EN передатчика. Будет установлено ВЫСОКОЕ состояние, чтобы включить передатчик (по умолчания pttInverted = true).
pttInverted
— true, если вы хотите, чтобы pttin был инвертирован, чтобы НИСКОЕ состояние включило передатчик.
virtual bool init()
Инициализирует драйвер. Убедитесь, что драйвер настроен правильно перед вызовом init()
.
bool RH_ASK::init()
Возвращает:
истина, если инициализация прошла успешно.
virtual bool available()
Проверяет, доступно ли новое сообщение из драйвера. Также переводит драйвер в режим RHModeRx до тех пор, пока сообщение не будет фактически получено транспортом, когда оно будет возвращено в RHModeIdle. Это может быть вызвано несколько раз в цикле ожидания.
bool RH_ASK::available()
Возвращает:
true, если новое, полное, безошибочное несобранное сообщение доступно для извлечения с помощью recv()
.
virtual bool recv (uint8_t *buf, uint8_t *len)
Включает приемник, если он еще не включен. Если доступно допустимое сообщение, копирует его в buf
и возвращает true
, иначе возвращает false
. Если сообщение копируется, *len
устанавливается длина (Внимание, сообщения 0 длины разрешены). Вы должны вызывать эту функцию достаточно часто, чтобы не пропустить ни одного сообщения. Рекомендуется вызывать ее в основном цикле.
bool RH_ASK::recv(uint8_t * buf, uint8_t * len)
Параметры:
buf
— место для копирования полученного сообщения
len
— указатель на доступное пространство в буфере. Устанавливает фактическое количество скопированных октетов.
Возвращает:
true
, если действительное сообщение было скопировано в buf
.
virtual bool send(const uint8_t *data, uint8_t len)
Ожидание завершения передачи любого предыдущего передаваемого пакета с помощью waitPacketSent()
. Затем загружает сообщение в передатчик и запускает передатчик. Обратите внимание, что длина сообщения 0 НЕ допускается.
bool RH_ASK::send(const uint8_t * data, uint8_t len)
Параметры:
data
— массив данных для отправки
len
— Количество байтов данных для отправки (> 0)
Возвращает:
истина, если длина сообщения была правильной, и оно была правильно поставлена в очередь для передачи
virtual uint8_t maxMessageLength()
Возвращает максимальную длину сообщения, доступную в этом драйвере.
uint8_t RH_ASK::maxMessageLength()
Возвращает:
Максимальная допустимая длина сообщения
void setModeIdle()
Если текущий режим — Rx или Tx, он переключается в режим ожидания. Если передатчик или приемник работает, отключает их.
void INTERRUPT_ATTR RH_ASK::setModeIdle()
void setModeRx()
Если текущий режим Tx или Idle, изменяет его на Rx. Запускает приемник в RF69.
void RH_ASK::setModeRx()
void setModeTx()
Если текущий режим Rx или Idle, изменяет его на Rx. F Запускает передатчик в RF69.
void RH_ASK::setModeTx()
void handleTimerInterrupt()
не вызывайте этот метод, он используется обработчиком прерываний
uint16_t speed()
Возвращает текущую скорость в битах в секунду.
uint16_t RH_ASK::speed()
Возвращает:
Текущая скорость в битах в секунду
Подключение WL101-341 и WL102-341 к Arduino
Схема подключения WL101-341 к Arduino
Arduino | WL101-341 |
---|---|
3.3В | Vin |
GND | GND |
11 | DO |
Пример скетча для приёмника
Приёмник будет получать числа от 0 до 255 по нарастающей. Если ожидаемое число получено не будет, тогда выводим в терминал ‘*’.
/* Добавляем необходимые библиотеки */ #include <RH_ASK.h> #define SPEED (uint16_t)1200 #define RX_PIN (uint8_t)11 #define TX_PIN (uint8_t)12 #define PTT_PIN (uint8_t)10 #define PTT_INVERTED false /* Создаём экземпляр класса RH_ASK приёмника */ RH_ASK driver(SPEED, RX_PIN, TX_PIN, PTT_PIN, PTT_INVERTED); void setup() { /* задаем скорость общения с компьютером */ Serial.begin(115200); /* Инициализируем приёмник */ if (! driver.init()) { Serial.println(F("RF init failed!")); while (true) { delay(1); } } /* Настройка встроенного светодиода */ pinMode(LED_BUILTIN, OUTPUT); } void loop() { static uint8_t estdata; uint8_t data; uint8_t buflen = sizeof(data); /* Проверяем наличие новых данных */ if (driver.recv((uint8_t*)&data, &buflen)) { /* Гасим светодиод */ digitalWrite(LED_BUILTIN, LOW); /* Выводим в терминал '*' если полученные данные не совпадают с ожидаемыми */ if (data != estdata) { Serial.print('*'); } /* Выводим в терминал полученные данные */ Serial.print("RX: "); Serial.println(data); /* Инкрементируем значение */ estdata = data + 1; /* Включаем светодиод */ digitalWrite(LED_BUILTIN, HIGH); } }
Схема подключения WL102-341 к Arduino
Вывод данных WL102-341 не толерантный к 5 вольтам поэтому, если вы используете пятивольтовую arduino, то подать 3.3 вольта можно через резистивный делитель (R1 = 1к, R2 = 2к).
На данном модуле линия EN неактивна, так как на плате установлена перемычка, соединяющая 1-й вывод микросхемы (EN) с линией питания, то есть модуль постоянно работал при подаче питания. Можно отпаять перемычку, чтобы иметь возможность управления передатчиком.
Arduino | WL102-341 |
---|---|
GND | GND / — |
3.3В | Vin / + |
DAT | 12 |
EN | 10 |
Пример скетча для передатчика
Передатчик будет отправлять числа от 0 до 255 по нарастающей.
/* Добавляем необходимые библиотеки */ #include <RH_ASK.h> #define SPEED (uint16_t)1200 #define RX_PIN (uint8_t)11 #define TX_PIN (uint8_t)12 #define PTT_PIN (uint8_t)10 #define PTT_INVERTED false /* Создаём экземпляр класса RH_ASK передатчика */ RH_ASK driver(SPEED, RX_PIN, TX_PIN, PTT_PIN, PTT_INVERTED); void setup() { /* задаем скорость общения с компьютером */ Serial.begin(115200); /* Инициализируем передатчик */ if (!driver.init()) { Serial.println(F("RF init failed!")); while (true) { delay(1); } } /* Настройка встроенного светодиода */ pinMode(LED_BUILTIN, OUTPUT); } void loop() { static uint8_t data = 0; /* Гасим светодиод */ digitalWrite(LED_BUILTIN, LOW); /* Передаём данные */ driver.send((uint8_t*)&data, sizeof(data)); /* Ждем пока передача будет окончена */ driver.waitPacketSent(); /* Выводим в терминал отправленные данные */ Serial.print("TX: "); Serial.println(data); /* Инкрементируем значение */ ++data; /* Включаем светодиод */ digitalWrite(LED_BUILTIN, HIGH); /* Ждём */ delay(100); }
Результат
Пример передачи данных рандомной длины
Для большего понимания принципа работы библиотеки, создал ещё один пример обмена данными между ардуинками. Передатчик будет отправлять массив данных uint8_t data[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
с интервалом в одну секунду. Количество отправленных байт будет неизвестно, потому что применяется функция random(1, 10)
. Принимающая сторона принимает эти данные и выводит их и их количество в терминал.
Скетч для передатчика
/* Добавляем необходимые библиотеки */ #include <RH_ASK.h> #define SPEED (uint16_t)2000 #define RX_PIN (uint8_t)11 #define TX_PIN (uint8_t)12 #define PTT_PIN (uint8_t)10 #define PTT_INVERTED false /* Создаём экземпляр класса RH_ASK передатчика */ RH_ASK driver(SPEED, RX_PIN, TX_PIN, PTT_PIN, PTT_INVERTED); void setup() { /* задаем скорость общения с компьютером */ Serial.begin(115200); /* Инициализируем передатчик */ if (! driver.init()) { Serial.println(F("RF init failed!")); while (true) { delay(1); } } /* Настройка встроенного светодиода */ pinMode(LED_BUILTIN, OUTPUT); } void loop() { /* Буфер данных для отправки */ uint8_t data[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'}; /* Гасим светодиод */ digitalWrite(LED_BUILTIN, LOW); /* Передаём массив данных случайной длины (от 1 до 10) */ driver.send(data, random(1, 10)); /* Ждем пока передача будет окончена */ driver.waitPacketSent(); /* Включаем светодиод */ digitalWrite(LED_BUILTIN, HIGH); /* Ждём секунду */ delay(1000); }
Скетч для приёмника
/* Добавляем необходимые библиотеки */ #include <RH_ASK.h> #define SPEED (uint16_t)2000 #define RX_PIN (uint8_t)11 #define TX_PIN (uint8_t)12 #define PTT_PIN (uint8_t)10 #define PTT_INVERTED false /* Создаём экземпляр класса RH_ASK приёмника */ RH_ASK driver(SPEED, RX_PIN, TX_PIN, PTT_PIN, PTT_INVERTED); void setup() { /* задаем скорость общения с компьютером */ Serial.begin(115200); /* Инициализируем передатчик */ if (! driver.init()) { Serial.println(F("RF init failed!")); while (true) { delay(1); } } /* Настройка встроенного светодиода */ pinMode(LED_BUILTIN, OUTPUT); } void loop() { /* Буфер полученных данных */ uint8_t data[16]; /* Размер полученных данных */ uint8_t buflen = sizeof(data); uint8_t i; /* Проверяем наличие новых данных */ if (driver.recv(data, &buflen)) { /* Гасим светодиод */ digitalWrite(LED_BUILTIN, LOW); /* Выводим в терминал полученные данные */ Serial.print("Size: "); Serial.print(buflen); Serial.println(); Serial.print("Data: "); for (i = 0; i < buflen; i++) { Serial.print((char)data[i]); Serial.print(' '); } Serial.println(); /* Включаем светодиод */ digitalWrite(LED_BUILTIN, HIGH); } }
Результат
Материалы
WL101-341 и WL102-341 — Обзор супергетеродинного приемника и передатчика
VirtualWire
RadioHead
RF 433 MHz модули SYN115/SYN480R и WL101-341/WL102-341
Спасибо за статью! Не подскажите как подобрать скорость в бит/сек? поставил 1250 вместо 2000, работает лучше.
canadian medicine
price prescription drugs
sildenafil
Где приобрести диплом специалиста?
Полученный диплом со всеми печатями и подписями отвечает стандартам Министерства образования и науки, неотличим от оригинала. Не откладывайте свои мечты и задачи на потом, реализуйте их с нашей компанией — отправьте быструю заявку на изготовление документа прямо сейчас! Диплом о высшем образовании — не проблема! poluchidiplom.com/kupit-attestat-ege-2/
Заказать диплом института по невысокой стоимости вы сможете, обратившись к надежной специализированной компании. Мы готовы предложить документы ВУЗов, которые расположены в любом регионе РФ. dip-lom-rus.ru/kupit-v-spb-diplom
Заказать диплом о высшем образовании !
Покупка диплома университета России у нас — надежный процесс, поскольку документ заносится в реестр. При этом печать осуществляется на специальных бланках ГОЗНАКа. Быстро и просто купить диплом любого университета arenadiplom24.online/ptu-moskvy/moskovskoe-professionalnoe-uchilishche-142
1 вин официальный https://1win715.ru .
1win официальный сайт скачать https://www.1win114.com.kg .
1вин официальный регистрация 1вин официальный регистрация .
Где купить диплом по нужной специальности?
Мы предлагаем выгодно заказать диплом, который выполнен на бланке ГОЗНАКа и заверен мокрыми печатями, водяными знаками, подписями официальных лиц. Документ способен пройти любые проверки, даже при использовании специально предназначенного оборудования. Решайте свои задачи максимально быстро с нашим сервисом. Заказать диплом о высшем образовании! frayala.switch-maker.net/read-blog/5353_kupit-svidetelstvo-o-brake.html
поддержка мостбет agility.forum24.ru/?1-0-0-00000756-000-0-0-1742360323 .
баланс ван вин agility.forum24.ru/?1-0-0-00000755-000-0-0-1742359870 .
1win.pro 1win.pro .
1win букмекер belbeer.borda.ru/?1-6-0-00001555-000-0-0-1742473542 .
1win официальный сайт http://taksafonchik.borda.ru/?1-14-0-00002041-000-0-0 .
мостбет официальный сайт http://ongame.forum24.ru/?1-18-0-00001219-000-0-0-1742360461 .
1c программа 1c программа .
масляные трансформаторы купить масляные трансформаторы купить .
Заказать диплом института по невысокой стоимости возможно, обратившись к надежной специализированной компании. Мы оказываем услуги по производству и продаже документов об окончании любых ВУЗов России. Приобрести диплом университета— diploma-groups24.ru/kupit-diplom-vuza/diplom-s-1997-po-2003-god.html
1 вин вход http://1win822.ru .
купить водительскую медицинскую справку kupit-spravku-spb.ru
электрический карниз электрический карниз .
Заказ официального диплома через проверенную и надежную фирму дарит ряд преимуществ. Такое решение позволяет сберечь как личное время, так и значительные финансовые средства. Впрочем, достоинств гораздо больше.Мы изготавливаем дипломы любой профессии. Дипломы производят на настоящих бланках государственного образца. Доступная цена в сравнении с большими затратами на обучение и проживание в чужом городе. Покупка диплома института будет мудрым шагом.
Приобрести диплом о высшем образовании: diplomk-vo-vladivostoke.ru/kupit-diplom-vracha-bistro-i-nadezhno/
соут москва соут москва .
1 win.pro https://1win810.ru/ .
мостбет кыргызстан https://mostbet783.ru/ .
Мы изготавливаем дипломы любой профессии по приятным тарифам. Дипломы изготавливаются на настоящих бланках государственного образца Приобрести диплом любого ВУЗа diplomc-v-ufe.ru
мостбет вход http://www.taksafonchik.borda.ru/?1-14-0-00002042-000-0-0-1742473173 .
Где купить диплом по нужной специальности?
Купить диплом университета по невысокой цене возможно, обратившись к проверенной специализированной фирме.: diploms-vuza.com
Мы изготавливаем дипломы любых профессий по выгодным ценам. Стараемся поддерживать для клиентов адекватную ценовую политику. Важно, чтобы документы были доступными для подавляющей массы наших граждан.
Заказ документа, который подтверждает обучение в университете, — это рациональное решение. Купить диплом университета: diplomc-v-ufe.ru/kupit-diplom-vracha-37/
Приобрести документ о получении высшего образования можно в нашей компании в Москве. Мы предлагаем документы об окончании любых ВУЗов РФ. Вы получите диплом по любой специальности, включая документы СССР. Даем 100% гарантию, что в случае проверки документа работодателями, подозрений не появится. mamapoltava.listbb.ru/viewtopic.php?f=39&t=12888
Где заказать диплом по актуальной специальности?
Готовый диплом со всеми печатями и подписями отвечает условиям и стандартам, никто не отличит его от оригинала. Не откладывайте собственные мечты и задачи на продолжительные годы, реализуйте их с нашей помощью — отправляйте простую заявку на диплом уже сегодня! Заказать диплом о среднем образовании — быстро и легко! diplomk-v-krasnodare.ru/diplom-11-klassa-kupit-6/
1вин кыргызстан https://www.1win824.ru .
1vin https://1win825.ru .
1win com http://1win811.ru .
Диплом университета России!
Без присутствия диплома очень нелегко было продвинуться по карьере. Именно из-за этого решение о заказе диплома стоит считать выгодным и рациональным. Приобрести диплом любого ВУЗа athleticzoneforum.com/read-blog/3326_svidetelstvo-o-rozhdenii-2025.html
mostbet kg отзывы http://mostbet785.ru .
один вин официальный сайт https://www.1win826.ru .
1 win.kg http://1win812.ru .
Заказать документ о получении высшего образования вы можете у нас в столице. diplom-kaluga.ru/kupit-diplom-ulyanovsk-3
биржа для продажи аккаунтов быстро продать аккаунт
магазин аккаунтов соц сетей продать аккаунты моментально
Мы изготавливаем дипломы любой профессии по приятным ценам.— weisberg.com.tr/urun/kapsul-isitme-korumasi-konforu/#comment-6054
1win.com.ci http://www.1win5003.ru .
1 win.com https://1win827.ru/ .
mostbet http://www.mostbet786.ru .
Заказать диплом о высшем образовании поможем. Купить диплом техникума, колледжа в Архангельске — diplomybox.com/kupit-diplom-tekhnikuma-kolledzha-v-arkhangelske
Купить диплом ВУЗа по доступной стоимости возможно, обращаясь к проверенной специализированной фирме. Мы предлагаем документы учебных заведений, которые расположены на территории всей Российской Федерации. diplomist.com/kuplyu-diplom-21
Для эффективного продвижения вверх по карьерной лестнице необходимо наличие диплома о высшем образовании. Заказать диплом любого института у проверенной организации: diplomk-v-krasnodare.ru/gde-kupit-diplom-13/
iphone 15 pro buy iphone pro case
1win kg скачать 1win813.ru .
скачать mostbet на телефон http://mostbet794.ru/ .
адин вин http://pboarders.borda.ru/?1-11-0-00000929-000-0-0-1742818701 .
мосбет https://www.shorts.borda.ru/?1-18-0-00000397-000-0-0 .
биржа покупки аккаунтов продать аккаунты моментально
купля продажа аккаунта сервис продажи аккаунтов
1win com https://www.boardwars.forum24.ru/?1-10-0-00000406-000-0-0 .
1wiun 1wiun .
1win rossvya 1win rossvya .
маркетплейс готовых аккаунтов купить аккаунт на бирже
поддержка мостбет поддержка мостбет .
Списание долгов по 127-ФЗ лучшее решение, когда у вас начались просрочки и уже нечем платить за кредиты отзывы о банкротстве .
mostbet скачать на телефон бесплатно андроид mostbet скачать на телефон бесплатно андроид .
best paper writing services https://promontoryartists.org/ best college paper writing service
custom essay writing https://promontoryartists.org/ help me write my college essay
research essay help https://promontoryartists.org/ law essay help
1win казино https://1win815.ru .
mostbest mostbest .
1win официальный https://1win6014.ru .
1vin pro http://yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616 .
мостбет кыргызстан скачать mostbet6001.ru .
essays help https://promontoryartists.org/ write a descriptive essay
college essay help online https://miorix.com/ best essays
dissertation rimbaud https://miorix.com/ dissertation francais
custom writing paper https://miorix.com/ good essay writers
1вин 1вин .
мостбет кг https://www.maksipolinovtsu.forum24.ru/?1-1-0-00000194-000-0-0-1742815870 .
1вин официальный сайт вход 1вин официальный сайт вход .
write my essay reviews https://miorix.com/ how to write a dissertation
1вин войти https://1win817.ru .
сайт 1win http://www.dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
mostbet https://mostbet6003.ru/ .
pay to write paper https://essentialhunt.com/ writing academic papers
best essay writing service uk https://essentialhunt.com/ college essay edit
write my essay for cheap https://essentialhunt.com/ help me write a essay
мастбет мастбет .
мостбет промокод ashapiter0.forum24.ru/?1-19-0-00001444-000-0-0-1742819001 .
1win бк http://zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050/ .
paper writer website https://essentialhunt.com/ buy coursework
1win официальный сайт вход 1win официальный сайт вход .
writing an analytical paper https://tool300.com/ buy ready essays online
cheap essay writers https://tool300.com/ an essay
college essay writer for pay https://tool300.com/ i cant write my college essay
Если не можете платить по своим долгам, не нужно откладывать решение проблемы. Вы можете воспользоваться законной процедурой банкротства http://bankrotstvo-v-moskve123.ru .
зайти в 1вин https://knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704 .
1 win вход http://1win6013.ru .
1win com https://1win9109.ru .
мостбет https://www.mostbet6004.ru .
homework help websites https://tool300.com/ buy essays not plagiarized
1 win.kg http://belbeer.borda.ru/?1-6-0-00001583-000-0-0/ .
mostbet скачать на телефон бесплатно андроид http://www.girikms.forum24.ru/?1-1-0-00000361-000-0-0-1742819287 .
Здравствуйте!
Мы изготавливаем дипломы психологов, юристов, экономистов и прочих профессий по приятным тарифам. Цена может зависеть от определенной специальности, года получения и образовательного учреждения: rdiploms.com/
mostbet скачать kharkovbynight.forum24.ru/?1-15-0-00003047-000-0-0 .
1 win официальный сайт вход https://1win6018.ru .
Заказать диплом университета по доступной цене возможно, обращаясь к проверенной специализированной фирме. Мы оказываем услуги по изготовлению и продаже документов об окончании любых университетов России. Заказать диплом о высшем образовании— diploma-groups24.ru/diplomy-po-specialnosti/diplom-inzhenera.html
каталог трансформаторов каталог трансформаторов .