Kombination des Desktops von Microsoft Windows mit Arduino: Der Traum der Maker?

Von Europäische Herausgeber

Zur Verfügung gestellt von Europäische Fachredakteure von Digi-Key

Die Maker-Community hat Unmengen neuer Ideen. Viele davon basieren auf neuen Technologien und bringen frischen Wind in die Bereitstellung von Diensten. Andere eröffnen Möglichkeiten, die zuvor für unrealisierbar gehalten wurden. Für die klugen Köpfe hinter diesen Ideen liegt die Herausforderung häufig darin, ein auf dem Papier bereits fertiges Produktdesign auch tatsächlich umzusetzen. Angehende Unternehmer realisieren, dass sie ihre neuartigen Produkte unbedingt als erste auf den Markt bringen müssen. Dies wiederum setzt eine schnelle Entwicklung voraus. Eingebettete Einplatinencomputer (SBCs) wie etwa der Arduino, der Raspberry Pi und der BeagleBone Black haben sich schnell zur bevorzugten Plattform vieler Maker entwickelt. Auf den meisten Einplatinencomputern kommt Linux als Betriebssystem zum Einsatz. Linux ermöglicht zwar äußerst flexible Designs mit großem Funktionsumfang, erfordert zu Beginn aber auch ein gewisses Maß an Vertrautheit, was viele abschrecken könnte, die von der Verwendung eines Open-Source-Betriebssystems weniger überzeugt sind. Der Arduino stellt hierbei vielleicht eine Ausnahme dar, da er ohne Betriebssystem auskommt. Dies hat jedoch in keinster Weise negative Auswirkungen auf die Glaubwürdigkeit des Arduino in Bezug auf die einfache Programmierung von Schnittstellen für eingebettete Designs. Der in der Maker-Community und insbesondere bei Elektronik-Einsteigern überaus beliebte Arduino soll bei vielen Hobby-Elektronikern das Interesse neu entfacht haben und somit der Auslöser für zahlreiche neue Produktideen gewesen sein.

Bei der Entwicklung eines neuen Produkts stehen viele Maker vor der Herausforderung, einen Prototyp für ein Produkt zu erstellen, der sämtliche Möglichkeiten des Arduino mit der Benutzer- und Anwendungsvertrautheit von Microsoft® Windows vereint. Die Vielzahl an Konnektivitätsoptionen wie etwa SPI, I2C und UART in Kombination mit GPIO-, PWM- und ADC-Schnittstellen lassen keine Zweifel daran aufkommen, dass der Arduino eine überaus glaubwürdige und leistungsfähige Möglichkeit darstellt, ein praxistaugliches Design zu erstellen. Bezogen auf die Entwicklung von Desktop-Anwendungen ist es sehr wahrscheinlich, dass Sie eher mit der Verwendung von Microsoft Visual Studio IDE mit Programmiersprachen wie C#, Java und Python vertraut sind als mit Linux. Noch bis vor Kurzem gab es keine einfache Möglichkeit, die verschiedenen Domänen von Windows Desktop und Arduino zu integrieren. Ein Einplatinencomputer mit der Bezeichnung LattePanda von DFRobot verspricht jedoch, eben dies zu tun (Abbildung 1).

Bild des LattePanda von DFRobot

Abbildung 1: Der LattePanda von DFRobot.

