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 2

nRF51 Development-Kit von Nordic Semiconductor

Das nRF51 Development-Kit besteht aus einem Board, das mit einem nRF51422 QF-AC bestückt ist, einer CR-2032-Knopfzelle sowie fünf einzelnen nRF51422-Chips im QFN-Gehäuse und wird in einer schmucklosen Antistatiktüte ohne weiteres Zubehör geliefert. Der Chip basiert auf einem ARM Cortex-M0 mit maximal 32 KB SRAM sowie 256 KB Flash-Speicher, der mit maximal 32 MHz getaktet wird. Über die 2,4-GHz-Funkschnittstelle werden BLE, ANT sowie eigene Implementierungen unterstützt.

Die nRF51-Chips von Nordic Semiconductor sind auf zahlreichen Modulen unterschiedlichster Hersteller zu finden, was an einer umfassenden Softwareunterstützung mit dem eigenen BLE-Stack, dem vergleichsweise geringen Energiebedarf und dem kompakten Aufbau liegt, weil nur wenige zusätzliche Bauelemente für eine Applikation nötig sind. Maker-Boards wie das BBC microbit und das RFduino basieren beispielsweise auf einem nRF51822, der sich vom hier behandelten nRF51422 nur dadurch unterscheidet, dass ihm bestimmte Funktionen für die ANT-Funktechnik fehlen.

Noch kompakter mit integriertem Balun-Filter und NFC-Unterstützung für das Bluetooth-Pairing sowie mit Cortex-M4 ist der nRF52832, der als Weiterentwicklung des nRF51422 gilt. Der neueste BLE-Typ von Nordic Semiconductor ist der nRF52840, der als einer der ersten Chips Bluetooth 5.0 vollständig unterstützen soll, während es im Test aber noch um die bereits etablierte Generation BLE 4.2 mit dem vorliegenden nRF51422-Chip auf dem nRF51 Development Board an den Start geht (Bild 5).

passend zum Thema

TU Hamburg
Bild 5: Das nRF51 Development-Kit. Der nRF51422-Chip selbst benötigt nur relativ wenige zusätzliche Bauelemente auf der Platine.
© K. Dembowski

Als Kommunikationsprozessor (Interface-MCU), der für die USB-Schnittstelle, den integrierten J-Link-Debugger von Segger sowie für die Power-Steuerung der Schaltung zuständig ist, wird ein ATSAM3U2 mit ARM Cortex-M3 von Atmel auf dem Board eingesetzt. Das Board ist kompatibel mit Arduino Uno 3, kann entsprechende Shields an den Buchsenleisten (P1: VCC/GND/Reset, P2: Analog/GPIO, P3-P4: GPIO) aufnehmen, aber auch alternativ selbst als Shield für Arduino-Boards fungieren. Dafür haben die Macher ein trickreiches Layout gewählt, in dem die Port-Signale noch einmal separat neben die vorhandenen Buchsenleisten geroutet wurden, wo sich entsprechende Steckerleisten nachträglich bestücken lassen.

Vier LEDs und Buttons stehen für den universellen Einsatz zur Verfügung, wobei einige der dazugehörigen Leitungen den möglichen Shield-Signalen entsprechen. Insgesamt sind 31 GPIO-Anschlüsse vorhanden, wovon vier PWM-fähig sind. SPI- sowie I²C-Bus sind ebenfalls mit dabei. Im Standardmodus sind maximal 0,5 mA pro GPIO-Leitung möglich, im High-Drive-Modus bis zu 5 mA bei der Verwendung von drei GPIOs und 15 mA, wenn lediglich ein GPIO-Anschluss genutzt wird. Sensoren sind auf dem Board nicht vorhanden. Am Anschluss P6 werden UART-Signale der Interface-MCU geführt, die die Software als virtuellen COM-Port behandelt, die Signale sind also als serielle Schnittstelle zu verwenden. Die Spannungsversorgung ist über den USB, über ein externes Netzteil oder über die mitgelieferte Knopfzelle möglich.

