Der UDOO Neo ist ideal für das industrielle Internet der Dinge (IIoT), wenn umfangreiche I/O, Sensoren und leistungsfähige Rechenressourcen entscheidend sind.

Von Europäische Herausgeber

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

Das Internet der Dinge (IoT) wird als treibende Kraft für die schnelle Verbreitung kompakter Mikrocontroller-Karten für den Headless-Betrieb (Betrieb ohne Display) in den verschiedensten Edge-Knotengeräten wie etwa Sensoren und Aktuatoren angesehen. Mit einer geringen Menge an I/O, einem drahtlosen Mikrocontroller und sehr geringer Leistungsaufnahme bilden solche Karten und Module eine Armee von Geräten, die Cloud-basierte Analysedienste mit Daten füttern. Viele Anwendungen benötigen mehr Rechenleistung, Bedienschnittstellen und Verbindungsoptionen.

Ob für Gateway-Funktionen oder die Zusammenfassung der Daten zahlreicher Sensoren, die zur Initiierung einer lokalen Steuerung oder verschiedener Funktionen dienen, es besteht Bedarf an Einplatinencomputern mit mehr Funktionen und Ressourcen. Viele der Hersteller von industriellem Equipment, die sich damit auseinandersetzen, wie ein eingebettetes Gerät gebaut werden kann, das den mannigfaltigen Anforderungen sämtlicher Einzelteile des Equipments gerecht wird, werden sich für eine Plattform entscheiden, bei der eine eingebettete Hauptplatine sowie je nach Bedarf zusätzliche Peripheriegeräte zum Einsatz kommen. Für geringe bis mittlere Mengen hat es in zunehmendem Maße Vorzüge, sich für einen der immer beliebter werdenden Open-Source-Einplatinencomputern (SBC, Single-Board Computer) zu entscheiden, die am Markt erhältlich sind. So entfallen nicht nur enorme nicht-wiederkehrende Entwicklungskosten (NRE, Non-Recurring Engineering Costs), die erforderliche Zertifizierung von Wireless-Produkten sowie der große Bedarf an Software, sondern das Entwicklerteam kann sich auch sofort mit den anwendungsbezogenen Aspekten der Lösung befassen und muss sich nicht mit der Evaluierung, Entwicklung und Prototyperstellung für die Vielzahl an Geräten beschäftigen, die eventuell integriert werden müssten.

Für viele Ingenieurteams ist eine der bemerkenswerten Auswirkungen des IoT die, dass sich die Herangehensweise an neue Projekte grundlegend geändert hat. Das Team mag zwar ausgezeichnete Arbeit bei der Neuentwicklung eingebetteter Karten leisten, doch das Endziel ist die Bereitstellung eines funktionierenden Designs innerhalb einer eng gesteckten Frist. Für diejenigen, die daher die Entwicklung durch den Einsatz eines Einplatinencomputers vor der Erstellung ihrer eigenen Karte beschleunigen möchten, ist der Zugriff auf sämtliche Dateien mit mechanischen Daten, Layouts und Materiallisten von großer Wichtigkeit.

UDOO Neo

Abbildung 1: UDOO Neo

Ein Beispiel für einen Einplatinencomputer, den Entwickler unter Umständen in Erwägung ziehen könnten, ist der UDOO Neo. Der in den drei Versionen Basic, Extended und Full erhältliche Einplatinencomputer stellt ein umfassendes und kostengünstiges System dar, das um den Anwendungsprozessor Freescale i.MX6SoloX für Android und Linux herum aufgebaut ist. In diesem Artikel konzentrieren wir uns auf den Neo Full. Dieser Freescale-Baustein integriert auf einem einzigen Chip einen leistungsstarken Single-Core-ARM®-Cortex®-A9 mit 1 GHz sowie einen ARM-Cortex-M4-Coprozessor zur I/O-Echtzeitsteuerung mit einer Taktfrequenz von bis zu 200 MHz. Diese über einen AXI-Hochgeschwindigkeitsbus verbundenen Prozessoren sind in der Lage, zahlreiche Hardwarefunktionen wie GPIO, UART, I2C, usw. gemeinsam zu nutzen. Durch die Verwendung von flexiblem Multiplexing kann der Entwickler bei der Konfiguration angeben, welche Funktionen der Peripheriegeräte von welchem Kern gesteuert werden.

