IoT-Prototypentwicklung mit problemlos verfügbaren Einplatinendesigns

Von Europäische Herausgeber

Zur Verfügung gestellt von Europäische Fachredakteure von DigiKey

Das Internet der Dinge, und insbesondere das industrielle Internet der Dinge (IIoT), ist nicht nur für transformative Effekte in vielen Branchen verantwortlich, es beinhaltet auch eine fundamentale Änderung der Herangehensweise an die Entwicklung eingebetteter IIoT-Lösungen. Viele Ingenieure, die vor solchen Projekten stehen, entscheiden sich für einen handelsüblichen Einplatinencomputer (SBC) als Designbasis. Diese Methode kann schnell Ergebnisse bringen, aber auch dazu führen, dass es schwierig wird, das resultierende Design in die Massenproduktion zu überführen. Bei der Auswahl einer Prototyping-Plattform ist es wichtig, die MCU genau zu betrachten, auf der das Design aufbaut, sowie die Vielzahl unterstützender Komponenten zu überprüfen, um festzustellen, ob sie einzeln gekauft und in ein von Grund auf neu konzipiertes Design integriert werden können.

Dieser Artikel befasst sich mit dem Design einer einfachen Temperatursensorplattform für ein IoT-Design und mit den einzelnen Komponenten, die dafür verwendet werden. Darüber hinaus wird die Plattform nicht nur dazu dienen, das Konzept des Designs zu überprüfen, sondern auch um zu zeigen, wie sie zur Feinabstimmung der Entwicklung verwendet werden kann. Dazu wird ein Stromverbrauchsprofil und seine Optimierung betrachtet.

Diagramm grundlegender Funktionsanforderungen für einen IIoT-Temperatursensor

Abbildung 1: Grundlegende Funktionsanforderungen für einen IIoT-Temperatursensor.

Betrachten Sie das einfache Temperatursensor-Design in Abbildung 1. Diese Abbildung zeigt die grundlegenden Funktionsblöcke, die für einen batteriebetriebenen Temperatursensor entworfen werden müssen, der seine Daten auf einer Cloud-Plattform speichert. Der Mikrocontroller (MCU) fragt den Temperatursensor in festgelegten Zeitabständen ab, stellt dann mithilfe einer drahtlosen Komponente eine Kommunikationsverbindung her und sendet Daten an die empfangende Cloud-Anwendung. Viele einzelne Entscheidungen sind zu treffen, die die Auswahl der zu verwendenden Komponenten diktieren und somit die Materiallisten beeinflussen werden. Der Temperatursensor könnte zum Beispiel ein dedizierter Temperatursensor der beliebten Serie TMP36 von Analog Devices oder ein umfangreicherer kombinierter Temperatur-, Feuchtigkeits- und Luftdrucksensor wie zum Beispiel der Bosch Sensortec BME280 sein, oder aber ein bescheidener zur Oberflächenmontage vorgesehener PTC-Thermistor von Epcos-TDK. Dabei sind die Kosten nur ein Gesichtspunkt, neben anderen wie Genauigkeit, Toleranz und Anbindungsmethode. Welcher Sensor gewählt wird, beeinflusst auch die MCU-Spezifikation. Verwenden Sie einen kostengünstigen Thermistor, hat dieser wahrscheinlich keine lineare Temperaturbeziehung über den gesamten gewünschten Temperaturbereich, sodass eine softwarebasierte Berechnung des Anstiegs erforderlich wird. Die dafür benötigte Menge an MCU-Ressourcen ist minimal, aber dennoch zu berücksichtigen. Der BME280, das andere Extrem, braucht eine SPI- oder I2C-Kommunikation mit der Host-MCU, sodass eine Komponente mit diesen Schnittstellenfunktionen und der Fähigkeit, den Sensor zu steuern und mehr Daten zu verarbeiten, erforderlich ist.

