Zum Hauptinhalt Zur Navigation

Arduino 101 angetestet: Endlich ein genuines Bastelboard von Intel

Bisher konnten Intels Bastelboards nicht ganz überzeugen – doch beim Arduino/Genuino 101 hat der Chiphersteller aus einigen seiner Fehler gelernt.
/ Alexander Merz
43 Kommentare News folgen (öffnet im neuen Fenster)
Arduino 101 mit dem Curie-Modul (Bild: Martin Wolf/Golem.de)
Arduino 101 mit dem Curie-Modul Bild: Martin Wolf/Golem.de

Der Genuino 101(öffnet im neuen Fenster) – in den USA heißt er Arduino 101 – ist Intels vierter Versuch, sich in der Welt der Bastler zu etablieren. Trotz des vergleichbar niedrigen Preises bietet die Experimentierplatine eine beachtliche Leistung und überrascht mit einer Vielzahl an Funktionen. Allerdings war in der Vergangenheit beim Begriff "Arduino-kompatibel" bei Intels Bastelboards immer Vorsicht geboten. Wir haben uns angeschaut, ob das auch für den Genuino 101 gilt.

Es gibt weiterhin zwei Kerne

Auf den ersten Blick unterscheidet sich der Genuino/Arduino 101 kaum vom Klassiker, dem Uno. Der Formfaktor, die Anschlüsse und die Pin-Leisten sind identisch. Einzig der unlackierte Bereich fällt sofort auf: Dort befindet sich die Antenne für den Bluetooth-Empfänger. Der sitzt nicht als eigener Baustein auf dem Board, sondern ist integriert in das Intel-Curie-Modul. Dieser kleine Baustein enthält auch einen sechsachsigen Beschleunigungsmesser und ein Gyroskop (IMU). Und natürlich steckt auch der eigentliche Prozessor darin, genau genommen sind es zwei: ein Quark-Prozessorkern (x86-kompatibel) und ein ARC-Prozessorkern(öffnet im neuen Fenster) (RISC-Prinzip), beide getaktet mit je 32 Mhz. Das RAM ist 80 KByte groß, wovon 24 KByte genutzt werden können, vom 384 KByte großen Flash-Speicher können 196 KByte selbst verwendet werden.

Genuino 101 – Test
Genuino 101 – Test (01:51)

Der Genuino 101 beziehungsweise das Curie-Modul konkurriert angesichts dieser Ausstattung weniger mit anderen preiswerten Angeboten auf Basis der 8-Bit-AVR-Mikrocontroller von Atmel. Eher lässt es sich mit einer Vielzahl an Lösungen auf Basis des ARM-Cortex-M0-Designs messen.

Mit dieser Konfiguration ändert Intel die bisherige Strategie bei seinen Bastelboards, durch die sich die Intel Galileo 1 und 2 sowie das Edison for Arduino immer ein wenig zwischen den Stühlen befanden. Jeweils ausgerüstet mit einem durchaus potenten Prozessor, auf denen ein Linux-Derivat läuft, standen sie dem Raspberry Pi nahe – die sonstige Ausstattung und das Intel-Marketing positionierten sie hingegen als Arduino-Alternative. Da aber die Arduino-Kompatibilität auf Software- wie auch Hardware-Ebene nur aufgepfropft wurde, führte das oft zu Frust bei vielen Bastlern.

Eigene Programme laufen ohne Betriebssystem

Ganz ohne diese Ambiguität kommt auch der Genuino 101 mit seinen zwei Prozessorkernen nicht aus. Auch die Dokumentation ist in dieser Hinsicht schwammig. Anscheinend dient der Quark-Kern derzeit als Mittler zwischen den Bestandteilen des Curie-Moduls und der Außenwelt. Dazu läuft auf diesem ViperOS, ein Echtzeitbetriebssystem von Wind River(öffnet im neuen Fenster) . Zurzeit kann der Anwender daran nichts ändern oder selbst den Quark-Kern ansprechen. Das soll sich im März 2016 ändern, die notwendigen Informationen sollen dann veröffentlich werden. Vergleichbare Ankündigungen bezüglich der Mikrocontroller-Einheit auf dem Intel Edison löste Intel erst nach längerer Zeit ein. Die entsprechende Dokumentation und das SDK(öffnet im neuen Fenster) für den Edison dürften aber bereits einen Einblick geben.

Laut Dokumentation verteilt der Compiler die Bestandteile eines selbstgeschriebenen Programms auf beide Prozessorkerne. Aufgrund der verschiedenen Architekturen ist das sehr unwahrscheinlich. Tatsächlich scheinen alle Entwicklerwerkzeuge derzeit speziell für den Arc-Kern bestimmt zu sein und entsprechende Binarys zu erzeugen. Gemeint ist wohl, dass bei der Compilierung auch Aufrufe zu RTOS-Subroutinen auf dem Quark-Kern eingefügt werden. Dieser Ansatz ist insofern bemerkenswert, da bei den älteren Intel-Boards eigene Programme für den Quark-Kern compiliert wurden und die angeflanschte Mikrocontroller-Elektronik nur indirekt angesprochen werden konnte. Beim Genuino 101 verhält es sich umgedreht, eigene Programme laufen auf dem Arc-Kern, nicht dem x86-System.

Direkte Integration in die Arduino IDE

Die Installation besagter Entwicklerwerkzeuge erfordert nicht viel Aufwand. Voraussetzung ist die Arduino IDE(öffnet im neuen Fenster) von Arduino.cc ab Version 1.6.7. Über den Boardverwalter im Werkzeugmenü wird das Entwicklerpaket "Intel Curie Boards" installiert. So kommt das rund 400 MByte große Paket aus Compiler, Linker und diversen Bibliotheken auf den eigenen Rechner.