Die UDOO Neo Full bietet 1 GB Flash sowie verschiedene Hardwarefunktionen wie GPIO, serielle Schnittstellen, Wi-Fi 802.11 b/g/n sowie BLE-Konnektivität. Diese mit eingebetteten 9-achsigen Bewegungssensoren, einem 3-achsigen Beschleunigungsmesser, einem Magnetometer und einem Gyroskop sowie mit LVDS-, HDMI-, Kamera- und Audio-Schnittstellen ausgestattete Karte eignet sich ideal für eine Vielzahl industrieller Designs.

Aus Sicht des Betriebssystems kann der Cortex-A9-Kern entweder unter Android Lollipop oder UDOObuntu (14.04 LTS) laufen. Der Cortex-M4 hat Zugriff auf eine Full-Stack-Arduino-Umgebung, inklusive Arduino-Shield-Steckleisten, was ebenfalls zur enormen Flexibilität der Plattform beiträgt.

Hauptfunktionen der Karte des UDOO Neo Full

Abbildung 2: Hauptfunktionen der Karte des UDOO Neo Full

Die externen Pins (in Abbildung 2 rot dargestellt) des Cortex-A9 sind standardmäßig als GPIO konfiguriert. Diese Pins können also direkt über das Dateisystem (Linux, Android) gesteuert werden. Die internen Pins (in der Abbildung grün dargestellt) werden vom Cortex-M4 mit denselben Abmessungen wie für die Arduino-UNO-Pinbelegung konfiguriert und gesteuert.

Die Karte wird über eine einzige Stromversorgung (6 bis 15 VDC) versorgt und alle GPIOs werden mit 3,3 VDC betrieben. Ein Blockdiagramm (Abbildung 3) zeigt die Hauptkomponenten und die Schnittstellen um den i.MX-Anwendungsprozessor.

Der Neo kann als „Headless“-Plattform (Plattform ohne Display) oder durch Hinzunahme eines LVDS-Touchpanel oder über HDMI als Plattform mit Benutzersteuerung verwendet werden. Falls Sie für die beabsichtigte Anwendung keine Bewegungssensoren benötigen oder weniger Speicher ausreichend ist, können Sie auch die Versionen Basic oder Extended des Neo verwenden und somit bei den Kosten für die Karte sparen. Für viele ferngesteuerte Anwendungen ist eine „Headless“-Konfiguration wünschenswert, mit der die Kommunikation über eine SSH-Remote-Terminal bzw. etwas vergleichbares erfolgt.

i.MX6-Blockdiagramm für den UDOO Neo

Abbildung 3: i.MX6-Blockdiagramm für den UDOO Neo

Die ersten Schritte mit dem UDOO Neo könnten nicht einfacher sein. Alle nötigen Informationen zur Inbetriebnahme der Karte finden Sie zusammen mit umfassenden Konfigurationsmöglichkeiten, Code-Beispielen usw. auf einer Website im Wiki-Stil. Auf dieser Website finden Sie außerdem die Dateien zur mechanischen Anordnung und die Materialliste, falls Sie sie benötigen sollten.

Bei der Lieferung ist auf der Karte kein Betriebssystem installiert. Unabhängig davon, ob Sie sich für Linux oder Android entscheiden, benötigen Sie eine microSD-Karte mit einer Speicherkapazität von 8 GB oder mehr. Laden Sie das Betriebssystem Ihrer Wahl von der Dokumentations-Website des Neo auf Ihren PC oder Laptop herunter und entpacken Sie die Datei. Anschließend stecken Sie die microSD-Karte in den entsprechenden Steckplatz oder einen USB-Adapter. Öffnen Sie die Befehlszeile Ihres Computers, vollständige Beschreibung hier, und folgen Sie den Anweisungen zum Unmounten der Karte sowie aller Partitionen, bevor Sie das Image des Betriebssystems übertragen. Vergessen Sie im Anschluss nicht, die Karte zu synchronisieren bzw. auszuwerfen, um den Schreibvorgang korrekt abzuschließen.

