

https://downloads.arduino.cc/libraries/logs/github.com/xreef/ebyte_lora_e22_series_library/
Вы можете заказать печатную плату здесь
Инженерное видео и сборка на 6 части руководства
Вы можете заказать печатную плату здесь
Инженерное видео и сборка на 6 части руководства
Я создаю библиотеку для управления серией устройства LORA Ebyte E22, очень мощным, простым и дешевым устройством.
Телеметрия беспроводной передачи LORA или длительного диапазона - это технология, впервые с помощью SEMTECH, которая работает на более низкой частоте, чем NRF24L01 (433 МГц, 868 МГц или 916 МГц снова 2,4 ГГц для NRF24L01), но на расстоянии (от 4000 м до 10000 м).
Лора E22
Вы можете найти здесь Aliexpress (433mhz 4 км) - Aliexpress (433 МГц 10 км)
Пожалуйста, обратитесь к моей статье, чтобы получить обновленную схему
Вы можете найти мою библиотеку здесь.
Для скачивания.
Нажмите кнопку Загрузки в правом верхнем углу, переименована в несущественную папку LORA_E22.
Убедитесь, что папка LORA_E22 содержит LORA_E22.CPP и LORA_E22.H.
Поместите папку библиотеки LORA_E22, папку / библиотеки / библиотеки.
Возможно, вам понадобится создать подпапку библиотек, если это ваша первая библиотека.
Перезагрузите IDE.
E22
| Штифт № | ПИН -элемент | Направление для штифта | Применение |
|---|---|---|---|
| 1 | M0 | Вход (слабый подтягивание) | Работать с M1 и определить четыре режима эксплуатации. Площение не допускается, может быть основано. |
| 2 | М1 | Вход (слабый подтягивание) | Работа с M0 и определить четыре режима работы. Площение не разрешено, может быть основано. |
| 3 | Rxd | Вход | TTL UART входы, подключается к внешнему (MCU, ПК) TXD OutputPin. Можно настроить как вход с открытым дризоном или подтягиванием. |
| 4 | Txd | Выход | TTL UART выходы, подключается к внешнему RXD (MCU, ПК) InputPin. Можно настроить в виде выхода открытого дрэна или вывода |
5 | Аукс | Выход | Per indicare lo stato di funzionamento del modulo e riattivare l'ccu Esterno. Durante la Procecuura di inizializzazione di AutoControllo, IL PIN Emette Una Bassa Tensione. Può Essere Configurato приходите USCITA Open-Drain O PULP-PULL (è NONERTITO НЕ МЕТТЕРЛО A TERRA, MA SE HAI Проблема, ad esempio ti si freeze il ilsitivo è pretibile mettere una restistenza di-up da 4.7ko meglio collegarlo al dispositivo). |
| 6 | Венчурной | Питания 2,3 В ~ 5,5 В. | |
| 7 | Гнездо | Земля |
Как видите, вы можете установить различные режимы с помощью контактов M0 и M1.
| Режим | М1 | M0 | Объяснение |
|---|---|---|---|
| Нормальный | 0 | 0 | UART и беспроводной канал открыты, прозрачная передача (поддерживает конфигурацию по воздуху через специальную команду) |
| WOR Режим | 0 | 1 | Можно определить как передатчик и приемник WOR |
| Режим конфигурации | 1 | 0 | Пользователи могут получить доступ к регистрации через последовательный порт для управления рабочим состоянием модуля |
| Глубокий спящий режим | 1 | 1 | Спящий режим |
Как видите, есть некоторые булавки, которые можно использовать статичным образом, но если вы подключите их к библиотеке, которую вы получаете в производительности, и вы можете управлять всем режимом через программное обеспечение, но мы собираемся лучше объяснить.
Как я уже говорю, не важно подключить весь PIN -код к выходу микроконтроллера, вы можете поместить контакты M0 и M1 к высоким или низким, чтобы получить желательную конфигурацию, и если вы не подключаете Aux, библиотека установит разумную задержку, чтобы убедиться, что операция завершена .
При передаче данных можно использовать для разбуждения внешнего MCU и вернуть высокую отделку передачи данных.
Lora E22 Aux Pin на передаче
При получении AUX поступает низко и возвращайте высокий уровень, когда буфер пуст.
LORA E22 AUX PIN
Он также используется для самостоятельной проверки для восстановления нормальной работы (в режиме питания и сна/программы).
Lora E22 Aux Pin
Схема соединения ESP8266 более проста, потому что она работает при одинаковом напряжении логической связи (3,3 В).
Lora E22 TTL 100 Wemos D1 Полностью подключен
Важно добавить резистор подтягивания (4,7kOM), чтобы получить хорошую стабильность.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| М1 | D6 |
| Техас | Петуст D2 (подтягивание 4,7 кОм) |
| Rx | Пыли D3 (подтягивание 4,7 кОм) |
| Аукс | Пыли D5 (подтягивание 4,7 кОм) |
| Венчурной | 5 В (но работайте с меньшей мощностью в 3,3 В) |
| Гнездо | Гнездо |
Аналогичная схема соединения для ESP32, но для RX и TX мы используем RX2 и TX2, потому что по умолчанию ESP32 не имеет мягкого, но имеет 3 последовательных.
Ebyte Lora E22 Устройство ESP32 Dev Kit v1 k1
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| М1 | D19 |
| Техас | PIN RX2 (подтягивание 4,7 кОм) |
| Rx | PIN TX3 (подтягивание 4,7 кОм) |
| Аукс | PIN D18 (подтягивание 4,7 кОм) |
| Венчурной | 5 В (но работайте с меньшей мощностью в 3,3 В) |
| Гнездо | Гнездо |
Рабочее напряжение Arduino составляет 5 В, поэтому нам нужно добавить разделитель напряжения на RX PIN M0 и M1 модуля LORA, чтобы предотвратить повреждение, вы можете получить больше информации здесь, разделитель напряжения: калькулятор и приложение.
Вы можете использовать резистор 2KOM до GND и 1 ком от сигнала, чем на RX.
Lora E22 TTL 100 Arduino полностью подключен
| M0 | 7 (разделитель напряжения) |
| М1 | 6 (разделитель напряжения) |
| Техас | Петуст 2 (подтягивание 4,7 кОм) |
| Rx | Стижко 3 (подтягивание 4,7Kω и разделитель напряжения) |
| Аукс | Пыли 5 (подтягивание 4,7 кОм) |
| Венчурной | 5 В |
| Гнездо | Гнездо |
Я сделал набор довольно многочисленных конструкторов, потому что у нас может быть больше вариантов и ситуаций для управления.
LoRa_E22 (byte rxPin, byte txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (byte rxPin, byte txPin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (byte rxPin, byte txPin, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);Первый набор конструкторов создает для делегирования управления серийными и другими булавками в библиотеку.
txE22pin и rxE22pin - это PIN -код для подключения к UART, и они обязательны .auxPin -это PIN-код, который проверяет статус работы, передачи и получения (мы собираемся лучше объяснить), этот штифт не обязательна , если вы не установите ее, я применяю задержку, чтобы позволить операции завершить себя (с задержкой, у вас проблемы, например, для Freeze Device, вы должны поместить резистор 4,7K или лучше подключиться к устройству ).m0pin и m1Pin - это контакты для изменения режима работы (см. Верхний таблицы), я думаю, что эти контакты в «производстве» будут подключаться к непосредственно высоко или низко , но для теста они с пользой, чтобы управлять библиотекой.bpsRate - это страшное из мягкостей, обычно составляет 9600 (единственная скорость передачи в режиме программины/спят)Простой пример
# include " LoRa_E22.h "
LoRa_E22 e22ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E22 e22ttl100(2, 3, 5, 6, 7); // RX, TXМы можем использовать непосредственно мягкий
LoRa_E22 (HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (HardwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);Пример верхней части этого конструктора может быть так.
# include < SoftwareSerial.h >
# include " LoRa_E22.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E22 e22ttl100 (mySerial);
// LoRa_E22 e22ttl100(&mySerial, 5, 7, 6);Последний набор конструктора - разрешить использовать твердый, а не мягко.
LoRa_E22 (SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E22 (SoftwareSerial* serial, byte auxPin, byte m0Pin, byte m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);Команда BEGIN используется для запуска последовательного и вывода в режиме ввода и вывода.
void begin ();В исполнении есть
// Startup all pins and UART
e22ttl100.begin();Есть набор методов для управления конфигурацией и получить информацию об устройстве.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters ( struct Configuration configuration);Чтобы упростить управление ответом, я создаю набор контейнеров, для меня очень полезно для управления ошибками и возврата общих данных.
Это контейнер статуса, и есть 2 простая точка входа, с этим вы можете получить код состояния и описание кода состояния
Serial.println(c.getResponseDescription()); // Description of code
Serial.println(c.code); // 1 if SuccessКод
E22_SUCCESS = 1 ,
ERR_E22_UNKNOWN,
ERR_E22_NOT_SUPPORT,
ERR_E22_NOT_IMPLEMENT,
ERR_E22_NOT_INITIAL,
ERR_E22_INVALID_PARAM,
ERR_E22_DATA_SIZE_NOT_MATCH,
ERR_E22_BUF_TOO_SMALL,
ERR_E22_TIMEOUT,
ERR_E22_HARDWARE,
ERR_E22_HEAD_NOT_RECOGNIZEDЭтот контейнер создается для управления ответом строки и 2 точки входа.
data со строкой возвращаются из сообщения и status экземпляр RepsonseStatus .
ResponseContainer rs = e22ttl.receiveMessage();
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);Это более «сложный» контейнер, я использую его для управления структурой, он имеет одинаковую точку входа в AppresseContainer, но данные являются void -указателем для управления сложной структурой.
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
c.close();Первым методом является GetConfiguration, вы можете использовать его для поиска всех данных, хранящихся на устройстве.
ResponseStructContainer getConfiguration ();Здесь пример использования.
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
Serial.println(configuration.SPED.getUARTBaudRate());
c.close();Структура конфигурации имеет все данные настроек, и я добавляю серию функции, чтобы получить все описание отдельных данных.
configuration.ADDL = 0x03 ; // First part of address
configuration.ADDH = 0x00 ; // Second part
configuration.NETID = 0x00 ; // NETID used for repeater function
configuration.CHAN = 23 ; // Communication channel
configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit
configuration.OPTION.subPacketSetting = SPS_240_00; // Packet size
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command
configuration.OPTION.transmissionPower = POWER_22; // Device power
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info
configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission type
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED; // Enable repeater mode
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_RECEIVER; // Enable WOR mode
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timingУ вас есть эквивалентная функция, чтобы получить все описание:
DEBUG_PRINT (F( " HEAD : " )); DEBUG_PRINT(configuration.COMMAND, HEX);DEBUG_PRINT( " " );DEBUG_PRINT(configuration.STARTING_ADDRESS, HEX);DEBUG_PRINT( " " );DEBUG_PRINTLN(configuration.LENGHT, HEX);
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " AddH : " )); DEBUG_PRINTLN(configuration.ADDH, HEX);
DEBUG_PRINT (F( " AddL : " )); DEBUG_PRINTLN(configuration.ADDL, HEX);
DEBUG_PRINT (F( " NetID : " )); DEBUG_PRINTLN(configuration.NETID, HEX);
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " Chan : " )); DEBUG_PRINT(configuration.CHAN, DEC); DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.getChannelDescription());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " SpeedParityBit : " )); DEBUG_PRINT(configuration.SPED.uartParity, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getUARTParityDescription());
DEBUG_PRINT (F( " SpeedUARTDatte : " )); DEBUG_PRINT(configuration.SPED.uartBaudRate, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getUARTBaudRateDescription());
DEBUG_PRINT (F( " SpeedAirDataRate : " )); DEBUG_PRINT(configuration.SPED.airDataRate, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.SPED.getAirDataRateDescription());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " OptionSubPacketSett: " )); DEBUG_PRINT(configuration.OPTION.subPacketSetting, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getSubPacketSetting());
DEBUG_PRINT (F( " OptionTranPower : " )); DEBUG_PRINT(configuration.OPTION.transmissionPower, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getTransmissionPowerDescription());
DEBUG_PRINT (F( " OptionRSSIAmbientNo: " )); DEBUG_PRINT(configuration.OPTION.RSSIAmbientNoise, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.OPTION.getRSSIAmbientNoiseEnable());
DEBUG_PRINTLN (F( " " ));
DEBUG_PRINT (F( " TransModeWORPeriod : " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.WORPeriod, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getWORPeriodByParamsDescription());
DEBUG_PRINT (F( " TransModeTransContr: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.WORTransceiverControl, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getWORTransceiverControlDescription());
DEBUG_PRINT (F( " TransModeEnableLBT : " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableLBT, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getLBTEnableByteDescription());
DEBUG_PRINT (F( " TransModeEnableRSSI: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableRSSI, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getRSSIEnableByteDescription());
DEBUG_PRINT (F( " TransModeEnabRepeat: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.enableRepeater, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getRepeaterModeEnableByteDescription());
DEBUG_PRINT (F( " TransModeFixedTrans: " )); DEBUG_PRINT(configuration.TRANSMISSION_MODE.fixedTransmission, BIN);DEBUG_PRINT( " -> " ); DEBUG_PRINTLN(configuration.TRANSMISSION_MODE.getFixedTransmissionDescription());В то же время SetConfiguration Want Configuration Strucutre, поэтому я думаю, что лучший способ управления конфигурацией - получить текущее, применить единственное изменение, которое вам нужно, и установить его снова.
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE); configuration - это Strucutre, предварительное, чтобы показать вам saveType вам разрешить Choiche, если изменение станет навсегда только для текущего сеанса.
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = 0x03 ; // First part of address
configuration.ADDH = 0x00 ; // Second part
configuration.NETID = 0x00 ; // NETID used for repeater function
configuration.CHAN = 23 ; // Communication channel
configuration.SPED.uartBaudRate = UART_BPS_9600; // Serial baud rate
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24; // Air baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bit
configuration.OPTION.subPacketSetting = SPS_240_00; // Packet size
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED; // Need to send special command
configuration.OPTION.transmissionPower = POWER_22; // Device power
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED; // Enable RSSI info
configuration.TRANSMISSION_MODE.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission type
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED; // Enable repeater mode
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED; // Check interference
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_RECEIVER; // Enable WOR mode
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011; // WOR timing
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e32ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);
c.close()Параметр - все это управляется как постоянный:
| Адд | Байт с высоким адресом модуля (по умолчанию 00H) | 00h-ffh |
| Addl | Байт с низким адресом модуля (по умолчанию 00H) | 00h-ffh |
| Ускорительный | Информация о бите паритета передачи данных и скорости передачи данных воздуха | |
| Чан | Канал связи (410M + Chan*1M), по умолчанию 17H (433 МГц), действительный только для устройства 433 МГц ниже, чтобы проверить правильную частоту вашего устройства | 00H-1FH |
| ВАРИАНТ | Тип передачи, размер пакета, разрешайте специальное сообщение | |
| Передача_моде | Много параметров, которые указывают модальность передачи |
ВАРИАНТ
Тип трансмиссии, настройки подтягивания, время пробуждения, FEC, мощность передачи
UART Parity Bit: режим UART может отличаться между сторонами связи
| 4 | 3 | Uart Parity Bit | Постоянное значение |
| 0 | 0 | 8n1 (по умолчанию) | Mode_00_8n1 |
| 0 | 1 | 8o1 | MODE_01_8O1 |
| 1 | 0 | 8 E1 | Mode_10_8e1 |
| 1 | 1 | 8n1 (равна 00) | Mode_11_8n1 |
Скорость бода UART: Скорость передачи бодов UART может отличаться между сторонами связи, скорость бода UART не имеет ничего общего с параметрами беспроводной передачи и не повлияет на функции беспроводной передачи / приема.
| 7 | 6 | 5 | TTL UART -Скорость передачи (BPS) | Постоянное значение |
| 0 | 0 | 0 | 1200 | Uart_bps_1200 |
| 0 | 0 | 1 | 2400 | UART_BPS_2400 |
| 0 | 1 | 0 | 4800 | UART_BPS_4800 |
| 0 | 1 | 1 | 9600 (по умолчанию) | UART_BPS_9600 |
| 1 | 0 | 0 | 19200 | UART_BPS_19200 |
| 1 | 0 | 1 | 38400 | UART_BPS_38400 |
| 1 | 1 | 0 | 57600 | UART_BPS_57600 |
| 1 | 1 | 1 | 115200 | UART_BPS_115200 |
Скорость передачи данных воздуха: чем ниже скорость передачи данных воздуха, тем дольше расстояние передачи, лучшие характеристики анти-помех и более длительное время передачи, скорость передачи данных воздуха должна сохранять одинаковую для обеих сторон связи.
| 2 | 1 | 0 | Скорость передачи данных воздуха (BPS) | Постоянное значение |
| 0 | 0 | 0 | 0,3к | AIR_DATA_RATE_000_03 |
| 0 | 0 | 1 | 1,2K | AIR_DATA_RATE_001_12 |
| 0 | 1 | 0 | 2.4K (по умолчанию) | AIR_DATA_RATE_010_24 |
| 0 | 1 | 1 | 4,8k | AIR_DATA_RATE_011_48 |
| 1 | 0 | 0 | 9,6K | AIR_DATA_RATE_100_96 |
| 1 | 0 | 1 | 19.2k | AIR_DATA_RATE_101_192 |
| 1 | 1 | 0 | 38.4K | AIR_DATA_RATE_110_384 |
| 1 | 1 | 1 | 62,5K | AIR_DATA_RATE_111_625 |
#### Настройка подпакета
Это максимальный лист пакета.
Когда данные меньше длины подпакета, серийный выходной выход является непрерывным непрерывным выходом. Когда данные больше длины подпакета, последовательный порт приема выводит подпакет.
| 7 | 6 | Размер пакета | Постоянное значение |
| 0 | 0 | 240bytes (по умолчанию) | SPS_240_00 |
| 0 | 1 | 128bytes | SPS_128_01 |
| 1 | 0 | 64bytes | SPS_064_10 |
| 1 | 1 | 32bytes | SPS_032_11 |
#### RSSI Ambient Shoot включает
Эта команда может включить/отключить тип управления RSSI, важно управлять удаленной конфигурацией, обращение внимание не является параметром RSSI в сообщении.
При включении команда C0 C1 C2 C3 может быть отправлена в режиме передачи или в режиме передачи WOR для чтения регистра. Регистр 0x00: текущий RSSI RSSI Регистр окружающего шума 0x01: RSSI, когда данные были получены в прошлый раз.
| 5 | RSSI окружающий шум | Постоянное значение |
| 0 | Давать возможность | Rssi_ambient_noise_enabled |
| 1 | Отключить (по умолчанию) | Rssi_ambient_noise_disabled |
#### Мощность передачи
Вы можете изменить этот набор постоянной, применить определение как SO:
# define E22_22 // default value without set
# define E22_30Вы можете настроить частоту канала OLSO с этим определением:
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915#### включить RSSI
При включении модуль получает беспроводные данные и будет следовать за байтом прочности RSSI после выхода через последовательный порт TXD
#### Тип передачи
Режим передачи: в режиме фиксированной передачи первые три байта рамы данных каждого пользователя могут использоваться в качестве высокого/низкого адреса и канала. Модуль меняет свой адрес и канал при передаче. И это вернется к исходной настройке после завершения процесса.
#### Включить функцию повторителя
#### Мониторинг данных перед передачей
При включении беспроводные данные будут контролироваться до их передачи, что может в определенной степени избежать помех, но может вызвать задержку данных.
#### wor
Передатчик WOR: включаются функции, получающие и передачу модуля, а при передаче данных добавляется код пробуждения. Прием включен.
Приемник WO: модуль не может передавать данные и работает в режиме мониторинга WOR. Период мониторинга заключается в следующем (цикл WOR), который может сэкономить много энергии.
#### wor цикл
Если WOR передается: после того, как приемник WOR получит беспроводные данные и выведет их через последовательный порт, он будет ждать 1000 мс, прежде чем снова въехать в WOR. Пользователи могут ввести данные последовательного порта и вернуть их через беспроводную связь в течение этого периода. Каждый серийный байт будет обновлен на 1000 мс. Пользователи должны передавать первый байт в течение 1000 мс.
Сначала мы должны представить простой, но полезный метод, чтобы проверить, есть ли что -то в приемном буфере
int available ();Это просто верните, сколько байтов у вас есть в текущем потоке.
Нормальный/прозрачный режим передачи используется для отправки сообщений на все устройство с тем же адресом и каналом.
Сценарии передачи Lora E22, линии - каналы
Есть много метода для отправки/получения сообщения, мы собираемся подробно объяснить:
ResponseStatus sendMessage ( const String message);ResponseContainer receiveMessage ();Первым методом является SendMessage и используется для отправки строки в устройство в нормальном режиме .
ResponseStatus rs = e22ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());Другое устройство просто делает на петле
if (e22ttl.available() > 1 ){
ResponseContainer rs = e22ttl. receiveMessage ();
String message = rs. data ;` ` // First ever get the data
Serial. println (rs. status . getResponseDescription ());
Serial. println (message);
}Если вы хотите отправить сложную структуру, вы можете использовать этот метод
ResponseStatus sendMessage ( const void *message, const uint8_t size);
ResponseStructContainer receiveMessage ( const uint8_t size);Например, он используется для отправки Strucutre:
struct Messaggione {
char type[ 5 ];
char message[ 8 ];
bool mitico;
};
struct Messaggione messaggione = { " TEMP " , " Peple " , true };
ResponseStatus rs = e22ttl.sendMessage(&messaggione, sizeof (Messaggione));
Serial.println(rs.getResponseDescription());И другая сторона вы можете получить сообщение, чтобы
ResponseStructContainer rsc = e22ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;
Serial.println(messaggione.message);
Serial.println(messaggione.mitico);Если вы хотите прочитать первую часть сообщения, чтобы управлять большим количеством типа Strucutre, вы можете использовать этот метод.
ResponseContainer receiveInitialMessage ( const uint8_t size);Я создаю ее для получения строки с типом или другой, чтобы идентифицировать страницу для загрузки.
struct Messaggione { // Partial strucutre without type
char message[ 8 ];
bool mitico;
};
char type[ 5 ]; // first part of structure
ResponseContainer rs = e22ttl.receiveInitialMessage( sizeof (type));
// Put string in a char array (not needed)
memcpy ( type, rs.data.c_str(), sizeof(type) );
Serial.println( " READ TYPE: " );
Serial.println(rs.status.getResponseDescription());
Serial.println(type);
// Read the rest of structure
ResponseStructContainer rsc = e22ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;В то же время я создаю набор метода для использования с фиксированной передачей
Вам нужно изменить только метод отправки, потому что устройство назначения не получает преамбулу с адресом и каналом.
Так что для строкового сообщения у вас есть
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const String message);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const String message);и для структуры у вас есть
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const void *message, const uint8_t size);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const void *message, const uint8_t size );Здесь простой пример
ResponseStatus rs = e22ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e22ttl.sendFixedMessage(0, 0, 0x17, "Ciao");Фиксированная передача имеет больше сценариев
Сценарии передачи Lora E22, линии - каналы
Если вы отправляете на определенное устройство (вторая сценария фиксированная передача), вы должны добавить Addl, Addh и Chan, чтобы идентифицировать его напрямую.
ResponseStatus rs = e22ttl.sendFixedMessage( 2 , 2 , 0x17 , " Message to a device " );Если вы хотите отправить сообщение на все устройство в указанном канале, вы можете использовать этот метод.
ResponseStatus rs = e22ttl.sendBroadcastFixedMessage( 0x17 , " Message to a devices of a channel " ); Если вы хотите получить все радиовещательные сообщения в сети, вы должны установить свои ADDH и ADDL на BROADCAST_ADDRESS .
ResponseStructContainer c;
c = e22ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters (configuration);
configuration.ADDL = BROADCAST_ADDRESS;
configuration.ADDH = BROADCAST_ADDRESS;
// Set configuration changed and set to not hold the configuration
ResponseStatus rs = e22ttl100.setConfiguration(configuration, WRITE_CFG_PWR_DWN_LOSE);
Serial.println(rs.getResponseDescription());
Serial.println(rs.code);
printParameters (configuration);
c.close();### Беспроводная конфигурация
Это устройство поддерживает беспроводную конфигурацию беспроводной конфигурации с помощью специальной команды, но, кажется, не работает, я прошу Ebyte, но ответа не получен.
Я внедряю команду, которая отправляет пакет правильным образом (тестируется с помощью логического анализатора), но кажется, что не работает.
Кстати, сначала вы активируете шумовую среду RSSI, чем вы можете использовать команду так:
Configuration configuration;
configuration.ADDL = 0x13 ;
configuration.ADDH = 0x13 ;
configuration.NETID = 0x00 ;
configuration.CHAN = 23 ;
configuration.SPED.uartBaudRate = UART_BPS_9600;
configuration.SPED.airDataRate = AIR_DATA_RATE_010_24;
configuration.SPED.uartParity = MODE_00_8N1;
configuration.OPTION.subPacketSetting = SPS_240_00;
configuration.OPTION.RSSIAmbientNoise = RSSI_AMBIENT_NOISE_DISABLED;
configuration.OPTION.transmissionPower = POWER_22;
configuration.TRANSMISSION_MODE.enableRSSI = RSSI_DISABLED;
configuration.TRANSMISSION_MODE.fixedTransmission = FT_FIXED_TRANSMISSION;
configuration.TRANSMISSION_MODE.enableRepeater = REPEATER_DISABLED;
configuration.TRANSMISSION_MODE.enableLBT = LBT_DISABLED;
configuration.TRANSMISSION_MODE.WORTransceiverControl = WOR_TRANSMITTER;
configuration.TRANSMISSION_MODE.WORPeriod = WOR_2000_011;Теперь у вас есть вся информация, чтобы выполнить вашу работу, но я думаю, что важно показать некоторые реалистичные примеры, чтобы лучше понять все возможности.
Ebyte Lora E22 устройство для Arduino, ESP32 или ESP8266: Настройки и базовое использование
Ebyte Lora E22 устройство для Arduino, ESP32 или ESP8266: библиотека
Ebyte Lora E22 устройство для Arduino, ESP32 или ESP8266: конфигурация
Ebyte Lora E22 устройство для Arduino, ESP32 или ESP8266: фиксированная передача и RSSI
Устройство Ebyte Lora E22 для Arduino, ESP32 или ESP8266: сохранение питания и отправка структурированных данных
Ebyte Lora E22 Устройство для Arduino, ESP32 или ESP8266: режим повторителей и удаленные настройки
Ebyte Lora E22 Устройство для Arduino, ESP32 или ESP8266: микроконтроллер WOR и Arduino Shield
Ebyte Lora E22 Устройство для Arduino, ESP32 или ESP8266: микроконтроллер WOR и Wemos D1 Shield
Ebyte Lora E22 Устройство для Arduino, ESP32 или ESP8266: микроконтроллер WOR и ESP32 Dev v1 Shield