Im Wesentlichen handelt es sich beim LattePanda um einen Windows-Einplatinencomputer, auf dem Microsoft Windows 10 Home vorinstalliert ist. Er verfügt über einen Intel® Cherry Trail Atom Z8350 Quad Core mit 1,8 GHz sowie einen mit Arduino kompatiblen Atmel ATmega32u4 Co-Prozessor. Beachten Sie, dass es sich hierbei um ein vollwertiges Windows-10-System handelt und nicht um eine abgespeckte Version für das IoT. Es sind zwei Modelle verfügbar: eine Version mit 2 GB Arbeitsspeicher und 32 GB Massenspeicher (e-MMC) sowie eine Version mit 4 GB Arbeitsspeicher und 64 GB Massenspeicher (e-MMC). Desweiteren sind LattePanda-Boards auch ohne aktivierten Windows-10-Schlüssel erhältlich. Als standardmäßige Anschlussoptionen bietet der LattePanda USB 2.0 und USB 3.0, einen Ethernet-Port mit 100 Mbit/s, einen HDMI-Ausgang, eine 3,5-mm-Audiobuchse, eine microSD-Buchse, Bluetooth 4.0 und Wi-Fi. Abbildung 2 zeigt die Hauptkomponenten und Schnittstellen des LattePanda. Die Stromversorgung der Platine erfolgt über ein 2,5-A-Netzteil mit 5 VDC über einen Mikro-USB-Stecker. Stellen Sie sicher, dass das Netzteil im Betrieb mindestens 2,3 A bereitstellen kann, um zu verhindern, dass der LattePanda während des Boot-Vorgangs nicht zurückgesetzt wird. Mit seinen 88 mm x 70 mm (3,46" x 2,76") ist der LattePanda klein genug, um in kompakte Designs integriert werden zu können. Um die Platzierung in einem Gehäuse zu erleichtern, sind die mechanischen Spezifikationen sowie die 3D-Modelldateien des LattePanda über das Forum des Boards verfügbar. Bei beengten Platzverhältnissen wird eine Zwangskühlung mit einem Lüfter sowie die Bereitstellung eines geeigneten Kühlkörpers empfohlen, da das Board im normalen Betrieb ziemlich heiß wird. Es sind verschiedene maßgeschneiderte Kupferkühlkörper zur Verwendung mit dem LattePanda verfügbar. Der Lüfter wird über eine 5-VDC-Stromversorgung auf der Platine betrieben.

Diagramm der Hauptkomponenten und Schnittstellen des LattePanda

Abbildung 2: Hauptkomponenten und Schnittstellen des LattePanda

Neben Windows als Betriebssystem sind außerdem Visual Studio von Microsoft und die Arduino-IDE vorinstalliert. Das Board ist für den Betrieb ohne Monitor geeignet, indem eine geeignete VNC-Anwendung (Virtual Network Computing) wie beispielsweise TightVNC verwendet oder das LattePanda 7-Zoll-LCD-Display (1074 x 600) mit seinem entsprechenden Touchpanel angeschlossen wird. Sowohl das Display als auch das kapazitive Touchpanel werden über FFC-Kabel und ZIF-Sockel mit dem LattePanda verbunden.

Hinsichtlich der Verwendung der verschiedenen Ein- und Ausgangssignale für Peripheriegeräte erweist sich die Kombination aus Windows und Arduino als überaus gut durchdacht. Abbildung 3 zeigt die verfügbaren Anschlussbelegungen. Es stehen Signale sowohl vom Atom als auch vom ATmega32u4 zur Verfügung, wobei die meisten davon über eine 24-polige, zweireihige Stiftleiste vom Arduino stammen. Die Ein- und Ausgangssignale des Atom sind im Bereich U1 von Abbildung 3 zu finden. Alle 20 GPIO-Pins (analog (A0–A5) und digital (D0–D13)) nutzen 5V-Logik und können als Ein- oder Ausgang verwendet werden, wobei 12 davon individuell auf analoge Eingangssignale eingestellt werden können. Siehe Bereich U2 von Abbildung 3. Achten Sie beim Anschließen von Sensoren oder Geräten darauf, dass sie ebenfalls mit 5V-Logik arbeiten. Falls ein 3,3-VDC-Gerät verwendet werden sollte, wären Logikpegelwandler erforderlich. Jeder analoge Pin verfügt über eine Auflösung von 10 Bit und liefert 1024 Werte für einen Eingangsspannungsbereich von 0 bis 5 VDC. Die Pins D3, D5, D6, D9, D10 und D13 können als 8-Bit-PWM-Ausgänge verwendet werden. Zusätzlich können die Pins D7, D3, D2, D1 und D0 zum Auslösen eines externen Interrupts für verschiedene Bedingungen verwendet werden. Gemäß Arduino-Tradition ist an D13 eine LED angeschlossen, die mit dem standardmäßigen Sketch einer blinkenden LED verwendet werden kann.

