Библиотека Arduino Lora-RF, используемая для передачи и получения данных с использованием модуля LORA с серией SemTech SX126X, SX127X-серии или LLCC68. Библиотека работает с помощью интерфейса порта SPI и некоторых контактов ввода/вывода. Поддержка настройки частоты, параметров модуляции, мощности передачи, усиления приема и других радиочастотных параметров на модуляции LORA и FSK также поддерживает для обработки передачи и приема с использованием сигнала прерывания.
Этот Readme написан для руководства быстрого начала. Посетите эту ссылку для полной документации.
Теоретически все модули LORA с использованием серии SX126X (SX1261, SX1262, SX1268), SX127X Series (SX1272, SX1276, SX1277, SX1278, SX1279), или LLCC68, будут совместимы с использованием этой библиотеки. Arduino Lora Development Board, которая соединялась с использованием SPI с модулем LORA, также теоретически совместимо.
Некоторым модулем LORA, который уже протестирован и подтвержденный совместимый:
Обратите внимание, что модули LORA используют 3,3 В для источника питания и портов ввода -вывода. Забота должна быть принята для подключения 5 В Ардуино с модулем LORA.
Sketch -> Include Library -> Manage Libraries...LoRaRF в поле поиска.LoRaRF от Чандры Виджая.Install , чтобы установить библиотеку. Открыть терминал, Git Bash или командная строка в папке библиотеки Arduino, затем запустите следующую команду. По умолчанию папку библиотеки для Windows IS C:Users{username}DocumentsArduino и для Linux - ~/Documents/Arduino/libraries/ .
git clone https://github.com/chandrawi/LoRaRF-Arduino.git Чтобы работать с библиотекой, сначала вы должны включить заголовок SX126x или заголовок SX127x в зависимости от модуля LORA, который вы используете. Для LLCC68 включают заголовок SX126X. Затем инициализируйте класс в заголовке, создав объект.
// for SX126x series or LLCC68
# include < SX126x.h >
SX126x LoRa;
// for SX127x series
# include < SX127x.h >
SX127x LoRa; Перед вызовом любых методов конфигурации, выполнения операции передачи или приема, вы должны вызовать метод begin() . Вы можете вызвать метод begin() внутри функции arduino setup() .
void setup () {
LoRa. begin ();
// configuration code goes here
}
void loop () {
// transmit and receive operation goes here
} Power Pins, SPI -штифты и сброс RESET должны быть подключены между модулем Arduino и Lora. Для серии SX126X и LLCC68 также должен быть подключен BUSY штифт. Если вы хотите использовать операцию прерывания, вы можете подключить DIO0 для серии SX127X и один из выводов DIO1 , DIO2 или DIO3 для серии SX126X. Вы также должны подключить TXEN и RXEN Pins, если у вашего модуля Lora есть эти булавки.
Выводы Arduino по умолчанию, используемые для подключения к SX126X и SX127X, следующие.
| Semtech SX126X | Semtech SX127X | Ардуино |
|---|---|---|
| Венчурной | Венчурной | 3,3 В. |
| Гнездо | Гнездо | Гнездо |
| SCK | SCK | SCK |
| Мисо | Мисо | Мисо |
| Моси | Моси | Моси |
| NSS | NSS | 10 |
| ПЕРЕЗАГРУЗИТЬ | ПЕРЕЗАГРУЗИТЬ | 9 |
| ЗАНЯТЫЙ | 4 | |
| Dio1 | Dio0 | -1 (неиспользованный) |
| Txen | Txen | -1 (неиспользованный) |
| Rxen | Rxen | -1 (неиспользованный) |
Чтобы изменить Arduino Default Port Port или метод частоты SPI setSPI() до begin() метода.
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin(); Для настройки контактов ввода/вывода (NSS, сброс, занятость, IRQ, TXEN, RXEN PIN) setPins() перед begin() методом.
// set NSS->10, RESET->9, BUSY->4, DIO1->2, TXEN->8, RXEN->7 for SX126x series
LoRa.setPins( 10 , 9 , 2 , 4 , 8 , 7 );
// set NSS->10, RESET->9, DIO0->2, TXEN->8, RXEN->7 for SX127x series
LoRa.setPins( 10 , 9 , 2 , 8 , 7 );
LoRa.begin();Перед передачей или приемом работы вы можете настроить мощность передачи и приема или частота сопоставления, параметр модуляции, параметр пакета и синхронизировать слово с другим устройством LORA, которое вы хотите, сообщили.
// set transmit power to +22 dBm for SX1262
LoRa.setTxPower( 22 , SX126X_TX_POWER_SX1262);
// set transmit power to +20 dBm for SX127x series using boost pin
LoRa.setTxPower( 20 , SX127X_TX_POWER_PA_BOOST); // set receive gain to power saving
LoRa.setRxGain(LORA_RX_GAIN_POWER_SAVING);
// set receive gain to boosted and AGC on for SX127x series
LoRa.setRxGain(LORA_RX_GAIN_BOOSTED, true ); // 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!" Сообщение и счетчик приращения. Вы можете использовать следующий код.
// message and counter to transmit
char message[] = " HeLoRa World! " ;
uint8_t counter = 0 ;
LoRa.beginPacket();
LoRa.write(message, sizeof (message)); // write multiple bytes
LoRa.write(counter++); // write single byte
LoRa.endPacket();
LoRa.wait();Для получения более подробной информации о операции передачи, пожалуйста, посетите эту ссылку.
Операция приема начинается с метода Calling request() следующим образом по методу read() для чтения полученного пакета. available() Метод может использоваться для получения длины оставшегося пакета. Например, чтобы получить сообщение и счетчик в последнем байте, вы можете использовать следующий код.
LoRa.request();
LoRa.wait();
// get message and counter in last byte
const uint8_t length = LoRa.available() - 1 ;
char message[length];
uint8_t i= 0 ;
while (LoRa.available() > 1 ){
message[i++] = LoRa. read (); // read multiple bytes
}
uint8_t counter = LoRa.read(); // read single byteДля получения более подробной информации об операции «Получить», пожалуйста, посетите эту ссылку.
См. Примеры для SX126X, SX127X и простой реализации сети.
Chandra Wijaya Sentosa <[email protected]>