Stecken Sie die microSD-Karte jetzt in den Neo, schließen Sie Maus und Tastatur (üblicherweise per USB) sowie einen HDMI-Monitor an (idealerweise zuerst, um zu sehen, ob alles korrekt funktioniert) und schalten Sie dann den Neo ein. Schon bald sollten die grünen und gelben LEDs der Karte aufleuchten und – angenommen, Sie haben sich für Linux entschieden – Tux, der Linux-Pinguin, sollte auf dem Bildschirm zu sehen sein, bevor der UDOO Ubuntu-Desktop angezeigt wird. Über diesen vertrauten Desktop können Sie auf alle üblichen Funktionen und Dienstprogramme von Linux zugreifen. Auch eine für den Neo konfigurierte Arduino-IDE ist in der Linux-Distribution vorinstalliert und kann über den Desktop verwendet werden. Im nächsten Schritt wird eine Verbindung zur Web-basierten Steuerung des Neo hergestellt. Hierfür gibt es mehrere Möglickeiten. Sie können im Browser des Neo entweder seinen Webserver udooneo.local aufrufen, oder, sofern bekannt, die IP-Adresse der Kate eingeben. Siehe Abbildung 4.

Web-basierte Steuerung des UDOO Neo

Abbildung 4: Web-basierte Steuerung des UDOO Neo

Diese Steuerung bietet einen guten Einblick in das, was im Inneren des Neo passiert. Zusätzlich zu Informationen zum Status der drahtgebundenen und drahtlosen Verbidungen, den Sensoren und einer Zusammenfassung der Kartendaten zeigt sie Konfigurationsoptionen zum Einrichten und Verbinden mit drahtlosen Zugriffspunkten (Wireless Access Points), zur Festlegung regionaler Einstellungen sowie zur Änderung der Display-Ausgabe an. Auch Achsen- und Modulusdaten vom Beschleunigungsmesser, Gyroskop und Magnetometer werden angezeigt und Sie können die Funktion der Messgeräte überprüfen, indem Sie die Karte vorsichtig hin und her schieben.

Die Steuerung bietet außerdem die Möglichkeit, Arduino Sketches zu testen und selbst einfache zu schreiben (siehe Abbildung 5). Wer bereits mit Karten wie der Arduino UNO vertraut ist, wird das in Abbildung 5 gezeigte einfache Beispiel „Blink“ erkennen, mit dem das Umschalten von Pin 13 gesteuert wird. Die rote LED des Neo ist mit diesem Pin verbunden, die durch das Hochladen dieses Sketch zu blinken beginnt. Beachten Sie, dass sich unter den Programmieranwendungen auch die Anwendung ArduBlock befindet, mit der Arduino Sketches auf grafische Weise aus zusammenhängenden Blöcken erstellt werden können.

Arduino-Web-IDE und Sketch-Beispiele

Abbildung 5: Arduino-Web-IDE und Sketch-Beispiele

Wie bereits erwähnt ist der Neo mit zwei GPIO-Sätzen ausgestattet. Dem Satz, der über ein Arduino-Sketch aufgerufen werden kann (der „interne“ Satz bzw. die innerste Steckleiste), sowie dem „externen“ Satz, auf den aus Linux heraus zugegriffen wird. Alle Sätze sind standardmäßig als Eingänge konfiguriert, sind jedoch entweder als Eingänge oder Ausgänge konfigurierbar und können gegebenenfalls auch Interrupts des Kerns auslösen. Durch Pin-Multiplexing kann die MPU diesen externen Pins speziellere Aufgaben zuweisen.

Aus Linux heraus aufrufbare GPIOs

Abbildung 6: Aus Linux heraus aufrufbare GPIOs Klicken Sie hier, um das Bild in voller Größe anzuzeigen.

Ein GPIO-Pin kann über die Befehlzeile mit Hilfe einfacher Befehle wie etwa den folgenden gesteuert werden:

echo out > /gpio/pin19/direction – definiert den Pin als Ausgangs-Pin oder

echo in > /gpio/pin19/direction – definiert den Pin als Eingangs-Pin.

Ein als Ausgang definierter Pin kann mit dem Befehl echo 0 > /gpio/pin19/value auf LOW-Pegel (0 V) gesetzt werden

oder mit echo 1 > /gpio/pin19/value auf HIGH-Pegel (+3,3 VDC).

Die Werte des Eingangs-Pin können mit dem Befehl cat /gpio/pin19/value gelesen werden.