Bild des LattePanda – Pin-Outs für Peripheriegeräte

Abbildung 3: LattePanda – Pin-Outs für Peripheriegeräte.

Beachten Sie, dass manche Pins des Arduino (D9, D10, D11, A0, A1 und A2) sowohl im Hauptsteckverbinder des Arduino als auch zur Verwendung mit den Sensoren der Gravity-Karte von DFRobot genutzt werden.

Der Zugriff auf die Pins ist über eine Anwendung möglich, die sowohl auf dem ATmega32u4 als auch auf dem Atom ausgeführt werden kann. Zusätzlich zu den standardmäßigen GPIO-Eingängen und -Ausgängen steht über die Stiftleisten auch eine serielle Kommunikation über I2C- und SPI-Schnittstellen zur Verfügung. Ein 6-Bit-ICSP-Steckverbinder ist ebenfalls vorhanden. Dank der Open-Source-Bibliothek LattePanda Firmata zur Verwendung mit Visual Studio können Windows-Anwendungen die GPIO-Pins des Arduino problemlos nutzen. Dadurch hat jede Anwendung über die Klassenfunktionen Zugriff auf und Kontrolle über jeden einzelnen Pin. Eine umfassende Erläuterung der verfügbaren Bibliotheksfunktionen sowie einzeln herunterladbare Beispiele für Visual Studio in C# finden Sie hier.

Screenshot des Visual Studio-Codes, um die LED auf der Platine zum Blinken zu bringen (für Vollbild auf das Bild klicken)

Abbildung 4: Screenshot von Visual Studio mit dem Code, um die LED auf der Platine zum Blinken zu bringen.

Zur Überprüfung der korrekten Funktionsweise zeigt Abbildung 4 den C#-Code in Visual Studio, mit dem die Firmata-Klassenbibliothek aufgerufen wird. Wenn der Code ausgeführt wird, fängt die LED an zu blinken. Sowohl Codestruktur als auch Funktionen des Arduino basieren auf C. Leser, die hiermit vertraut sind, werden daher die Ähnlichkeit zwischen diesen und den in einem Arduino-Sketch verwendeten Klassenfunktionen bemerken.

Durch die Verfügbarkeit von Sensoren, die speziell für das Board entwickelt wurden, wird das Erstellen von Anwendungen mit dem LattePanda noch weiter vereinfacht. Das Gravity Sensor Starter Kit mit seinen 14 Sensoren inklusive Verkabelung beinhaltet Temperatur-, Licht-, Gas- und Flammensensoren, einen analogen Drehzahlsensor, digitale Drucktasten, verschiedenfarbige LEDs sowie ein Releaismodul. Diese werden mit der Reihe der sechs 3-poligen Gravity-Steckverbinder auf der Platine verbunden, deren Pin-Out in Abbildung 3 zu sehen ist.

Der I2C-Bus der Platine stellt eine weitere komfortable Möglichkeit dar, um Sensoren, Aktuatoren und Displays anzuschließen. Die Firmata-Bibliothek enthält die benötigten Klassenfunktionen, um Daten unter Verwendung der Funktionen wireBegin, wireRequest und didI2Cdatareceive direkt an eine Visual Studio-Anwendung zu senden und von ihr zu empfangen. Das nachstehende Beispiel zeigt ein mit der I2C-Schnittstelle verbundenes Evaluierungsboard mit einem dreiachsigen Beschleunigungssensor von Adafruit. Auf diesem Evaluierungsboard kommt der extrem energieeffiziente 3-Achsen-MEMS-Sensor ADXL345 mit hoher Auflösung von Analog Devices zum Einsatz. Der MEMS-Sensor wird wie in Abbildung 5 gezeigt mit dem LattePanda verbunden.