Auch im Hinblick auf die Kommunikationsmethode sind eine Reihe wichtiger Entscheidungen zu treffen. Die wesentlichste ist wahrscheinlich, welches Drahtlosprotokoll verwendet werden soll. Am beliebtesten sind hier Bluetooth und Wi-Fi. Bluetooth bietet eine kurze Reichweite, ist für relativ kleine Datenübertragungsmengen geeignet und kommuniziert in der Regel mit einer Gateway-Komponente, die möglicherweise Daten sammelt, bevor sie sie mit einer Kommunikationsmethode mit höherer Reichweite wie Wi-Fi weiter überträgt. Wird Wi-Fi-Kommunikation am Sensor bereitgestellt, muss kein Gateway zwischengeschaltet werden, höhere Reichweiten und höhere Datenvolumen sind möglich, aber dafür steigt der Stromverbrauch.

Ist die Entscheidung über die Methode der drahtlosen Kommunikation gefallen, geht es darum, ob ein diskreter Ansatz gewählt wird oder ein vorzertifiziertes Funkmodul. Hat Ihr Unternehmen nicht gerade sein eigenes spezialisiertes HF-Engineering-Team und die Produktionsvolumen sind sehr hoch, wird höchstwahrscheinlich ein Modul gewählt.

Schließlich geht es bei diesem Design auch um Leistungsmanagement. Eine austauschbare Knopfzelle kann eine Möglichkeit sein, den Sensor mit Strom zu versorgen, aber eine wiederaufladbare Batterie mit drahtlosen Energy-Harvesting-Techniken oder ein kleines Solarmodul sind alternative Verfahren. Zudem kann die Möglichkeit, sowohl die MCU als auch das Drahtlosmodul in eine Reihe verschiedener Schlafmodi zu versetzen, einen großen Beitrag zur Energieeinsparung oder Verlängerung der Batterielebensdauer leisten. In der Regel wird eine solche Steuerung der Komponenten über Software erreicht. Weitere zu berücksichtigende Aspekte bei diesem Design sind das geplante Produktionsvolumen und ob dieser Sensor eventuell eines von mehreren Sensorprodukten ist, das das Unternehmen entwickeln und auf den Markt bringen will. Sollte Letzteres der Fall sein, spricht viel für eine plattformbasierte Entwicklung, wobei die MCU und die Drahtlosfunktionen im gesamten Sortiment gleich sind und sich nur die sensorspezifischen Schaltungen von Modell zu Modell unterscheiden.

Plant man das Prototyping eines Sensordesigns wie oben beschrieben, gibt es eine Reihe von Möglichkeiten, das Design aufzubauen. In der Vergangenheit boten Entwicklungskits und Evaluierungskarten der Hersteller eine ideale Lernplattform, auf der ein Design basieren konnte, auch wenn vielfach die Integration der verschiedenen Funktionen ein gewisses Maß an Entwicklung erforderte. Eine neue Spezies voll integrierter und kompakter Einplatinencomputer (SBCs) wird jedoch immer beliebter bei Entwicklern, die minimale Prototyp-Entwicklungszeiten anstreben und darauf achten, dass das Design in ausreichendem Maß quelloffen ist, sodass sie ihr endgültiges Design um den SBC aufbauen können. In diesem Kontext ist es unabdingbar, dass alle Kernkomponenten des SBC erhältlich sind und dass für Gerätebibliotheken eine Creative-Commons-Lizenz gilt.

Ein gutes Beispiel für einen kompakten, voll integrierten SBC ist der Adafruit Feather M0 Wi-Fi (Abbildung 2).

Abbildung: Wi-Fi-Einplatinencomputer Adafruit Feather M0

Abbildung 2: Wi-Fi-Einplatinencomputer Adafruit Feather M0.

