Entwicklungswerkzeuge

IoT-Kits auf dem Prüfstand (Teil 1)

7. Dezember 2017, 12:00 Uhr | Klaus Dembowski
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Thunderboard Sense von Silicon Labs

Zu den kostengünstigen Vertretern gehört das Thunderboard Sense von Silicon Labs, das als 45 mm x 30 mm große Platine inklusive Knopfzelle CR2032 für die Spannungsversorgung geliefert wird, in dem sich auch eine Kurzanleitung für die Inbetriebnahme mithilfe einer App (iOS, Android) befindet. Weiteres Zubehör, wie etwa ein micro-USB-Kabel für die Programmierung oder sonstiges wird nicht mitgeliefert.

Den Kern der Schaltung bildet ein SoC vom Typ EFR32 Mighty Gecko Wireless von Silicon Labs, der einen Cortex-M4-Prozessor von ARM mit 32 KB RAM- und 256 KB Flash-Speicher enthält und mit maximal 40 MHz getaktet werden kann. Die drahtlose Kommunikation des SoC wird im 2,4-GHz-Band mit ZigBee, Bluetooth-Low-Energy BLE (5.0), Thread und möglichen eigenen Implementierungen – nicht jedoch von Wi-Fi – unterstützt. Dem SoC stehen ein EFM32 Giant Gecko für die On-Board-Kommunikation (USB, Debugging) sowie ein EFM8 für die Power-Management- und Interrupt-Steuerung zur Seite.

passend zum Thema

TU Hamburg
Bild 1: Das Thunderboard bietet eine reichhaltige Sensorausstattung.
© K. Dembowski

Das Board enthält die folgenden Sensoren, die bis auf den Inertialsensor und das Mikrofon alle über einen I²C-Bus mit dem EFM32-Mikrocontroller kommunizieren (Bild 1):

  • Luftdruck: BMP280 Barometric Pressure Sensor von Bosch,
  • Luftqualität: CCS811 CCS811 Indoor Air Quality Gas Sensor von Cambridge CMOS Sensors (jetzt ams),
  • Luftfeuchtigkeit und Temperatur: Si7021 Relative Humidity & Temperature Sensor von Silicon Labs,
  • Beleuchtung/Licht (UV): Si1133 UV Index & Ambient Light Sensor von Silicon Labs,
  • Inertialsensor: ICM-20648 6-achsiger Inertial-Measurement-Sensor von InvenSense (jetzt TDK),
  • Mikrofon: SPV1840LR5H-B MEMS-Mikrophon von Knowles.

Ein Inertialsensor wie der ICM-20648 kombiniert verschiedene Bewegungssensoren wie für die Beschleunigung, die Drehrate (Gyroskop) und auch ein Magnetometer (Kompass) in einem Chip. Dieser ist über SPI (7 MHz) mit dem Mikrocontroller verbunden. Der Hersteller InvenSense bietet selbst verschiedene Demo-Software an, etwa für Android.

TU Hamburg
Bild 2: Die App für das Thunderboard Sense kommuniziert mit den Sensoren und stellt deren Messwerte dar.
© K. Dembowski

Die App ist wie üblich im App-Store (iOS) bzw. im Google Play Store (Android) erhältlich und kommuniziert per BLE mit der vorprogrammierten Firmware, die als Beispielprojekt im Simplicity Studio unter SOC – Thunderboard Sense zu finden ist. Die App (Bild 2) stellt über Motion (Inertialsensor), Environment (zum Beispiel Luft, Temperatur, Beleuchtung) und I/O (LEDs, Ports) die jeweiligen Daten dar und kommuniziert mit den Buttons und LEDs auf dem Board.

In der App findet sich ein unscheinbarer Schalter für die Funktion Stream-to-Cloud. Dahinter verbirgt sich ein Webserver (Thundercloud) von Silicon Labs, der die Messwerte des Boards grafisch darstellt. Der Cloud-Zugang wird durch die App automatisch ohne Registrierung oder ähnliches angefordert und ist so lange aktiv, wie die App läuft, die die Daten bei aktivierter Stream-to-Cloud-Funktion automatisch zur Silicon-Labs-Seite überträgt.

Standardmäßig werden lediglich die Messdaten in der Cloud visualisiert. Wer noch mehr oder etwas anderes mit den Messdaten der Sensoren in der Cloud anfangen will, muss sich intensiv mit den Programmcodes für die Thundercloud sowie für die iOS- oder Android-App auseinandersetzen, die allesamt auf GitHub veröffentlicht sind. Weil es außer den Quellcodes hierzu keine Dokumentation gibt, ist es wahrscheinlich einfacher, im Bedarfsfall eine eigene neue Cloud-Anwendung auf der Basis der bekannten und gut dokumentierten Systeme (zum Beispiel IBM Bluemix) zu realisieren.

Die Thunderboard-Schaltung ist nicht wirklich neu, denn sie ist im Wesentlichen bereits seit dem Jahr 2012 vom Mighty Gecko Sensor Node her bekannt. Der dort vorhandene Hall-Sensor Si7201 ist beim Thunderboard Sense bisher jedoch noch nicht eingebaut, was aber in einer zukünftigen Version der Fall sein soll. Für die Ein- und Ausgabe stehen zwei Buttons, vier RGB-LEDs in High-Power-Ausführung sowie zwei übliche LEDs zur Verfügung, außerdem sechs GPIO-Ports und dazu separate I²C-, SPI- sowie UART-Anschlüsse. Der maximale Strom pro Input- respektive Output-Pin wird für Sink und Source mit 50 mA angegeben. Insgesamt dürfen bis zu 200 mA Strom an allen Anschlüssen gleichzeitig fließen.

