RadioShuttle Sketch-Installation für LongRa (Arduino Zero kompatibel)

Dieses Kapitel behandelt die Installation von RadioShuttle-Sketches. Informationen zum LongRa-Board finden Sie hier. Für Hinweise zur Inbetriebnahme lesen bitte dieses Kapitel.

Voraussetzungen

D21-Permanentspeicher für Einstellungen aktivieren

„bossac“ ist ein kleines Programm zum Programmieren des Flash-Speichers im D21-Chip, welches auf der von Ihnen verwendeten Plattform installiert werden muss.

Wichtig:
„bossac“ muss installiert werden bevor das LongRa-Board das erste Mal in Betrieb genommen wird. Andernfalls werden sämtliche voreingestellte Properties gelöscht!

Laden Sie das Archiv „BOSSAC.zip“ hier herunter. Nach dem Entpacken des Archivs finden Sie das Programm für drei verschiedene Plattformen:

NamePlattformVerzeichnis
bossac-linux64Linux.arduino15/packages/arduino/tools/bossac/1.7.0/
bossac-macosmacOSLibrary/Arduino15/packages/Arduino/tools/bossac/1.7.0/
bossac.exeWindowsAppData\Local\Arduino15\packages\arduino\tools\bossac\1.7.0\

Kopieren Sie das für die von Ihnen verwendete Plattform geeignete Binary in das oben angegebene Verzeichnis und benennen Sie es nach „bossac“ um („bossac.exe“ für die Windows-Plattform wird nicht umbenannt). Zur Sicherheit sollten Sie vorher das dort bereits vorhandene „bossac“ sichern, z. B. als „bossac.save“.

RadioShuttle Library installieren

Die komplette RadioShuttle-Software wird in einem Zip-Archiv ausgeliefert und kann unter Angabe eines achtstelligen Codes hier geladen werden. Den Code finden Sie auf der Platinenrückseite, z. B: „0x67bedf1“.
Geladen wird ein Zip-Archiv mit der aktuellen Software, z.⁥ B.: „RadioShuttle-Arduino-2018-05-10.zip“.
Das Zip-Archiv muss entpackt und der Inhalt des Ordners „libraries“  in den Ordner „Documents/Arduino/libraries“ kopiert werden.

Hinweis:
Bei einer bereits vorhandenen RadioShuttle-Library muss der Inhalt komplett überschrieben werden (nicht mergen)!

Nach dem Kopieren sollten sich folgende Elemente im Ordner „libraries“ befinden:

  • „HELIOS_Si7021“ (Library für den Temperatur-/Luftfeuchtigkeitssensor)
  • „Arduino-mbed-APIs“ (zusätzliche Treiber und neue Timer-Funktionen für den ESP32- und D21-Chip)
  • „Arduino-TR-064-SOAP-Library“ (Library für das TR-064-Protokoll zur Nutzung mit der FRITZ!Box)
  • „ds3231“ (Library für die RTC-Uhr des ECO-Boards)
  • „OLED“ (Library für SSD1306-Displays, siehe Tech Info „ECO Power“-Board mit OLED-Display betreiben)
  • „pubsubclient“ (Library, die einen Client für einfache Publish-/Subscribe-Meldungen mit einem MQTT-fähigen Server zur Verfügung stellt)
  • „RadioShuttle“ (Funkprotokollsoftware und Beispiele)
  • „RTCZero“ (RTC-Library für den Atmel D21-Chip)
  • „SX1276GenericLib“ (Treiber für den LoRa-Funkchip)

xPinMap.h” anpassen

Die Datei „xPinMap.h“ definiert die Anschlussverbindungen der SAMD21 MCU mit dem Funkchip und der übrigen Peripherie. Sie muss für jedes Programm, das neu installiert wird, überprüft und ggf. angepasst werden. Man findet sie in der Arduino IDE oben als zusätzlichen Reiter.

LongRa-Board (Rev. 7.2)

Damit Programmcode und Board-Revision zusammen passen, suchen Sie nach #define D21_LONGRA_REV_720 und stellen sicher, dass diese Zeile aktiv ist. Sollten Sie eine andere Version des LongRa-Boards besitzen, aktivieren Sie die entsprechende Zeile und deaktivieren Sie die anderen Revisionen:

// #define D21_LONGRA_REV_630  1 // board with LiPo power supply …
#define D21_LONGRA_REV_720 1 // Maker Faire Hannover revision, micro USB

LongRa-Board (ab Rev. 7.5)

Damit Programmcode und Board-Revision zusammen passen, suchen Sie nach #define D21_LONGRA_REV_750 und stellen sicher, dass diese Zeile aktiv ist. Sollten Sie eine andere Version des LongRa-Boards besitzen, aktivieren Sie die entsprechende Zeile und deaktivieren Sie die anderen Revisionen:

// #define D21_LONGRA_REV_630  1 // board with LiPo power supply …
// #define D21_LONGRA_REV_720  1 // Maker Faire Hannover revision …
#define D21_LONGRA_REV_750 1 // LongRa revision with more pins, micro USB

Beispielanwendung „PropertyEditor“

Es gibt einen Speicher, in dem Einstellungen, die nach einer neuen Programminstallation („Sketch“) auf dem Board erhalten bleiben sollen, permanent gespeichert werden können. Hier bietet es sich an, Einstellungen wie WiFi-Zugangsdaten o.⁥ ä. zu speichern. Dafür können Sie die Programme „PropertyEditor“ und „PropertyTest“ nutzen (siehe Tabelle unten). Auf der Seite Permanentspeicher für Einstellungen finden Sie Hintergrundinformationen zu den unterschiedlichen Speicherorten sowie eine Übersicht aller verfügbaren Properties.

Nach dem Start der Arduino IDE muss für das LongRa-Board unter „Werkzeuge > Board“ der Eintrag „Arduino/Genuino Zero (Native USB-Port)“ ausgewählt werden, da die Arduino IDE immer nur die Libraries anzeigt, welche auf dem aktuell ausgewählten Board lauffähig sind.

Anschließend kann das Beispiel „PropertyEditor“ über den Menüpunkt „Datei > Beispiele > Arduino-mbed-APIs > PropertyEditor“ in die Arduino IDE geladen werden.

Öffnen Sie das Fenster „Serieller Monitor“ (siehe Arduino-Fenster „Serieller Monitor“ öffnen unten) und laden Sie den „PropertyEditor“-Sketch mit der Upload-Funktion auf das LongRa-Board. Wenn alles geklappt hat, sollten Sie diesen Text im Fenster sehen:

Zum Auflisten aller verfügbaren Properties geben Sie in der Eingabezeile „l“ (für list) ein, wie im Bild oben zu sehen, und klicken Sie auf die Schaltfläche „Senden“:

Um einen Wert für eine Property zu setzen, müssen Sie in der Eingabezeile ein „s“ (für set), gefolgt von der Nummer der Property und deren Wert eingeben. In diesem Beispiel wird der Property „LORA_DEVICE_ID“ (Nummer 10) der Wert „15“ zugeordnet:

Nach einem erneuten Listenaufruf ist zu erkennen, dass die Property „LORA_DEVICE_ID“ mit dem Wert „15“ belegt wurde:

Durch Eingabe des Befehls „d“ (für delete) lassen sich einzelne Properties aus dem Speicher löschen.

Properties für „RadioTest“ definieren

Die einfache RadioShuttle-Testanwendung („RadioTest“) ist für den Einstieg gedacht. Es gibt zwei Geräte, die miteinander kommunizieren und eine einfache Nachricht austauschen. Ein Gerät nennt sich Knoten und das zweite ist eine Station. Per Tastendruck (Taster „A“) wird eine Nachricht vom Knoten zur Station übertragen. Das geht auch umgekehrt, die Station kann auch eine Nachricht an den Knoten übertragen, vorausgesetzt, der Knoten wurde als Node Online konfiguriert (Voreinstellung ist Node Offline).

Für die Beispielanwendung „RadioTest“ müssen mindestens folgende Properties mit dem PropertyEditor gesetzt werden:

PropertyTypErklärung
LORA_DEVICE_IDT_32BITGeräte-ID des Boards (voreingestellt, falls nicht setzen!)
LORA_CODE_IDT_32BITCode des Boards (voreingestellt, falls nicht setzen!)
LORA_RADIO_TYPET_32BITArt der Nutzung (nicht gesetzt):
1 = Node offline (Betrieb als Funksensor im „deepsleep“-Modus)
3 = Node online (Betrieb als Funksensor, permanent empfangsbereit)
4 = Station Basic (Betrieb als Server für kleine Netzwerke)
5 = Station Server (Betrieb als Server für größere Netzwerke)
LORA_REMOTE_IDT_32BITKommunikations-ID der Gegenstelle (nicht gesetzt)
LORA_APP_PWD
(optional)
T_STRLegt das AES-128-Verschlüsselungspasswort pro App fest

Falls noch nicht gesetzt, schreiben Sie einen Wert für die Property „LORA_DEVICE_ID“ in den Speicher. Diesen Wert finden Sie auf der Rückseite Ihres Boards unter „ID:“.

Verfahren Sie genauso mit den Properties „LORA_CODE_ID“ (diesen Wert finden Sie ebenfalls auf der Rückseite Ihres Boards unter „Code:“), „LORA_REMOTE_ID“ und „LORA_RADIO_TYPE“.

Wenn „LORA_REMOTE_ID“ und „LORA_RADIO_TYPE“ nicht gesetzt sind, und #define USE_DEMOBOARD_PAIR in der Datei „RadioTest.ino“ aktiv ist, wird ein Demo-Testbetrieb zwischen den beiden Boards genutzt (siehe RadioTest.ino anpassen unten).

Beispielanwendung „RadioTest“ aktivieren

Nach dem Start der Arduino IDE muss für das LongRa-Board unter „Werkzeuge > Board“ der Eintrag „Arduino/Genuino Zero (Native USB-Port)“ ausgewählt werden, da die Arduino IDE immer nur die Libraries anzeigt, welche auf dem aktuell ausgewählten Board lauffähig sind.

Das Beispiel „RadioTest“ wird über den Menüpunkt „Datei > Beispiele > RadioShuttle > Radio Test“ in die IDE geladen. Mit diesem Beispielprogramm lassen sich Nachrichten von einem Knoten zu einer Station oder umgekehrt verschicken. Es besteht aus den Dateien „xPinMap.h“, „RTCUtil.cpp“ und „RadioTest.ino“.

Folgende Anpassungen müssen vor der Verwendung vorgenommen werden:

RadioTest.ino anpassen

Die Zeile: #define USE_DEMOBOARD_PAIR kann wie folgt auskommentiert werden:
// #define USE_DEMOBOARD_PAIR

Sie diente dazu, die ausgelieferten Boardpärchen automatisch aufeinander abzustimmen.

Beispielanwendung „RadioTest“ prüfen

Einfach am Knoten den linken Taster „A“ bedienen. Daraufhin wird eine Netzwerknachricht vom Knoten zum Server geschickt. Bei der Nachrichtenübertragung sollten die Sende- und Empfangs-LEDs kurz blinken. Das ist auch umgekehrt möglich, indem am Server der Taster „A“ gedrückt wird und der Knoten eine Nachricht empfangen sollte.

Zusätzlich werden die Nachrichten im Konsolenfenster „Serieller Monitor“ angezeigt.

Arduino-Fenster „Serieller Monitor“ öffnen

Innerhalb von drei Sekunden nach Aufspielen der Software oder einem Reset des Boards muss das Fenster „Serieller Monitor“ geöffnet werden, damit alle Meldungen sichtbar sind. Das Fenster muss beim Aufspielen bzw. Reset erneut geöffnet werden.

Wird das Fenster nicht innerhalb von fünf Sekunden geöffnet, schaltet das Board die USB-Schnittstelle („Serieller Monitor“) ab, und die LED 13 blinkt kurz, womit bestätigt wird, dass USB abgeschaltet wurde. Das Abschalten der USB-Verbindung wird automatisch durchgeführt, um Strom zu sparen.

Beispiel A: Erfolgreicher Start der RadioShuttle-Software

Wenn innerhalb von fünf Sekunden nach Start oder Reset der serielle Monitor geöffnet wird, sollten Sie eine Meldung ähnlich der obigen sehen.
Wichtige Parameter, wie z.⁥ B. Frequenz, Bandbreite sowie der Spreizfaktor sind ersichtlich. Die „TimeOnAir“-Meldung signalisiert, wie lange die Daten mit den eingestellten Parametern unterwegs sind. Die Uhrzeit wird, falls vorhanden, von der RTC-Zeit übernommen, ansonsten wird die Compile-Zeit genutzt. Wichtig ist auch die Information der Knotennummer (hier „ID=14“) sowie die Einstellung, ob das System als Knoten („Node“) oder Station läuft.