Mit einem Gewicht von gerade einmal 6,1 Gramm und einer Größe von 53,3 x 22,4 x 7,6 mm (2,1 x 0,9 x 0,3 Zoll) umfasst der Adafruit Feather M0 Wi-Fi eine Microchip ATSAMD21G18 MCU in einem QFN-Gehäuse mit 48 MHz, komplett mit 256 kB Flash und 32 kB SRAM. Diese Arm®-Cortex®-M0-basierte Komponente bietet 20 zugängliche GPIO-Pins, 8 PWM-Ports, 10 12-Bit-Analogeingänge und einen DAW. Zu den seriellen Peripherie-Kommunikationsschnittstellen gehören SPI, I2C und UART. Ein integrierter 3,3-VDC-Spannungsregler AP2112K-3.3 der Diodes Inc. mit einer Spitzenstrombelastbarkeit von 600 mA sorgt dafür, dass die gesamte Karte über einen Mikro-USB-Steckverbinder mit Strom versorgt werden kann. Die Logikpegel werden überall auf 3,3 VDC gehalten, sodass bei einer Anbindung an 5-VDC-Komponenten Pegelumsetzer erforderlich sind. Zusätzlich kann die Karte über eine 3,7-VDC-LiPo-Batterie in Verbindung mit einem Lade-IC MCP7331T-2ACI/OT von Microchip versorgt werden. Ein bauartgeprüftes ATWINC1500-Modul mit FCC-Zertifizierung von Microchip, komplett mit integrierter Antenne, sorgt für die 2,4-GHz-802.11 b/g/n-Wi-Fi-Kommunikation. Im Normalbetrieb kann der Stromverbrauch der Karte ca. 10 mA für die MCU betragen, mit Spitzen von bis zu 300 mA für das Drahtlosmodul während der Übertragung.

Ein Schaltbild des Adafruit Feather M0 Wi-Fi ist in Abbildung 3 zu sehen.

Schaltbild des Adafruit Feather M0 Wi-Fi (zum Vergrößern anklicken)

Abbildung 3: Schaltbild des Adafruit Feather M0 Wi-Fi.

Ein 32,768-kHz-Quarz, vier LEDs und ein paar Widerstände und Kondensatoren vervollständigen die Stückliste für die Karte.

Die Softwareentwicklung mit dem Feather wird dadurch erleichtert, dass die MCU über einen USB-Bootloader verfügt, sodass die beliebte Arduino-IDE eingesetzt werden kann. Auf diese Weise ist eine schnelle Entwicklung von Anwendungen möglich, während die kompakte Bauweise der Feather-Karte dazu führt, dass sie leicht in frühe Kleinserien-Betaversionen eines neuen Produkts integriert werden kann. Statt die Arduino-basierten USB-zu-Seriell-Programmier- und Debug-Funktionen des Feather zu verwenden, können professionelle Entwickler auch über die SWDIO/SWCLK-Pins auf der Unterseite der Karte das Atmel Software Framework (ASF) nutzen.

Wie erwähnt ist das Wichtigste für den erfolgreichen Einsatz eines SBC zur Prototypenerstellung die Möglichkeit, das eigene Design basierend auf den Kernkomponenten des SBC aufzubauen. Beim Adafruit Feather M0 ist dies sicherlich der Fall. Die MCU und das Drahtlosmodul sind problemlos verfügbar, und eine Vielzahl von Entwicklungstools und Ressourcen dazu. Das Mikrocontroller-Datenblatt des SAMD21G18 von Microchip ist hier abrufbar und enthält eine ausführliche Erklärung der verfügbaren Optionen und Gehäusegrößen. Zu den Hardwareressourcen gehört die Evaluierungskarte ATSAMD21 XPRO mit einem umfangreichen Benutzerhandbuch, ein In-Circuit-Emulator, -Programmierer und -Debugger (Atmel-ICE) und eine Reihe von Erweiterungskarten wie die ATIO1-XPRO, die über verschiedene Sensoren verfügt. Das WINC1500 ist ebenfalls gut mit Entwicklungsressourcen ausgestattet, einschließlich einer XPRO-Erweiterungskarte zur Verwendung mit der ATSAMD21 XPRO mit der Bezeichnung ATWINC1500-XPRO.

