Vor ein paar Tagen bin ich dem Arduino untreu geworden. Auslöser waren ein paar Ideen zu Hausautomatisation und Pflanzenlampen mit sensorgesteuerter Automatik. Und das geht definitiv nicht ohne kabellose Übertragung. Auf Zigbee hatte ich keine Lust mehr. Beim Recherchieren stiess ich auf Cubietruck (einen Microcontroller mit eingebautem WLAN). Doch der scheint zur Zeit überhaupt nicht verfügbar zu sein. Und irgendwann landete ich dann mit meinen Webrecherchen bei Udoo. Laut Website ist dieser Microcontroller mit zwei CPUs ein Zwitter zwischen Raspberry Pi und Arduino. Auf dem einen Prozessor, einem Freescale i.MX 6 ARM Cortex-A9, läuft Linux oder Android und damit hat man die ganze Peripherie zur Verfügung, die man sonst von einem Raspberry Pi kennt: Bildschirm via HDMI, Maus, Tastatur, Gigabit-Ethernet, USB-Festplatten und ähnliches. Der zweite Prozessor ist derselbe wie auf dem Arduino Due, nämlich ein Atmel SAM3X8E ARM Cortex-M3. Die Pin-Belegung ist kompatibel mit dem Arduino Due.
Der Entscheid war schnell getroffen, ich bestellte die Quad-Core Version. Und tatsächlich, ein paar Tage nach meiner Online-Bestellung hatte ich das Teil inklusive Kabel-Set im Haus. Der Preis ist stolz verglichen mit einem Arduino oder einem Raspberry Pi, insbesondere wenn man noch Zoll zahlt und eine Zollbearbeitungsgebühr, die doppelt so hoch ist wie der eigentliche Zoll. Und die Anforderungen an die Peripherie sind beträchtlich: 12-Volt-Stromversorgung, eine 8GB-SD Card, Bildschirm mit HDMI-Anschluss oder Adapter von DVI zu HDMI, HDMI-Kabel, Micro-USB-Kabel sowie USB-Maus und Tastatur sind das Minimum. Je nach Projekt kommen Ethernet-Kabel, USB-Festplatte und OTG-Kabel dazu. Und natürlich all die elektronischen Komponenten, d.h. Sensoren und Aktoren, für die man einen Udoo oder Arduino überhaupt benötigt.
Inzwischen läuft der Microcontroller, ich habe erste Tutorials damit durchgespielt und auch bereits einen ersten englischen Blog-Beitrag zur Fernsteuerung des Udoo per Smart Phone veröffentlicht. Den Weg dorthin pflasterten zahlreiche Stolpersteine. Ich versuche, diese Stolpersteine und die von mir gefundenen Lösungen hier zu beschreiben, auf dass es den Nächsten leichter fällt.
Komponenten
Folgende Komponenten benötigt man, um die Schritte in diesem Artikel nachzuvollziehen:
- 1 Udoo-Microcontroller (Dual oder Quad Core)
- 2 8GB SD cards (nur eine, wenn man nur Linux oder nur Android benutzen möchte)
- 1 12V-Stromversorgung mit ca. 2 Ampère sowie zum Udoo passender Buchse (5.5mm aussen, 2.1mm innen, positive Polarität, d.h. Plus-Pol innen)
- 1 Micro-USB-Kabel
- 1 Bildschirm mit HDMI-Anschluss (Alternative: Bildschirm mit DVI-Anschluss und HDMI-female-zu-DVI-Adapter)
- 1 HDMI-Kabel
- 1 USB Maus
- 1 USB Tastatur (Alternative: Set mit USB-Funktastatur und -maus)
- 1 LED
- ein funktionierendes WLAN (Alternative: Ethernet-Kabel)
- 1 Windows-PC oder Notebook zum Programmieren des Arduino (darauf kann man verzichten, wenn man genug Geduld hat, die Arduino IDE unter Linux auf dem Udoo zu benutzen.
SD-Card erstellen
Beim Bestellen hatte ich übersehen, dass im Gegensatz zur Phase, als Udoo noch ein Kickstart-Projekt war, keine mit OS vorinstallierte SD Card mehr ausgeliefert wird, wenn man diese nicht dazubestellt. Das ist nicht wirklich ein Problem, denn SD Cards kann man überall kaufen und auf dem Udoo-Site findet man ein Tutorial, wie man eine bootbare SD Card erstellt (dachte ich zumindest).
Also besorgte ich mir zwei 8GB SD-Cards, da ich sowohl mit Linux wie mit Android experimentieren möchte. Die SD Card muss genau 8GB gross sein, denn auf kleinere passt das Image nicht und bei grösseren ist der restliche Platz verloren. Dann lud ich mir vom Udoo-Site ein Android- und ein Linux-Image herunter. Ich entschied mich für Linaro Ubuntu 12.04 LTS sowie Android 4.2.2 Jelly Bean. Schon die Auswahl von Linux ist eine erste Hürde, wenn man kein Crack in Linux ist und die Vor- und Nachteile der 5 offiziellen und 3 inoffiziellen angebotenen Versionen nicht beurteilen kann. Bei Android ist das zum Glück einfacher, da gibt es nur eine. Allerdings musste ich als Android-Fan einsehen, dass die Möglichkeiten unter Android wohl beschränkter sind.
Das erste Mal richtig auf die Nase fiel ich dann, als ich die Zip-Dateien wie im Tutorial beschrieben auspacken wollte: Windows wies mich sanft darauf hin, dass ich soeben versucht hatte, auf meiner Notebook-Festplatte 734 Petabyte auszupacken. Petabyte? Auch Informatiker stutzen einen Moment, bis sie wissen, wie viele Nullen ein Petabyte eigentlich hat! Zuerst dachte ich, dass beim Herunterladen etwas schiefgegangen wäre, und verglich die Prüfsummen. Die ZIP-Datei war nicht defekt. Im deutschsprachigen Artikel von Maik Schmidt fand ich dann die Lösung: Unter Windows muss man die Zip-Datei mit einem Programm wie 7-Zip entpacken, mit Windows-Bordmitteln geht das nicht. Nachdem diese Hürde gemeistert war, liessen sich die SD Cards erstellen, wie im Tutorial beschrieben. Dann steckt man die soeben erstellte SD card in den Udoo. Der Einschub befindet sich übrigens Links von den zwei Pushbuttons unterhalb des Kühlkörpers.
Udoo mit Android starten
Da ich mich zur Zeit vertieft mit Android-Programmierung beschäftige, probierte ich zuerst die Android-Version aus. Die grösste Herausforderung war der geeignete Bildschirm: als Ausgang gibt es nur HDMI und all unsere Monitore (und wir haben einige, wenn auch schon etwas älteren Datums) wollten davon nichts wissen. Blieb nur der Smart-TV von Samsung. Der wiederum steht weit weg von unserem Router, so dass Ethernet mangels genug langen Kabeln keine Option war. Ich war also darauf angewiesen, Wifi zum Laufen zu bringen.
Doch das waren Probleme für später, zuerst ging es einfach mal darum, zu starten. Tatsächlich, mit dem am HDMI-Anschluss angehängten Smart-TV als Display, einer 12-Volt-Stromversorgung und Android auf der eingeschobenen SD-Card liess sich der Udoo starten. Die erste Enttäuschung war, dass ein Set mit USB-Funktastatur und -maus von Logitech nicht erkannt wurde. Flugs wechselte ich sie gegen die Funkmaus von meinem Notebook aus – wer braucht unter Android schon eine Tastatur – und damit konnte ich mich zumindest durch die Android-Oberfläche klicken.
Der ES-File-Manager war da, und die Settings, die Welt war schon fast in Ordnung. Wenn nur nicht die Anzeige grösser gewesen wäre als der physische Bildschirm, so dass Home- und Back-Taste gerade noch knapp bedienbar waren. Wie man unter Android den Bildschirm kleiner einstellt (oder ob man das auf dem TV mit Buttons macht), habe ich bis jetzt nicht herausgefunden.
Sich ans WLAN zu hängen, erwies sich als unmöglich, denn die Tastatur, die sonst in Android aufpoppt, sobald man in ein Eingabefeld klickt, liess sich nicht blicken. Eine Hardware-Tastatur dagegen stand mir, wie oben erwähnt, nicht zu Verfügung. Es war also nicht möglich, den Schlüssel einzutippen, der für ein verschlüsseltes WLAN nötig ist. Erst später fand ich heraus, dass unter den Spracheinstellungen standardmässig eine Hardware-Tastatur eingestellt ist, was die Software-Tastatur automatisch deaktiviert. Wenn man in den Settings unter “Tastatur und Eingabemethoden” die physische Tastatur deaktiviert, dann hat man die bekannte Popup-Tastatur von Android wieder und kann endlich den WLAN-Schlüssel eingeben.
Programmieren vom PC aus
Da ich den Udoo ja nicht einfach als Medien-Center nutzen möchte, sondern wie einen Arduino mit Sensoren und Aktoren, war mein nächster Schritt die Programmierung des auf dem Udoo-Board enthaltenen Arduino. Es gibt zwar die Möglichkeit, den Arduino direkt unter Linux vom Udoo aus zu programmieren, aber da dies als extrem langsam beschrieben wird und da ich bei der Peripherie noch mit diversen Schwierigkeiten kämpfte, zog ich die altbekannte Variante der Arduino-Programmierung vom PC aus vor. Doch auch hier kann man nicht einfach loslegen, sondern muss vor dem Start der Arduino-IDE die folgenden Schritte machen (auf Englisch ist das in diesem Artikel beschrieben):
- Arduino IDE in der Version 1.5.6 herunterladen (zur Zeit noch Beta!)
- Arduino IDE 1.5 patchen: Auf dem Udoo Site im Kapitel “Arduino IDE Patch” die richtige Version für das eigene Betriebssystem herunterladen, die Dateien auspacken und die zwei Dateien bossac.exe und cygwin1.dll in das Unterverzeichnis \hardware\tools\ unterhalb des Verzeichnisses kopieren, in dem die Arduino IDE installiert ist. Sollten die Dateien bereits vorhanden sein, so überschreibt man sie.
- Treiber installieren für Windows: Anscheinend benötigt man unter Windows noch einen zusätzlichen Treiber für die sogenannte USB to UART bridge, den man hier herunterladen kann.
Auch auf dem Udoo selbst muss man noch Änderungen vornehmen: Das Kickstart-Projekt ist nicht ganz so weit gekommen, wie es eigentlich vorhatte, so dass man gewisse Einstellungen zur Zeit noch über Jumper vornehmen muss. Damit ein externer PC den Arduino programmieren kann, muss Jumper 18 (jener oberhalb des linken, kurzen Push-Buttons) entfernt sein. Dann verbindet man PC und Udoo mit dem seriellen Micro-USB-Anschluss CN6 (das ist jener, der näher bei der Ecke liegt). Zusätzlich wird der Udoo an den Strom angeschlossen, denn anders als beim Arduino reicht die Stromversorgung von 5V über den USB-Anschluss für den Udoo nicht aus! Empfohlen werden 12 Volt und 2 Ampère.
Erst dann kann man die Arduino-IDE starten. Oft wird der COM-Port des Udoo beim Einstecken von der IDE nicht erkannt, so dass man unter Windows den Geräte-Manager starten muss und dort unter “Anschlüsse (COM & LPT)” nach jenem Com-Port suchen muss, der UART-Bridge in der Bezeichnung führt. Diesen Com-Port wählt man dann in der IDE unter Tools – Port an.
Für den ersten Test – das “Hallo Welt” der Microcontroller – steckt man am Besten eine LED mit dem langen Beinchen in Pin 13 und mit dem kurzen in GND des Udoo. Weil wir hier nicht mit 5V sondern mit 3.3V arbeiten, überleben das die meisten LED ohne einen zusätzlichen Widerstand. Dann holt man sich aus den Beispielen in der IDE unter File – Examples – 01.Basics den Sketch Blink. Man versichert sich, das wirklich Pin 13 im Sketch eingestellt ist und lädt mit der Schaltfläche Upload den ersten kompilierten Sketch in den angeschlossenen Udoo hoch. Falls das geklappt hat, fängt die LED auf dem Udoo nach kurzer Zeit an zu blinken.
Programmieren vom Udoo aus unter Linux
Für die Programmierung des Arduino-Chips direkt im Udoo muss der Udoo natürlich vollständig mit Peripherie ausgerüstet sein, d.h. mit Stromversorgung, Bildschirm, Maus und Tastatur. Ich empfehle wieder das Beispiel mit der LED an Pin13 aus dem Abschnitt “Programmieren vom PC aus”.
Unter Linux hatte ich mit dem Smart TV das gleiche Problem wie unter Android, dass die Anzeige grösser war als die sichtbare Fläche. Da ich zwar schon mit Linux, aber nicht mit Ubuntu gearbeitet hatte, ging es auch einen Moment, bis ich merkte, dass sich das entscheidende Menü mit den installierten Applikationen oben links ausserhalb des sichtbaren Bildschirmbereichs befand. Wenigstens wurden hier meine USB-Funkmaus und Tastatur von Logitech erkannt. Auf dem empfohlenen Linux Image ist bereits eine Arduino IDE vorinstalliert, so dass man gleich loslegen kann (ohne dass man Patchen und Treiber installieren muss). Auch hier muss auf dem Udoo Jumper 18 entfernt sein. Wie vom PC aus lädt man sich wieder das Beispiel Blink und klickt auf Upload. Hier dauert das Kompilieren und Hochladen selbst bei ganz kurzen Skripts aber einiges länger.
Resultat des ersten Tages
Nach dem ersten Tag konnte ich Udoo sowohl unter Linux wie unter Android aufstarten. Ausserdem konnte ich eine LED an Pin 13 zum Blinken bringen, und zwar sowohl vom PC aus wie direkt aus der Linux Umgebung.
Mein Android-Host-Skript dagegen, mit dem ich von meinem Galaxy Note 3 Handy aus eine RGB-LED auf dem Arduino Due ansteuere, habe ich noch nicht zum Laufen gebracht.
Ebenfalls gescheitert bin ich bei der Anbindung ans WLAN. Und unter Android habe ich keine Tastatur, da Funktastatur und -maus von Logitech hier nicht erkannt werden.
Programmierung unter Android
Für die nächsten Versuche wechselte ich die SD Card mit Linux gegen jene mit Android aus. Bis jetzt ist es mir nicht gelungen, direkt von Eclipse aus zu Debuggen, obwohl dies möglich sein sollte. Mit folgenden Schritten ist es mir aber zumindest gelungen, die Beispielanwendung zum Laufen zu bringen, die man auf dem Udoo Website findet: Simple Hello World Tutorial.
Voraussetzung für diese Beschreibung ist, dass man eine funktionierende Arduino-IDE der Version 1.5 oder höher eingerichtet hat und eventuell auch eine Eclipse-Version für die Programmierung von Android.
Man lädt den Code für das Beispielprojekt vom Udoo-Website herunter, und entpackt das Zip-File. Das Android-Projekt kann man später in Eclipse importieren. Im Moment interessiert uns nur die Datei UDOOAndroidADKDemo.apk mit der kompilierten App, die wir im Root-Verzeichnis des ausgepackten Projektes finden. Wir werden sie gleich auf den Udoo kopieren. Das Unterverzeichnis mit dem Arduino-Skript kopiert man am besten gleich dorthin, wo man normalerweise seine Arduino-Skripts ablegt.
Damit der Zugriff vom PC auf Android klappt, muss man zuerst ein paar Einstellungen unter Android machen bzw. überprüfen:
- Settings – Developer Settings – “External OTG port enabled” setzen
- Ebenfalls unter Developer Settings überprüfen, dass “USB debugging” gesetzt ist, das war bei mir aber schon so voreingestellt
- Settings – Personal – Security – Device Administration – “Unknown sources” ebenfalls setzen, damit Sie ihre eigenem Programme überhaupt installieren können
Achtung: Diese Einstellungen lassen Ihren Udoo relativ offen und schutzlos, sie sollten nur gemacht werden, wenn der Udoo entweder noch gar nicht an einem Netz hängt oder an einem gut abgesichterten privaten.
Auf Seiten des Udoo überprüft man, dass Jumper J2 gesetzt ist. Das war bei mir defaultmässig schon so. Nun kann man das USB Kabel mit dem Micro-USB-Anschluss CN3 verbinden (jenem Anschluss, der weiter von der Ecke weg ist). Das Schema mit den Bezeichnungen der Komponenten findet man übrigens hier, man muss es allerdings stark vergrössern, bis man die Bezeichnungen lesen kann.
Gemäss Tutorial müsste jetzt in Android ein Fenster aufpoppen, mit dem man das USB-Debuggen erlaubt. Bei mir passierte nichts dergleichen, dafür war aber der Udoo wie ein USB-Laufwerk verbunden. Deshalb kopierte ich die APK-Datei ins Verzeichnis Downloads auf dem Udoo und installierte dann die Applikation, indem ich mit dem ES-File-Manager dieses Verzeichnis öffnete und die APK-Datei anklickte. Nach der obligaten Bestätigung war die Applikation installiert, liess sich aufrufen und machte natürlich noch absolut nichts, da ja der Arduino-Teil noch fehlte. Die LED wurde wieder in Pin 13 und GND gesteckt, wie weiter oben bereits beschrieben.
Dafür muss man den Udoo nun von CN3 zu CN6 (dem Micro-USB-Anschluss näher an der Ecke) umhängen und Jumper J18 oberhalb des kurzen Pushbuttons entfernen. Ausserdem muss der Treiber installiert sein, den ich in der Linux-Sektion oben erwähnt habe. Danach versichere ich mich im Geräte-Manager, dass der Udoo wirklich sichtbar ist. Wegen des installierten Treibers finde ich ihn als UART Bridge auf COM Port 20 (siehe Screenshot weiter oben). Nach dem Öffnen der Arduino-IDE holt man das Skript aus dem Projekt in die IDE und versichert sich, dass der Port aus dem Gerätemanager in der IDE wirklich ausgewählt ist. Nun klickt man einfach einmal auf das Icon Upload. Tatsächlich, das Programm kompiliert und wird hochgeladen.
Doch der erste Versuch, nun in Android die LED anzuzünden, scheitert, die Kommunikation zwischen Arduino und Android im Gerät selbst klappt noch nicht, auch nicht, nachdem ich das USB-Kabel entfernt habe. Erst als ich die zündende Idee habe, den Udoo neu zu starten (indem ich die Stromversorgung entferne), klappt es: Das erwartete Fenster, das nach dem Accessory fragt, poppt auf und wenn man es bestätigt, lässt sich die LED mit dem Button in der App ein- und ausschalten.
Fazit
Bei der Benutzerfreundlichkeit hat das Udoo-Team definitv noch einen langen Weg vor sich: Wenn selbst eine langjährige Software-Entwicklerin mit anderthalb Jahren Erfahrung mit Arduino und mehreren Monaten Erfahrung mit Arduino Due sich Stunden durch Manuals, Schemata und Forums-Beiträge wühlen muss, um den Controller nur zu starten, geschweige denn, das Gadget zu programmieren, dann ist es wohl noch nicht wirklich consumer-tauglich. Das liegt aber nicht an der Hardware, die ist prima. Der Missing Link ist die Dokumentation. Nicht, dass keine vorhanden wäre, nein, auf dem Udoo Site gibt es massenhaft Information. Auf den ersten Blick wirken die Seiten sehr professionell, aber wenn man die Anleitungen wirklich nachzumachen versucht, dann fehlen immer wieder essentielle Schritte und Hinweise. Zum Beispiel jener, dass man das ZIP-File mit dem Image für die SD-Card nur mit einem ZIP-Programm wie 7-Zip auspacken kann. Oder jener, wie man sich in den Android-Einstellungen die Popup-Tastatur wieder holt. Auch ein Hinweis, dass man von CN3 zu CN6 wechseln soll, ist nicht wirklich nützlich, wenn das Schema fehlt, auf dem steht welcher der zwei Micro-USB Anschlüsse CN6 und welcher CN3 ist. Und die Linux-Seite wird deutlich besser bedient als die Windows-Anwender/innen.
… der Udoo ist nur eine Alternative für fortgeschrittene Nutzer mit tiefgreifenden Linux-Erfahrungen, guten Englischkenntnissen und viel Geduld bei der Problemlösungsrecherche. Die Getting-Startet-Dokumentation ist ein Witz, das Handbuch steckt seit Monaten im 0.4-Beta-Status fest, die Tutorials sind mehr Werbung als tiefgreifende Information, im Forum findet man mehr Fragen als Antworten.
Deshalb, Hände weg vom Udoo!
PS: Frau Rothen, vielen Dank für Ihren ausführlichen Artikel. Leider hat er mich nicht davon abgehalten, viel Geld in die Udoo-Produkte zu investieren.
Hallo erstmal,
Vielen Dank für die Dokumentation! Ich kann die einwände von Udoo-Newbi betreffend UDOO gut verstehen. Für den blutigen Anfänger ist der UDOO eher nichts. Es sei denn man investiert viel Zeit und liest sich schlau. Das Raspberry-Pi ist für Anfänger eher geeignet und es gibt gute Bücher und Foren. Man gerät jedoch bei anspruchsvolleren Projekten schnell an Grenzen, da der Prozessor und die Ram-Kapazität zu schwach sind. Dies brachte mich zum PC-Duino, doch auch er ist mit 1GHz und 1GB-Ram nicht das gelbe vom Ei.
Nach dem ich bei einem Bekannten einen UDOO sah, recherchierte ich im Netz, wobei ich zum Ergebnis kam, dass der UDOO-Quad-Core im Moment der schnellste Mini-PC, im Maker Bereich, auf dem Markt ist. An der Ausstattung man nicht viel auszusetzen, ok der Ram-Speicher könnte grösser sein, wie auch ein Verpolungsschutz wäre schön(vorallem für Anfänger) oder mindestens eine Beschriftung der Polarität auf der Buchse(betr. Polarität einfach weiterlesen).
Die Dokumentation auf udoo.org könnte besser sein. Vorallem ist zu bemängeln, dass man zu lange nach der Polarität des Netzteils suchen muss.Die Polung sollte im Tutorial direkt ersichtlich sein, ist sie jedoch nicht, man muss nach ihr mit dem Suchfeld recherchieren(polarity). Da auf einen Verpolungsschutz verzichtet wurde(schade), stellt dies ein heikler Punkt dar, da ich von einigen Anfängern in Foren gelesen habe, dass sie ihren UDOO geschmort haben.
Die richtige Polarität ist positiv, d.h. positiv innen, negativ aussen.
MfG House
Nachtrag: Die mini PC’s von Hardkernel, namens ODROID, sind schneller und verfügen zum Teil über mehr RAM. Der Kostenfaktor ist je nach Typ ebenfalls einiges tiefer.
Grüsse House