Esta é uma biblioteca Arduino para comunicação LORA usando os chips de transceptor de rádio SX1262 e SX1268.

O Ai-Thinker oferece vários módulos Lora.
Você pode obtê -los no Aliexpress e no eBay.
| Modelo | Tipo | Interface/núcleo | Chip | Freqüência | Padrão de pé | Ipex-antena | Lora-Wan |
|---|---|---|---|---|---|---|---|
| RA-01 | Tranceiver | Spi | SX1278 | 410-525MHz | SMD16 | Não | Não |
| RA-02 | Tranceiver | Spi | SX1278 | 410-525MHz | SMD16 | Sim | Não |
| RA-01H | Tranceiver | Spi | SX1276 | 803-930MHz | SMD16 | Não | Não |
| RA-01S | Tranceiver | Spi | SX1268 | 410-525MHz | SMD16 | Não | Não |
| RA-01SH | Tranceiver | Spi | SX1262 | 803-930MHz | SMD16 | Sim | Não |
| RA-01SC | Tranceiver | Spi | LLCC68 | 410-525MHz | SMD16 | Sim | Não |
| RA-06 | MCU | ARM Cortex M0+ | SX1278 | 410-525MHz | SMD20 | Sim | Não |
| RA-07 | MCU | ARM Cortex M0+ | ASR6501 | 410-525MHz | SMD18 | Não | Sim |
| RA-07H | MCU | ARM Cortex M0+ | ASR6501 | 803-930MHz | SMD18 | Não | Sim |
| RA-08 | MCU | Cortex de braço M4 | ASR6601 | 410-525MHz | SMD18 | Não | Sim |
| RA-08H | MCU | Cortex de braço M4 | ASR6601 | 803-930MHz | SMD18 | Não | Sim |
Os módulos Lora com SX1262/1268 têm várias opções.
Usando TCXO (oscilador de cristal compensado por temperatura)
SX1262/1268 pode usar o TCXO.
Se o TCXO for usado, o pino XTB não estará conectado.
No entanto, o 6º pino (DIO3) do SX1262/1268 pode ser usado para alimentar o TCXO.
A explicação para o controle de TXCO e antena está aqui.
RA-01S / RA-01SH não usa TCXO.
Modos de fonte de alimentação
SX1262/1268 possui dois modos de fonte de alimentação.
Uma é que apenas o LDO usado em todos os modos.
Outra é que o DC_DC+LDO usado para os modos Stby_XOSC, FS, RX e TX.
A explicação para a seleção de LDO e DCDC está aqui.
RA-01S / RA-01SH Use apenas LDO em todos os modos.
RF-Switching
Em geral, use o DIO2 para trocar o switch de RF.
No entanto, algum transiver usa um GPIO externo para alternar o switch de RF.
RA-01S / RA-01SH Use a chave de carga integrada SC70-6 para alternar entre RFO e RFI.
RA-01S / RA-01SH Use dio2 para controlar isso.
Dio2 = 1, Ctrl = 0, RFC para RF1 TX MODE.
Dio2 = 0, Ctrl = 1, RFC para R21 RX Modo.
Você precisa olhar para o esquema para definir essas opções corretamente, mas é muito esotérico.
As configurações padrão para esta biblioteca são para RA-01S / RA-01SH.
Ao usar outros que não o RA-01S / RA-01SH, você precisa defini-los adequadamente.
Eu criei esta biblioteca com base nisso.
Com esta biblioteca, o RA-01S / RA-01SH não funciona.
RA-01SC Usa LLCC68.
RA-01SC é compatível com RA-01s.
No entanto, existem as seguintes restrições:

RA-01S
https://docs.ai-thinker.com/_media/lora/docs/ra-01s_specification.pdf
RA-01SH
https://docs.ai-thinker.com/_media/lora/docs/ra-01sh_specification.pdf
RA-01SC (chinês)
https://img.iceasy.com/product/product/files/202108/8a8a1a7aec7b55017b2ef70a370953.pdf
RA-0x (SMD16) tem o mesmo padrão de pé que o ESP12.
Portanto, um PCB de conversão de afinação para ESP12 pode ser usado.


