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

Voraussetzungen

RadioShuttle nutzt modernes C++, welches im Arduino unvollständig aktiviert ist. Zusätzlich ist ein Funktionsname im Arduino und C++ doppelt definiert, daher muss Folgendes in der Arduino-Installation geändert werden, um die RadioShuttle oder ähnliche C++ Lösungen zu nutzen.

C++ richtig aktivieren

Arduino beenden. In der Datei „platform.txt“ unter folgenden Pfad (ab Benutzerordner) bitte folgendes ändern:
Mac: „Library/Arduino15/packages/arduino/hardware/samd/1.6.17“
Windows: „AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.17“
Alt: compiler.c.elf.cmd=arm-none-eabi-gcc
Neu: compiler.c.elf.cmd=arm-none-eabi-g++

Achtung, die Änderungen werden bei einer neuen Arduino-Installation ggf. gelöscht und müssen dann wieder geändert werden.

Hinweis: Bei folgender Fehlermeldung ist der obige Schritt nicht durchgeführt worden:

… undefined reference to `std::__detail::_List_node_base …

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-2017-08-13.zip“.
Das Zip-Archiv muss entpackt und dessen Inhalt dann in den Ordner „Documents/Arduino/libraries“ kopiert werden.

Nach dem Kopieren sollte im Ordner „libraries“ Folgendes zu sehen sein:
– „SX1276GenericLib“ (der Treiber für den LoRa Funkchip)
– „Arduino-mbed-APIs“ (zusätzliche Treiber und neue Timer-Funktionen für den D21-Chip)
– „RTCZero“ (ein Arduino RTC-Treiber für den Atmel D21-Chip)
– „RadioShuttle“ (die Funkprotokollsoftware und Beispiele)

Beispielanwendung „RadioTest“ aktivieren

Nachdem die Arduino IDE neu gestartet wurde, ist unter „Werkzeuge > Board“ für das LongRa-Board der „Arduino/Genuino Zero (Native USB-Port)“ auszuwählen, da die Arduino IDE immer nur die Beispiele anzeigt, die auf dem aktuell ausgewählten Board lauffähig sind.

Anschließend kann das Beispiel „RadioTest“ über den Menüpunkt „Datei > Beispiele > RadioShuttle > Radio Test“ in die IDE geladen werden. Mit diesem Beispielprogramm kann man Nachrichten von einem Knoten zu einer Station oder umgekehrt verschicken. Es besteht aus den Dateien „PinMap.h“ und „RadioTest.ino“.

Folgende Anpassungen müssen vor der Verwendung vorgenommen werden:

PinMap.h anpassen

„PinMap.h“ definiert die Anschlussverbindungen der SAMD21 MCU mit dem Funk-Chip und der übrigen Peripherie. Sie muss auch später in den Dateiordner eines jeden Programms kopiert werden. Man findet sie anschließend in der Arduino IDE oben als zusätzlichen Reiter.

Damit Programmcode und Board-Revision zusammen passen, suchen Sie nach #define BOARD_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 andere Revision:

// #define BOARD_REV_630 1 // board with Lipo power supply …
#define BOARD_REV_720 1 // Maker Faire Hannover revision, micro USB

RadioTest.ino anpassen

Über den Reiter „RadioTest“ gelangt man in den Programmcode der Datei RadioTest.ino. Im Bereich enum SensorsIDs ist unter  #ifdef RADIO_SERVER die individuelle Geräte ID (ohne führende Nullen) und der Code des als Server eingesetzten LongRa-Boards einzutragen – man findet diese Angaben neben dem Batteriefach:
myDeviceD = XXX // individuelle Geräte-ID
myCode = 0xXXXXXXXX  // individueller Code
remoteDeviceID = XXX // die Geräte-ID der Station (Server)

Unter remoteDeviceID wird die Geräte-ID der Gegenstation, mit der das RadioTest-Beispiel kommuniziert, eingetragen.

Im Bereich „#else“ des Programmteils enum SensorsIDs sind auf gleiche Weise myDeviceID und myCode von dem als Knoten eingesetzten LongRa-Board einzutragen.

Hier ein Beispiel für den enum SensorsIDs-Block:

enum SensorsIDs {
myTempSensorApp = 0x0001,

#ifdef RADIO_SERVER
  myDeviceID = 12,      // the station ID 12
  myCode = 0x20EE91D6,  // code for the station; ID 12
  remoteDeviceID = 11,  // the node ID
#else
  myDeviceID = 11,      // the node ID 11
  myCode = 0x21C3B117,  // code for the node ID 11
  remoteDeviceID = 12,  // the station ID
#endif
};

Beispielanwendungen

Beispielanwendung „RadioTest“ für den Server aktivieren

Im Reiter „RadioTest“ im Arduino IDE-Reiter muss der anzupassende Sketch geöffnet werden.
Für den Server muss folgende Zeile aktiviert sein:
#define RADIO_SERVER 1

Jetzt kann die Software „RadioTest“ kompiliert und auf das Server-Board hochgeladen werden.

Beispielanwendung „RadioTest“ für den Knoten aktivieren

Im Reiter „RadioTest“ im Arduino IDE-Reiter muss der anzupassende Sketch geöffnet werden.
Für den Knoten muss folgende Zeile deaktiviert sein:
// #define RADIO_SERVER 1

Die Software „RadioTest“ ist danach erneut zu kompilieren und dann auf das Knoten-Board hochgeladen werden.

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 an der Station die Taste „A“ gedrückt wird und der Server eine Nachricht empfangen sollte.

Zusätzlich werden die Nachrichten in der „Serial Monitor“ Konsole angezeigt.

Arduino-Fenster „Serial Monitor“ öffnen

Innerhalb von drei Sekunden nach Aufspielen der Software oder einem Reset des Boards muss das Fenster „Serial 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 („Serial 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 Spreading-Faktor 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 der Taste „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 der Taste „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.

PDF-Datenblatt zum Herunterladen »