Beispiel B: Nachricht erfolgreich versendet

Nach Drücken des Tasters „A“ wurde eine Testnachricht an einen zweiten Knoten gesendet. Dieser hat den Empfang bestätigt.

Beispiel C: Time-out beim Verschicken einer Nachricht

Nach Drücken des Tasters „A“ wurde eine Testnachricht gesendet. Der Empfang wurde aber nicht bestätigt. Nach drei Versuchen wird dieser Vorgang abgebrochen und eine Time-Out-Fehlermeldung („MSG_SentTimeout“) erscheint.

Permanentspeicher für Einstellungen

Es gibt einen Speicher, in dem Einstellungen, die nach einer neuen Programminstallation („Sketch“) auf dem Board erhalten bleiben sollen, permanent gespeichert werden können. Hier bietet es sich an, Einstellungen wie WiFi-Zugangsdaten o.⁥ ä. zu speichern. Die Beispielanwendungen „PropertyEditor“ und „PropertyTest“ (siehe Tabelle unten) können dazu verwendet werden. Die Seite Permanentspeicher für Einstellungen erklärt dies detailliert.

Übersicht aller Beispielanwendungen

NameLibraryErklärung
BlinkyArduino-mbed-APIsPeriodisches Blinken einer LED
BlinkyEnhancedArduino-mbed-APIsTimergesteuertes Blinken einer LED
BlinkyEnhanced_C_Plus_PlusArduino-mbed-APIsTimergesteuertes Blinken einer LED (in C++)
CPUBenchArduino-mbed-APIsMisst die Float- und Integer-CPU-Leistung
DisplayI2CSampleArduino-mbed-APIsVerwendung eines OLED-Displays (128×64 Pixel, I2C). Siehe „ECO Power“-Board mit OLED-Display betreiben
HelloWorldArduino-mbed-APIsEinfaches Ausgabebeispiel; erläutert verschiedene „printf“-Optionen
LongRaPowerSwitchTestArduino-mbed-APIsZeigt, wie 5 V oder 3,3 V mit einem LongRa-Board aktiviert werden
PMSensorRadioArduino-mbed-APIsUmweltsensor; misst periodisch die Staubkonzentration in µg/m3 (nach PM10- und PM2.5-Standard)
PropertyEditorArduino-mbed-APIsProgramm 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
PropertyTestArduino-mbed-APIsZeigt, wie Properties, z.⁥ B. Strings und Nummernwerte in permanentem Flash-Speicher für die Verwendung in Sketches gespeichert werden können. Siehe auch Permanentspeicher für Einstellungen
RadioContinuousTXArduino-mbed-APIsDiagnoseprogramm, welches kontinuierlich sendet, z. B. für HF-Antennenmessungen
RadioShuttlePanicButtonArduino-mbed-APIsIst dem Beispiel „RadioShuttleSimpleNode“ sehr ähnlich, verfügt aber über ein zusätzliches akustisches Signal, um der Hilfe suchenden Person zu bestätigen, dass der Panikalarm ausgelöst wurde
RadioShuttleRadioTest2Arduino-mbed-APIsSollte für neue Benutzer einfacher zu verwenden sein als „RadioTest“ (siehe unten); der gesamte LoRa-spezifische Setup-Code wurde nach „LoRa.cpp“ verschoben
RadioShuttleSimpleNodeArduino-mbed-APIsSendet Sensordaten wie z.⁥ B. Temperatur, Luftfeuchtigkeit und Batteriestatus an eine Gegenstelle. Die Daten werden automatisch alle 30 Minuten oder beim Drücken der Benutzertaste gesendet
RadioTestRadioShuttleSiehe detailliertes Beispiel oben
TimerTestArduino-mbed-APIsBeispiel, welches mehrere asynchrone Timer aufruft, die Erledigungsfunktionen aufrufen, wenn ein Timeout ansteht. Arbeitet präzise und energiesparend

Trainingsvideo: Non-volatile settings (NV Property)

PDF-Datenblatt