Рано или поздно, в создаваемых проектах 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
биржа для продажи аккаунтов быстро продать аккаунт
iphone 15 pro buy iphone pro case
адин вин 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 .
поддержка мостбет поддержка мостбет .
Списание долгов по 127-ФЗ лучшее решение, когда у вас начались просрочки и уже нечем платить за кредиты отзывы о банкротстве .
mostbest mostbest .
1vin pro http://yamama.forum24.ru/?1-11-0-00000459-000-0-0-1742818616 .
мостбет кг https://www.maksipolinovtsu.forum24.ru/?1-1-0-00000194-000-0-0-1742815870 .
1вин официальный сайт вход 1вин официальный сайт вход .
сайт 1win http://www.dogzz.forum24.ru/?1-10-0-00000155-000-0-0-1742818537 .
мостбет промокод ashapiter0.forum24.ru/?1-19-0-00001444-000-0-0-1742819001 .
1win бк http://zdorovie.forum24.ru/?1-7-0-00000231-000-0-0-1742818050/ .
Если не можете платить по своим долгам, не нужно откладывать решение проблемы. Вы можете воспользоваться законной процедурой банкротства http://bankrotstvo-v-moskve123.ru .
зайти в 1вин https://knowledge.forum24.ru/?1-0-0-00000101-000-0-0-1742817704 .
мостбет https://www.mostbet6004.ru .
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 .
mostber hiend.borda.ru/?1-16-0-00000259-000-0-0-1743052953 .
мостбет зеркало https://www.alfatraders.borda.ru/?1-0-0-00004917-000-0-0-1743053068 .
mostbet.kg https://cah.forum24.ru/?1-3-0-00000096-000-0-0-1743053764 .
игра 1вин https://fanfiction.borda.ru/?1-0-0-00029708-000-0-0-1743051664 .
ремонт модулей стиральной ремонт холодильников
1win официальный https://www.balashiha.myqip.ru/?1-12-0-00000437-000-0-0-1743258848 .
банкротство физ лиц отзывы банкротство физ лиц отзывы .
Find the Perfect Clock clocks-top for Any Space! Looking for high-quality clocks? At Top Clocks, we offer a wide selection, from alarm clocks to wall clocks, mantel clocks, and more. Whether you prefer modern, vintage, or smart clocks, we have the best options to enhance your home. Explore our collection and find the perfect timepiece today!
mostbet kg отзывы svstrazh.forum24.ru/?1-18-0-00000136-000-0-0-1743260517 .
банкротство физ лиц отзывы банкротство физ лиц отзывы .
1вин официальный 1win6051.ru .
viagra pill walmart
мостбет зеркало https://mostbet6029.ru .
сколько стоят роллы http://sushibarnaul.ru
1win bets 1win bets .
thc vape shop in prague cannabis in prague
мостбет скачать на андроид http://www.mostbet6033.ru .
Витебский госуниверситет университет vsu.by П.М.Машерова — образовательный центр. Вуз является ведущим образовательным, научным и культурным центром Витебской области. ВГУ осуществляет подготовку: химия, биология, история, физика, программирование, педагогика, психология, математика.
скачать 1win официальный сайт https://www.1win6045.ru .
1win md http://www.1win5013.ru .
что такое 1win 1win6045.ru .
аренда автомобиля в адлере аренда авто адлер
долгосрочная аренда авто сочи недорогая аренда автомобилей в сочи
уборка кв после ремонта https://cleaning-top24.ru
прокат авто в москве суточная аренда авто в москве
взять авто в аренду авто напрокат без водителя
аренда машины владивосток прокат автомобилей владивосток
мостбет зеркало мостбет зеркало .
1вин официальный https://1win7004.ru .
mostbest http://mostbet6038.ru/ .
1win bet https://www.1win18.com.ng .
mostbest https://mostbet7001.ru .
cazinouri online moldova [url=www.1win5026.ru]www.1win5026.ru[/url] .
1вин бет официальный сайт http://1win7017.ru .
1win скачать 1win скачать .
hd tabletop radio cd player and alarm clock
мостбет промокод http://1win5028.ru/ .
мостюет http://mostbet6033.ru/ .
1.вин https://1win7018.ru .
melbet кыргызстан http://melbet1003.ru .
The best online slots rise of olympus slot in one place: classics, new releases, jackpots and themed machines. Play without registration, test the demo or make real bets with bonuses.
мостбет скачать на андроид https://mostbet5009.ru .
1-win 1win7009.ru .
официальный сайт 1win официальный сайт 1win .
1win ug http://1win1005.top/ .
1 вин официальный 1 вин официальный .
поддержка мостбет mostbet6033.ru .
mostbet kg отзывы mostbet6040.ru .
olympe casino avis https://olympecasino.pro/# casino olympe
olympe casino avis
мостбет вход на сегодня http://www.mostbet6042.ru .
1winj https://www.1win710.ru .
букмекерская контора кыргызстан mostbet6041.ru .
book comic read free graphic novels online
manga shounen ai free manga app reader
1 win md https://www.1win711.ru .
kamagra livraison 24h: achat kamagra — kamagra oral jelly
Kamagra pharmacie en ligne: Kamagra pharmacie en ligne — acheter kamagra site fiable
1win site http://1win706.ru/ .
1win am 1win5034.ru .
1win официальный сайт зеркало https://1win8006.ru/ .
казино 1win зеркало http://1win8005.ru .
1 win зеркало сайта http://1win8003.ru .
pharmacie en ligne france pas cher: Pharmacies en ligne certifiees — pharmacies en ligne certifiГ©es pharmafst.com
kamagra livraison 24h: Kamagra Commander maintenant — achat kamagra
kamagra en ligne: Achetez vos kamagra medicaments — kamagra pas cher
kamagra gel: Acheter Kamagra site fiable — kamagra pas cher
лучшие серии фильмов фильмы в 4К бесплатно онлайн
качестве драма фильмы боевики 2025 смотреть бесплатно HD
фильм все серии подряд русские фильмы 2025 онлайн бесплатно
mostbet игры mostbet игры .
фильмы фантастика 2025 лучшие фильмы 2025 года в HD
список фильмов смотреть кино на телефоне в Full HD
фильм драма мистика фильмы онлайн 2025 без подписки
https://kamagraprix.shop/# kamagra gel
сайты для ставок сайты для ставок .
русские фильмы качестве смотреть фильмы онлайн бесплатно 2025
pharmacie en ligne france fiable pharmacie en ligne pas cher vente de mГ©dicament en ligne pharmafst.shop
pariuri sportive moldova http://www.1win5050.ru .
фильм драма с высоким рейтингом смотреть кино на телефоне в Full HD
mostbet приложение http://mostbet8003.ru .
pharmacie en ligne france pas cher: Livraison rapide — pharmacie en ligne fiable pharmafst.com
заработок на аккаунтах биржа аккаунтов
услуги по продаже аккаунтов биржа аккаунтов
Pharmacie en ligne Cialis sans ordonnance: Cialis generique prix — cialis generique tadalmed.shop
дешевые металлические значки пины на заказ
значок металлический на булавке металлические значки москва
pharmacie en ligne france fiable pharmacie en ligne france livraison internationale pharmacie en ligne france livraison internationale pharmafst.shop
Tadalafil sans ordonnance en ligne: cialis prix — Achat Cialis en ligne fiable tadalmed.shop
маркетплейс для реселлеров продажа аккаунтов соцсетей
значок металлический с надписью металлические пины на заказ
mostbet kz скачать mostbet8006.ru .
most bet uz https://mostbet3025.ru/ .
мелбет https://melbet1004.ru/ .
mostbet promokod olish https://www.mostbet3024.ru .
1win.pro https://www.1win5053.ru .
купить аккаунт с прокачкой магазин аккаунтов
заработок на аккаунтах перепродажа аккаунтов
pharmacie en ligne france livraison belgique pharmacie en ligne livraison europe Pharmacie en ligne livraison Europe pharmafst.shop
MedicineFromIndia indian pharmacy online shopping indian pharmacy
https://basovib493.wixsite.com/code1xbet
Rx Express Mexico: RxExpressMexico — mexico pharmacies prescription drugs
покупка аккаунтов магазин аккаунтов
mexico drug stores pharmacies Rx Express Mexico mexican online pharmacy
теннис букмекерская скачать http://mostbet8007.ru/ .
1win пополнение http://www.1win8020.ru .
купить аккаунт маркетплейс аккаунтов соцсетей
бонусы на 1win http://1win8019.ru .
лаки джет тг 1win8010.ru .
mexican online pharmacy mexico pharmacies prescription drugs mexican rx online
хороший гинеколог прием гинеколога абакан
canadian pharmacy online
ракетка 1win http://1win10017.ru .
pin-up: pin-up casino giris — pin up az