Roboter? Fernsteuerauto?

In der c’t Make habe ich von dem Roboterbausatz der IGS Mühlenberg gelesen. Der hat mich so fasziniert, dass ich ihn gerne bauen wollte. Leider klappte es mit dem 3D Drucker, der mir zur Verfügung stand, nicht, die Bauteile in ausreichender Präzision zu drucken. Aufgeben wollte ich aber auch nicht gleich und habe zufällig mitbekommen, dass Microsoft jetzt auch auf den Maker- und Internet-of-Things-Zug aufspringen will. Na dann mal los.

Auf der Microsoft-Seite zum Thema habe ich die Zeichnung für einen Roboter aus Holz gefunden. Die sieht so aus …

zeichnung… und soll eigentlich mit einer CNC-Fräse geschnitten oder gebrannt werden. Da ich so eine nicht habe (was nicht ist, kann aber noch werden …), musste also die Laubsäge ran. Besonders hat mir gefallen, dass man die Bauteile später stecken kann und nicht etwa schrauben oder kleben muss.

Bevor es an die Laubsägearbeiten geht, muss ich mich um den Antrieb kümmern. Der soll über zwei Servos und nicht wie sonst häufig üblich, über Motoren, erfolgen. Normalerweise haben Servos einen festen Drehwinkel (z.B. -90 Grad bis +90 Grad) und eignen sich damit beispielweise zur Bewegung eines Ruders in einem Schiff. Für den kontinuierlichen Antrieb eines beweglichen Objektes sind sie damit aber zunächst nicht geeignet. Glücklicherweise lassen sich Servos so “modifizieren”, dass sie sich kontinuierlich drehen. Eine schöne Anleitung dazu findet man etwa hier. Da ich die Schritte nur übernommen habe, gebe ich keine vollständige Anleitung sondern lediglich ein paar Impressionen wieder:

servoHat alles geklappt, steuert man nun bei den Servos die Geschwindigkeit und nicht mehr den Stellungswinkel. Der Antrieb des Bots wird über je einen Servo pro Hinterrad gemacht. Wenn man ordentliche Servos hat (ich verwende zweimal den TowerPro MG995), dann bekommt man damit auch ordentlich Schub hin. Die Steuerung hat das gleiche Prinzip wie ein Kettenfahrzeug. Will man beispielsweise nach links lenken, dann dreht man das linke Rad einfach ein wenig langsamer. Vorwärts kommt man, indem beide Räder mit der gleichen Geschwindigkeit drehen. Um stabil zu stehen, benötigt man natürlich noch ein drittes Rad. Das kann aber fix montiert werden und hat kaum Einfluss, weder auf Antrieb noch auf Lenkung.

Bei einem normalen Servo steuert man die Position über die Pulslänge des anliegenden Signals. Dieses Signal muss also kontrolliert erzeugt werden. Auf dem Roboter soll bei mir ein Raspberry Pi die Kontrolle übernehmen. Leider hat der on-board keine Möglichkeit, ein solches Signal zu erzeugen (ein Arduino im Vergleich kann das). Aber, gibt es da nicht auch was von Adafruit? Ja, gibt es: den PCA9685. Der lässt sich als I2C-Gerät mit dem Raspberry Pi verbinden und kann dann bis zu 16 Servos bequem steuern.

servo_controllerDamit ist die Hardware fertig. Vorne und hinten werden in der mobilen Variante (wenn der Roboter frei herumfährt) noch zwei Batterieblöcke angefügt; einer für den Raspberry Pi und einer für die Servos. Der Raspberry Pi verlangt exakt 5V. Dies stelle ich durch das Zwischenschalten eines kleinen Spannungswandlers sicher (Pololu 5V 600mA Step-Down Spannungsregler D24V6F5, gibt es wie viele weitere wunderbare Dinge bei Exp-Tech).

Fertig sind alle Komponenten …

bot_auseinander_gebaut… und so sieht er am Stück aus:

botEin ferngesteuertes Fahrzeug wird es aber natürlich erst, wenn man es auch aus der Ferne steuern kann. Das soll per Smartphone geschehen. Für den Raspberry Pi habe ich dazu zunächst eine Software geschrieben, die den Roboter steuern kann und dazu die Servos geeignet anspricht. Diese Komponente habe ich hinter einem leichtgewichtigen Webserver versteckt und mit einer rudimentären REST-Schnittstelle versehen. Ob es wirklich die optimale Lösung ist, dass man ein ferngesteuertes Fahrzeug per Webschnittstelle steuert, das sei dahingestellt. Für diesen Prototypen reicht es allemal. Für die Steuerung braucht man auf der anderen Seite noch eine App. Das ist eine hervorragende Gelegenheit, sich mal die neue Programmiersprache von Apple dazu anzuschauen: Swift. Erster Eindruck: Prima! Damit habe ich eine iOS-App geschrieben, die primär zwei Slider zur Verfügung stellt, einen für die Geschwindigkeit und einen für die Lenkung.

appBewegt man die Slider, werden die aktuellen Werte an die Webschnittstelle des Bots gesendet und dort für die Ansteuerung der Servos verwendet. Jetzt müssen nur noch der Bot und das Smartphone in ein gemeinsames Netzwerk (z.B. mein WLAN) und es kann losgehen: Bot-Demo-Video.

Webschnittstelle? War da nicht schonmal was? Ja, das ist technologisch das gleiche wie es auch bei meiner Heimautomatisierung zum Einsatz kommt. Und könnte man das nicht so ähnlich auch bei dem halbfertigen Boot machen? Ja, kann man. Und wird man. Stay tuned.

Advertisements

Ahoi – Teil 1

Ich habe ein Kindheitstrauma. Ich habe mehrfach erfolglos versucht, ein (Modell-)Boot zu bauen. Es ging los mit einem Holzboot, mit dem ich selber auf der Amper fahren wollte. Weder war es dicht, noch hatte es ausreichend Auftrieb, um einen Menschen – und sei es auch nur ein kleiner Junge – zu tragen. Dann kam mein erstes RC-Modellboot: Elke von Graupner. Den Bausatz habe ich zwar fertiggestellt und es gab sogar eine Jungfernfahrt. Allerdings waren Motor und Akku dermaßen überdimensioniert, dass man nicht von Fahren sprechen konnte. Schon gar nicht, wenn man bedenkt, dass Elke ein alter Fischkutter sein soll. Als nächstes habe ich mich an dem Krabbenkutter Tön 12 von Graupner probiert. Sie hat nie Wasser unter dem Kiel zu spüren bekommen, geschweige denn wurde sie mit Elektronik ausgestattet. Mein nächster Versuch Fluppi (ein Speedboot, ebenfalls Graupner) verhielt sich wie ein U-Boot. Der letzte Versuch sollte dann ein vollständig selbst entworfenes Segelboot werden; die unvollendeten Reste vergilben auf dem Dachboden:

segelbootNicht einer der Versuche wurde erfolgreich zum Ende geführt.

Und nun kam das Schicksal in Form eines Winks zu mir. Auf einem Flohmarkt fand ich dieses Polizeiboot von Playmobil:

flohmarktDa war sie. Meine Chance, mein Trauma zu verarbeiten. Mir blieb nichts anderes übrig, als zuzuschlagen und einen Schlachtplan zu entwerfen.

Zunächst muss das Schiff in seine Einzelteile zerlegt werden. Die zentrale Komponente ist natürlich der Rumpf. Wenn es gut läuft, dann werde ich die Aufbauten später wieder aufsetzen, das kommt aber erst am Ende.

auseinandernehmenUm den Antrieb (Schraube, Welle und Ruder) optimal einbauen zu können, habe ich zunächst ein Loch in den Rumpf geschnitten.

rumpf_lochDas Loch habe ich mit einem Teil eines alten Rohres aus einem Waschbeckenabfluss gefüllt. Darin sind das Führungsrohr für das Ruder und das Stevenrohr integriert (das ist das Rohr in dem später die Welle laufen wird).