Das in UDOObuntu Linux vorinstallierte Paket udoo-gpio-export exportiert alle GPIOs als Eingänge und erstellt zusätzlich die Links aus dem Verzeichnis /sys/class/gpio. Weitere Informationen zu weiteren Anforderungen wie diesen finden Sie in der UDOO-Dokumentation.

Die Kommunikation zwischen dem Cortex-A9 und dem Cortex-M4 erfolgt in beide Richtungen über einen virtuellen seriellen Pin, der für den Datenaustausch den gemeinsam genutzten Speicher verwendet. Diese Daten können in Linux mit /dev/ttyMMC (z. B. minicom –D /ttyMCC) oder in einem Arduino-Sketch über das Objekt „Serial0“ gelesen werden.

Der UDOO Neo Full verfügt auf der Platine über drei 3-Achsen-Bewegungssensoren. Ein 14-Bit-Beschleunigungsmesser und ein 16-bit-Magnetometer sind in diesem Paket, einem Freescale FXOS8700CQ-Prozessor, ebenfalls enthalten. Der Beschleunigungsmesser verfügt über drei dynamisch wählbare Vollskalenbereiche, und zwar +/-2 g, +/- 4 g oder +/- 8g.

Das 3-achsige Gyroskop ist ein Freescale FXAS21002C.

Verbunden sind die Sensoren mit dem I2C-Bus (siehe Abbildung 7) und jeder Kern kann darauf zugreifen.

I2C-Bus mit Sensoren und Komponentenkonfigurationen

Abbildung 7: I2C-Bus mit Sensoren und Komponentenkonfigurationen

Über die Befehlszeile können sie mit

echo 1 > /sensors/accelerometer/enable oder echo 1 > /sensors/gyroscope/enable aktiviert werden und die Werte eines Sensors können beispielsweise mit dem Befehl cat /sensors/magnetometer/data abgerufen werden.

Eingebettete Anwendungen können die Werte selbstverständlich direkt über die entsprechenden I2C-Register abrufen. Beschleunigungsmesser und Magentometer verwenden die Adresse 0x1E und das Gyroskop verwendet die Adresse 0x20.

Über eine Hochsprache (z. B. Python) kann ebenfalls auf die Sensoren zugegriffen werden. In der Frühphase der Verwendung einer jeden neuen Karte werden Sie beim Kartendesign den Open-Source-Ansatz und den Community-Charakter zu schätzen wissen. Ein gutes Beispiel hierfür ist die Neo.GPIO Python-Bibliothek. Sie ist auf GitHub verfügbar und enthält Sensorschnittstellencode aus einer Python-Anwendung, die auf dem Cortex-A9 ausgeführt wird. Da Python in der UDOObuntu-Distribution bereits enthalten ist, bietet sich die Sprache zur Entwicklung auf dem Neo an. Laden Sie die zip-Datei auf GitHub herunter und extrahieren Sie sie in das Verzeichnis, in dem Sie Ihre Python-Anwendung erstellen werden. Mehrere Codebeispiele sind in der ZIP-Datei ebenfalls enthalten, von denen in Abbildung 8 eine vereinfachte Version zu sehen ist.

Pyhton-Programm zum Auslesen des Gyroskops und zur Anzeige der Daten

Abbildung 8: Pyhton-Programm zum Auslesen des Gyroskops und zur Anzeige der Daten

Um den in Abbildung 8 gezeigten Pyhton-Code über die Befehlszeile auszuführen, muss es mit root-Rechten ausgeführt werden. Wenn Sie den UDOO Neo wie oben angegeben verwenden, dann lautet Ihr Benutzerkonto udooer. Sie müssen das Programm GyroExample.py daher auf die folgende Weise ausführen. Siehe Abbildung 9.

echo udooer | sudo –S su –c ‘python GyroExample.py’

Screenshot des Codes GyroExample.py wähend der Ausführung

Abbildung 9: Screenshot des Codes GyroExample.py wähend der Ausführung

Der UDOO Neo ist ein umfassender und leistungsstarker Einplatinencomputer, der sich ideal als Entwicklungsplattform für Anwendungen für das industrielle IoT eignet. Mit dem Neo können Sie Ihre erste Anwendung im Handumdrehen erstellen und Ihr Produkt so schnell und kostengünstig wie möglich auf den Markt bringen.

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