Aperçu
- SX1276 est un modem LORA qui peut envoyer et recevoir des données sur une longue distance (kilomètres de loin) de manière économe en énergie.
- Ce dépôt est d'aider le débutant à apprendre à faire fonctionner la puce SX1276 (faire de la transmission de base / TX et réception / RX).
- Ce repo est presque une réécriture de Martynwheeler / U-Lora avec des annotations étendues.
- Le code est compatible avec JGromes / Radiolib (une bibliothèque populaire Arduino Lora)
Où trouver sx1276
- De nombreux cartes de développement ESP32 LORA (Heltec WiFi LORA 32 V2, TTGO T-Prop v1.1) utilisent SX1276.
- Adafruit a créé une cassure autonome basée sur SX1276: Adafruit RFM95W
- Quoi qu'il en soit, le MCU parle à la puce SX1276 via une interface SPI.
Repo pour l'utilisation de la production
- La couche de liaison MAC est implémentée dans un autre repo
- Adressage
- Radiodiffusion
- Demander l'accusé de réception
- Le saut de fréquence est également mis en œuvre pour transmettre un grand paquet car nous respectons la FCC 15.247: ne bloquez pas une fréquence.
Voir le câblage
Câblage RFM95W avec pico
- Nous décidons quel gpio nous voulons utiliser
# 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
- Prédéfini (voir le brochage)
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-PORD V1.1
- Prédéfini (voir le brochage)
LoRa_MISO_Pin = 19
LoRa_MOSI_Pin = 27
LoRa_SCK_Pin = 5
LoRa_CS_Pin = 18
LoRa_RST_Pin = 23
LoRa_DIO0_Pin = 26

Comment utiliser SX1276
- Activer l'Adafruit RFM95W avant utilisation (pas d'activation d'activation sur d'autres cartes de développement ESP32 afin qu'elles soient toujours activées)
- Configurer la communication SPI pour contrôler le modem LORA
- Choisissez le mode LORA au lieu du mode FSK / OOK
- Définir les paramètres: bande passante (BW), taux de codage (CR), mode d'en-tête, facteur d'étalement (SF), Syncword, longueur de préambule, fréquence, amplificateur.
- Suivre le diagramme de la cascade est ce à quoi ressemble le signal du modem LORA, je pourrais fournir un tutoriel sur les paramètres à l'avenir
- Définissez un service de routine d'interruption (IRS) pour lire le message entrant et pour surveiller l'état de travail du modem
- Lorsque le message est reçu pendant RX, un IRS est déclenché et nous lisons le tampon de données FIFO. Nous écrivons le tampon de données FIFO avant l'envoi du message, puis un IRS est déclenché pendant TX.
Structure de paquets
- Diagramme de cascade qui montre la représentation physique du signal modulé.

- En-tête (existe en mode explicite): longueur de charge utile, taux de codage de la charge utile
- Le taux de codage de l'en-tête explicite est de 4/8 et la charge utile pourrait être différente (TX indique à Rx que CR TX utilise).
- SF est pour le paquet entier

4.1.2. Interface numérique Lora ®
- Le modem LORA ® comprend trois types d'interface numérique,
- Registres de configuration statique
- Status enregistreurs
- Un tampon FIFO défini par l'utilisateur de 256 octets
- Nous contrôlons le modem via cette interface numérique
- Pratiquement, nous lisons / écrivons les registres du modem via le protocole SPI afin que nous puissions configurer ses paramètres (registres de configuration statique), la requête en termes de données, envoyer ou recevoir des données (registres de tampon).
Tampon FIFO

- Afin d'écrire des données de paquets dans l'utilisateur FIFO, devrait:
- Définissez le contenu de RegFifoAdDrptr sur * RegFifotXBaseAdDR (registre le contenu de RegFifotXBaseAddr).
- Écrivez * regpayloadLength octets vers le FIFO (RegFifo)
- Afin de lire les données de paquets de l'utilisateur FIFO, devrait:
- Définissez RegFifoAddrptr sur * RegFiforXcurrentAddr.
- Lire regrxnbbytes de Regfifo
Jargon dans la fiche technique
- RF: Fréquence radio
- RFI: entrée RF
- RFO: sortie RF
- {Haute fréquence: {bande 1: ~ 915mhz}, lf: {bande 2: ~ 433mhz, bande 3: ~ 150mhz}}
- PA: Amplificateur de puissance
- Trois amplificateurs: RFO_LF, RFO_HF, PA_BOOST
- PA_HP: haute puissance
- PA_HF et PA_LF sont des amplificateurs à haute efficacité
- AFC: Correction de fréquence automatique
- RFOP: puissance de sortie RF
Séquence de transmission des données (Fiche technique Figure 9)
- Passer en mode veille pour que le modem initialise tout
- Démarrer la boucle TX
- Préparez la charge utile à TX
- Remplissez le tampon de données FIFO avec charge utile
- Passer en mode TX
- Attendez TxDone Irq
- Dans ISR, faites quelque chose et effacez les drapeaux IRQ
- Retomber automatiquement en mode veille
Séquence de réception de données en mode continu (figure 10)
- Passer en mode veille pour que le modem commence tout
- Passer en mode continu RX
- Attendez IRQ (RxDone et Validheader / PayloadCrCerror)
- Dans ISR, lisez le tampon de données FIFO pour obtenir la charge utile
- Next IRQ et Next FIFO Reading
Suivez le code annoté pour apprendre SX1276
- Utilisez Rasberry Pi Pico et Adafruit RFM95W comme plateforme d'apprentissage
- Comment exécuter Micropython sur Pico
- Les codes Micropython TX et RX sont beaucoup commentés pour l'apprentissage
- Ils sont compatibles avec la bibliothèque du radiolib.
- Merci martynwheeler / u-lora et jgromes