Biblioteca Arduino Lora-RF usada para transmitir e receber dados usando o módulo LORA com série Semtech SX126X, série SX127X ou LLCC68. A biblioteca funciona interface a porta SPI e alguns pinos de E/S. Suporte para configurar a frequência, o parâmetro de modulação, a potência de transmissão, 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. Conselho de Desenvolvimento Arduino Lora, que interfaceia usando SPI em um módulo Lora também teoriticamente compatível.
Alguns módulos Lora que já testaram e confirmados compatíveis são:
Observe que os módulos LORA usam 3.3V para fonte de alimentação e portas de E/S. Deve -me tomar cuidado para conectar o módulo de 5V Arduino ao Lora.
Sketch -> Include Library -> Manage Libraries...LoRaRF na caixa de pesquisa.LoRaRF de Chandra Wijaya.Install para instalar a biblioteca. Abra o terminal, o Git Bash ou o prompt de comando na pasta da biblioteca Arduino e execute o seguinte comando. A pasta da biblioteca padrão para Windows é C:Users{username}DocumentsArduino e para Linux é ~/Documents/Arduino/libraries/ .
git clone https://github.com/chandrawi/LoRaRF-Arduino.git Para trabalhar com a biblioteca, primeiro você deve incluir o cabeçalho SX126x ou o cabeçalho SX127x dependendo do módulo Lora que você usar. Para LLCC68, inclui o cabeçalho SX126X. Em seguida, inicialize a classe no cabeçalho criando um objeto.
// for SX126x series or LLCC68
# include < SX126x.h >
SX126x LoRa;
// for SX127x series
# include < SX127x.h >
SX127x LoRa; 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() . Você pode ligar para o método begin() dentro da função Arduino setup() .
void setup () {
LoRa. begin ();
// configuration code goes here
}
void loop () {
// transmit and receive operation goes here
} Os pinos de potência, os pinos SPI e o pino RESET devem ser conectados entre o módulo Arduino e Lora. Para a série SX126X e LLCC68, um pino BUSY também deve ser conectado. Se você deseja usar a operação de interrupção, pode conectar a série DIO0 para SX127X e uma das séries DIO1 , DIO2 ou DIO3 para a série SX126X. Você também deve conectar os pinos TXEN e RXEN se o seu módulo Lora tiver esses pinos.
Os pinos arduino padrão usados para se conectar a SX126X e SX127X são os seguintes.
| Semtech SX126X | Semtech SX127X | Arduino |
|---|---|---|
| VCC | VCC | 3.3V |
| Gnd | Gnd | Gnd |
| Sck | Sck | Sck |
| Miso | Miso | Miso |
| Mosi | Mosi | Mosi |
| NSS | NSS | 10 |
| REINICIAR | REINICIAR | 9 |
| OCUPADO | 4 | |
| Dio1 | Dio0 | -1 (não utilizado) |
| Txen | Txen | -1 (não utilizado) |
| Rxen | Rxen | -1 (não utilizado) |
Alterar o método Arduino Padrão SPI da porta SPI ou SPI Frequency setSPI() antes do método begin() .
LoRa.setSPI(SPI2, 16000000 );
LoRa.begin(); Para configurar os pinos de E/S (NSS, redefinir, ocupado, IRQ, TXEN, PIN RXEN) setPins() antes do método 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();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 , 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 ); 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.
// 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();Para obter mais detalhes sobre a operação de transmissão, visite este link.
Operação de recebimento Comece com o método de request() seguindo por read() para ler o pacote recebido. O método available() pode ser usado para obter o comprimento do pacote restante. Por exemplo, para receber mensagem e um contador no último byte, você pode usar o código seguinte.
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 bytePara obter mais detalhes sobre a operação de recebimento, visite este link.
Consulte Exemplos para SX126X, SX127X e implementação simples de rede.
Chandra Wijaya Sentosa <[email protected]>