Bild der Verkabelung des 3-Achsen-MEMS-Sensors ADXL345 von Adafruit mit dem LattePanda

Abbildung 5: Bild der Verkabelung des 3-Achsen-MEMS-Sensors ADXL345 von Adafruit mit dem LattePanda.

Die Stromversorgung erfolgt über die Pins 22 (5 V) und 21 (GND) und die I2C-Schnittstelle ist mit Pin 6 (gelber Draht, SDA) und Pin 8 (blauer Draht, SCL) verbunden.

Abbildung 6 zeigt den Quellcode für das Sensorboard, mit dem sie für den Sensor die Standardadresse 0x53 und einen Standardmessbereich von 0x2D (2 G) verwendet. Die Daten werden dann vom Sensor kontinuierlich ausgelesen und in X-, Y- und Z-Werte umgewandelt, um sie auf dem Konsolenbildschirm anzuzeigen.

Bild des C#-Codes zur Anzeige der Einrichtung und Werte des 3-Achsen-MEMS-Sensors ADXL345 (für Vollbild auf das Bild klicken)

Abbildung 6: C#-Code zur Anzeige der Einrichtung und Werte des 3-Achsen-MEMS-Sensors ADXL345 über die I2C-Schnittstelle.

Die zwei obigen Beispiele sollen nicht nur deutlich machen, wie schnell sich mit dem LattePanda eine Anwendung erstellen lässt, sondern auch, dass es sich bei diesem Board um eine vorzertifizierte Plattform handelt, auf der Anwendungen schnell entwickelt und auf dem Markt bereitgestellt werden können. Statt ein geeignetes eingebettetes Design inklusive der damit verbundenen, nicht wiederkehrenden Kosten, Risken und Markteinführungszeit von Grund auf neu entwickeln zu müssen, können Designs mit einem Einplatinencomputer innerhalb weniger Wochen implementiert werden. Sobald man sich durch die Markteinführung eines Designs und seine Installation bei diversen Kunden den Vorteil der Ersteinführung gesichert hat, kann das Entwicklerteam – sofern die Produktionsvolumina das Geschäftsszenario unterstützen – eine Materialliste für ein maßgeschneidertes Design ausarbeiten und dabei in vollem Umfang auf die mechanischen Modelle aus dem LattePanda-Forum zurückgreifen.

Neben einer Vielzahl möglicher Anwendungen eignet sich der LattePanda ideal für IoT-Lösungen (Internet of Things, Internet der Dinge). Er verfügt über genügend Rechen- und Konnektivitätsressourcen, um in Echtzeit die Daten der verschiedensten drahtgebundenen und drahtlosen Sensoren zu lesen, die Daten zusammenzufassen und sie dann über eine Wi-Fi- oder Ethernet-Verbindung an eine Cloud-Analyseplattform weiterzuleiten. Dieser Gateway-Ansatz wird natürlich auch für das Industrielle Internet der Dinge (Industrial Internet of Things, IIoT) immer populärer. Diese unter dem Begriff „Fog Computing“ bekannte Methode ist weniger abhängig von einer kontinuierlichen Cloud-Konnektivität, da einige Kontrollfunktionen lokal realisiert werden können, ohne auf die Reaktion einer Cloud-Anwendung warten zu müssen. Ein Beispiel hierfür ist das Einschalten einer Luftkonditionierungsanlage, sobald eine bestimmte Temperatur erreicht wird. Da sich Temperatursensor und Aktuator der Anlage lokal zum Gateway befinden, kann der Forderung nach kühlerer Luft ohne Kommunikationskosten, Latenz und Cloud-Computing-Ressourcen nachgekommen werden.

