LORA-RF Python เป็นไลบรารีสำหรับการส่งและรับข้อมูลขั้นพื้นฐานโดยใช้โมดูล LORA ด้วยซีรีส์ Semtech SX126X, SX127X Series หรือ LLCC68 ห้องสมุดทำงานโดยการเชื่อมต่อพอร์ต SPI และหมุด GPIO บางส่วนภายใต้เคอร์เนล Linux รองรับการกำหนดค่าความถี่พารามิเตอร์การมอดูเลตส่งกำลังรับรับและพารามิเตอร์ RF อื่น ๆ ทั้งในการมอดูเลต LORA และ FSK ยังรองรับการส่งการส่งและรับโดยใช้สัญญาณขัดจังหวะ
readme นี้เขียนขึ้นสำหรับคู่มือเริ่มต้นอย่างรวดเร็ว เยี่ยมชมลิงค์นี้สำหรับเอกสารที่สมบูรณ์
ในทางทฤษฎีโมดูล LORA ทั้งหมดโดยใช้ SX126X Series (SX1261, SX1262, SX1268), ซีรีย์ SX127X (SX1272, SX1276, SX1277, SX1278, SX1279) โมดูล LORA บางตัวที่ทดสอบแล้วและยืนยันได้แล้วคือ:
ปัจจุบัน Raspberry Pi Zero, Zero W, 3A, 3B, 3B+, 4A และ 4B รองรับเป็นตัวควบคุมโฮสต์ การสนับสนุนสำหรับคอมพิวเตอร์บอร์ดเครื่องเดียวจะถูกเพิ่มในอนาคต linux distro ที่ทดสอบแล้วโดยใช้ไลบรารีนี้คือ:
ในการเชื่อมต่อกับโมดูล LORA ต้องเปิดใช้งานพอร์ต SPI สำหรับ Raspberry Pi OS สิ่งนี้ทำได้โดย SET SPI Interface เปิดใช้งานโดยใช้ Raspi-Config หรือแก้ไข /boot/config.txt โดยการเพิ่มบรรทัดต่อไปนี้
dtparam=spi=onใช้คำสั่ง terminal run ต่อไปนี้
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 PIN คุณควรเชื่อมต่อหมุด TXEN และ RXEN หากโมดูล LORA ของคุณมีพินเหล่านั้น
พอร์ต SPI เริ่มต้นใช้ Bus ID 0 และ CS ID 0 พิน GPIO เริ่มต้นที่ใช้สำหรับการเชื่อมต่อกับ SX126X และ SX127X พร้อมหมายเลข PIN Broadcom มีดังนี้
| Semtech SX126X | Semtech SX127X | Raspberry Pi |
|---|---|---|
| VCC | VCC | 3.3V |
| gnd | gnd | gnd |
| SCK | SCK | gpio 11 |
| มิโซะ | มิโซะ | GPIO 9 |
| Mosi | Mosi | 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 () ในการกำหนดค่าพิน I/O (NSS, รีเซ็ต, ไม่ว่าง, IRQ, TXEN, RXEN PIN) 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 ) การส่งผ่านเริ่มต้นด้วยวิธีการเรียก beginPacket() วิธีการต่อไปนี้โดยวิธี write() เพื่อเขียนแพ็คเกจเพื่อให้ได้วิธีการแทนและจบลงด้วยวิธีการโทร endPacket() ตัวอย่างเช่นเพื่อส่ง "Helora World!" ข้อความและตัวนับเพิ่มคุณสามารถใช้รหัสต่อไปนี้