Eine Mikropythonklasse für die Lora -Module der EBYTE E22 -Serie
Die unterstützten EBYTE E22 -Module basieren auf Semtech SX1262/SX1286 -Chipsätzen und sind für 400 MHz (410.125 ... 493.125) und 900 MHz (850.125 ... 930.125) Frequenzbereiche und 22 DBM Max. TX -Kraft.
Eine einfache UART -Schnittstelle wird verwendet, um das Gerät zu steuern.
EBYTE -Datenblätter:
E22-900T22D
E22-400T22D
Die Lorae22 -Klasse basiert auf der Lorae32 -Klasse von Effevee: https://github.com/effevee/lorae32
Schließen Sie die richtige Antenne vor dem Übertrag an!
Überprüfen Sie vor dem Gebrauch Ihre lokalen Vorschriften für die Verwendung dieses Frequenzbereichs. In den meisten Europa liegt das maximal zulässige TX -Strom unter dem Standardwert von 22 dBm! Es kann auch zusätzliche Einschränkungen geben, z.

Siehe Code für die PIN -Konfiguration.
Hinweise: Der Testcode Lorae22 unterscheidet sich vom E32 -Testcode in Bezug auf den gebrauchten UART- und Aux -Pin! Darüber hinaus verwendet Lorae22 "Normalmodus", während Lorae32 in sendMessage () "Wakeup -Modus" verwendet.
| Übertragungsmodus | Tx (addr - ch) | Rx (addr - ch) | MSG (ADDR - CH) | Sendercode | Empfängercode |
|---|---|---|---|---|---|
| transparent | 0x0001 - 0x02 | 0x0001 - 0x02 | 0x0001 - 0x02 | Testsende22_TRALPARENT.PY | testRecve22_trAlsparent.py |
| Fixes P2P | 0x0001 - 0x02 | 0x0003 - 0x04 | 0x0003 - 0x04 | Testsende22_p2p.py | testRecve22_p2p.py |
| feste Übertragung | 0x0001 - 0x02 | 0x0003 - 0x04 | 0xffff - 0x04 | Testsende22_Broadcast.py | testRecve22_Broadcast.py |
| fester Monitor | 0x0001 - 0x02 | 0xffff - 0x04 | 0x0003 - 0x04 | Testsende22_Monitor.py | Testrecve22_Monitor.py |
Jeder Knoten sendet eine Nachricht in einem festen Intervall, das einen LED -Steuerwert entsprechend dem Status eines Drucktastes enthält.
Danach überprüft es auf empfangene Nachrichten. Wenn eine Nachricht mit LED -Steuerwert verfügbar ist, wird die LED entsprechend umgestellt.
Der Übertragungsmodus (Adresse/Kanalkonfiguration) für den lokalen Knoten und den Peerknoten können wie in den Arrays ADDR und Chan gewünscht eingestellt werden.
Der Code von node0.py und node1.py ist mit Ausnahme der Einstellungen der Variablen Me und Peer identisch.
| Node0 | Node1 |
|---|---|
| node0.py | node1.py |
Der Lora -Sender sendet eine Zeichenfolge, die seine Chip -ID und eine Nachrichtensequenznummer in einem festen Intervall enthält.
Der LORA-Empfänger druckt/logs <Timestamp>, <latitude>, <Längengrads>, <Altitude>, <rssi> in einem vordefinierten Intervall aus.
Die Position des Empfängers und ein Zeitstempel werden von NMEA -Nachrichten dekodiert, die über UART von einem GPS -Empfänger empfangen werden. Zu diesem Zweck wird Mikropygps verwendet.
Wenn verfügbar, werden eingehende LORA -Nachrichten vom EBYTEE22 LORA -Transceiver -Modul über eine andere UART empfangen. Wenn die vom LORA -Sender erwarteten Nachrichten für eine bestimmte Zeit nicht empfangen werden konnten, wird ein RSSI -Wert von -255 dBm angenommen, der den Verlust der LORA -Funkverbindung anzeigt.
Der Tuple <Timestamp>, <Leatitude>, <Längengrads>, <Altitude>, <rssi> wird gedruckt und optional nur dann in eine Protokolldatei geschrieben, wenn eine gültige Position verfügbar ist.
Wenn die Protokollierung aktiviert ist, wird ein Dateiname im Format log_ <8_random_hex_digits _>. CSV nach Strom- oder Zurücksetzen erstellt. Die Protokolldateien werden in das interne Dateisystem von Micropython geschrieben. Die Protokollierung muss durch Drücken einer Taste explizit gestoppt werden. Andernfalls kann die Datei nicht ordnungsgemäß geschlossen werden und wird beschädigt/leer.
Zwei LEDs geben den Zustand des GPS -Fixes bzw. die LORA -Verbindung an.
| Senderknoten | Empfängerknoten |
|---|---|
| lora_tx.py | lora_rssi_logger.py |
Protokolldateien können später auf dem Host von CSV -Format in ein geeignetes Format wie GPX oder KML konvertiert werden. Siehe rssi_csv_to_kml.py - Die KML -Ausgabedatei bietet den RSSI -Wert als erweiterte Daten mit dem Höhendiagramm in Googleearth. (Verwendung: rssi_csv_to_kml.py log_deadbeef.csv >log_deadbeef.kml )
Hinweis: Das Diagramm dient nur als Beispiel: Das Protokollierungsintervall hätte kürzer sein und die Protokollierungsstrategie danach wurde geändert.