Die Plattform Azure IoT Hub von Microsoft ist eine beliebte Cloud-Computing-Plattform, die den LattePanda-Einplatinencomputer in vollem Umfang unterstützt. Ein GitHub-Repository dokumentiert den Prozess zur Vorbereitung der Kommunikation zwischen Board und Azure-Plattform. Hierbei handelt es sich um Angaben, die zusätzlich zu den Informationen von LattePanda bereitgestellt werden. Für eine reibungslose Entwicklungs- und Testphase stellt Microsoft Node.js-Beispieldateien zur Verfügung, mit denen die Konnektivität zu IoT Hub getestet werden kann. Vor dem Herunterladen dieser Dateien müssen Sie über das Azure-Portal zuerst ein Azure-Konto einrichten und ein neues IoT-Gerät erstellen (Abbildung 7).

Bild eines Eintrags in Azure IoT Hub

Abbildung 7: Erstellen eines neuen Eintrags in Azure IoT Hub.

Abbildung 8 zeigt, wie die Details des Hub-Eintrags eingerichtet und der Name des Host angegeben werden. Dieser Prozess liefert die Anmeldedaten (Verbindungsketten und Zugriffsschlüssel), die verwendet werden, um einen Sensor auf der LattePanda-Platine zu identifizieren und mit Azure IoT Hub zu verknüpfen. Sobald dieser Prozess abgeschlossen ist, können Sie die Datei „simple_sample_device.js“ bearbeiten und die Verbindungskette eingeben, bevor Sie den Code erstellen und ausführen. In Azure IoT Hub bietet die DeviceExplorer-Hilfsfunktion eine Möglichkeit, um eingehende Meldungen vom LattePanda zu überwachen.

Bild von Azure IoT Hub – Registrieren eines Geräts

Abbildung 8: Azure IoT Hub – Registrieren eines Geräts.

Sobald die Kommunikation eingerichtet ist, können Sie das Design Ihrer Anwendung mit den Azure-Diensten verarbeiten. Mit dem Dienst Azure Storage können Sie beispielsweise eine Tabelle mit Sensorwerten erstellen. Azure Stream Analytics und Azure Power BI sind zwei weitere Beispiele für Azure-Anwendungen, die Sensordaten auswerten, analysieren und Trends anzeigen können.

Bild des Beispiels „Node.js“ für einen Lichtsensor

Abbildung 9: Beispiel „Node.js“ für einen Lichtsensor mit Funktionen von Azure Storage.

Abbildung 9 zeigt das Code-Beispiel „Node.js“, das die Werte eines mit Pin A0 verbundenen Gravity-Lichtsensors liest und in einer Azure Storage-Tabelle speichert. Die mit Azure Storage kommunizierenden Funktionen sind rot markiert.

Das Entwickeln auf dem LattePanda ist sehr einfach. Es handelt sich hierbei um eine gut unterstützte Plattform mit umfassender Dokumentation, einem Online-Forum sowie einem eigenen GitHub-Repository mit mechanischen Modellen, Bibliotheken und Codebeispielen. Außerdem ist die Unterstützung des Kernbetriebssystems Microsoft Windows 10 durch zahlreiche kommerzielle Entwicklungsumgebungen und Anwendungen extrem gut. Des Weiteren existieren für den mit Arduino kompatiblen Co-Prozessor umfassende Publikationen, Programmierressourcen und eine große Entwickler-Community. Die Arduino-IDE ist wahrscheinlich die am weitesten verbreitete IDE, die Sie finden werden. Microsoft Visual Studio ist die ideale IDE-Ergänzung, da die Software die Entwicklung in einer Vielzahl verbreiteter Programmiersprachen wie C#, Python und F#/.Net ermöglicht.

Fazit

Der LattePanda bietet der Maker-Community ein neues Konzept. Die Möglichkeit, die einfachen Schnittstellenoptionen von Arduino mit der riesigen Community der Windows-Entwickler und ihren Anwendungen zu kombinieren, vergrößert die Reichweite eingebetteter Designs enorm und eröffnet unendlich viele neue Produktmöglichkeiten.

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

Über den Autor

Europäische Herausgeber

Über den Verlag

Europäische Fachredakteure von Digi-Key