مكتبة Arduino Lora-RF المستخدمة في نقل واستلام البيانات باستخدام وحدة LORA مع سلسلة SMTECH SX126X أو SX127X Series أو LLCC68. تعمل المكتبة عن طريق تواصل منفذ SPI وبعض دبابيس الإدخال/الإخراج. دعم تكوين التردد ، ومعلمة التعديل ، وقوة الإرسال ، وتلقي الكسب وغيرها من معلمات RF على كل من تعديل LORA و FSK يدعم أيضًا معالجة الإرسال والاستقبال باستخدام إشارة المقاطعة.
هذا ReadMe مكتوب لدليل البدء السريع. قم بزيارة هذا الرابط للحصول على الوثائق الكاملة.
من الناحية النظرية جميع وحدات LORA باستخدام سلسلة SX126X (SX1261 ، SX1262 ، SX1268) ، SX127X Series (SX1272 ، SX1276 ، SX1277 ، SX1278 ، SX1279) أو LLCC68 القابلة للتكوين باستخدام هذه المكتبة. لوحة تطوير Arduino Lora التي تتفاعل باستخدام SPI إلى وحدة Lora متوافقة أيضًا نظريًا.
بعض وحدة Lora التي اختبرت بالفعل وتوافقها هي:
يرجى ملاحظة أن وحدات Lora تستخدم 3.3V لمنافذ إمدادات الطاقة ومنافذ I/O. يجب أن يتم اتخاذ الرعاية لتوصيل 5V Arduino بوحدة Lora.
Sketch -> Include Library -> Manage Libraries...LoRaRF في مربع البحث.LoRaRF بواسطة Chandra Wijaya.Install لتثبيت المكتبة. فتح المحطة الطرفية ، أو git bash ، أو موجه الأوامر في مجلد مكتبة Arduino ثم قم بتشغيل الأمر التالي. مجلد المكتبة الافتراضي لنظام التشغيل Windows هو C:Users{username}DocumentsArduino و Linux هو ~/Documents/Arduino/libraries/ .
git clone https://github.com/chandrawi/LoRaRF-Arduino.git للعمل مع المكتبة ، يجب عليك أولاً تضمين رأس SX126x أو رأس SX127x اعتمادًا على وحدة LORA التي تستخدمها. لشاشة LLCC68 تشمل رأس SX126X. ثم تهيئة الفئة في الرأس عن طريق إنشاء كائن.
// for SX126x series or LLCC68
# include < SX126x.h >
SX126x LoRa;
// for SX127x series
# include < SX127x.h >
SX127x LoRa; قبل استدعاء أي طرق تكوين ، قم بعمل عملية الإرسال أو استلامك ، يجب عليك الاتصال begin() . يمكنك استدعاء الطريقة begin() داخل وظيفة Arduino setup() .
void setup () {
LoRa. begin ();
// configuration code goes here
}
void loop () {
// transmit and receive operation goes here
} يجب توصيل دبابيس الطاقة ، ودبابيس SPI ، ودبوس RESET بين وحدة Arduino و Lora. بالنسبة لسلسلة SX126X و LLCC68 ، يجب أيضًا توصيل دبوس BUSY . إذا كنت ترغب في استخدام عملية المقاطعة ، فيمكنك توصيل DIO0 لسلسلة SX127x وواحدة من DIO1 أو DIO2 أو DIO3 لسلسلة SX126X. يجب عليك أيضًا توصيل دبابيس TXEN و RXEN إذا كانت وحدة Lora الخاصة بك تحتوي على تلك المسامير.
دبابيس Arduino الافتراضية المستخدمة للاتصال بـ SX126x و SX127X هي كما يلي.
| Semtech SX126X | Semtech SX127X | أردوينو |
|---|---|---|
| VCC | VCC | 3.3V |
| GND | GND | GND |
| SCK | SCK | SCK |
| ميسو | ميسو | ميسو |
| موسي | موسي | موسي |
| NSS | NSS | 10 |
| إعادة ضبط | إعادة ضبط | 9 |
| مشغول | 4 | |
| DIO1 | DiO0 | -1 (غير مستخدم) |
| Txen | Txen | -1 (غير مستخدم) |
| Rxen | Rxen | -1 (غير مستخدم) |
لتغيير منفذ Arduino Default SPI أو طريقة استدعاء تردد SPI setSPI() قبل أن begin() طريقة.
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin(); لتكوين دبابيس الإدخال/الإخراج (NSS ، إعادة تعيين ، مشغول ، IRQ ، TXEN ، RXEN PIN) call setPins() قبل أن 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();قبل إرسال أو استقبال العملية ، يمكنك تكوين طاقة الإرسال وتلقي الكسب أو مطابقة التردد ، ومعلمة التعديل ، ومعلمة الحزمة ، ومزامنة كلمة مع جهاز LORA آخر تريد التواصل.
// 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 ); تبدأ عملية الإرسال باستخدام Method beginPacket() المتابعة بواسطة طريقة write() لكتابة الحزمة ليتم تمييزها وينتهي مع استدعاء طريقة endPacket() . على سبيل المثال ، لنقل "Helora World!" رسالة وعداد زيادة يمكنك استخدام الكود التالي.
// 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();لمزيد من التفاصيل حول عملية الإرسال ، يرجى زيارة هذا الرابط.
استقبال عملية البدء مع request() طريقة متابعة طريقة read() لقراءة الحزمة المستلمة. يمكن استخدام الطريقة available() للحصول على طول الحزمة المتبقية. على سبيل المثال ، لتلقي الرسائل ومكافحة في آخر بايت يمكنك استخدام الكود التالي.
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 byteلمزيد من التفاصيل حول عملية الاستلام ، يرجى زيارة هذا الرابط.
انظر أمثلة على SX126X و SX127X وتنفيذ الشبكة البسيطة.
Chandra Wijaya Sentosa <[email protected]>