Serielle Kommunikation einrichten
In diesem Kapitel wird ein Computer mit einem LoRa-Sende- und Empfangsmodul verbunden und gesteuert. Als Computer wird ein Raspberry Pico verwendet, der mit MicroPython programmiert wird. Als LoRa-Modul wird das RAK3272S Breakout Board von RAK-Wireless verwendet. Die hier verwendete Hardware ist nicht zwingend notwendig, wird hier auf Grund der Verwendung von MicroPython und der einfachen Verfügbarkeit benutzt.
Voraussetzungen
Diese Dokumentation geht davon aus, dass Sie die folgende Hard- und Software zur Verfügung haben:
Hardware
- Raspberry Pico mit der passenden MicroPython-Firmware
- Ein RAK3272S
- Breadboard und Jumper-Kabel zum Verbinden der Komponenten
Software
Sie haben die Möglichkeit, MicroPython-Code auf dem Raspberry Pico auszuführen. Dazu benötigen Sie:
- Thonny IDE installiert auf Ihrem Computer
oder:
- Die VSCode Extension MicroPico
UART-Kommunikation einrichten
UART (Universal Asynchronous Receiver/Transmitter) ist ein Protokoll zur seriellen Kommunikation. Es ermöglicht die Übertragung von Daten zwischen Geräten über eine serielle Schnittstelle. In diesem Abschnitt schauen Sie sich die UART-Schnittstelle Ihres Raspberry Pico an, und wie Sie diese nutzen können, um Daten über weite Strecken mit LoRa zu senden und zu empfangen.
Eine UART Schnittstelle besteht aus zwei Leitungen: TX (Transmit) und RX (Receive). Außerdem wird eine gemeinsame Masseleitung (GND) benötigt, um die Signale korrekt zu referenzieren.
UART auf dem Raspberry Pico
Der Raspberry Pico verfügt über zwei UART-Schnittstellen (UART0 und UART1), die Sie nutzen können. Im Folgenden verwenden Sie jedoch nur UART0, das standardmäßig auf den GPIO Pins 0 (TX) und 1 (RX) liegt.
Verkabelung
Um die UART Kommunikation zwischen zwei Geräten einzurichten, verbinden Sie die TX-Leitung des sendenden Geräts mit der RX-Leitung des empfangenden Geräts. Testen Sie zunächst nur die UART0-Schnittstelle und lassen Sie den Pico mit sich selbst reden. Das ist ein sogenannter Loopback.
Verbinden Sie dazu den TX-Pin (GPIO 0) mit dem RX-Pin (GPIO 1). Das Verbinden der GND-Leitungen ist in diesem Fall nicht notwendig, da Sie nur den einen Pico verwenden.

MicroPython Code
Der folgende MicroPython Code initialisiert die UART-Schnittstelle und sendet eine Nachricht. Anschließend wird geprüft, ob Daten empfangen wurden, und diese werden ausgegeben.
Speichern Sie diesen Code als uart_loopback.py auf Ihrem Computer ab und führen Sie ihn auf Ihrem Pico aus.
Sobald Sie den Code ausgeführt haben, sollten Sie in der Ausgabe die gesendeten und empfangenen Nachrichten sehen. Damit wissen Sie, dass die UART0-Schnittstelle korrekt funktioniert.
Die UART-Klasse
Die UART Klasse in MicroPython, die Sie eben benutzt haben, bietet verschiedene Methoden, um die UART-Schnittstelle zu nutzen. Weiterführende Informationen finden Sie in der offiziellen Dokumentation der UART Klasse
RAK3272S-Modul und AT-Befehle
Das RAK3272S ist ein LoRa-Modul, das über eine UART-Schnittstelle mit dem Raspberry Pico kommuniziert. In diesem Abschnitt lernen Sie, wie Sie das Modul anschließen und grundlegende AT-Befehle verwenden können, um mit dem Modul zu interagieren.
Verkabelung
Das RAK3272S Modul verfügt über zwei UART-Schnittstellen: UART1 und UART2. In diesem Beispiel verwenden wir nur die UART2-Schnittstelle.

Verbinden Sie die folgenden Pins des RAK3272S mit dem Raspberry Pico:
| Raspberry Pico | RAK3272S | ||
|---|---|---|---|
| UART0 TX | Pin 1 | UART2 RX | J4 Pin 8 |
| UART0 RX | Pin 2 | UART2 TX | J4 Pin 7 |
| 3,3 V | Pin 36 | 3V3 | J4 Pin 9 |
| GND | Pin 38 | GND | J4 Pin 4 |
AT-Befehle
Mit den sogenannten AT-Befehlen (Attention Commands) können Sie das RAK-Modul konfigurieren und steuern, also auch Daten senden und empfangen. Diese Befehle werden über die UART-Schnittstelle gesendet, und das Modul antwortet mit entsprechenden Rückmeldungen.
Aufbau der AT-Befehle
AT-Befehle haben folgende Form AT+XXX, wobei XXX dabei der spezifische Befehl ist. Enden muss jeder Befehl mit einem carriage return und line feed (stammt noch aus den Zeiten der Schreibmaschine): \r\n.
Manchen Befehlen können Sie Parameter mitgeben und manche Befehle geben Ihnen einen Rückgabewert zurück. Was Sie auf jeden Fall immer vom Modul bekommen, ist ein Return Code wie z. B. OK oder ein bestimmter ERROR der anzeigt, dass ein Befehl nicht erfolgreich war.
Der folgende Code initialisiert ein UART-Objekt und sendet dann den AT-Befehl AT+VER=?, der die Firmware-Version des Moduls zurückgibt (siehe Beschreibung dieses Befehls). Das RAK-Modul antwortet wieder auf der UART-Schnittstelle, wo Sie die Nachricht auslesen können.
Speichern Sie diesen Code als at_command_test.py auf Ihrem Computer ab und führen Sie ihn auf ihrem Pico aus:
Wenn alles geklappt hat, sollten Sie eine Antwort ähnlich der folgenden erhalten:
b'AT+VER=RUI_4.0.6_RAK3172-E\r\nOK\r\n'
Sie sehen hier die Firmware-Version RUI_4.0.6_RAK3172-E und den Return Code OK, der anzeigt, dass der Befehl erfolgreich ausgeführt wurde. Das vorangestellte b'...' zeigt an, dass es sich um eine Byte-String-Antwort handelt. Auch das Modul antwortet mit \r\n am Ende jeder Zeile.