antrieb_aussen

Die gesamte Konstruktion habe ich mit Sperrholzteilen punktuell verstärkt und ausgerichtet.

antrieb_innenDas Ruder wird mit einem Servo verbunden der wiederum ebenfalls in einer Sperrholzkonstruktion sitzt. An die Welle wird ein kleiner DC-Motor anschlossen und dieser fest mit dem Schiffsrumpf verbunden.

servo_motorDamit sind die Antriebskomponenten fest verbaut, die Schiffsschraube und das Ruder können montiert werden.

ruder_schiffschraubeZuletzt muss noch sichergestellt werden, dass auch von oben kein Spritzwasser in den Rumpf eindringen kann. Dazu habe ich eine Leiste um den gesamten oberen Rand des Rumpfes herum angebracht, auf die das Deck montiert werden kann.

leiste_deckDas Deck wird dazu mit dieser Leiste verklebt. Auch das Deck besteht aus Sperrholz und wurde über eine Schablone passgenau zugeschnitten. In der Mitte ist ein Teil herausnehmbar, damit man auch später noch an die Antriebskomponenten und die Steuerungselektronik (Teil 2) herankommt.

neues_deck-1Zuletzt wird der gesamte Rumpf neu lackiert. Gerade durch den Einbau des Halbzylinders für den Antrieb, waren darauf natürlich deutliche Gebrauchsspuren zu erkennen. Der Rohbau ist damit abschlossen.

frisch_lackiert-1Im zweiten Teil geht es um den Einbau der Steuerungselektronik und vor allem um die Frage: Schwimmt es? Funktioniert es? Ist das Trauma zu überwinden?

Kransteuerung ist für Kinder

Ursprünglich als Weihnachtsgeschenk gedacht, habe ich eine Elektronik-Spielerei zusammengebaut. Die Idee war, eine kleine Winde zu entwickeln, die dann modular mit verschiedenen Baukastensystemen wie Lego Technik oder Matador verwendet werden kann. Auf den zweite Blick fiel auf, dass die Idee als Geschenk nicht so recht geeigent war, und so habe ich sie für mich gebaut.

Zunächst habe ich mir die Bauteile bei eBay zusammengekauft: einen Mini-Motor mit Getriebe, einen dreistufigen Schalter (Aus, Ein (Vor), Ein (Zurück)) und einen Batterieblock. Dazu habe ich keinen kleinen Bauplan gezeichnet und die Gehäusebauteile aus Sperrholz gesägt.

01_bauteile

Etwas fummelig war die Verkabelung von Motor und Schalter, weil die einfach unheimlich klein sind, mein Lötkolben schon bessere Tage gesehen hat und meine Kompetenz im Löten doch arg beschränkt ist. Allen Hürden zum Trotz waren am Ende alle Kabel an der richtigen Stelle.

02_elektronik

Glücklicherweise passte das alles dann auch noch in das Gehäuse, das ich vorher lackiert hatte.

03_zusammengebaut

Hier auch in bewegten Bildern.

Spätestens in dieser Stelle wurde einmal mehr klar, dass der Bau zwar viel Spass gemacht hat, die konkrete Anwendung aber weiterhin fehlt. Die urspüngliche Idee war eine Seilwinde, etwa für einen Kran, in einem beliebigen Baukastensystem. Leider hatte ich keinen passenden und so musste noch einmal eBay zur Hilfe kommen. Für ein paar Euro habe ich einen alten, unvollständigen, aber für diese Zwecke hervorragend geeigneten Märklin-Metallbaukasten gefunden. Damit konnte ich schließlich einen Testaufbau zusammenstellen.

04_kran

In meiner Elektronikkiste habe ich nun noch den DC-Brick von Tinkerforge zum Steuern von Gleichstrommotoren wiederentdeckt. Damit kann ich die Winde auch per Computer bedienen. Eine mobil zu steuernde Variante ist in Planung, das wird aber noch eine Weile dauern.

Hoch lebe Lifelong Kindergarden.