Lora-RF Python是使用Semtech SX126X系列,SX127X系列或LLCC68的Lora模块的基本传输和接收数据的库。该图书馆通过将SPI端口和Linux内核下的一些GPIO引脚连接起来。支持配置频率,调制参数,传输功率,接收增益和其他RF参数在LORA和FSK调制上也支持使用中断信号处理和接收。
此读数是为快速入门指南编写的。访问此链接以获取完整的文档。
从理论上讲,使用SX126X系列(SX1261,SX1262,SX1268),SX127X系列(SX1272,SX1272,SX1276,SX1277,SX1277,SX1277,SX1278,SX1278,SX1279),或LLCC68将使用此库将使用此库。一些已经测试和确认兼容的LORA模块是:
目前,仅支持作为主机控制器支持的Raspberry Pi零,零W,3A,3B,3B,3B+,4A和4B。将来将添加对其他单板计算机的支持。已经使用此库测试的Linux发行版是:
为了连接到LORA模块,必须启用SPI端口。对于Raspberry Pi OS,这是通过使用Raspi-Config或Edit /boot/config.txt启用的SET SPI接口来完成的,通过添加以下行。
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要与图书馆合作,首先必须根据使用的Lora模块导入SX126x或SX127x Python模块。然后通过创建对象初始化模块。
# 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引脚。如果要使用中断操作,则可以连接DIO1 , DIO2或DIO3引脚之一。如果您的Lora模块有这些引脚,则还应连接TXEN和RXEN引脚。
默认的SPI端口使用总线ID 0和CS ID 0。用于连接到SX126X和带有Broadcom Pin编号的SX126X和SX127X的默认GPIO引脚如下。
| Semtech SX126X | Semtech SX127X | 覆盆子pi |
|---|---|---|
| VCC | VCC | 3.3V |
| gnd | gnd | gnd |
| SCK | SCK | GPIO 11 |
| 味o | 味o | GPIO 9 |
| 莫西 | 莫西 | GPIO 10 |
| NSS | NSS | GPIO 8 |
| 重置 | 重置 | GPIO 22 |
| 忙碌的 | GPIO 23 | |
| dio1 | dio1 | -1(未使用) |
| txen | txen | -1(未使用) |
| rxen | rxen | -1(未使用) |
在begin()方法之前,要配置SPI端口或SPI频率调用setSPI()方法。
# 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,RESET,忙,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设备同步Word。
# 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()方法来写入包,以将其tansmtmmitemant()方法用Cally endPacket()方法结束。例如,传输“ Helora World!”消息和增量计数器您可以使用以下代码。