Um Strom zu sparen, sind die Sensoren zunächst alle deaktiviert und werden erst durch ihren expliziten Aufruf aktiv. Der notwendige Sensorcode (Firmware) ist im Simplicity Studio in Form einer API implementiert, was demnach für eigene Sensorapplikationen nutzbar ist.

Programmieren in der Entwicklungsumgebung 

Simplicity Studio ist die Entwicklungsumgebung für alle EFM32-Mikrocontroller, ehemals Energy Micro, kann kostenlos bezogen werden und ist nach einer Registrierung bei Silicon Labs einsatzbereit. Über diese Software werden alle benötigten Treiber, Dokumentationen, SDKs, Debugging-Werkzeuge, Vorlagen und Beispielprogramme installiert, verwaltet und nutzbar gemacht.

Das Thunderboard Sense wird nach dem Anschluss über USB zunächst als Attached-USB-Adapter erkannt, woraufhin die jeweils benötigten Bibliotheken und Treiber automatisch nachgeladen werden, wofür die vorgeschlagenen Optionen nur zu bestätigen sind. Die Programmierung erfolgt in C, wofür Eclipse CDT (C/C++ Development Kit) mit dem freien ARM GCC in Simplicity Studio integriert sind. Alternativ lässt sich auch eine dreißigtägige Testversion der Embedded Workbench von IAR Systems mit dem integrierten C-Compiler einsetzen, der sich demgegenüber mit besseren Laufzeitbibliotheken auszeichnet, was zu vorteilhafteren Codeaufteilungen und -größen führen kann.

Das Laden einer Projektvorlage erfolgt mit dem Studio Launcher in Simplicity Studio über Softwarebeispiele. Grundsätzlich unterscheidet sich die Programmentwicklung vom jeweils zu nutzenden Funkstandard, es wird also in Bluetooth-Applikationen und Nicht-Bluetooth-Applikationen separiert, sodass entweder das Bluetooth-SDK oder das Flex-SDK verwendet wird, was – wie alles andere auch – über Simplicity Studio zur Verfügung gestellt wird. Für den Einstieg empfiehlt sich ein einfaches Beispiel wie SOC - Thunderboard Sense, was automatisch zum Aufruf des BLE-GATT-Konfigurators führt.

TU Hamburg
Bild 3: Die Applikation kann über die BGAPI auf Funktionen des Software-Stacks zugreifen.
© K. Dembowski

Für Bluetooth-Applikationen, wie das erste Codebeispiel, ist demnach das Bluetooth-SDK zuständig. Das SDK stellt dem Entwickler über die BGAPI (Blue Giga API, Bild 3) die Funktionen des BLE-Stacks sowie den BLE-GATT-Konfigurator zur Verfügung, mit dem sich aus verschiedenen Profilen und Services eine auf den eigenen Anwendungszweck ausgerichtete Blue-tooth-Konfiguration (Custom BLE GATT) erstellen lässt.

Für das erste Beispiel ist allerdings nichts weiter festzulegen, denn die passenden Einstellungen sind quasi automatisch durch die Auswahl von SOC - Thunderboard Sense getroffen worden. Nach der Betätigung des Buttons »Generate« im BLE-GATT-Konfigurator werden die benötigten Bibliotheken eingebunden, die Einstellungen festgelegt und daraus die Projektdaten erzeugt. Die einzelnen Dateien eines Projektes lassen sich über den Projekt Explorer (Window - Show View - Project Explorer) anzeigen.

Um den Code in den Baustein zu schreiben beziehungsweise zu »flashen«, selektiert man im Kontextmenü des Projekt-ordners oder bei der .isc-Datei (Rechtsklick im Project Explorer) Run As - Silicon Labs Arm Programm, wodurch das Programm kompiliert und als .hex-Datei in den Controller geschrieben wird, was beim Beispielprojekt tadellos funktioniert hat.

TU Hamburg
Bild 4: Mithilfe des Flex SDK kann man sich sein eigenes Funkprotokoll konfigurieren.
© K. Dembowski

Das Flex-SDK ist, wie erwähnt, für alle anderen Funkstandards – inklusive eines eigenen – zuständig (Bild 4). Die Basis für die Programmierung beim Flex-SDK bildet die RAIL-Bibliothek (Radio Abstraction Interface Layer), die eine API zur Programmierung auf physikalischer Ebene bereitstellt. Damit lassen sich die Sende- und Empfangsvorgänge, der Übertragungskanal, die Topologie, das Routing und weitere grundlegende Optionen individuell einstellen. RAIL ist Bestandteil der Connect-API, die Funktionen zum Aufbau von Netzwerken (Point-to-Point, Star, Single Hop Direct) und zur Interaktion auf der darüber liegenden MAC-Ebene (Senden, Empfangen und mehr) mitbringt, was Entwickler die Arbeit auf der physikalischen Ebene maßgeblich erleichtert.


  1. IoT-Kits auf dem Prüfstand (Teil 1)
  2. Thunderboard Sense von Silicon Labs
  3. nRF51 Development-Kit von Nordic Semiconductor
  4. Fazit zu Silicon Labs und Nordic Semi

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!