Samstag, 5. Juli 2014

Der Arduino Roboter - Wenig Leistung für viel Geld

Mit der Arduino-Plattform habe ich in den vergangenen Jahren jede Menge Spaß gehabt. Mit wenig finanziellem Aufwand, konnte  ich viele spannende Dinge entdecken und neue Einsichten gewinnen, ohne dass ich ein Experte für Micro-Controller sein musste. Neben hübschen Sachen wie blinkenden LED-Würfel üben Roboter natürlich eine besondere Faszination aus. Ich hatte mir mal so vor 15 Jahren einen der ersten Lego Mindstorms Kästen gekauft, daran aber nicht viel Freude gehabt. 

Seit dem letzten Jahr gibt es zum Preis von gut 200€ den Arduino Robot. Wenn einem die Arduino-Plattform sonst gut gefällt, dann müsste das doch auch für einen Roboter aus diesem Haus gelten - so dachte ich. Dass diese Annahme naiv war, habe ich erst zu spät bemerkt.

Das Gerät besteht aus zwei Scheiben. Jede ist mit einem Arduino Leonardo bestückt. Die untere Einheit wird als Motor Board, die obere als Control Board bezeichnet. Beide Controller können per USB mit der Arduino-IDE verbunden werden. Der Roboter wird mit einem LCD-Display und einigen wenigen eingebauten Sensoren ausgeliefert. So gibt es einen Kompass und einige Infrarot-Sensoren an der Unterseite des Motor-Boards. Der Nutzen eines kleinen Display auf einem sich bewegenden Roboter ist mir nicht so ganz klar.


In der aktuellen Arduino-IDE gibt es einige Beispiele und auf YouTube Tutorials, die die Arbeit mit dem Roboter sehr instruktiv und freundlich  erklären. Umgehauen haben mich die Beispiele in der IDE und in den Tutorials aber nicht. 

Ganz geradeaus

Zunächst interessierten mich ganz grundlegende Dinge, wie die geradlinige Fahrt - das hat bei meinen den Lego-Robotor nie richtig geklappt. Auch beim Arduino-Roboter stellte sich rasch heraus, dass er eine mehr oder weniger stark gekrümmte Kurve fährt. Er hat zwar eine Schraube zum kalbirieren, aber die nutzt auch wenig. Auch wenn ich alle Augen zudrücke: Von einer geradlinigen Bewegung kann keine Rede sein.

Naja, wozu gibt es einen eingebauten Kompass und dazu noch einen Beispiel-Sketch? Wenn man den Roboter mit dem Demo-Sketch 'R04_Compass' losfahren lässt, gibt er sich zwar redlich Mühe geradeaus zu fahren; sicher sieht das allerdings nicht aus. Es torkelt mehr als er fährt. Bei mir kam es auch immer wieder zu Fahrten in eine vollkommen falsche Richtung. Das mag an den großen Metallfüßen meines Schreibtisches liegen, die den Kompass möglicherweise irritiert haben. Meine Versuche, den Roboter einfach geradlinig fahren zu lassen, habe ich dann erst einmal eingestellt.


Der Blink-Sketch auf dem Roboter

Kommen wir mal zu einem anderen ganz einfachen Thema: Man möchte eine LED auf dem Roboter anbringen und diese dann, ganz im Sinne des beliebten Blink-Sketches, blinken lassen. Auf dem Board finde ich die bekannten Pins mit ihren Nummern nicht. Auch in der Dokumentation werde ich so direkt nicht fündig. Erst nachdem ich Dr. Google eingehend befragt habe, bin ich auf einen Artikel  gestoßen, in dem man sieht, wie man eine LED ansprechen kann. In dem Beispiel werden die Jumperkabel einfach in Löcher der Control Board Platine eingeführt. Um hier aber einigermaßen professionell arbeiten zu können, muss man schon eine Buchsenleiste auflöten. Das erscheint mir nun doch ein Bruch mit dem Arduino-Prinzipien zu sein: Arduinos konnte man eigentlich immer ohne Lötkenntisse bearbeiten. So bin ich ja überhaupt auf das ganze Thema gekommen. Auch wenn ich zwischenzeitlich löten kann, gefällt es mir gar nicht, dass da mit einem bewährten Arduino-Prinzip gebrochen wurde.


