Entwicklungswerkzeuge IoT-Kits auf dem Prüfstand (Teil 2)

Zahlreiche Hersteller bieten IoT-Kits an, die Messdaten über eine Funkschnittstelle in eine Cloud transferieren. Als Fortführung dieser mehrteiligen Betrachtung und Erprobung geht es um ein System von Dialog Semiconductor sowie eines von Bosch.

Sowohl das IoT-Sensor-Development-Kit DA14583 von Dialog Semiconductor als auch das Cross Domain Development-Kit XDK110 von Bosch versprechen den Einstieg in eigene IoT-Applikationen anhand eines Cortex-M0- (DA14583) bzw. eines Cortex-M3-basierten Systems (XDK110), das mit verschiedenen Sensoren bestückt ist und eine Funkverbindung über BLE (Bluetooth Low Energy) anbietet. Damit sind die Gemeinsamkeiten der beiden Systeme auch schon erschöpft, denn sowohl bei der Hardware als auch der zur Verfügung gestellten Software und den Entwicklungsumgebungen gehen beide Hersteller unterschiedliche Wege, was sich auch im ungefähr viermal so hohen Preis für das Bosch-System gegenüber dem von Dialog Semiconductor ausdrückt. Ob dies gerechtfertigt ist, wird noch zu sehen sein.

DA14583 von Dialog Semiconductor 

Das DA14583-System wird als kleiner Dongle mit einer Schnittstellenkarte (Communication Interface Board) für die Programmierung, mit einem Mini-USB-Kabel sowie einer 3-V-Knopfzelle (BR 1225) zur Spannungsversorgung ausgeliefert (Bild 1). Im Test hat sich gezeigt, dass die Knopfzelle nach etwa zwei Tagen erschöpft ist, auch wenn kein Dauerbetrieb stattfindet. Es scheint leider auszureichen, wenn der DA14583-Dongle (Smartbond) lediglich eingeschaltet ist.

Der DA14583 (40 Pin QFN) gehört zur DA1548x-Familie, die aktuell aus fünf Mitgliedern besteht, wobei der DA14583 als einziger der BLE-4.2-SoCs einen integrierten Flash-Speicher mit 1 Mb besitzt und über die BLE-Funkstrecke (OTA - Over The Air) programmierbar sein soll. Das Flaggschiff der Familie ist der DA14585/6 mit 2 Mb integriertem Flash-Speicher und BLE-5.0-Funktion.

Der DA14583 verfügt über insgesamt 24 GPIO-Ports, die ebenfalls (alternativ) die Signale für zwei UART-Ports sowie für SPI und den I²C-Bus führen, der beim Smartbond-Dongle drei Sensoren der Firma Bosch ansteuert (Bild 2). Der BMM150 ist ein dreiachsiger Magnetfeldsensor, der BMI 160 kombiniert einen Beschleunigungssensor mit einem Gyroskop (Intertial Sensor) und der BME280 einen Luftdruck-, einen Feuchtigkeits- und einen Temperatursensor.

Als Entwicklungsumgebung wird das Microcontroller-Development-Kit (MDK) von ARM-Keil eingesetzt. Die als Firmware im Smartbond-Dongle abgelegte Software liegt knapp unter der maximal möglichen Codegröße von 32 KB, die demnach mit der kostenlosen Version kompilierbar ist. Näheres zur Installation und zum Umgang mit der Entwicklungsumgebung ist im ersten Teil dieser Artikelserie im Zusammenhang mit dem nRF51 Development Kit von Nordic Semiconductor zu finden.

Dialog Semiconductor stellt das Smart Snippits Studio sowie ein SDK für den DA14583 zur Verfügung, wofür wie üblich eine Registrierung beim Hersteller notwendig ist. Unüblich erscheint dabei, dass dies scheinbar nicht automatisch funktioniert, sondern mitunter bis zu zwei Werktage dauert.

Zunächst ist das Smart Snippits Studio zu installieren, das im Wesentlichen für den Umgang mit dem Flash-Speicher zuständig ist, um etwa hex-Dateien auf das Board zu schreiben. Die Software basiert auf Eclipse, ist demnach eine komplette Entwicklungsumgebung, die allerdings nicht mit der DA1458x-Familie, sondern mit anderen Chips des Unternehmens funktioniert, weshalb stattdessen das MDK von ARM-Keil (Keil µVision) notwendig ist. Gleichwohl ist Smart Snippits Studio nicht optional, weil einige darin enthaltene Programme und Tools, wie die J-Link-Software von Segger, damit installiert werden.

Das SDK von Dialog (funktioniert nur nach Registrierung) ist nach der Installation von Smart-Snippets-Studio zu installieren, wofür eine lokale Kopie des SDK-Ordners auf dem Computer anzulegen ist. Neben der richtigen Reihenfolge bei der Installation ist außerdem der richtige Installationsort von Bedeutung, der durch manuelle Angaben festzulegen ist, wie der Workspace-Ordner für Smart-Snippits-Studio, der sich im gleichen Verzeichnis wie das SDK befinden muss. Andernfalls werden Einstellungen später nicht übernommen oder nicht gefunden.

