LORA-RF Python-это библиотека для базовых данных передачи и приема с использованием модуля LORA с серией SEMTECH SX126X, SX127X Series или LLCC68. Библиотека работает с помощью интерфейса порта SPI и некоторых контактов GPIO под ядром Linux. Поддержка настройки частоты, параметр модуляции, мощность передачи, усиление приема и другие радиочастотные параметры на модуляции LORA и FSK также поддерживают передачу обработки и приема с использованием сигнала прерывания.
Этот Readme написан для руководства быстрого начала. Посетите эту ссылку для полной документации.
Теоретически все модули LORA с использованием серии SX126X (SX1261, SX1262, SX1268), SX127X Series (SX1272, SX1276, SX1277, SX1278, SX1279), или LLCC68, будут совместимы с использованием этой библиотеки. Некоторым модулем LORA, который уже протестирован и подтвержденный совместимый:
В настоящее время только Raspberry Pi Zero, Zero W, 3a, 3b, 3b+, 4a и 4b поддерживается в качестве контроллера хоста. Поддержка другого односостого компьютера будет добавлена в будущем. Дистриблент Linux уже протестирован с использованием этой библиотеки:
Чтобы подключиться к модулю LORA, порт SPI должен быть включен. Для ОС Raspberry Pi это делается с помощью SET Interface Interface Interface с использованием Raspi-config или edit /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 Чтобы работать с библиотекой, сначала вы должны импортировать модуль SX126x или SX127x Python в зависимости от модуля 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 . Вы также должны подключить TXEN и RXEN Pins, если у вашего модуля Lora есть эти булавки.
Порт SPI по умолчанию использует идентификатор шины 0 и CS ID 0. Пыночки GPIO по умолчанию, используемые для подключения к SX126X и SX127X с нумерацией выводов Broadcom, следующие.
| Semtech SX126X | Semtech SX127X | Raspberry Pi |
|---|---|---|
| Венчурной | Венчурной | 3,3 В. |
| Гнездо | Гнездо | Гнездо |
| 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 (неиспользованный) |
Для настройки метода порта 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 () Для настройки контактов ввода/вывода (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!" Сообщение и счетчик приращения. Вы можете использовать следующий код.