Das Board unterstützt die Development-Tool-Chain von Nordic Software, die mit µVision von Keil, Embedded-Workbench von IAR oder Eclipse mit dem GCC-Compiler einsetzbar ist. Keil und IAR bieten Entwicklungsumgebungen, die die benötigten Bibliotheken und Treiber stark automatisiert einbinden und somit vereinfachen. Dabei gibt es eine Limitierung bei der maximalen Codegröße auf typischerweise 32 KB, Kompilieren und Linken eines Programmes funktioniert also nur bis zu dieser Größe. IAR bietet jedoch eine separate 30-Tage-Version an, die eine derartige Einschränkung für diese Zeit nicht aufweist. Das mitgelieferte Einsteigerbeispiel liegt unter der kritischen Größe und wird mit µVision5 von Keil verarbeitet. Die Embedded-Workbench von IAR hat einige bekannte Probleme mit dem nRF51422, weshalb die µVision5 auch die erste Wahl ist.

Inbetriebnahme und Programmierung 

Nach dem Verbinden des Boards über den USB signalisiert es die Startbereitschaft mit einer Power-LED (LD5), einer blinkenden LED1, und vom PC wird es als Standard-USB-Drive (USB-Massenspeicher) sowie als CDC-UART-Port erkannt. Danach sind zwei Softwarepakete von Nordic Semiconductor (nRFgo Studio, nRF5 SDK) und das µVison MDK von Keil aus dem Internet zu laden und zu installieren. Unter dem Laufwerk JLINK (Segger MSD Volume USB Device) des Boards sind verschiedene Links zu Segger und Nordic Semiconductor abgelegt, die jedoch nicht mehr alle aktuell sind, weshalb die Verwendung der aktuelleren Software von den Nordic-Internetseiten zu empfehlen ist. 

Über die Windows-Software nRFgo Studio (32 Bit oder 64 Bit, Windows XP bis Windows 8) lassen sich die Funkschnittstellen (2,4-GHz-Bluetooth) verschiedener nRF-Serien konfigurieren, in Betrieb nehmen und auf ihre Funktion überprüfen sowie die Boards programmieren. Mit der Installationsoption Typical werden alle wichtigen Komponenten installiert, wofür einige Bestätigungen für die Installation bestimmter Gerätesoftware anzuklicken sind.

Nach der Installation von nRFgo-Studio sollte sich ein weiteres Fenster zur Installation der Kommandozeilen-Tools für nRF5x öffnen, was ebenfalls zu bestätigen ist, gefolgt von der Softwareinstallation der für den J-Link-Adapter von Segger, der auf dem Entwicklungsboard integriert ist. Die Funktionen in nRFgo, das sich mit einer leeren Benutzeroberfläche präsentiert, sind zunächst (für die Einsteigerbeispiele) nicht von Bedeutung. Es irritiert jedoch, dass das angeschlossene Board nicht als solches, sondern nur der J-Link-Adapter erkannt wird.

Wichtiger ist zunächst die Programmierumgebung, wie das bekannte Microcontroller-Development-Kit (MDK) µVision von ARM/Keil, was eine Registrierung bei ARM/Keil erfordert und wofür man den Zugang zur Software erhält. Während der Installation kann man den Standardeinstellungen im Install-Wizard folgen. Anschließend sollte sich der Pack-Installer von Keil öffnen, der die zu verwendenden Chips und Boards verwaltet. Bei einigen Installationen hat sich der Pack-Installer von Keil jedoch nicht automatisch geöffnet, was dann manuell auszulösen wäre. Zunächst ist dies jedoch auch nicht notwendig – hier also nichts weiter zu selektieren –, weil der korrekte Chip später beim Öffnen des entsprechenden Beispielprogrammes ausgewählt werden kann, was dann gegebenenfalls ein Nachinstallieren der passenden Software erfordert.

Als letzte notwendige Softwarekomponente ist das nRF5 SDK zu laden und zu installieren, das notwendige Updates, Treiber, Bibliotheken und Beispiele enthält. Die richtige Datei ist nicht auf den ersten Blick zu finden. Auf der Internetseite ist oben links unter Location das Verzeichnis nRF_SDK/ zu selektieren. Daraufhin tauchen die verschiedenen Versionen auf, die von hier geladen werden können und anschließend mit einem ZIP-Tool zu entpacken sind. Eine ausführliche Dokumentation hierzu ist html" target="_blank" href="http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v13.0.0%2Findex.html">hier zu finden. Diese ist lesenswert, weil hier angegeben ist, welche SDK-Version, die als gepackte ZIP-Datei zur Verfügung gestellt wird, für den Einsatz eines bestimmten Beispiels notwendig ist. Es ist keineswegs so, dass immer die neueste SDK-Version die passende ist.

