

https://downloads.arduino.cc/libraries/logs/github.com/xreef/ebyte_lora_e22_series_library/
Anda dapat memesan PCB di sini
Video Instruksi dan Perakitan di 6 bagian dari panduan ini
Anda dapat memesan PCB di sini
Video Instruksi dan Perakitan di 6 bagian dari panduan ini
Saya membuat perpustakaan untuk mengelola perangkat Lora seri Ebyte E22, perangkat yang sangat kuat, sederhana dan murah.
Telemetri Data Nirkabel Lora atau Long Range adalah teknologi yang dipelopori oleh Semtech yang beroperasi pada frekuensi yang lebih rendah daripada NRF24L01 (433 MHz, 868 MHz atau 916 MHz lagi 2,4 GHz untuk NRF24L01) tetapi pada jarak tiga kali (dari 4000m hingga 10000m).
Lora E22
Anda dapat menemukan di sini AliExpress (433MHz 4km) - AliExpress (433MHz 10km)
Silakan merujuk ke artikel saya untuk mendapatkan skema yang diperbarui
Anda dapat menemukan perpustakaan saya di sini.
Untuk mengunduh.
Klik tombol Unduhan di sudut kanan atas, ganti nama folder Lora_E22 yang tidak terkompresi.
Periksa bahwa folder LORA_E22 berisi lora_e22.cpp dan lora_e22.h.
Tempatkan folder perpustakaan lora_e22 Anda / pustaka / folder Anda.
Anda mungkin perlu membuat subfolder perpustakaan jika ini perpustakaan pertama Anda.
Mulai ulang IDE.
E22
| Pin No. | Item pin | Arah pin | Aplikasi pin |
|---|---|---|---|
| 1 | M0 | Input (pull-up lemah) | Bekerja dengan M1 & Tentukan Empat Mode Pengoperasian. FLOATING TIDAK DIPERLUKAN, dapat ditumbuk. |
| 2 | M1 | Input (pull-up lemah) | Bekerja dengan M0 & Tentukan Empat Mode Operasi. FLOATING TIDAK DIPERLUKAN, bisa menjadi ground. |
| 3 | Rxd | Masukan | Input TTL UART, terhubung ke External (MCU, PC) TXD OutputPin. Dapat dikonfigurasi sebagai input terbuka atau pull-up. |
| 4 | Txd | Keluaran | Output UART TTL, terhubung ke inputpin RXD eksternal (MCU, PC). Dapat dikonfigurasi sebagai output terbuka atau tarik-tarik |
5 | Aux | Keluaran | Per indicare lo stato di funzionamento del modulo e riattivare l'cu esterno. Durante la Procedura di Inizializzazione di Autocontrollo, IL Pin Emette Una Bassa tensione. Può essere configurato datang uscita open-drain o output push-pull (è consentito non metterlo a terra, ma se hai problemi, ad esempio ti si freeze il dispositivo è preferensi mete-mettere una resistenza di pull-up da 4.7ko meglio collegoLo aldosiVo). |
| 6 | Vcc | Catu Daya 2.3V ~ 5.5V DC | |
| 7 | Gnd | Tanah |
Seperti yang Anda lihat, Anda dapat mengatur berbagai mode melalui pin M0 dan M1.
| Mode | M1 | M0 | Penjelasan |
|---|---|---|---|
| Normal | 0 | 0 | UART dan saluran nirkabel terbuka, transmisi transparan aktif (mendukung konfigurasi melalui udara melalui perintah khusus) |
| Mode WOR | 0 | 1 | Dapat didefinisikan sebagai pemancar Wor dan penerima WOR |
| Mode Konfigurasi | 1 | 0 | Pengguna dapat mengakses register melalui port serial untuk mengontrol status kerja modul |
| Mode tidur yang dalam | 1 | 1 | Mode tidur |
Seperti yang Anda lihat ada beberapa pin yang dapat digunakan dengan cara statis, tetapi jika Anda menghubungkannya ke perpustakaan yang Anda dapatkan dalam kinerja dan Anda dapat mengontrol semua mode melalui perangkat lunak, tetapi kami akan menjelaskan lebih baik berikutnya.
Seperti yang sudah saya katakan tidak penting untuk menghubungkan semua pin ke output mikrokontroler, Anda dapat meletakkan pin M0 dan M1 ke tinggi atau rendah untuk mendapatkan konfigurasi yang jelas, dan jika Anda tidak menghubungkan AUX, perpustakaan menetapkan penundaan yang masuk akal untuk memastikan bahwa operasi selesai .
Saat mentransmisikan data dapat digunakan untuk membangunkan MCU eksternal dan kembali tinggi pada finish transfer data.
Pin lora e22 aux pada transmisi
Saat menerima aux menjadi rendah dan kembali tinggi saat buffer kosong.
Lora e22 aux pin pada penerimaan
Ini juga digunakan untuk memeriksa sendiri untuk memulihkan operasi normal (pada mode power-on dan sleep/program).
Lora e22 aux pin pada pemeriksaan sendiri
Skema koneksi ESP8266 lebih sederhana karena bekerja pada tegangan komunikasi logis yang sama (3.3V).
Lora e22 ttl 100 wemos d1 terhubung sepenuhnya
Penting untuk menambahkan resistor pull-up (4,7kohm) untuk mendapatkan stabilitas yang baik.
| E22 | ESP8266 |
|---|---|
| M0 | D7 |
| M1 | D6 |
| Tx | Pin D2 (pullup 4,7kΩ) |
| Rx | Pin D3 (pullup 4,7kΩ) |
| Aux | Pin D5 (pullup 4,7kΩ) |
| Vcc | 5V (tetapi bekerja dengan lebih sedikit kekuatan dalam 3.3V) |
| Gnd | Gnd |
Skema koneksi yang serupa untuk ESP32, tetapi untuk RX dan TX kami menggunakan RX2 dan TX2, karena secara default ESP32 tidak memiliki softwareserial tetapi memiliki 3 serial.
E22 E22 E22 Device Esp32 Dev Kit V1 Breadboard Connection Penuh
| E22 | ESP32 |
|---|---|
| M0 | D21 |
| M1 | D19 |
| Tx | Pin RX2 (pullup 4,7kΩ) |
| Rx | Pin TX3 (pullup 4,7kΩ) |
| Aux | Pin D18 (pullup 4,7kΩ) |
| Vcc | 5V (tetapi bekerja dengan lebih sedikit kekuatan dalam 3.3V) |
| Gnd | Gnd |
Tegangan kerja Arduino adalah 5V, jadi kita perlu menambahkan pembagi tegangan pada Rx pin M0 dan M1 dari modul LORA untuk mencegah kerusakan, Anda bisa mendapatkan informasi lebih lanjut di sini pembagi tegangan: kalkulator dan aplikasi.
Anda dapat menggunakan resistor 2kohm ke GND dan 1kohm dari sinyal daripada disatukan pada RX.
Lora e22 ttl 100 arduino terhubung sepenuhnya
| M0 | 7 (pembagi tegangan) |
| M1 | 6 (pembagi tegangan) |
| Tx | Pin 2 (pullup 4,7kΩ) |
| Rx | Pin 3 (pullup 4,7kΩ & pembagi tegangan) |
| Aux | Pin 5 (pullup 4,7kΩ) |
| Vcc | 5v |
| Gnd | Gnd |
Saya membuat satu set konstruktor yang cukup banyak, karena kami dapat memiliki lebih banyak pilihan dan situasi untuk dikelola.
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);Kumpulan konstruktor pertama dibuat untuk mendelegasikan mengelola serial dan pin lainnya ke perpustakaan.
txE22pin dan rxE22pin adalah pin untuk terhubung ke UART dan mereka wajib .auxPin adalah pin yang memeriksa operasi, transmisi, dan status penerima (kami akan menjelaskan lebih baik berikutnya), pin itu tidak wajib , jika Anda tidak mengaturnya, saya menerapkan penundaan untuk mengizinkan operasi untuk menyelesaikan dirinya sendiri (dengan latensi, jika Anda memiliki masalah, seperti perangkat beku, Anda harus meletakkan resistor 4.7k pull-up atau lebih terhubung ke perangkat ).m0pin dan m1Pin adalah pin untuk mengubah mode operasi (lihat tabel atas), saya pikir pin ini dalam "produksi" akan terhubung langsung atau rendah , tetapi untuk pengujian mereka bermanfaat untuk dikelola oleh perpustakaan.bpsRate adalah BOUDRAT Softwareserial biasanya adalah 9600 (satu -satunya laju baud dalam mode program/tidur)Contoh sederhana adalah
# include " LoRa_E22.h "
LoRa_E22 e22ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E22 e22ttl100(2, 3, 5, 6, 7); // RX, TXKita dapat menggunakan langsung softwareserial dengan konstruktor lain
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);Contoh atas dengan konstruktor ini bisa melakukannya seperti itu.
# include < SoftwareSerial.h >
# include " LoRa_E22.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E22 e22ttl100 (mySerial);
// LoRa_E22 e22ttl100(&mySerial, 5, 7, 6);Kumpulan konstruktor terakhir adalah mengizinkan menggunakan hardwareserial alih -alih softwareserial.
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);Perintah awal digunakan untuk memulai serial dan pin dalam mode input dan output.
void begin ();dalam eksekusi adalah
// Startup all pins and UART
e22ttl100.begin();Ada satu set metode untuk mengelola konfigurasi dan mendapatkan informasi perangkat.
ResponseStructContainer getConfiguration ();
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);
ResponseStructContainer getModuleInformation ();
void printParameters ( struct Configuration configuration);Untuk menyederhanakan mengelola respons, saya membuat serangkaian wadah, bagi saya dengan sangat bermanfaat untuk mengelola kesalahan dan mengembalikan data generik.
Ini adalah wadah status dan memiliki 2 titik masuk sederhana, dengan ini Anda bisa mendapatkan kode status dan deskripsi kode status
Serial.println(c.getResponseDescription()); // Description of code
Serial.println(c.code); // 1 if SuccessKodenya
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_RECOGNIZEDWadah ini dibuat untuk mengelola respons string dan memiliki 2 titik masuk.
data dengan string yang dikembalikan dari pesan dan status instance RepsonseStatus .
ResponseContainer rs = e22ttl.receiveMessage();
String message = rs.data;
Serial.println(rs.status.getResponseDescription());
Serial.println(message);Ini adalah wadah yang lebih "kompleks", saya menggunakan ini untuk mengelola struktur, ia memiliki titik masuk yang sama dari responseContainer tetapi data adalah pointer void untuk mengelola struktur yang kompleks.
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();Metode pertama adalah GetConfiguration, Anda dapat menggunakannya untuk memadamkan semua data yang disimpan pada perangkat.
ResponseStructContainer getConfiguration ();Di sini contoh penggunaan.
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();Struktur konfigurasi memiliki semua data pengaturan, dan saya menambahkan serangkaian fungsi untuk mendapatkan semua deskripsi data tunggal.
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 timingAnda memiliki fungsi yang setara untuk mendapatkan semua deskripsi:
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());Pada cara yang sama setConfiguration menginginkan strucutre konfigurasi, jadi saya pikir cara yang lebih baik untuk mengelola konfigurasi adalah dengan mengambil yang saat ini, menerapkan satu -satunya perubahan yang Anda butuhkan dan atur lagi.
ResponseStatus setConfiguration (Configuration configuration, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE); configuration adalah strucutre previsioully show, saveType mengizinkan Anda untuk choiche jika perubahan menjadi hanya untuk sesi saat ini.
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()Parameter semuanya dikelola sebagai konstan:
| Addh | Byte alamat tinggi modul (default 00h) | 00h-ffh |
| Addl | Byte alamat rendah modul (default 00h) | 00h-ffh |
| Melaju | Informasi tentang bit paritas data laju dan tingkat data udara | |
| Chan | Saluran Komunikasi (410m + Chan*1M), default 17h (433MHz), hanya berlaku untuk perangkat 433MHz Chek di bawah ini untuk memeriksa frekuensi perangkat Anda yang benar | 00H-1FH |
| PILIHAN | Jenis transmisi, ukuran paket, izinkan pesan khusus | |
| Transmisi_mode | Banyak parameter yang menentukan modalitas transmisi |
PILIHAN
Jenis transmisi, pengaturan pull-up, waktu bangun, FEC, daya transmisi
UART Parity Bit: Mode UART dapat berbeda antara pihak komunikasi
| 4 | 3 | UART parity bit | Nilai konstan |
| 0 | 0 | 8n1 (default) | Mode_00_8n1 |
| 0 | 1 | 8o1 | Mode_01_8o1 |
| 1 | 0 | 8 E1 | Mode_10_8e1 |
| 1 | 1 | 8n1 (sama dengan 00) | Mode_11_8n1 |
UART baud rate: UART baud rate dapat berbeda antara pihak komunikasi, UART baud rate tidak ada hubungannya dengan parameter transmisi nirkabel & tidak akan mempengaruhi fitur transmit / menerima nirkabel.
| 7 | 6 | 5 | Ttl uart baud rate (bps) | Nilai konstan |
| 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 (default) | 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 |
Laju Data Udara: Semakin rendah laju data udara, semakin lama jarak transmisi, kinerja anti-gangguan yang lebih baik dan waktu transmisi lebih lama, laju data udara harus menjaga hal yang sama untuk kedua pihak komunikasi.
| 2 | 1 | 0 | Laju data udara (bps) | Nilai konstan |
| 0 | 0 | 0 | 0.3k | AIR_DATA_RATE_000_03 |
| 0 | 0 | 1 | 1.2k | AIR_DATA_RATE_001_12 |
| 0 | 1 | 0 | 2.4k (default) | 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 |
Pengaturan Sub Paket ####
Ini adalah max lenght dari paket.
Ketika data lebih kecil dari panjang sub -paket, output serial dari ujung penerima adalah output kontinu yang tidak terputus. Ketika data lebih besar dari panjang sub paket, port serial ujung penerima akan menghasilkan paket sub.
| 7 | 6 | Ukuran paket | Nilai konstan |
| 0 | 0 | 240bytes (default) | SPS_240_00 |
| 0 | 1 | 128bytes | SPS_128_01 |
| 1 | 0 | 64bytes | SPS_064_10 |
| 1 | 1 | 32bytes | SPS_032_11 |
#### RSSI Ambient Noise Enable
Perintah ini dapat mengaktifkan/menonaktifkan jenis manajemen RSSI, penting untuk mengelola konfigurasi jarak jauh, perhatikan bukan parameter RSSI dalam pesan.
Saat diaktifkan, perintah C0 C1 C2 C3 dapat dikirim dalam mode transmisi atau mode transmisi WOR untuk membaca register. Daftar 0x00: Noise ambient saat ini RSSI Register 0x01: RSSI Saat data diterima terakhir kali.
| 5 | RSSI Ambient Noise Enable | Nilai konstan |
| 0 | Memungkinkan | Rssi_ambient_noise_enabled |
| 1 | Nonaktifkan (default) | Rssi_ambient_noise_disabled |
Daya transmisi ####
Anda dapat mengubah rangkaian konstanta ini dengan menerapkan define seperti itu:
# define E22_22 // default value without set
# define E22_30Anda dapat mengonfigurasi frekuensi saluran OLSO dengan define ini:
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915#### Aktifkan RSSI
Saat diaktifkan, modul menerima data nirkabel dan akan mengikuti byte kekuatan RSSI setelah output melalui port serial TXD
Jenis transmisi ####
Mode Transmisi: Dalam mode transmisi tetap, tiga byte pertama dari bingkai data masing -masing pengguna dapat digunakan sebagai alamat dan saluran tinggi/rendah. Modul mengubah alamat dan salurannya saat mengirim. Dan itu akan kembali ke pengaturan asli setelah menyelesaikan proses.
#### Aktifkan fungsi repeater
#### Monitor data sebelum transmisi
Saat diaktifkan, data nirkabel akan dipantau sebelum ditransmisikan, yang dapat menghindari gangguan sampai batas tertentu, tetapi dapat menyebabkan penundaan data.
#### Wor
Pemancar Wor: Modul yang menerima dan mentransmisikan fungsi dihidupkan, dan kode bangun ditambahkan saat mengirimkan data. Menerima dihidupkan.
Wor Receiver: Modul tidak dapat mengirimkan data dan bekerja dalam mode pemantauan WOR. Periode pemantauan adalah sebagai berikut (siklus WOR), yang dapat menghemat banyak daya.
#### Siklus Wor
Jika Wor sedang mentransmisikan: Setelah penerima WOR menerima data nirkabel dan mengeluarkannya melalui port serial, ia akan menunggu 1000ms sebelum memasukkan Wor lagi. Pengguna dapat memasukkan data port serial dan mengembalikannya melalui nirkabel selama periode ini. Setiap byte serial akan disegarkan untuk 1000ms. Pengguna harus mengirimkan byte pertama dalam 1000ms.
Pertama -tama kita harus memperkenalkan metode yang sederhana tapi bermanfaat untuk memeriksa apakah ada sesuatu yang ada di buffer penerima
int available ();Ini hanya mengembalikan berapa banyak byte yang Anda miliki di aliran saat ini.
Mode transmisi normal/transparan digunakan untuk mengirim pesan ke semua perangkat dengan alamat dan saluran yang sama.
Lora E22 Skenario pengiriman, garis adalah saluran
Ada banyak metode untuk mengirim/menerima pesan, kami akan menjelaskan secara rinci:
ResponseStatus sendMessage ( const String message);ResponseContainer receiveMessage ();Metode pertama adalah SendMessage dan digunakan untuk mengirim string ke perangkat dalam mode normal .
ResponseStatus rs = e22ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());Perangkat lain cukup lakukan di loop
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);
}Jika Anda ingin mengirim strucuture yang kompleks, Anda dapat menggunakan metode ini
ResponseStatus sendMessage ( const void *message, const uint8_t size);
ResponseStructContainer receiveMessage ( const uint8_t size);Ini digunakan untuk mengirim strucutre, misalnya:
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());dan sisi lain Anda dapat menerima pesannya
ResponseStructContainer rsc = e22ttl.receiveMessage( sizeof (Messaggione));
struct Messaggione messaggione = *(Messaggione*) rsc.data;
Serial.println(messaggione.message);
Serial.println(messaggione.mitico);Jika Anda ingin membaca bagian pertama dari pesan untuk mengelola lebih banyak jenis strucutre, Anda dapat menggunakan metode ini.
ResponseContainer receiveInitialMessage ( const uint8_t size);Saya membuatnya untuk menerima string dengan jenis atau lainnya untuk mengidentifikasi strucuture yang akan dimuat.
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;Dengan cara yang sama saya membuat satu set metode untuk digunakan dengan transmisi tetap
Anda hanya perlu mengubah metode pengiriman, karena perangkat tujuan tidak menerima pembukaan dengan alamat dan saluran.
Jadi untuk pesan string yang Anda miliki
ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const String message);
ResponseStatus sendBroadcastFixedMessage (byte CHAN, const String message);Dan untuk struktur yang Anda miliki
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 );Di sini contoh sederhana
ResponseStatus rs = e22ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e22ttl.sendFixedMessage(0, 0, 0x17, "Ciao");Pemasangan transmisi memiliki lebih banyak skenario
Lora E22 Skenario pengiriman, garis adalah saluran
Jika Anda mengirim ke perangkat tertentu (skenario kedua transmisi tetap), Anda harus menambahkan addl, addh dan chan untuk mengidentifikasinya secara langsung.
ResponseStatus rs = e22ttl.sendFixedMessage( 2 , 2 , 0x17 , " Message to a device " );Jika Anda ingin mengirim pesan ke semua perangkat di saluran tertentu, Anda dapat menggunakan metode ini.
ResponseStatus rs = e22ttl.sendBroadcastFixedMessage( 0x17 , " Message to a devices of a channel " ); Jika Anda ingin menerima semua pesan siaran di jaringan, Anda harus mengatur ADDH dan ADDL Anda dengan 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();### Konfigurasi Nirkabel
Perangkat ini mendukung konfigurasi nirkabel dengan perintah sepesia, tetapi tampaknya tidak berfungsi, saya meminta Ebyte tetapi tidak ada tanggapan yang diterima.
Saya menerapkan perintah yang mengirim paket dengan cara yang benar (diuji dengan logika analisis) tetapi tampaknya tidak berfungsi.
Ngomong -ngomong, pertama -tama Anda Muset mengaktifkan lingkungan kebisingan RSSI, daripada Anda dapat menggunakan perintah seperti itu:
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;Sekarang Anda memiliki semua informasi untuk melakukan pekerjaan Anda, tetapi saya pikir penting untuk menunjukkan beberapa contoh yang realistis untuk membatalkan dan lebih baik semua kemungkinan.
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Pengaturan dan Penggunaan Dasar
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Perpustakaan
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Konfigurasi
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Transmisi Tetap dan RSSI
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Penghematan Daya dan Pengiriman Data Terstruktur
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Mode Repeater dan Pengaturan Jarak Jauh
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: Wor Microcontroller dan Arduino Shield
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: WOR Microcontroller dan Wemos D1 Shield
Perangkat Ebyte Lora E22 untuk Arduino, ESP32 atau ESP8266: WOR Microcontroller dan ESP32 Dev V1 Shield