Beim Erstellen eines neuen Workspace wird automatisch überprüft, ob alle benötigten Softwarepakete installiert sind. Ist dies nicht der Fall, wird automatisch der SDK Tools-Installer, der anzeigt, was benötigt wird, und die fehlenden Komponenten auf Nachfrage hin installiert. Dabei muss manuell dasjenige Verzeichnis angegeben werden, in dem sich das Keil µVision (z. B. C:Keil_v5) befindet.

Beispielsoftware für Android 

Als Beispielanwendungen stehen zwei Android-Programme sowie zwei hierzu passende Firmware-Versionen zur Verfügung, mit deren Hilfe man mit den Sensoren kommunizieren als auch diese kalibrieren, Messfehler kompensieren und eine Bewegung des IoT-Smartbond-Dongles dreidimensional darstellen kann (Bild 3). Dies macht einerseits einen durchdachten und professionellen Eindruck, andererseits sind die Anwendungen aufgrund ihrer Komplexität aber eher nicht als Einsteigerbeispiele geeignet.

Sowohl die dazugehörige apk-Datei zur Installation auf dem Smartphone, als auch der Quellcode stellt Dialog als Android-Studio-Projekt zur Verfügung. Der Download setzt ebenfalls eine vorherige Registrierung voraus. Die heruntergeladene zip-Datei ist anschließend zu entpacken, um das enthaltene Projekt mit Android Studio öffnen zu können. Ist das Projekt geöffnet, versucht Android Studio dieses zu kompilieren. Sollten hierfür benötigte Softwarekomponenten fehlen, erscheint eine Fehlermeldung mit einem Link für die automatische Installation der noch benötigten Komponenten.

Weil die Beispielsoftware bereits auf dem DA14583-Chip installiert ist, sollte zunächst ein erster Funktionstest ausgeführt werden, wofür die Applikation auf einem BLE-fähigen Smartphone (mit der apk-Datei) zu installieren und der IoT-Smartbond-Dongle einzuschalten ist (kleiner Schalter in Bild 2). Die blaue LED muss dabei aufleuchten bzw. langsam pulsieren.

Durch Betätigung des Scan-Buttons am oberen rechten Rand der Android-Applikation wird nach BLE-Geräten gesucht und der Dongle daraufhin als IoT-Sensor Board identifiziert. Nach der Selektierung wird die Benutzeroberfläche mit allen verfügbaren Sensordaten und ihren zeitlichen Messverläufen angezeigt. Der Menü-Button am oberen linken Rand erlaubt den Zugriff auf die Konfiguration und Einstellungen für ein 3D-Modell des Sensors, was optisch gut gelungen ist.

Programmierung mit Hindernissen 

Wie erwähnt, wird die Quellsoftware zur Verfügung gestellt, die als Ausgangsbasis für eigene Applikationen gedacht ist. Der Programmcode, der als Firmware fungiert, wird mit µVision von ARM-Keil bearbeitet und nach erfolgreichem Build mithilfe der Schnittstellenkarte auf den DA14583-Chip übertragen. Weil in der Firmware standardmäßig der Sleep-Modus implementiert ist, spielt für einen erfolgreichen Flash-Speicher-Vorgang interessanterweise die Geschwindigkeit des Programmierers eine Rolle. Durch Drücken der Reset-Taste (SW1) auf der Schnittstellenkarte (Bild 1) wird ein Hardware-Reset ausgelöst und nach zwei Sekunden automatisch in den Sleep-Modus geschaltet. Danach wird das Board nicht mehr erkannt (No Cortex-M-SW Device Found). Deshalb ist es notwendig, nach dem Reset innerhalb von zwei Sekunden den Button »Start/Stop Debug Session« in Keil µVision 5 zu betätigen und die anschließende Meldung (µVision: Evaluation Mode – OK) mit OK zu bestätigen. Nach einiger Übung wurde festgestellt, dass es auch funktioniert, wenn der Start/Stopp-Taste in Keil µVision vor dem Hardware-Reset betätigt wird, sodass nur die Bestätigung im Meldungsfenster innerhalb der zwei Sekunden erfolgen muss.

Es ist natürlich möglich, die Einschaltzeit für den Sleep-Modus (app_default_sleep-mode) zu verlängern oder ihn auch abzuschalten. Dies ist jedoch eher nicht ratsam, denn trotz des sehr rigiden Sleep-Modus war die Knopfzelle im Smartbond-Dongle sehr schnell leer. Außerdem reagierte die Hardware nach einigen erfolgreichen Firmware-Updates überhaupt nicht mehr, sie wurde also grundsätzlich nicht mehr erkannt. Trotz Neuinstallation der Software auf einem anderen Computer änderte sich daran leider nichts und der Support von Dialog Semiconductor diagnostizierte einen nicht behebbaren Hardwarefehler, was insgesamt doch nachdenklich stimmt und einer Nachbesserung bedarf.