Low-Cost-Hardware

Arduino als IoT-Maschine - Teil 2

5. Dezember 2014, 11:14 Uhr | Von Dr. Claus Kühnel
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Externe Steuerung

Listing 2. Im Quelltext pwm_ctrl.ino wird das Programm so erweitert, dass es auch einen String vom Linux-Device empfangen kann
Listing 2. Im Quelltext pwm_ctrl.ino wird das Programm so erweitert, dass es auch einen String vom Linux-Device empfangen kann.
© QIAGEN Instruments AG

Das Programmbeispiel da_ad_test.ino hat zwar Daten an das Linux-Device gesendet, aber keine von diesem empfangen. Für die Kopplung beider CPUs ist auch der umgekehrte Weg erforderlich, was durch eine sehr einfache Programmerweiterung hier vorgenommen werdebildn soll. Vom Linux-Device wird ein String an das Arduino-Device gesendet, welcher nach Umwandlung in ein Byte die PWM zur Ausgabe eines Analogwertes einstellt. Daran schließt sich eine periodische AD-Umsetzung an, bis ein neues PWM-Byte empfangen und die PWM angepasst wurde. Dieser Vorgang wiederholt sich permanent. Listing 2 zeigt den Quelltext des Programmbeispiels pwm_ctrl.ino, während Bild 4 die Ausgaben des Programms im Monitor zeigt.

Nach dem Start des Programms ist die PWM zunächst auf Null gesetzt. Nach Eingabe eines Zahlenwertes (hier 128) und Abschluss durch Enter wird dieser Wert von der PWM übernommen und nach einer Einschwingzeit auch vom AD-Umsetzer so zurückgeliefert.

passend zum Thema

Ausgaben des Programmbeispiels pwm-ctrl.ino
Bild 4. Ausgaben des Programmbeispiels pwm-ctrl.ino
© QIAGEN Instruments AG

Eigenständiger Linux-Computer dank i.MX6

Der i.MX6 stellt einen unabhängigen Linux-Computer auf dem Udoo-Board dar. So können beispielsweise C-Programme bzw. Shell-, Lua- oder Python-Scripte auf dem i.MX6 erstellt werden, die ihrerseits mit dem Arduino kommunizieren. Hier sollen Linux-Anwendungen betrachtet werden, die die Performance des i.MX6 verdeutlichen.

Listing 3. Das Shell Script boardinfo.sh zeigt umfangreiche Systeminformationen an
Listing 3. Das Shell Script boardinfo.sh zeigt umfangreiche Systeminformationen an.
© QIAGEN Instruments AG

Zum Erstellen eigener Anwendungsprogramme hat der UDOO mit der Ubuntu-Distribution bereits mächtige Tools an Bord. Neben der Bash-Shell sind hier vor allem C/C++ und Python zu nennen, die von vielen Nutzern bevorzugt werden. Lua soll ebenfalls kurz erwähnt werden.

Das eingesetzte Linux stellt eine Menge von Informationen über das Gesamtsystem zur Verfügung, die z.B. mit Hilfe von Shell-Kommandos abgefragt werden können. Listing 3 zeigt ein Shell-Script, das die Anzeige zahlreicher Systeminformationen auslöst: Informationen zur eingesetzten CPU, zur Linux-Version sowie die Laufzeit des Systems nach dem letzten Bootvorgang (uptime), der freie Speicher des Prozessors (free) und der Flash Card (df) sowie der angeschlossenen USB-Geräte (lsusb).

Ausgabe des Shell-Scripts boardinfo.sh
Bild 5. Ausgabe des Shell-Scripts boardinfo.sh.
© QIAGEN Instruments AG

Bild 5 zeigt Aufruf und Ausgabe des Shell-Scripts boardinfo.sh. Die Angaben besagen, dass das UDOO einen i.MX6-Prozessor mit Quad-Core aufweist. Interessant ist die Angabe BogoMIPS: 1988.28, die nicht zu falschen Schlussfolgerungen verleiten sollte. BogoMIPS ist ein im Linux-Kernel verwendetes Maß für die CPU-Geschwindigkeit. Der Wert wird beim Booten ermittelt. In einer Kalibrierungsschleife wird die NOP-Instruktion der CPU vermessen, um im Kernel klassische Busy-Wait-Verzögerungsschleifen im Nanosekundenbereich korrekt realisieren zu können.

Der von Linus Torvalds eingeführte Test zeigt schon im Namen, der vom englischen bogus (gefälscht, scheinbar) und dem Maß Millionen Instruktionen pro Sekunde (MIPS) abgeleitet wurde, dass es sich dabei nicht um ein wissenschaftlich klar definiertes Maß handelt. Eine oft zitierte Definition ist „Die Anzahl der Millionen Wiederholungen pro Sekunde, die ein Prozessor in der Lage ist, absolut nichts zu tun“. Mittels BogoMIPS können also keine Leistungsvergleiche zwischen Prozessoren durchgeführt werden; dennoch sind solche Aussagen immer wieder im Netz zu finden. Neben dem UDOO konnte der Autor diese Information noch von einigen anderen Geräten (Raspberry Pi, Smartphones, Tablets) abfragen. Die Ergebnisse zeigt die Tabelle.

Tabelle. BogoMIPS verschiedener Linux-Geräte
Tabelle. BogoMIPS verschiedener Linux-Geräte
© QIAGEN Instruments AG

Beim hier vorliegenden UDOO ist auf dem i.MX6 ein Linux-Kernel der Version 3.0.35 installiert. Das Kommando uptime zeigt, dass das System mehr als einen Tag nach dem letzten Reboot läuft. Mit uptime kann man deshalb sehr gut auf die Stabilität eines Systems rückschließen. Mit load average bekommt man einen Hinweis auf die durchschnittliche CPU-Last des Systems. Die mittlere Last der letzten 1, 5 bzw. 15 min liegt bei 21 %, 34 % bzw. 33 %. Im nächsten Block werden der freie und benutzte Speicher des Systems gelistet, wie auch die vom Kernel verwendeten Pufferbereiche. Die Belegung der SD-Speicherkarte wird anschließend gelistet. Den Abschluss bildet die Anzeige über den USB und die angeschlossenen USB-Geräte. Mit top oder htop hat man weitere Tools, die die Eigenschaften des Systems aufzeigen.


  1. Arduino als IoT-Maschine - Teil 2
  2. Externe Steuerung
  3. CPU-Takt beeinflussen

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!