Überblick
- SX1276 ist ein LORA-Modem, das Daten über eine lange Entfernung (Kilometer entfernt) auf eneryeffiziente Weise senden und empfangen kann.
- Dieses Repo soll dem Anfänger helfen, den Betrieb des SX1276 -Chips zu lernen (grundlegende Übertragung/TX und Empfang/RX).
- Dieses Repo ist fast ein Umschreiben von Martynwheeler/U-Lora mit umfangreichen Anmerkungen.
- Code ist mit Jgromes/Radiolib (einer beliebten Arduino Lora -Bibliothek) kompatibel
Wo finden Sie SX1276
- Viele ESP32-LORA-Entwicklungsausschüsse (Heltec WiFi Lora 32 V2, TTGO T-Beam V1.1) verwenden SX1276.
- Adafruit erstellte einen eigenständigen Ausbruch auf der Basis von SX1276: Adafruit RFM95W
- In jedem Fall spricht die MCU über eine SPI -Schnittstelle mit dem SX1276 -Chip.
Repo für die Produktionsnutzung
- Die Mac -Link -Schicht wird in einem anderen Repo implementiert
- Angreifer
- Rundfunk
- Bestätigung anfordern
- Frequenzhüpfen wird auch implementiert, um ein großes Paket zu tranken, da wir uns bei FCC 15.247 einhalten: Machen Sie keine Frequenz.
Siehe die Verkabelung
Verkabelung RFM95W mit Pico
- Wir entscheiden, welchen GPIO wir verwenden möchten
# 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
- Vordefiniert (siehe 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-Beam V1.1
- Vordefiniert (siehe 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

So verwenden Sie SX1276
- Aktivieren Sie die Adafruit RFM95W vor der Verwendung (keine PIN in anderen ESP32 -Entwicklungsboards aktivieren, damit sie immer aktiviert sind)
- Konfigurieren Sie die SPI -Kommunikation, um das LORA -Modem zu steuern
- Wählen Sie den LORA -Modus anstelle des FSK/OOK -Modus
- Setzen Sie Parameter: Bandbreite (BW), Codierungsrate (CR), Header -Modus, Spreading -Faktor (SF), Synkword, Präambellänge, Frequenz, Verstärker.
- Das folgende Wasserfalldiagramm ist das, was das Signal aus Lora -Modem aussieht. Ich könnte in Zukunft ein Tutorial über Parameter anbieten
- Legen Sie einen Interrupt Routine Service (IRS) fest, um eingehende Nachricht zu lesen und den Arbeitsstatus des Modems zu überwachen
- Wenn eine Nachricht während RX empfangen wird, wird ein IRS ausgelöst und wir lesen FIFO -Datenpuffer. Wir schreiben FIFO -Datenpuffer, bevor die Nachricht gesendet wird, und dann wird ein IRS während TX ausgelöst.
Paketstruktur
- Wasserfalldiagramm, das die physikalische Darstellung des modulierten Signals zeigt.

- Header (im expliziten Modus existiert): Nutzlastlänge, Codierungsrate von Nutzlast
- Die Codierungsrate des Expliziten Header beträgt 4/8 und die Payload könnte unterschiedlich sein (TX sagt RX, welche Cr tx verwendet).
- SF ist für das ganze Paket

4.1.2. Lora ® Digital Grenzfläche
- Das LORA ® -Modem umfasst drei Arten von digitaler Schnittstelle.
- Statische Konfigurationsregister
- Statusregister
- Ein 256-Byte-benutzerdefinierter FIFO-Datenpuffer
- Wir steuern das Modem über diese digitale Schnittstelle
- Praktisch lesen/schreiben wir die Register von Modem über das SPI -Protokoll, damit wir seine Parameter (statische Konfigurationsregister), Abfragebatus, Senden oder Empfangen von Daten (Pufferregister) konfigurieren können.
FIFO -Puffer

- Um Paketdaten in den FIFO -Benutzer zu schreiben, sollte:
- Legen Sie den Inhalt von Register RegfifoDDRPTR auf *rEGFIFOTXBASEADDR (Registrieren Sie den Inhalt von RegfifotXBaseaddr) fest.
- Schreiben Sie *RegPayLoadLength -Bytes in das FIFO (REGFIFO)
- Um Paketdaten vom FIFO -Benutzer zu lesen, sollte:
- Setzen Sie Regfifoaddrptr auf *rEGFIFORXCURRENTADDR.
- Lesen Sie regrxnbbytes aus Regfifo
Jargon im Datenblatt
- RF: Funkfrequenz
- RFI: RF -Eingabe
- RFO: RF -Ausgabe
- {Hochfrequenz: {Band 1: ~ 915MHz}, LF: {Band 2: ~ 433MHz, Band 3: ~ 150 MHz}}
- PA: Leistungsverstärker
- Drei Verstärker: RFO_LF, RFO_HF, PA_BOOST
- PA_HP: hohe Leistung
- PA_HF und PA_LF sind hocheffiziente Verstärker
- AFC: Automatische Frequenzkorrektur
- RFOP: HF -Ausgangsleistung
Datenübertragungssequenz (Datenblatt Abbildung 9)
- Wechseln Sie in den Standby -Modus, damit das Modem alles initialisiert
- Starten Sie die TX -Schleife
- Bereiten Sie die Nutzlast auf TX vor
- Füllen Sie den FIFO -Datenpuffer mit Nutzlast aus
- Wechseln Sie in den TX -Modus
- Warten Sie auf TXDone IRQ
- In ISR etwas tun und IRQ -Flaggen klären
- Fallen Sie automatisch in den Standby -Modus zurück
Datenempfangssequenz für Kontinous -Modus (Abbildung 10)
- Wechseln Sie in den Standby -Modus, damit das Modem alles initiiert
- Wechseln Sie in den RX Continuous -Modus
- Warten Sie auf IRQ (RXDone und Validader/PayloadCrcerror)
- Lesen Sie in ISR FIFO -Datenpuffer, um Nutzlast zu erhalten
- Nächstes IRQ und nächstes FIFO -Lesen
Folgen Sie dem kommentierten Code, um SX1276 zu lernen
- Verwenden Sie Rasberry Pi Pico und Adafruit RFM95W als Lernplattform
- Wie man Mikropython auf Pico betreibt
- Micropython -Codes TX und RX werden ausführlich zum Lernen kommentiert
- Sie sind mit der Radiolib -Bibliothek kompatibel.
- Danke Martynwheeler/U-Lora und Jgromes