O Lora-RF Python é uma biblioteca para transmitir e receber dados básicos usando o módulo LORA com a série SEMTECH SX126X, SX127X Series ou LLCC68. A biblioteca funciona com a porta SPI de interface e alguns pinos GPIO no kernel Linux. Suporte a frequência de configuração, parâmetro de modulação, energia de transmissão, ganho de receber e outros parâmetros de RF na modulação LORA e FSK também suportam o manuseio de transmissão e recebimento usando o sinal de interrupção.
Este readme está escrito para o Guia de Iniciação Quick. Visite este link para uma documentação completa.
Theoritically all LoRa modules using SX126x series (SX1261, SX1262, SX1268), SX127x series (SX1272, SX1276, SX1277, SX1278, SX1279), or LLCC68 will compatible using this library. Alguns módulos Lora que já testaram e confirmados compatíveis são:
Atualmente, apenas o Raspberry Pi Zero, Zero W, 3A, 3B, 3B+, 4A e 4B suportados como controlador host. O suporte a outro computador único da placa será adicionado no futuro. A distro Linux já testada usando esta biblioteca é:
Para se conectar a um módulo Lora, a porta SPI deve estar ativada. Para o Raspberry Pi OS, isso é feito pela interface SPI definida usando o Raspi-Config ou Edit /boot/config.txt adicionando a linha a seguir.
dtparam=spi=onUsando o comando de execução do terminal.
pip3 install LoRaRFPara usar a atualização mais recente da biblioteca, você pode clonar e criar o pacote Python manualmente. O uso deste método requer setUpTools e Module Wheel.
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 Para trabalhar com a biblioteca, primeiro você deve importar o módulo Python SX126x ou SX127x dependendo do módulo Lora que você usa. Em seguida, inicialize o módulo criando um objeto.
# for SX126x series or LLCC68
from LoRaRF import SX126x
LoRa = SX126x ()
# for SX127x series
from LoRaRF import SX127x
LoRa = SX127x () Antes de ligar para qualquer método de configuração, fazendo operação de transmissão ou recebimento, você deve ligar para o método begin() .
LoRa . begin () Pinos de potência, pinos SPI, RESET e pinos BUSY devem ser conectados entre o controlador host e o módulo Lora. Se você deseja usar operação de interrupção, pode conectar um dos pinos DIO1 , DIO2 ou DIO3 . Você também deve conectar os pinos TXEN e RXEN se o seu módulo Lora tiver esses pinos.
A porta SPI padrão está usando o ID 0 e o CS ID 0. Os pinos GPIO padrão usados para conectar -se a SX126X e SX127X com numeração de pinos Broadcom são os seguintes.
| Semtech SX126X | Semtech SX127X | Raspberry Pi |
|---|---|---|
| VCC | VCC | 3.3V |
| Gnd | Gnd | Gnd |
| Sck | Sck | GPIO 11 |
| Miso | Miso | GPIO 9 |
| Mosi | Mosi | GPIO 10 |
| NSS | NSS | GPIO 8 |
| REINICIAR | REINICIAR | GPIO 22 |
| OCUPADO | GPIO 23 | |
| Dio1 | Dio1 | -1 (não utilizado) |
| Txen | Txen | -1 (não utilizado) |
| Rxen | Rxen | -1 (não utilizado) |
Para configurar a porta SPI ou o método setSPI() de chamada SPI Antes de 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 () Para configurar os pinos de E/S (NSS, redefinir, ocupado, IRQ, TXEN, PIN RXEN) setPins() antes do método begin() .
# set RESET->22, BUSY->23, DIO1->26, TXEN->5, RXEN->25
LoRa . setPins ( 22 , 23 , 26 , 5 , 25 )
LoRa . begin ()Antes de transmitir ou receber operação, você pode configurar a energia de transmissão e receber ganho ou frequência correspondente, parâmetro de modulação, parâmetro de pacote e sincronizar a palavra com outro dispositivo LORA que você deseja comunicar.
# 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 ) A operação de transmissão começa com o método de beginPacket() CHAMADO () seguindo por write() para escrever o pacote para ser aproveitado e terminou com o método de endPacket() . Por exemplo, para transmitir "Helora World!" mensagem e um contador de incremento que você pode usar o seguinte código.