So präpariert wird der Genuino 101 per USB angeschlossen und als serielle Schnittstelle erkannt. Unter Linux und OS X muss dafür kein Treiber installiert werden, unter Windows hingegen schon. Schließlich wird die Schnittstelle im Port-Untermenü des Werkzeuge-Menüs ausgewählt und im Board-Untermenü "Arduino 101". Jetzt kann das erste Arduino-Sketch geschrieben und kompiliert werden. Alternativ finden sich auch im Datei-Menü unter Beispiele einige fertige Sketches, es handelt sich dabei um Beispiel-Programme für die Nutzung des Bluetooth-Low-Energy-Moduls, den Lage- und Beschleunigungssensoren sowie die Bereitstellung einer softwarebasierten seriellen Schnittstelle an einem beliebigen Ausgabe-Pin des Genuino 101.

Erwartungsgemäß funktionieren diese Beispiele. Doch was passiert, wenn wir über die GPIO-Leisten externe Bauelemente ansprechen und steuern wollen? Beim Galileo und Edison lagen hier die Schwachstellen. Einen Unterschied zum Original-UNO verrät bereits die Dokumentation. Der Genuino 101 besitzt nur 4 Pins, an denen PWM-Funktionalität bereitsteht.

Wir schließen eine ganze Reihe von Bauteilen an: ein Servo wird per PWM angesteuert, über einen Motortreiber wird ein Schrittmotor angesprochen, eine LED-Bastelei blinkt dank Kommandos auf dem I2C-Bus. Einen Temperatursensor lesen wir per Onewire aus, dessen Wert per Ethernetshield regelmäßig an einen Server gesendet wird, schließlich noch einen IR-Bewegungssensor. Dessen Meldungen und auch wieder die Temperatur stellen wir per Bluetooth bereit.

Es fehlt Dokumentation

Keine der genutzten Arduino-Bibliotheken verursachte dabei Probleme oder ließ sich nicht kompilieren. Einen Haken gibt es nur bei den speziellen Bibliotheken des Curie-Moduls für die Bluetooth- und IMU-Funktionen. Es fehlt an Dokumentation, die mitgelieferten Beispiel-Programme können das zwar beim IMU kompensieren, aber nur schlecht beim komplexeren Bluetooth-Betrieb. Hier muss der Nutzer zwangsläufig in den Quellcode schauen. Wer allerdings bereits ein wenig Erfahrung mit Bluetooth Low Energy hat, sollte kaum Probleme haben.

Beim gleichzeitigen Betrieb der vielen Bauteile zeigten sich keine Timing-Probleme, allerdings mit einer Ausnahme: Immer wenn ein Messwert per Bluetooth vom Genuino 101 zu einem gekoppelten Gerät versendet wird, scheint die Programmausführung für einige Millisekunden blockiert zu werden. Der Effekt tritt nicht auf, während ein Gerät mit dem Bluetooth-Empfänger gekoppelt wird oder Daten vom Gerät zum Genuino 101 gesendet werden.

Mangels ausführlicher Dokumentation des Curie-Moduls und seiner Bestandteile ließ sich die Ursache dieses Verhaltens nicht weiter eingrenzen. Auch Informationen zu spezifischen Eigenheiten des Arc-Prozessorkerns fehlen, zum Beispiel für das Interrupt-Verhalten. Fortgeschrittene Anwender können hier an ihre Grenzen stoßen.

Etwas nervig ist auch die relativ lange Initialisierungszeit des Curie-Moduls bei jedem Neustart. Zwar beträgt sie nur wenige Sekunden, für einen klassischen Mikrocontroller ist das allerdings zu lang.

Strombedarf ist akkufreundlich

Sind keine weiteren Bauteile angeschlossen, begnügt sich das Board mit 30 bis 40 mA, auch bei aktiviertem Bluetooth Low Energy. Die obengenannten angeschlossenen Bauteile, mit Ausnahme des Schrittmotors, benötigten rund 200 mA, die direkt vom Board bezogen wurden und keine Auswirkungen auf die Stabilität hatten. Auf die Spannung der Bauteile muss der Anwender nur wenig Rücksicht nehmen. Der Genuino 101 arbeitet zwar standardmäßig mit 3,3-Volt-Pegeln, ist aber 5-Volt-tolerant.

Fazit

Intel scheint endlich verstanden zu haben, dass auf einem Mikrocontroller-Board am besten auch direkt ein dafür konzipierter Mikrocontroller die Arbeit verrichten sollte. Der Genuino/Arduino 101 sieht deshalb nicht nur aus wie ein Arduino Uno, sondern verhält sich auch so – bietet aber deutlich mehr.

Software-Inkompatibilitäten bei den Standardbibliotheken aufgrund der Arc-Prozessorarchitektur haben wir nicht beobachtet. Bei spezielleren Bibliotheken, die auf Atmel-AVR-spezifische Eigenheiten des Original-UNO aufsetzen, könnte es hingegen zu Problemen kommen. Solange nicht weiterführende Dokumentation von Intel veröffentlicht wird, könnten Anpassungen schwierig sein.

Wer aber vor allem mit Bluetooth Low Energy experimentieren will, findet im Genuino 101 eine nützliche Lösung. Da es je nach Händler zwischen 30 und 40 Euro kostet, ist das Board zwar deutlich teurer als Arduinos ohne Funktechnik. Der Genuino 101 liegt damit aber auf einem Niveau mit direkt vergleichbaren Boards wie dem Redbearlab nRF51822(öffnet im neuen Fenster) , wobei die Intel-Lösung sogar etwas flotter sein dürfte und außerdem noch die IMU-Sensoren beinhaltet.


Relevante Themen