Perpustakaan Arduino Lora-RF yang digunakan untuk mentransmisikan dan menerima data menggunakan modul LORA dengan seri Semtech SX126X, seri SX127X, atau LLCC68. Perpustakaan berfungsi dengan menghubungkan port SPI dan beberapa pin I/O. Dukungan untuk mengkonfigurasi frekuensi, parameter modulasi, daya transmisi, menerima gain dan parameter RF lainnya pada modulasi LORA dan FSK juga mendukung untuk menangani pengiriman dan menerima menggunakan sinyal interupsi.
Readme ini ditulis untuk Panduan Mulai Cepat. Kunjungi tautan ini untuk dokumentasi lengkap.
Secara teoritis semua modul LORA menggunakan seri SX126X (SX1261, SX1262, SX1268), SX127X Series (SX1272, SX1276, SX1277, SX1278, SX1279), atau LLCC68 akan mengompatibel. Papan Pengembangan Arduino Lora yang dihubungkan menggunakan SPI ke modul LORA juga kompatibel secara teori.
Beberapa modul Lora yang sudah diuji dan dikonfirmasi kompatibel adalah:
Harap dicatat bahwa modul LORA menggunakan 3.3V untuk catu daya dan port I/O. CARE Wajib saya dapat menghubungkan Modul 5V Arduino ke Lora.
Sketch -> Include Library -> Manage Libraries...LoRaRF ke dalam kotak pencarian.LoRaRF oleh Chandra Wijaya.Install untuk menginstal perpustakaan. Buka Terminal, Git Bash, atau Prompt Perintah di Folder Perpustakaan Arduino kemudian jalankan perintah berikut. Folder Perpustakaan Default untuk Windows adalah C:Users{username}DocumentsArduino dan untuk Linux adalah ~/Documents/Arduino/libraries/ .
git clone https://github.com/chandrawi/LoRaRF-Arduino.git Untuk bekerja dengan perpustakaan, pertama -tama Anda harus menyertakan header SX126x atau header SX127x tergantung pada modul LORA yang Anda gunakan. Untuk LLCC68 termasuk header SX126X. Kemudian inisialisasi kelas di header dengan membuat objek.
// for SX126x series or LLCC68
# include < SX126x.h >
SX126x LoRa;
// for SX127x series
# include < SX127x.h >
SX127x LoRa; Sebelum memanggil metode konfigurasi apa pun, melakukan operasi pengiriman atau menerima, Anda harus memanggil metode begin() . Anda dapat menghubungi metode begin() di dalam fungsi Arduino setup() .
void setup () {
LoRa. begin ();
// configuration code goes here
}
void loop () {
// transmit and receive operation goes here
} Pin daya, pin SPI, dan pin RESET harus dihubungkan antara modul Arduino dan Lora. Untuk seri SX126X dan LLCC68, pin BUSY juga harus dihubungkan. Jika Anda ingin menggunakan operasi interupsi, Anda dapat menghubungkan DIO0 untuk seri SX127X dan salah satu dari DIO1 , DIO2 , atau DIO3 PIN untuk seri SX126X. Anda juga harus menghubungkan pin TXEN dan RXEN jika modul LORA Anda memiliki pin itu.
Pin Arduino default yang digunakan untuk menghubungkan ke SX126X dan SX127X adalah sebagai berikut.
| Semtech SX126X | Semtech SX127X | Arduino |
|---|---|---|
| Vcc | Vcc | 3.3v |
| Gnd | Gnd | Gnd |
| Sck | Sck | Sck |
| Miso | Miso | Miso |
| Mosi | Mosi | Mosi |
| NSS | NSS | 10 |
| MENGATUR ULANG | MENGATUR ULANG | 9 |
| SIBUK | 4 | |
| Dio1 | Dio0 | -1 (tidak digunakan) |
| Txen | Txen | -1 (tidak digunakan) |
| Rxen | Rxen | -1 (tidak digunakan) |
Untuk mengubah metode SPI Default Arduino atau metode Panggilan Frekuensi SPI setSPI() sebelum begin() metode.
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin(); Untuk mengonfigurasi pin I/O (NSS, Reset, Sibuk, IRQ, TXEN, PIN RXEN) Metode panggilan setPins() sebelum begin() .
// set NSS->10, RESET->9, BUSY->4, DIO1->2, TXEN->8, RXEN->7 for SX126x series
LoRa.setPins( 10 , 9 , 2 , 4 , 8 , 7 );
// set NSS->10, RESET->9, DIO0->2, TXEN->8, RXEN->7 for SX127x series
LoRa.setPins( 10 , 9 , 2 , 8 , 7 );
LoRa.begin();Sebelum mengirimkan atau menerima operasi, Anda dapat mengkonfigurasi daya transmisi dan menerima gain atau frekuensi pencocokan, parameter modulasi, parameter paket, dan menyinkronkan kata dengan perangkat LORA lain yang ingin Anda komunikasikan.
// set transmit power to +22 dBm for SX1262
LoRa.setTxPower( 22 , SX126X_TX_POWER_SX1262);
// set transmit power to +20 dBm for SX127x series using boost pin
LoRa.setTxPower( 20 , SX127X_TX_POWER_PA_BOOST); // set receive gain to power saving
LoRa.setRxGain(LORA_RX_GAIN_POWER_SAVING);
// set receive gain to boosted and AGC on for SX127x series
LoRa.setRxGain(LORA_RX_GAIN_BOOSTED, true ); // Set frequency to 915 Mhz
LoRa.setFrequency( 915000000 ); // set spreading factor 8, bandwidth 125 kHz, coding rate 4/5, and low data rate optimization off
LoRa.setLoRaModulation( 8 , 125000 , 5 , false ); // set explicit header mode, preamble length 12, payload length 15, CRC on and no invert IQ operation
LoRa.setLoRaPacket(LORA_HEADER_EXPLICIT, 12 , 15 , true , false ); // Set syncronize word for public network (0x3444)
LoRa.setSyncWord( 0x3444 ); Metode Operasi Transmit Mulai Dengan Memanggil Metode beginPacket() Mengikuti oleh write() Metode untuk Menulis Paket yang akan ditulis dan diakhiri dengan metode panggilan endPacket() . Misalnya, untuk mengirimkan "Dunia Helora!" Pesan dan penghitung kenaikan Anda dapat menggunakan kode berikut.
// message and counter to transmit
char message[] = " HeLoRa World! " ;
uint8_t counter = 0 ;
LoRa.beginPacket();
LoRa.write(message, sizeof (message)); // write multiple bytes
LoRa.write(counter++); // write single byte
LoRa.endPacket();
LoRa.wait();Untuk detail lebih lanjut tentang operasi pengiriman, silakan kunjungi tautan ini.
Menerima operasi mulai dengan metode panggilan panggilan request() berikut dengan metode read() untuk membaca paket yang diterima. Metode available() dapat digunakan untuk mendapatkan panjang paket yang tersisa. Misalnya, untuk menerima pesan dan penghitung dalam byte terakhir Anda dapat menggunakan kode berikut.
LoRa.request();
LoRa.wait();
// get message and counter in last byte
const uint8_t length = LoRa.available() - 1 ;
char message[length];
uint8_t i= 0 ;
while (LoRa.available() > 1 ){
message[i++] = LoRa. read (); // read multiple bytes
}
uint8_t counter = LoRa.read(); // read single byteUntuk detail lebih lanjut tentang operasi penerimaan, silakan kunjungi tautan ini.
Lihat contoh untuk implementasi jaringan SX126X, SX127X, dan sederhana.
Chandra Wijaya Sentosa <[email protected]>