Faça o download deste repo como zip. Então, no Arduino IDE, vá para esboço-> Adicionar biblioteca-> Adicionar biblioteca .zip.
| RA-01S/SH | Uno | Mega | ESP8266 | |
|---|---|---|---|---|
| VCC | - | 3.3V (*1) | 3.3V | 3.3V |
| Gnd | - | Gnd | Gnd | Gnd |
| Sck | - | D13 (*2) | D52 (*2) | Io14 |
| Miso | - | D12 | D50 | Io12 |
| Mosi | - | D11 (*2) | D51 (*2) | Io13 |
| NSS | - | D5 (*2) | D5 (*2) | Io2 |
| RST | - | D6 (*2) | D6 (*2) | Io0 |
| OCUPADO | - | D7 (*2) | D7 (*2) | Io16 |
| Txen | - | N/c | N/c | N/c |
| Rxen | - | N/c | N/c | N/c |
(*1)
A saída de 3.3V da ONU pode fornecer apenas 50mA.
Além disso, a capacidade de corrente de saída de dispositivos não compatíveis é menor que a dos produtos oficiais.
Portanto, este módulo pode não funcionar normalmente quando fornecido a partir do 3V3 a bordo.
(*2)
SX126X não é tolerante a 5V.
Você precisa de mudança de nível de 5V para 3,3V.
Eu usei isso para uma mudança de nível.
A Ebyte oferece vários módulos Lora.
Você pode obtê -los no Aliexpress e no eBay.
| Modelo | Interface | Chip | Freqüência | Poder | Foot-gatten | Ipex-antena | Lora-Wan |
|---|---|---|---|---|---|---|---|
| E22-400M22S | Spi | SX1268 | 433/470MHz | 160mW | Padrão | Sim | Não |
| E22-400M30S | Spi | SX1268 | 433/470MHz | 1000mw | Padrão | Sim | Não |
| E22-400mm22s | Spi | SX1268 | 433/470MHz | 160mW | Pequeno | Não | Não |
| E22-900M22S | Spi | SX1262 | 868/915MHz | 160mW | Padrão | Sim | Não |
| E22-900M30S | Spi | SX1262 | 868/915MHz | 1000mw | Padrão | Sim | Não |
| E22-900mm22s | Spi | SX1262 | 868/915MHz | 160mW | Pequeno | Não | Não |


Com essa mudança, funciona.
/*
SX126x lora(5, //Port-Pin Output: SPI select
6, //Port-Pin Output: Reset
7 //Port-Pin Input: Busy
);
int16_t ret = lora.begin(RF_FREQUENCY, //frequency in Hz
TX_OUTPUT_POWER); //tx power in dBm
*/
SX126x lora(5, //Port-Pin Output: SPI select
6, //Port-Pin Output: Reset
7 //Port-Pin Input: Busy
8 //Port-Pin Output: TXEN
9 //Port-Pin Output: RXEN
);
int16_t ret = lora.begin(RF_FREQUENCY, //frequency in Hz
TX_OUTPUT_POWER, //tx power in dBm
3.3, //use TCXO
true); //use TCXO
Dois fios adicionais são necessários.
| Ebyte | Uno | Mega | ESP8266 | |
|---|---|---|---|---|
| Txen | - | 8 (*3) | 8 (*3) | D4 |
| Rxen | - | 9 (*3) | 9 (*3) | D5 |
(*3)
SX126X não é tolerante a 5V.
Você precisa de mudança de nível de 5V para 3,3V.
A base de conversão de afinação está aqui.
SX1262 e LLCC68 são compatíveis, mas por algum motivo eles não funcionam.
| Modelo | Interface | Chip | Freqüência | Poder | Foot-gatten | Ipex-antena | Lora-Wan |
|---|---|---|---|---|---|---|---|
| E220-400M22S | Spi | LLCC68 | 433/470MHz | 160mW | Padrão | Sim | Não |
| E220-400M30S | Spi | LLCC68 | 433/470MHz | 1000mW | Padrão | Sim | Não |
| E220-900M22S | Spi | LLCC68 | 868/915MHz | 160mW | Padrão | Sim | Não |
| E220-900M30S | Spi | LLCC68 | 868/915MHz | 1000mW | Padrão | Sim | Não |
Esta biblioteca pode se comunicar com o Radiolib.
O Radiolib requer DIO1 conectado para obras.
// Set frequency: 866Mhz
// Set bandwidth(BW): 125Khz
// Set Spreading Factor(SF): 7
// Set Error Cording Rate(CR): 4/5
// Set SyncWord: 0x1424(Private Network)
// Set Power: 10dBm
// Set Preamble Length: 8
// Configure the radio to NOT use a TCXO controlled by DIO3
// Set regulator mode: DC-DC
int state = radio.begin(866.0, 125.0, 7, 5, RADIOLIB_SX126X_SYNC_WORD_PRIVATE, 10, 8, 0.0, false);
Isso será útil.
$ git clone https://github.com/nopnop2002/Arduino-LoRa-Ra01S
$ cd Arduino-LoRa-Ra01S/example/Ra01S-RX/
$ pio init -b d1_mini
$ cp Ra01S-RX.ino src/
$ vi src/Ra01S-RX.ino
Disable AtMega
Enable ESP8266
$ vi platform.ini
[env:d1_mini]
platform = espressif8266
board = d1_mini
framework = arduino
lib_deps = https://github.com/nopnop2002/Arduino-LoRa-Ra01S --> Add this line
$ pio run -t upload && pio device monitor -b 115200