Der Feather bietet nicht nur eine ideale Entwicklungsplattform, von der aus ein Designkonzept überprüft und dann ein Prototyp erstellt werden kann. Weil alle Komponenten, auf denen er basiert, problemlos verfügbar sind, kann das Prototyp-Design auch ohne Bedenken in eine Produktionsdesignphase übernommen werden.

Um zu zeigen, wie einfach es ist, einen Prototyp einer IoT-Anwendung zu erstellen, sei auf ein Beispiel verwiesen, das den Feather M0 Wi-Fi mit dem Azure, dem IoT-Dienst von Microsoft, verbindet. Hier ist eine umfassende detaillierte Erläuterung zu finden, die Ingenieure durch die Schritte zur Vorbereitung der Feather-Karte auf die Verbindung mit Azure führt sowie durch die für die Arduino-IDE erforderlichen Bibliotheken und die Einrichtung von Azure.

Microsoft Azure ist ein gutes Beispiel für eine unternehmenstaugliche IIoT-Plattform mit dynamischem Störausgleichsverhalten, die nicht nur für die Konnektivität mit Sensor- und Aktorkomponenten sorgt, sondern auch eine umfassende Suite von Speicher- und Analyseanwendungen für die gesammelten Daten bietet. Eine kostenlose Demo-Version der Plattform mit einfachem Zugang zu allen erforderlichen Funktionen ist ebenfalls erhältlich.

Diese Anwendung zeigt den Einsatz eines Temperatur-, Feuchtigkeits- und Drucksensors BME280 von Bosch, wobei Sie die gesendeten Daten auch simulieren können, ohne den Sensor mit dem Feather zu verbinden.

Der erste Schritt ist die Registrierung für ein kostenloses Microsoft-Azure-Konto, die Sie hier vornehmen. Anschließend melden Sie sich an und greifen auf das Microsoft Azure Dashboard zu, das in Abbildung 4 zu sehen ist.

Abbildung: Einrichten einer neuen Azure-IoT-Hub-Instanz

Abbildung 4: Einrichten einer neuen Azure-IoT-Hub-Instanz.

Klicken Sie auf die Schaltfläche „+ New“ oben auf der Dashboard-Seite und wählen Sie „Internet of Things“ und dann „IoT Hub“ aus. Daraufhin können Sie Ihre IoT-Hub-Parameter (Name und Ressourcengruppe) wie in Abbildung 5 gezeigt benennen.

Abbildung: Einrichten der IoT-Hub-Funktion in Microsoft Azure

Abbildung 5: Einrichten der IoT-Hub-Funktion in Microsoft Azure.

Die letzte Phase des Einrichtungsprozesses ist das Erstellen einer Komponente im IoT Hub. Dies ist in Abbildung 6 zu sehen, wo eine Komponente mit der „Device ID“ (Komponenten-ID) „TempSensor1“ hinzugefügt wird. Markieren Sie das Kästchen für die automatische Erstellung von Komponentenschlüsseln. Dies erfolgt beim Speichern. Sie benötigen den Primärschlüssel für die Komponente, sobald der Feather-Sketch ausgeführt wird. Da sowohl der IoT-Hub als auch jede einzelne Komponente ihren eigenen Primärschlüssel besitzen, besteht Verwechslungsgefahr. Der Primärschlüssel ist der, der zu verwenden ist, wenn Sie aufgefordert werden, den „connection string“ (die Verbindungskette) einzugeben (Abbildung 8).

Abbildung: Hinzufügen des Feather-Temperatursensors zum IoT-Hub als Komponente (zum Vergrößern anklicken)

Abbildung 6: Hinzufügen des Feather-Temperatursensors zum IoT-Hub als Komponente.

Jetzt können Sie am bereitgestellten Demo-Sketch arbeiten, den Sie hier herunterladen können.