Eine Bluetooth-Fernsteuerung

Im Rahmen eines ersten eigenen kleinen Projektes wollte ich den Roboter über mein Android-Gerät mit Bluetooth fernsteuern. Ein Bluetooth-Modul gibt es für eine paar Euro bei Amazon

Das Modul kann man auch auf ein Breadboard aufstecken und mit einem ganz normalen Arduino testen. Das funktioniert mit Hilfe der seriellen Schnittstelle wie am Schnürchen. Also sollte das ja grundsätzlich am Arduino Roboter kein solches Problem sein - war es aber: 
Für die Kommunikation zwischen dem Bluetooth-Modul und dem Arduino brauchen wir die serielle Schnittstelle. Die ist aber bereits für die Kommunikation zwischen Motor- und Control-Board belegt und eine weitere serielle Schnittstelle hat der Arduino-Robot nicht. 

Wenn man etwas Erfahrung hat, weiss man, dass man  bestimmte PINs über die SoftwareSerial-Bibliothek auch als serielle Schnittstelle nutzen kann. Es ist aber nicht ganz einfach, geeignete PINs zu finden: Zwar gibt es ein Datenblatt, dem entnimmt man aber, dass die in Frage kommenden Pins schon praktisch alle belegt sind. Die einzige Ausnahme erscheinen Pins der SPI/ICSP-Schnittstelle zu sein. In einem Blog-Artikel erfährt man, wie man die Pins für die serielle Kommunikation nutzen kann.
Das ist zwar eine Lösung - elegant ist aber was anderes. Tatsächlich hat dann alles funktioniert und ich konnte den Roboter über meine Smartphone steuern. Im ArduDroid-Projekt findet man zur Orientierung schon mal  ein Grundgerüst für den Arduino-Sketch sowie eine Android-App.


Der Bewegungsapparat

Auch sonst weiss ich nicht viele gutes über den Arduino Robot zu berichten: Während der Fahrt drehen die Räder schon mal durch und der Roboter kommt noch mehr vom Weg ab, als er es ohnehin schon tut. Teilweise kommt er auch gar nicht mehr weiter. Dafür gibt es zwei Gründe:

1. Schaut man sich die Unterseite des Roboters an, sieht man zwei Räder und zwei Kugeln. Die motorisierten Räder an den beiden Seiten treiben den Roboter an, die Kugeln stabilisieren ihn vorne und hinten und rollen mit. Selbst bei minimalen Unebenheiten kann es aber bei langsamer Fahrt schon passieren, der der Roboter auf den beiden Kugeln und nur einem einzigen Rad steht. Das zweite Rad dreht seine Runden dann traurig in der Luft. Etwas, aber nur wirklich etwas, besser wurde das, nachdem ich eine der Kugeln abgeschraubt habe. Dann werden immer alle drei 'Standbeine' und somit auch beide Räder genutzt.

2. Zwischenzeitlich habe ich mich etwas intensiver mit Bastelrobotern beschäftigt: Normalerweise gibt es für die Motoren und den oder die Micro-Controller getrennte Stromkreise, da die Motoren erheblich mehr Spannung als die Controller brauchen. Motoren und Controller werden dann mit Hilfe einer eigenen Schaltung miteinander verbunden. Eine solche Schaltung baut man selbst oder kauft sie in Form eines Motor-Shields
Diesen Weg ist man beim Arduino-Roboter nicht gegangen: Beide Controller und beide Motoren hängen am gleichen 5 Volt Akku. Das zieht  dann natürlich eine dürftige Leistungsfähigkeit der Motoren nach sich. Und darum darf man sich nicht wundern, wenn der Roboter schon Probleme dabei hat Unebenheiten im Parkett zu überwinden.


Fazit

Meine Meinung über das Gerät habe ich ja schon durchblicken lassen: Viel Geld für wenig Spaß und jede Menge Frust. Weihnachten stelle ich mir anders vor. Es ist mir schleierhaft, warum man mit einem solchen Produkt die Marke Arduino beschädigt. 

Keine Kommentare:

Kommentar veröffentlichen