Visão geral
- O SX1276 é um modem Lora que pode enviar e receber dados a uma longa distância (quilômetros de distância) de uma maneira eficiente em termos de energia.
- Este repositório é ajudar o iniciante a aprender a operar o chip SX1276 (faça transmissão básica/tx e recepção/rx).
- Este repositório é quase uma reescrita de Martynwheeler/U-Lora com extensas anotações.
- O código é compatível com JGromes/Radiolib (uma popular biblioteca Arduino Lora)
Onde encontrar SX1276
- Muitos quadros de desenvolvimento do ESP32 LORA (Heltec Wifi Lora 32 V2, TTGO T-feixe v1.1) estão usando SX1276.
- Adafruit criou uma ruptura independente com base em SX1276: Adafruit RFM95W
- De qualquer forma, o MCU fala com o chip SX1276 por meio de uma interface SPI.
Repo para uso da produção
- A camada de link MAC é implementada em outro repositório
- Enfrentando
- Radiodifusão
- Solicitar reconhecimento
- O salto de frequência também é implementado para transmitir o pacote grande, pois cumprimos pela FCC 15.247: não toce uma frequência.
Veja a fiação
Fiação RFM95W com pico
- Decidimos qual gpio queremos usar
# RFM95W Pico GPIO
LoRa_MISO_Pin = 16
LoRa_CS_Pin = 17
LoRa_SCK_Pin = 18
LoRa_MOSI_Pin = 19
LoRa_G0_Pin = 20 # DIO0_Pin
LoRa_EN_Pin = 21
LoRa_RST_Pin = 22
SPI_CH = 0

Heltec WiFi Lora 32 V2
- Predefinido (veja o pinout)
LoRa_MISO_Pin = 19
LoRa_MOSI_Pin = 27
LoRa_SCK_Pin = 5
LoRa_CS_Pin = 18
LoRa_RST_Pin = 14
LoRa_DIO0_Pin = 26
LoRa_DIO1_Pin = 35
LoRa_DIO2_Pin = 34
SPI_CH = 1

TTGO T-feixe v1.1
- Predefinido (veja o pinout)
LoRa_MISO_Pin = 19
LoRa_MOSI_Pin = 27
LoRa_SCK_Pin = 5
LoRa_CS_Pin = 18
LoRa_RST_Pin = 23
LoRa_DIO0_Pin = 26

Como usar o SX1276
- Habilite o Adafruit RFM95W antes do uso (sem ativar PIN em outros quadros de desenvolvimento do ESP32 para que sejam sempre ativados)
- Configurar a comunicação SPI para controlar o modem Lora
- Escolha o modo Lora em vez do modo FSK/OOK
- Definir parâmetros: largura de banda (BW), taxa de codificação (CR), modo de cabeçalho, fator de espalhamento (SF), síncir, comprimento do preâmbulo, frequência, amplificador.
- Seguindo o diagrama de cascata é como é o sinal do modem Lora, eu posso fornecer um tutorial sobre parâmetros no futuro
- Defina um serviço de rotina de interrupção (IRS) para ler a mensagem de entrada e monitorar o status de trabalho do modem
- Quando a mensagem é recebida durante o RX, um IRS é acionado e lemos o buffer de dados FIFO. Escrevemos o buffer de dados FIFO antes que a mensagem seja enviada e, em seguida, um IRS seja acionado durante o TX.
Estrutura de pacotes
- Diagrama de cascata que mostra a representação física do sinal modulado.

- Cabeçalho (existe no modo explícito): comprimento da carga útil, taxa de codificação da carga útil
- A taxa de codificação do cabeçalho explícita é 4/8 e a carga útil pode ser diferente (o TX diz ao RX qual o Cr TX usa).
- SF é para pacote inteiro

4.1.2. Interface digital Lora ®
- O modem Lora ® compreende três tipos de interface digital,
- Registros de configuração estática
- registros de status
- Um buffer de dados FIFO definido pelo usuário de 256 bytes
- Controlamos o modem através desta interface digital
- Praticamente, lemos/escrevemos registros do modem via protocolo SPI para que possamos configurar seus parâmetros (registros de configuração estática), status de consulta, enviar ou receber dados (registros de buffer).
Buffer FIFO

- Para escrever dados de pacotes no usuário do FIFO deve:
- Definir o conteúdo do Registro Regfifoaddrptr para *RegfifotxBaseaddr (Registrar o conteúdo do RegfotxBaseAddr).
- Write *RegPayLoadLength Bytes para o FIFO (Regfifo)
- Para ler dados de pacotes do usuário do FIFO deve:
- Definir regfifoaddrptr como *regfiforxcurrentaddr.
- Leia Regxnbbytes do Regfifo
Jargão na folha de dados
- RF: radiofrequência
- RFI: entrada de RF
- RFO: saída de RF
- {Alta frequência: {banda 1: ~ 915MHz}, LF: {banda 2: ~ 433MHz, banda 3: ~ 150mHz}}
- PA: amplificador de energia
- Três amplificadores: rfo_lf, rfo_hf, pa_boost
- PA_HP: Alta potência
- PA_HF e PA_LF são amplificadores de alta eficiência
- AFC: correção automática de frequência
- RFOP: potência de saída RF
Sequência de transmissão de dados (folha de dados Figura 9)
- Mudar para o modo de espera para que o modem inicialize tudo
- Inicie o loop TX
- Prepare a carga útil para TX
- Preencha o buffer de dados FIFO com carga útil
- Mudar para o modo TX
- Espere por txdone irq
- No ISR, faça algo e limpe as bandeiras do IRQ
- Voltar ao modo de espera automaticamente
Sequência de recepção de dados contínuos de modo (Figura 10)
- Mude para o modo de espera para que o modem inicie tudo
- Mudar para o modo contínuo RX
- Aguarde o IRQ (RXDONE e VIDALHEADER/PAYLOADCRCERROR)
- No ISR, leia o Buffer de dados FIFO para obter carga útil
- Próximo IRQ e Próximo FIFO Reading
Siga o código anotado para aprender SX1276
- Use Rasberry Pi Pico e Adafruit RFM95W como plataforma de aprendizado
- Como executar o micropython no pico
- Os códigos Micropython TX e RX são comentados extensivamente para aprender
- Eles são compatíveis com a Biblioteca Radiolib.
- Obrigado Martynwheeler/U-Lora e JGROMES