Steht ihnen bereits eine Arduino-IDE zur Verfügung, müssen Sie nur noch die Supportdateien für die Feather-M0-Karte hinzufügen. Ein Adafruit-Tutorial, das hier zu finden ist, führt Sie durch diesen Prozess.

Es ist zu empfehlen, die Feather-M0-Wi-Fi-Karte mit dem Blink-Beispielsketch zu testen. Vergewissern Sie sich, dass Sie den Sketch kompilieren und hochladen können und dass die On-Board-LED an Pin 13 (neben dem Mikro-USB-Steckverbinder) richtig blinkt, bevor Sie fortfahren.

Um den Demo-Sketch zu benutzen, müssen Sie die Liste der Bibliotheken in der Arduino-IDE-Umgebung hinzufügen. Achtung: Für die Azure-Bibliotheken AzureIoTHub, AzureIoTUtility und AzureIoTProtocol_HTTP müssen Sie die 1.0.21-Versionen installieren, sonst scheitert der Sketch an Kompilierfehlern. Und auch wenn Sie sich entscheiden, keinen BME280-Sensor zu verwenden, sondern simulierte Daten, müssen Sie dessen Bibliothek mit aufnehmen. Standardmäßig geht der Sketch davon aus, dass Sie einen physischen Sensor verwenden. Möchten Sie stattdessen simulierte Daten verwenden, müssen Sie die Kopfzeile in der Datei „config.h“ auf „#define SIMULATED_DATA true“ ändern.

Abbildung 7 zeigt die vollständige Liste der Bibliotheken und unten im Fenster die erfolgreiche Kompilierung und das erfolgreiche Hochladen des Sketches auf die Feather-M0-Zielkarte.

Abbildung: Arduino-IDE mit Bibliotheksliste und einem erfolgreichen Upload

Abbildung 7: Arduino-IDE mit Bibliotheksliste und einem erfolgreichen Upload.

Wenn der Sketch hochgeladen wurde, müssen Sie zum seriellen Monitor der IDE wechseln. Der Sketch ist so geschrieben, dass die Wi-Fi-Zugangsdetails und die Azure-Verbindungskette über den seriellen Monitor eingegeben werden (Abbildung 8).

Abbildung: Eingabe von Wi-Fi- und Komponenten-Anschlussinformationen

Abbildung 8: Eingabe von Wi-Fi- und Komponenten-Anschlussinformationen.

Kurz nach der Eingabe der obigen Angaben sollten Sie auf dem seriellen Monitor die Bestätigung sehen, dass die Wi-Fi-Verbindung hergestellt wurde. Dann sollte der Feather beginnen, Daten an den Azure-IoT-Hub zu senden, wie in Abbildung 9 zu sehen ist. In diesem Beispiel haben wir simulierte Daten verwendet.

Abbildung: Serieller Monitor, der anzeigt, dass der Feather M0 Wi-Fi Nachrichten sendet

Abbildung 9: Serieller Monitor, der anzeigt, dass der Feather M0 Wi-Fi Nachrichten sendet.

Sobald die Nachrichten vom Azure-IoT-Hub angenommen werden, können Sie überprüfen, ob Sie empfangen werden. Abbildung 10 zeigt die IoT-Komponentenzusammenfassung mit der Anzahl empfangener Nachrichten.

Abbildung: IoT-Hub von Microsoft Azure mit Nachrichtenzusammenfassung (zum Vergrößern anklicken)

Abbildung 10: IoT-Hub von Microsoft Azure mit Nachrichtenzusammenfassung.

Sobald die Azure-Plattform beginnt, Sensordaten zu empfangen, können Sie die Verwendung von einigen der Datenspeicher- und -analysefunktionen ausprobieren. Weitere Informationen dazu finden Sie auf der Microsoft-Azure-Website.

