

Arduino Uno Shield
Anda dapat memesan PCB di sini
Video Instruksi dan Perakitan di 6 bagian dari panduan ini
Wemos D1 Shield
Anda dapat memesan PCB di sini
ESP32 SHIELD
Anda dapat memesan PCB di sini
Video Instruksi dan Perakitan di 6 bagian dari panduan ini
Saya membuat perpustakaan untuk mengelola perangkat Ebyte E32 perangkat Lora, perangkat yang sangat kuat, sederhana dan murah.
Lora E32-TTL-100
Anda dapat menemukan di sini AliExpress (perangkat 3km) AliExpress (perangkat 8km)
Mereka dapat bekerja lebih dari jarak 3000m hingga 8000m, dan mereka memiliki banyak fitur dan parameter.
Jadi saya membuat perpustakaan ini untuk menyederhanakan penggunaan.
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_E32 yang tidak terkompresi.
Periksa bahwa folder LORA_E32 berisi lora_e32.cpp dan lora_e32.h.
Tempatkan folder perpustakaan lora_e32 / pustaka / folder Anda.
Anda mungkin perlu membuat subfolder perpustakaan jika ini perpustakaan pertama Anda.
Mulai ulang IDE.
E32 TTL 100
Anda dapat membeli di sini AliExpress
| 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 | Untuk menunjukkan status kerja Modul & membangunkan MCU eksternal. Selama prosedur inisialisasi periksa sendiri, pin mengeluarkan level rendah. Dapat dikonfigurasi sebagai output orpush-tarik output drain terbuka (diizinkan diizinkan). |
| 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 bagus untuk digunakan |
| Wke-up | 0 | 1 | Sama seperti normal tetapi kode pembukaan ditambahkan ke data yang dikirimkan untuk membangunkan penerima. |
| Hemat daya | 1 | 0 | UART dinonaktifkan dan nirkabel ada di mode WOR (Wake on Radio) yang berarti perangkat akan menyala ketika ada data yang akan diterima. Transmisi tidak diperbolehkan. |
| Tidur | 1 | 1 | Digunakan dalam pengaturan parameter. Mentransmisikan dan menerima dinonaktifkan. |
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 e32 aux pada transmisi
Saat menerima aux menjadi rendah dan kembali tinggi saat buffer kosong.
Lora E32 Aux Pin pada Penerimaan
Ini juga digunakan untuk memeriksa sendiri untuk memulihkan operasi normal (pada mode power-on dan sleep/program).
Lora e32 aux pin pada pemeriksaan sendiri
Skema koneksi ESP8266 lebih sederhana karena bekerja pada tegangan komunikasi logis yang sama (3.3V).
Lora e32 ttl 100 wemos d1 terhubung sepenuhnya
Penting untuk menambahkan resistor pull-up (4,7kohm) untuk mendapatkan stabilitas yang baik.
| M0 | D7 |
|---|---|
| M1 | D6 |
| Rx | Pin D2 (pullup 4,7kΩ) |
| Tx | Pin D3 (pullup 4,7kΩ) |
| Aux | D5 (input) |
| 3.3v | 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 e32 ttl 100 arduino terhubung sepenuhnya
| M0 | 7 (pembagi tegangan) |
|---|---|
| M1 | 6 (pembagi tegangan) |
| Rx | Pin D2 (pullup 4,7kΩ & pembagi tegangan) |
| Tx | Pin D3 (pullup 4,7kΩ) |
| Aux | 5 (input) |
| Vcc | 3.3v |
| Gnd | Gnd |
Saya membuat satu set konstruktor yang cukup banyak, karena kami dapat memiliki lebih banyak pilihan dan situasi untuk dikelola.
LoRa_E32 (byte rxPin, byte txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (byte rxPin, byte txPin, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (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.
rxPin dan txPin 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).
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_E32.h "
LoRa_E32 e32ttl100 ( 2 , 3 ); // RX, TX
// LoRa_E32 e32ttl100(2, 3, 5, 6, 7); // RX, TXKita dapat menggunakan langsung softwareserial dengan konstruktor lain
LoRa_E32 (HardwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (HardwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (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_E32.h "
SoftwareSerial mySerial ( 2 , 3 ); // RX, TX
LoRa_E32 e32ttl100 (mySerial);
// LoRa_E32 e32ttl100(&mySerial, 5, 7, 6);Kumpulan konstruktor terakhir adalah mengizinkan menggunakan hardwareserial alih -alih softwareserial.
LoRa_E32 (SoftwareSerial* serial, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (SoftwareSerial* serial, byte auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);
LoRa_E32 (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
e32ttl100.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);
ResponseStatus resetModule ();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
E32_SUCCESS = 1 ,
ERR_E32_UNKNOWN,
ERR_E32_NOT_SUPPORT,
ERR_E32_NOT_IMPLEMENT,
ERR_E32_NOT_INITIAL,
ERR_E32_INVALID_PARAM,
ERR_E32_DATA_SIZE_NOT_MATCH,
ERR_E32_BUF_TOO_SMALL,
ERR_E32_TIMEOUT,
ERR_E32_HARDWARE,
ERR_E32_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 = e32ttl.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 = 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);Metode pertama adalah GetConfiguration, Anda dapat menggunakannya untuk memadamkan semua data yang disimpan pada perangkat.
ResponseStructContainer getConfiguration ();Di sini contoh penggunaan.
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);
Serial.println(configuration.SPED.getUARTBaudRate());Struktur konfigurasi memiliki semua data pengaturan, dan saya menambahkan serangkaian fungsi untuk mendapatkan semua deskripsi data tunggal.
configuration.ADDL = 0x0 ; // First part of address
configuration.ADDH = 0x1 ; // Second part of address
configuration.CHAN = 0x19 ; // Channel
configuration.OPTION.fec = FEC_0_OFF; // Forward error correction switch
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // Transmission mode
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // Pull-up management
configuration.OPTION.transmissionPower = POWER_17; // dBm transmission power
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250; // Wait time for wake up
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48; // Air data rate
configuration.SPED.uartBaudRate = UART_BPS_115200; // Communication baud rate
configuration.SPED.uartParity = MODE_00_8N1; // Parity bitAnda memiliki fungsi yang setara untuk mendapatkan semua deskripsi:
Serial.print(F( " Chan : " )); Serial.print(configuration.CHAN, DEC); Serial.print( " -> " ); Serial.println(configuration.getChannelDescription());
Serial.println(F( " " ));
Serial.print(F( " SpeedParityBit : " )); Serial.print(configuration.SPED.uartParity, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTParityDescription());
Serial.print(F( " SpeedUARTDatte : " )); Serial.print(configuration.SPED.uartBaudRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getUARTBaudRate());
Serial.print(F( " SpeedAirDataRate : " )); Serial.print(configuration.SPED.airDataRate, BIN);Serial.print( " -> " ); Serial.println(configuration.SPED.getAirDataRate());
Serial.print(F( " OptionTrans : " )); Serial.print(configuration.OPTION.fixedTransmission, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFixedTransmissionDescription());
Serial.print(F( " OptionPullup : " )); Serial.print(configuration.OPTION.ioDriveMode, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getIODroveModeDescription());
Serial.print(F( " OptionWakeup : " )); Serial.print(configuration.OPTION.wirelessWakeupTime, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getWirelessWakeUPTimeDescription());
Serial.print(F( " OptionFEC : " )); Serial.print(configuration.OPTION.fec, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getFECDescription());
Serial.print(F( " OptionPower : " )); Serial.print(configuration.OPTION.transmissionPower, BIN);Serial.print( " -> " ); Serial.println(configuration.OPTION.getTransmissionPowerDescription());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 = 0x0 ;
configuration.ADDH = 0x1 ;
configuration.CHAN = 0x19 ;
configuration.OPTION.fec = FEC_0_OFF;
configuration.OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION;
configuration.OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS;
configuration.OPTION.transmissionPower = POWER_17;
configuration.OPTION.wirelessWakeupTime = WAKE_UP_1250;
configuration.SPED.airDataRate = AIR_DATA_RATE_011_48;
configuration.SPED.uartBaudRate = UART_BPS_115200;
configuration.SPED.uartParity = MODE_00_8N1;
// 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);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 | 00H-1FH |
|---|
PILIHAN
Jenis transmisi, pengaturan pull-up, waktu bangun, FEC, daya transmisi
UART Parity Bit: _Uart Mode dapat berbeda antara pihak komunikasi
| 7 | 6 | UART Parity Bit | Value Const | | --- | --- | --- | --- | --- | | 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.
| 5 | 43 | Ttl uart baud rate (bps) | Nilai konstan |
|---|---|---|---|
| 0 | 0 | 0 | 1200 |
| 0 | 0 | 1 | 2400 |
| 0 | 1 | 0 | 4800 |
| 0 | 1 | 1 | 9600 (default) |
| 1 | 0 | 0 | 19200 |
| 1 | 0 | 1 | 38400 |
| 1 | 1 | 0 | 57600 |
| 1 | 1 | 1 | 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 | 19.2k (sama dengan 101) | AIR_DATA_RATE_110_192 |
| 1 | 1 | 1 | 19.2k (sama dengan 101) | AIR_DATA_RATE_111_192 |
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.
| 7 | Memperbaiki bit pengaktifan transmisi (mirip dengan modbus) | Nilai konstan |
|---|---|---|
| 0 | Mode transmisi transparan | Ft_transparent_transmission |
| 1 | Memperbaiki mode transmisi | Ft_fixed_transmission |
IO Drive Mode: Bit ini digunakan untuk resistor pull-up internal modul. Ini juga meningkatkan kemampuan beradaptasi level jika terjadi pembuangan terbuka. Tetapi dalam beberapa kasus, mungkin perlu pull-up eksternal
penghambat.
| 6 | IO Drive Mode (Default 1) | Nilai konstan |
|---|---|---|
| 1 | Output txd dan aux push-pull, input pull-up RXD | IO_D_MODE_PUSH_PULLS_PULL_UPS |
| 0 | TXD 、 Output Open-Collector Aux, Input RXD Open-Collector | IO_D_MODE_OPEN_COLLECTORT |
Waktu bangun nirkabel: Modul Transmit & Recte bekerja dalam mode 0, yang waktu tundanya tidak valid & dapat berupa nilai sewenang-wenang, pemancar bekerja dalam mode 1 dapat mengirimkan kode preamble dari waktu yang sesuai secara terus menerus, ketika penerima bekerja dalam mode 2, waktu berarti waktu interval monitor (bangun nirkabel). Hanya data dari pemancar yang berfungsi dalam mode 1 yang bisa
diterima.
| 5 | 4 | 3 | Waktu bangun nirkabel | Nilai konstan |
|---|---|---|---|---|
| 0 | 0 | 0 | 250ms (default) | Wake_Up_250 |
| 0 | 0 | 1 | 500ms | Wake_up_500 |
| 0 | 1 | 0 | 750ms | Wake_up_750 |
| 0 | 1 | 1 | 1000ms | Wake_Up_1000 |
| 1 | 0 | 0 | 1250ms | Wake_Up_1250 |
| 1 | 0 | 1 | 1500ms | Wake_Up_1500 |
| 1 | 1 | 0 | 1750ms | Wake_Up_1750 |
| 1 | 1 | 1 | 2000ms | Wake_Up_2000 |
FEC: Setelah mematikan FEC, laju transmisi data aktual meningkat sementara kemampuan anti-gangguan berkurang. Juga jarak transmisi relatif pendek, kedua pihak komunikasi harus tetap pada halaman yang sama tentang turn-on atau turn-off FEC.
| 2 | Sakelar FEC | Nilai konstan |
|---|---|---|
| 0 | Matikan FEC | Fec_0_off |
| 1 | Nyalakan FEC (default) | Fec_1_on |
Daya transmisi
Anda dapat mengubah rangkaian konstanta ini dengan menerapkan define seperti itu:
# define E32_TTL_100 // default value without set Berlaku untuk E32-TTL-100, E32-TTL-100S1, E32-T100S2.
Daya eksternal harus memastikan kemampuan output saat ini lebih dari 250mA dan memastikan riak catu daya dalam 100mV.
Transmisi daya rendah tidak disarankan karena catu daya yang rendah
efisiensi.
# define E32_TTL_100 // default value without set| 1 | 0 | Daya transmisi (perkiraan) | Nilai konstan |
|---|---|---|---|
| 0 | 0 | 20dBm (default) | Power_20 |
| 0 | 1 | 17dbm | Power_17 |
| 1 | 0 | 14dbm | Power_14 |
| 1 | 1 | 10dbm | Power_10 |
Berlaku untuk E32-TTL-500。
Daya eksternal harus memastikan kemampuan output saat ini lebih dari 700mA dan memastikan riak catu daya dalam 100mV.
Transmisi daya rendah tidak dianjurkan karena efisiensi catu daya yang rendah.
# define E32_TTL_500| 1 | 0 | Daya transmisi (perkiraan) | Nilai konstan |
|---|---|---|---|
| 0 | 0 | 27dBm (default) | Power_27 |
| 0 | 1 | 24dbm | Power_24 |
| 1 | 0 | 21DBM | Power_21 |
| 1 | 1 | 18dbm | Power_18 |
Berlaku untuk E32-TTL-1W, E32 (433T30S), E32 (868T30S), E32 (915t30s)
Daya eksternal harus memastikan kemampuan output saat ini lebih dari 1A dan memastikan riak catu daya dalam 100mV.
Transmisi daya rendah tidak disarankan karena catu daya yang rendah
efisiensi.
# define E32_TTL_1W| 1 | 0 | Daya transmisi (perkiraan) | Nilai konstan |
|---|---|---|---|
| 0 | 0 | 30dbm (default) | Power_30 |
| 0 | 1 | 27dbm | Power_27 |
| 1 | 0 | 24dbm | Power_24 |
| 1 | 1 | 21DBM | Power_21 |
Anda dapat mengonfigurasi frekuensi saluran OLSO dengan define ini:
// One of
# define FREQUENCY_433
# define FREQUENCY_170
# define FREQUENCY_470
# define FREQUENCY_868
# define FREQUENCY_915Pertama -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 E32 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 = e32ttl.sendMessage( " Prova " );
Serial.println(rs.getResponseDescription());Perangkat lain cukup lakukan di loop
if (e32ttl.available() > 1 ){
ResponseContainer rs = e32ttl. 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 = e32ttl.sendMessage(&messaggione, sizeof (Messaggione));
Serial.println(rs.getResponseDescription());dan sisi lain Anda dapat menerima pesannya
ResponseStructContainer rsc = e32ttl.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 = e32ttl.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 = e32ttl.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 = e32ttl.sendFixedMessage( 0 , 0 , 0x17 , &messaggione, sizeof (Messaggione));
// ResponseStatus rs = e32ttl.sendFixedMessage(0, 0, 0x17, "Ciao");Pemasangan transmisi memiliki lebih banyak skenario
Lora E32 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 = e32ttl.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 = e32ttl.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 = 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 = BROADCAST_ADDRESS;
configuration.ADDH = BROADCAST_ADDRESS;
// 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);