TU Hamburg
Bild 6: Im nRF5_SDK-Verzeichnis sind verschiedenen SDKs zu finden, wobei für das Beispiel das mit der Versionsnummer 12.2.0 benötigt wird.
© K. Dembowski

Das an dieser Stelle (Location, Bild 6) zu findende Verzeichnis nRF5_IOT_SDK/ ist im Übrigen nicht für dieses Entwicklungsboard geeignet, sondern ausschließlich nRF_SDK/, wo gleich mehrere Ordner mit verschiedenen Versionsnummern abgelegt sind. Für das nachfolgende Beispiel ist die Version 12.2 zu selektieren, weil das notwendige SoftDevice S130 nicht mit höheren Versionen kompatibel ist. Nordic bezeichnet mit SoftDevices bereits fertigen Code mit unterschiedlichen Funktionen, der auf das Board geladen werden kann, wie es etwa mit den Funk-Stacks praktiziert wird.

Nach dem Download ist die SDK-Datei zu entpacken und in ein anderes Verzeichnis zu kopieren, damit man es gegebenenfalls auch wiederfindet, denn im SDK ist eine ganze Reihe von nützlichen Dateien enthalten. Zunächst ist lediglich das Beispielprogramm von Bedeutung, das eine BLE-Kommunikation zwischen dem Entwicklungsboard und einem Android-Gerät (Smartphone, Tablet) realisiert.

TU Hamburg
Bild 7: Vor dem Build und dem Download ist eine Kontrolle des eingestellten Chips ratsam.
© K. Dembowski

Hierfür ist ein SoftDevice (mit dem BLE-Stack) notwendig, das zunächst auf das Entwicklungsboard zu übertragen ist. Benötigt wird das s130 SoftDevice, das man direkt von der Nordic-Website herunterladen kann. Es ist aber auch im bereits installierten nRF5 SDK hinterlegt. Für die Installation des SoftDevice wird nRFgo-Studio geöffnet und unter Device-Manager der Segger-Eintrag ausgewählt. Auf der geöffneten Oberfläche ist der Reiter Program SoftDevice auszuwählen, im SDK-Ordner zum s130-Hex-File zu navigieren und der Program-Button auszulösen. Schon nach kurzer Zeit wird die erfolgreiche Programmierung bestätigt.

Jetzt fehlt natürlich noch das Beispielprogramm, das mit in µVision5 über Project - Open Project … und Selektierung des Projektes (ble_app_uart_pca10028_s130.uvprojx) im SDK-Ordner (/examples/ble_peripheral/ble_app_uart/pca10028/s130/arm5_no_packs) geladen wird.

Vor der Programmierung des Codes auf das Board ist zu überprüfen, ob der korrekte Chip als Ziel (nrf51422_aaac) ausgewählt ist. Falls nicht, ist der Pack-Installer mit dem grün markierten Button zu öffnen und der passende Chip (Bild 7) auszuwählen. Durch die Auswahl von Build (F7) und anschließend Download (F8) lädt die Software das Programm auf den Chip. Das Schreiben des Beispielprogramms lässt sich ebenfalls mit nRFgo Studio durchführen, wofür die Hex-Datei dann bereits vorliegen muss.

TU Hamburg
Bild 8: Der serielle Monitor der nRF Toolbox App von Nordic Semiconductor.
© K. Dembowski

Die App für das Android-Gerät nennt sich nRF Toolbox-Application und ist im Google-Play-Store zu finden. Außerdem ist noch ein Terminalprogramm für die Anzeige von Statusmeldungen während der Kommunikation zwischen dem Board und dem Android-Gerät zu empfehlen, beispielsweise Termite, das auf einem PC installiert wird. Hierfür sind wieder einige Konfigurationsschritte notwendig, die ebenfalls im Tutorial erläutert sind.

Sobald das Beispielprogramm auf dem Board läuft, blinkt die LED1 auf dem Board und es erschient UART Start im Terminalfenster, sodass auch die App mit dem Board kommunizieren können sollte. Das Interessanteste an dieser einfachen App ist der serielle Monitor (Nordic UART; Bild 8), der die Aktionen der UART-Verbindung protokolliert. Außerdem lassen sich damit Nachrichten (maximal 20 Byte) zwischen dem Android-Gerät und der Termite-Konsole austauschen. 


  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!