Wie bereits erwähnt kommt es bei einem Einsatz von Batterien als Spannungsquelle besonders darauf an, Strom zu sparen. Wi-Fi ist ein sehr leistungshungriges Protokoll, hat aber auch die bereits aufgeführten Vorteile gegenüber anderen Methoden. Deshalb ist das Sensordesign sorgfältig daraufhin zu optimieren, dass ein niedriger Stromverbrauch erzielt werden kann, ohne die Sensorleistung zu beeinträchtigen. Die MCU und das Wi-Fi-Modul können in Schlafmodi versetzt werden, was beides zusammengenommen die Batterielebensdauer deutlich verlängern kann.

Detaillierte Informationen zu den verschiedenen MCU-Stromsparmodi und dazu, wie diese vom Energiemanagement der Komponente verwaltet werden, finden Sie im Datenblatt SAM-D21. Ein Anwendungshinweis zu den Stromsparmöglichkeiten, die an den Peripherieschnittstellen und -funktionen der MCU möglich sind, ist hier zu finden.

Für die ATWINC1500 sind ähnlich viele Stromsparressourcen verfügbar, darunter ein Abschnitt zu diesem Thema in diesem Anwendungshinweis. Im Feather-M0-Wi-Fi-Tutorial zeigt Adafruit die Verwendung eines Leistungsmonitors, um die Verbrauchsschwankungen des Wi-Fi-Moduls zu veranschaulichen (Abbildung 11).

Abbildung: Stromverbrauch der Feather-M0-Wi-Fi-Karte

Abbildung 11: Stromverbrauch der Feather-M0-Wi-Fi-Karte.

Die orangefarbene Linie in Abbildung 11 ist der Gesamtstromverbrauch der Feather-M0-Wi-Fi-Karte. Die violette Linie zeigt die Versorgungsspannung einer LiPo-Batterie an. Beachten Sie die Spitzen, die durch den Funkbetrieb entstehen, wobei die erste Spitze die Einrichtung der Verbindung zum Zugangspunkt beinhaltet. Wenn keine Kommunikation erfolgt, beträgt der Ruhestrom ca. 22 mA, das heißt ca. 10 mA für die MCU und 12 mA für das Wi-Fi-Modul. Kenntnisse über mögliche Anwendungsfälle für das Endprodukt erleichtern eine Einschätzung der möglichen Energieeinsparungen. Muss die Temperatur zum Beispiel nur ein Mal pro Minute gemessen werden, könnte die Komponente mindestens 55 Sekunden lang im Ruhemodus gehalten werden, da die Temperaturmessung und die Kommunikation mit der Cloudanwendung nur 5 Sekunden dauert. Somit könnte sich die Komponente 91 % der Betriebszeit im tiefsten Ruhemodus befinden. Eine weitere Stromsparmethode könnte zum Beispiel darin bestehen, mehrere Temperaturmessungen vorzunehmen, bevor die Ergebnisse über Wi-Fi gesendet werden, oder die Ergebnisse nur zu senden, wenn sich die gemessene Temperatur von der vorherigen Messung unterscheidet.

Fazit

Problemlos verfügbare SBCs bilden eine ideale Plattform für das Überprüfen von Produktkonzepten und Erstellen erster Prototyp-Designs. Die sorgfältige Auswahl eines SBC, der eine handelsübliche und häufig verwendete MCU und ebensolche Funkkomponenten nutzt, gewährleistet, dass der Prototyp nach der Überprüfung schnell in ein endgültiges Design verwandelt und die Vorteile kurzer Markteinführungszeiten, die Open-Source-Ressourcen und der Community-Support, der mit der Verwendung solcher Karten in der Regel einhergeht, voll ausgeschöpft werden können.

DigiKey logo

Haftungsausschluss: Die Meinungen, Überzeugungen und Standpunkte der verschiedenen Autoren und/oder Forumsteilnehmer dieser Website spiegeln nicht notwendigerweise die Meinungen, Überzeugungen und Standpunkte der DigiKey oder offiziellen Politik der DigiKey wider.

Über den Autor

Europäische Herausgeber

Über den Verlag

Europäische Fachredakteure von DigiKey