Lora-Rf Python es una biblioteca para la transmisión básica de transmisión y recepción de datos utilizando el módulo Lora con la serie SEMTech SX126X, la serie SX127X o LLCC68. La biblioteca funciona interfaciendo el puerto SPI y algunos pasadores GPIO bajo el núcleo Linux. Admite la configuración de la frecuencia, el parámetro de modulación, la potencia de transmisión, la ganancia de recepción y otros parámetros de RF en la modulación Lora y FSK también admite la transmisión y la recepción de la señal de interrupción.
Este readMe está escrito para la guía de inicio rápido. Visite este enlace para obtener documentación completa.
Teóricamente, todos los módulos LORA utilizando la serie SX126X (SX1261, SX1262, SX1268), la serie SX127X (SX1272, SX1276, SX1277, SX1278, SX1279), o LLCC68 será compatible usando esta biblioteca. Algunos módulos Lora que ya probaron y confirmaron compatibles son:
Actualmente, solo Raspberry Pi Zero, Zero W, 3A, 3B, 3B+, 4A y 4B admite como controlador de host. El soporte para otra computadora de una sola computadora se agregará en el futuro. La distribución de Linux ya probada usando esta biblioteca es:
Para conectarse a un módulo Lora, el puerto SPI debe estar habilitado. Para Raspberry Pi OS, esto se realiza mediante la interfaz SPI SPI Habilitar usando Raspi-Config o Edit /boot/config.txt agregando la siguiente línea.
dtparam=spi=onUso de la terminal Ejecutar siguiendo el comando.
pip3 install LoRaRFPara usar la última actualización de la biblioteca, puede clonar y luego construir el paquete Python manualmente. El uso de este método requiere setuptools y módulo de rueda.
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 trabajar con la biblioteca, primero debe importar el módulo Python SX126x o SX127x dependiendo del módulo Lora que use. Luego inicialice el módulo creando un objeto.
# for SX126x series or LLCC68
from LoRaRF import SX126x
LoRa = SX126x ()
# for SX127x series
from LoRaRF import SX127x
LoRa = SX127x () Antes de llamar a los métodos de configuración, la operación de transmisión o recepción debe llamar al método begin() .
LoRa . begin () Los pasadores de potencia, los pasadores SPI, RESET y los alfileres BUSY deben conectarse entre el controlador host y el módulo Lora. Si desea utilizar la operación de interrupción, puede conectar uno de PIN DIO1 , DIO2 o DIO3 . También debe conectar pines TXEN y RXEN si su módulo Lora tiene esos alfileres.
El puerto SPI predeterminado está utilizando el ID de bus de bus y la ID de CS 0. Los pines GPIO predeterminados utilizados para conectarse a SX126X y SX127X con la numeración del pin de Broadcom son los siguientes.
| Semtech sx126x | Semtech sx127x | Frambuesa 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 (sin usar) |
| Txen | Txen | -1 (sin usar) |
| Rxen | Rxen | -1 (sin usar) |
Para configurar el puerto SPI o el método de llamadas de frecuencia SPI setSPI() antes de begin() el método.
# 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 pines de E/S (NSS, Restablecer, ocupado, IRQ, TXEN, PIN RXEN) setPins() antes del 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 o recibir operación, puede configurar la alimentación de transmisión y recibir ganancia o frecuencia de coincidencia, parámetro de modulación, parámetro de paquete y sincronizar Word con otro dispositivo Lora que desea 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 ) Operación de transmisión Comience con llamar al método beginPacket() siguiendo mediante el método write() para escribir el paquete para ser tansmitido y terminado con el método de callar endPacket() . Por ejemplo, para transmitir "Helora World!" mensaje y un contador de incrementos que puede usar el siguiente código.