Lora-RF Python هي مكتبة للبيانات ذات الإرسال والاستلام الأساسي باستخدام وحدة LORA مع سلسلة SMTECH SX126X أو SX127X Series أو LLCC68. تعمل المكتبة عن طريق توصيل منفذ SPI وبعض دبابيس GPIO تحت Kernel Linux. دعم تكوين التردد ، ومعلمة التعديل ، وقوة الإرسال ، والاستلام الكسب وغيرها من معلمات RF على كل من تعديل LORA و FSK يدعم أيضًا معالجة الإرسال واستلامها باستخدام إشارة المقاطعة.
هذا ReadMe مكتوب لدليل البدء السريع. قم بزيارة هذا الرابط للحصول على الوثائق الكاملة.
من الناحية النظرية جميع وحدات LORA باستخدام سلسلة SX126X (SX1261 ، SX1262 ، SX1268) ، SX127X Series (SX1272 ، SX1276 ، SX1277 ، SX1278 ، SX1279) أو LLCC68 القابلة للتكوين باستخدام هذه المكتبة. بعض وحدة Lora التي اختبرت بالفعل وتوافقها هي:
حاليًا فقط Raspberry Pi Zero و Zero W و 3A و 3B و 3B+و 4A و 4B مدعوم كوحدة تحكم مضيفة. سيتم إضافة دعم كمبيوتر لوح واحد آخر في المستقبل. توزيعة Linux التي تم اختبارها بالفعل باستخدام هذه المكتبة هي:
من أجل الاتصال بوحدة Lora ، يجب تمكين منفذ SPI. بالنسبة إلى Raspberry PI OS ، يتم ذلك عن طريق تعيين واجهة SET SPI باستخدام Raspi-Config أو Edit /boot/config.txt بإضافة السطر التالي.
dtparam=spi=onباستخدام أمر التشغيل الطرفي التالي.
pip3 install LoRaRFلاستخدام آخر تحديث للمكتبة ، يمكنك استنساخ حزمة Python يدويًا. باستخدام هذه الطريقة يتطلب setuptools ووحدة العجلات.
git clone https://github.com/chandrawi/LoRaRF-Python.git
cd LoRaRF-Python
python3 setup.py bdist_wheel
pip3 install dist/LoRaRF-1.4.0-py3-none-any.whlpython -m venv lora
source lora/bin/activate
pip install LoRaRF للعمل مع المكتبة ، يجب عليك أولاً استيراد وحدة Python SX126x أو SX127x اعتمادًا على وحدة LORA التي تستخدمها. ثم تهيئة الوحدة عن طريق إنشاء كائن.
# for SX126x series or LLCC68
from LoRaRF import SX126x
LoRa = SX126x ()
# for SX127x series
from LoRaRF import SX127x
LoRa = SX127x () قبل استدعاء أي طرق تكوين ، قم بعمل عملية الإرسال أو استلامك ، يجب عليك الاتصال begin() .
LoRa . begin () يجب توصيل دبابيس الطاقة ، ودبابيس SPI ، RESET ، BUSY مشغول بين وحدة التحكم المضيفة ووحدة Lora. إذا كنت ترغب في استخدام عملية المقاطعة ، فيمكنك توصيل واحد من دبوس DIO1 أو DIO2 أو DIO3 . يجب عليك أيضًا توصيل دبابيس TXEN و RXEN إذا كانت وحدة Lora الخاصة بك تحتوي على تلك المسامير.
يستخدم منفذ SPI الافتراضي معرف BUS 0 و CS 0. دبابيس GPIO الافتراضية المستخدمة للاتصال بـ SX126x و SX127X مع ترقيم PIN BRODCOM هي كما يلي.
| Semtech SX126X | Semtech SX127X | التوت بي |
|---|---|---|
| VCC | VCC | 3.3V |
| GND | GND | GND |
| SCK | SCK | GPIO 11 |
| ميسو | ميسو | GPIO 9 |
| موسي | موسي | GPIO 10 |
| NSS | NSS | GPIO 8 |
| إعادة ضبط | إعادة ضبط | GPIO 22 |
| مشغول | GPIO 23 | |
| DIO1 | DIO1 | -1 (غير مستخدم) |
| Txen | Txen | -1 (غير مستخدم) |
| Rxen | Rxen | -1 (غير مستخدم) |
لتكوين منفذ SPI أو SPI لتكرار الاتصال setSPI() قبل طريقة begin() .
# set to use SPI with bus id 0 and cs id 1 and speed 7.8 Mhz
LoRa . setSPI ( 0 , 0 , 7800000 )
LoRa . begin () لتكوين دبابيس الإدخال/الإخراج (NSS ، إعادة تعيين ، مشغول ، IRQ ، TXEN ، RXEN PIN) call setPins() قبل أن begin() طريقة.
# set RESET->22, BUSY->23, DIO1->26, TXEN->5, RXEN->25
LoRa . setPins ( 22 , 23 , 26 , 5 , 25 )
LoRa . begin ()قبل إرسال أو استقبال العملية ، يمكنك تكوين طاقة الإرسال وتلقي الكسب أو مطابقة التردد ، ومعلمة التعديل ، ومعلمة الحزمة ، ومزامنة كلمة مع جهاز LORA آخر تريد التواصل.
# set transmit power to +22 dBm for SX1262
LoRa . setTxPower ( 22 , LoRa . TX_POWER_SX1262 ) # set receive gain to power saving
LoRa . setRxGain ( LoRa . RX_GAIN_POWER_SAVING ) # 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!" رسالة وعداد زيادة يمكنك استخدام الكود التالي.