Sobald die generierte Datei „Turtle_RadioShuttle.NUCLEO_L432KC.bin“ auf das Fenster „RadioShuttle STM32 Utility“ gezogen wurde, wird die RadioShuttle-Software in das Turtle-Board geladen.
Properties für „RadioTest“ definieren
Damit die Beispielanwendung „RadioTest“ richtig funktioniert, müssen noch bestimmte Properties gesetzt werden. Am besten wird dafür die Anwendung „PropertyEditor“ verwendet, ein nützliches Tool um Einstellungen in den Permanentspeicher („non-volatile“) des Turtle-Boards zu schreiben. Der folgende Abschnitt beschreibt, welche Schritte dafür zu tun sind.
Die einfache RadioShuttle-Testanwendung („RadioTest“) ist für Anfänger gedacht. Es gibt zwei Geräte, die miteinander kommunizieren und eine einfache Meldung austauschen. Ein Gerät wird Node genannt, das andere ist eine sogenannte Station. Wird die „User“-Taste gedrückt, wird eine Meldung vom Node an die Station geschickt. Dies funktioniert auch anders herum, die Station kann ebenfalls eine Meldung an den Node senden, vorausgesetzt, der Knoten wurde als Node Online konfiguriert (Voreinstellung ist Node Offline).
Nachdem die Software unter macOS erfolgreich in das Board geladen wurde, öffnet sich automatisch ein Fenster des Programms „Terminal“ (Abb. 2), welches jegliche Ausgabe des geladenen Programms anzeigt. Dazu gehören die Version des Arm-Compilers, die Versorgungsspannung und deren Quelle, der verfügbare Speicher usw.
Hinweis:
Sollte das Terminalprogramm nicht (wie oben beschrieben) automatisch starten, gehen Sie bitte im „RadioShuttle STM32 Utility“ auf den Menüeintrag „Terminal > ttyusbmodem<…>“.
Unter Windows muss der Terminal-Emulator (z. B. „Tera Term“) sich mit dem neuen COM-Port verbinden. Im Abschnitt „Seriellen UART des Targets mit dem Host-Terminal verbinden“ auf der Seite Nucleo ST-Link Interface wird dies detailliert erklärt.
- Nachdem das Terminalprogramm gestartet ist, geben Sie innerhalb von 10 Sekunden p ein und drücken Sie dann die Taste ENTER (Details finden Sie in Abschnitt 3. Firmware auf ein STM32-Board laden).
Dadurch wird der RadioShuttle PropertyEditor gestartet. Sie können sich alle Properties anzeigen lassen (l), eine Property setzen (s<Nummer der Property>=<value>, eine Property aus dem Permanentspeicher löschen (d).
- Geben Sie l (für list) ein und drücken Sie dann die Taste ENTER um sich eine Liste aller vefügbaren Properties anzeigen zu lassen („LORA_DEVICE_ID“ sowie „LORA_CODE_ID“ sind bereits vorkonfiguriert, siehe Abb. 3).
Property | Typ | Beschreibung |
---|---|---|
LORA_DEVICE_ID | T_32BIT | Geräte-ID des Boards (bereits vorkonfiguriert, nicht ändern!) |
LORA_CODE_ID | T_32BIT | Board-Code (bereits vorkonfiguriert, nicht ändern!) |
LORA_RADIO_TYPE | T_32BIT | Verwendung (nicht konfiguriert): 1 = Node Offline (Verwendung als Funksensor im Modus „deepsleep“) 3 = Node Online (Verwendung als Funksensor, immer empfangsbereit) 4 = Station Basic (Fungiert als Server in kleinen Netzwerken) 5 = Station Server (Fungiert als Server in größeren Netzwerken) |
LORA_REMOTE_ID | T_32BIT | Kommunikations-ID der Station (nicht konfiguriert) |
LORA_APP_PWD (optional) | T_STR | Setzt das AES-128 Passwort pro App |
Wie bereits erwähnt ist ein Gerät (z. B. ein Turtle-Board) als Node konfiguriert, das andere als Station. Mithilfe des RadioShuttle „PropertyEditor“ lässt sich festlegen, ob das Board als Node oder als Station fungieren soll.
Station
- Geben Sie für das Turtle-Board, das als Station arbeiten soll, s14=4 ein (für Station Basic) und drücken Sie die Taste ENTER
Damit die Station Nachrichten an einen Node senden kann, muss die „LORA_REMOTE_ID“ des Nodes im Station-Board eingegeben werden. In diesem Fall muss der Node als Node Online konfiguriert werden, damit er Nachrichten von anderen empfangen kann:
- Geben Sie s12=11002 ein und drücken Sie die Taste ENTER
Node
- Geben Sie für das Turtle-Board, das als Node arbeiten soll, s14=1 ein (für Node Offline) und drücken Sie die Taste ENTER
Damit der Node Nachrichten an eine Station senden kann, muss die „LORA_REMOTE_ID“ der Station im Node-Board eingegeben werden:
- Geben Sie s12=11000 ein und drücken Sie die Taste ENTER
Trainingsvideo: Non-volatile settings (NV Property)
Beispielprogramm „RadioTest“ starten
Nachdem die erforderlichen Properties in beiden Turtle-Boards gesetzt worden sind, kann das in der RadioShuttle-Software enthaltene Beispielprogramm „RadioTest“ ausgeführt werden, um die Konfiguration der Boards zu testen:
- Windows: Starten Sie das Programm „Tera Term“ und setzen Sie Portnummer sowie Baudrate über „Setup“ > „Serial port…“ (im Abschnitt „Seriellen UART des Targets mit dem Host-Terminal verbinden“ auf der Seite Nucleo ST-Link Interface wird dies detailliert erklärt)
- macOS: Starten Sie das Programm „Terminal“
- Drücken Sie kurz auf die „User“-Taste am Node- oder Station-Board
Das Programm „RadioTest“ sendet nun eine Nachricht („TxSend“), welche von der adressierten Gegenstelle empfangen wird („RxDone“).
Im folgenden Beispiel (Abb. 6) hat der Node (ID „11002“) eine Nachricht erfolgreich an die Station (ID „11000“) geschickt. Das Übertragungsprotokoll informiert darüber hinaus über die verwendete Funkfrequenz, Spreizfaktor und Bandbreite, die Übertragungszeit, den Frequenzversatz auf der Empfangsseite usw. Bei einem Node im Offline-Modus endet das Übertragungsprotokoll mit der Zeile Putting the radio into Sleep
.
Hier sehen wir das entgegengesetzte Beispiel (Abb. 7); die Station (ID „11000“) hat eine Nachricht erfolgreich an einen Node im Offline-Modus (ID „11002“) geschickt.
Board zurücksetzen
Wird die „Reset“-Taste gedrückt, blinkt die grüne LED auf dem Turtle-Board schnell und zeigt damit an, dass das Board auf eine Terminal-Verbindung über den USB Virtual COM-Port wartet. Wird innerhalb von 30 Sekunden keine Verbindung hergestellt, geht das Board in einen Modus ohne serielle USB-Konsole.
Status der LEDs im Beispiel „RadioTest“
LED (grün):
- Blinkt schnell
Das Board versucht 30 Sekunden lang sich mit einem Terminal-Programm zu verbinden (über den USB Virtual COM-Port)
- Aus
Das Board befindet sich im Modus „deepsleep“ und weist keine CPU-Aktivität auf
- Blinkt teilweise
Das Board arbeitet, bei Beschäftigung leuchtet die grüne LED
- Glimmt dauerhaft
Das Board ist mit einem USB Virtual COM-Port verbunden, die CPU wird jede Millisekunde aktiv, um den USB-Kanal offen zu halten
- Dauerhaft an
Ein Programmdauerläufer, der dauerhaft abruft oder sich aufgehängt hat ohne in den Sleep-Modus zu gehen
- Kurz an
Eine LoRa-Nachricht wurde geschickt (TX)
LED (rot):
- Pulsierend
Nach dem Start der RadioShuttle-Software blitzt die LED alle 2 Sekunden kurz auf und zeigt damit an, dass das Board aktiv ist. Dieses Verhalten lässt sich abschalten, indemtimerUpdate()
in der Datei „main.cpp“ deaktiviert wird
- Kurz an
Eine LoRa-Nachricht wurde empfangen (RX)
Die LEDs lassen sich vom Anwender natürlich auch individuell belegen.
Die Idee hinter den LEDs ist es, CPU- und/oder Funkaktivität anzuzeigen. Das ist dann hilfreich, wenn man herausfinden möchte, ob das Board beschäftigt ist. Leuchtet die grüne LED beispielsweise dauerhaft, geht das Board nicht in den Energiesparmodus („sleep“), sondern ist stattdessen mit USB-Protokollen oder anderen Aktivitäten beschäftigt. Der 2-Sekunden-Impuls der roten LED zeigt in erster Linie an, dass das Board „lebt“. Um beim richtigen Einsatz die Energiebilanz zu optimieren kann dieses Verhalten abgeschaltet werden.
Übersicht aller Beispielanwendungen
Name | Beispiel | Erklärung |
---|---|---|
CPUBench | CPUBench.cpp | Misst die Float- und Integer-CPU-Leistung |
PropertyEditor | NVPEditor.cpp | Programm zum Setzen von Einstellungen (Properties), welche im Board permanent gespeichert werden. Bleiben nach dem Neustart bzw. auch nach dem Aufspielen eines neuen Programms erhalten. Siehe auch Permanentspeicher für Einstellungen |
LoRaPingPong | LoRaPingPong.cpp | Einfaches Ping-Ping-Beispiel für LoRa, welches einen energiesparenden Timer verwendet |
RadioContinuousTX | RadioContinuousTX.cpp | Diagnoseprogramm, welches kontinuierlich sendet, z. B. für HF-Antennenmessungen |
Blinky | Blinky.cpp | Periodisches Blinken einer LED |
RadioTestNew | RadioTestNew.cpp | Siehe detailliertes Beispiel oben |
PanicButton | PanicButton.cpp | Sendet Sensordaten wie z. B. Temperatur, Luftfeuchtigkeit und Batteriestatus an eine Gegenstelle. Zusätzlich wird ein akustisches Signal ausgegeben, um der Hilfe suchenden Person zu bestätigen, dass der Panikalarm ausgelöst wurde |
RemoteTempSensor | RemoteTempSensor.cpp | RadioShuttle entfernter Temperatursensor; für Client und Server |
RemoteRelay | RemoteRelay.cpp | RadioShuttle entfernte Relaissteuerung; für Client und Server |
- Drücken Sie „h“ gefolgt von der Programmverknüpfung, um die entsprechende Befehlshilfe anzuzeigen, z. B.
h b
(„Blinky“-Hilfe)
Trainingsvideo: Non-volatile settings (NV Property)