LORA-RF Python은 Semtech SX126X 시리즈, SX127X 시리즈 또는 LLCC68을 사용하여 LORA 모듈을 사용하여 기본 전송 및 수신 데이터를위한 라이브러리입니다. 라이브러리는 Linux 커널 아래 SPI 포트와 일부 GPIO 핀을 인터페이스하여 작동합니다. 지원 주파수, 변조 매개 변수, 전송 전력, 게인 수신 및 기타 RF 파라미터 구성 LORA 및 FSK 변조도 지원 처리 및 인터럽트 신호를 사용하여 처리 및 수신을 지원합니다.
이 readme는 빠른 시작 가이드를 위해 작성되었습니다. 전체 문서를 보려면이 링크를 방문하십시오.
이론적으로 SX126X 시리즈 (SX1261, SX1262, SX1268), SX127X 시리즈 (SX1272, SX1276, SX1277, SX1278, SX1279) 또는 LLCC68을 사용하는 모든 LORA 모듈은이 라이브러리를 사용하여 포괄적입니다. 이미 테스트하고 확인 된 일부 LORA 모듈은 다음과 같습니다.
현재 Raspberry Pi Zero, Zero W, 3A, 3B, 3B+, 4A 및 4B만이 호스트 컨트롤러로 지원됩니다. 다른 단일 보드 컴퓨터에 대한 지원은 향후 추가 될 것입니다. 이 라이브러리를 사용하여 이미 테스트 된 Linux 배포판은 다음과 같습니다.
LORA 모듈에 연결하려면 SPI 포트를 활성화해야합니다. Raspberry Pi OS의 경우 이는 SET SPI 인터페이스를 사용하여 RASPI-CONFIG를 사용하거나 다음 줄을 추가하여 편집 /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 라이브러리에서 작업하려면 먼저 사용하는 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 핀은 호스트 컨트롤러와 LORA 모듈 사이에 연결해야합니다. 인터럽트 작업을 사용하려면 DIO1 , DIO2 또는 DIO3 핀 중 하나를 연결할 수 있습니다. LORA 모듈에 핀이있는 경우 TXEN 및 RXEN 핀을 연결해야합니다.
기본 SPI 포트는 버스 ID 0 및 CS ID 0을 사용하고 있습니다. Broadcom 핀 번호가있는 SX126X 및 SX127X에 연결하는 데 사용되는 기본 GPIO 핀은 다음과 같습니다.
| 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 (미사용) |
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 PIN (NSS, RESET, BUDY, 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 ) write ( beginPacket() 메서드가 다음에 따르는 write() 메소드로 writing 패키지를 작성하여 write () 메소드를 따라 calling endPacket() 메소드를 호출하는 작업을 시작합니다. 예를 들어, "Helora World!" 메시지 및 증분 카운터 다음 코드를 사용할 수 있습니다.