Raspberry Pi Roboter Bausatz – Zusammenbau (Teil 1)

Neben vielen interessanten Projekten mit dem Pi ist ein selbstgebauter Roboter ein kleines Highlight, da er viele Komponenten zusammenführt. In den folgenden Teilen werden wir Schritt für Schritt einen Roboter mit vielen (selbständigen) Funktionen erstellen.

Im ersten Teil der Raspberry Pi Roboter Tutorials bauen wir den Bausatz zusammen und legen Funktionen zum Steuern der Motoren an, womit der Roboter bereits in alle Richtungen fahren kann. Diese werden in den folgenden Teilen benötigt, wenn wir unseren Roboter z.B. fernsteuern oder einer Linie folgen lassen wollen.

 

Bausatz und Zubehör

Es empfiehlt sich einen Bausatz zu nehmen, welcher bereits das nötigste beinhaltet. Ich habe dazu einen Bausatz mit zwei steuerbaren Rädern genommen, allerdings gibt es auch welche mit 4 Rädern. Anfängern würde ich empfehlen, sofern man dem Tutorial exakt folgen will, den selben Bausatz zu verwenden – es sollte aber nicht all zu viel Aufwand sein, den Code für vierrädrige Karosserien anzupassen.

In diesem Tutorial habe ich folgendes verwendet, da neben dem Bausatz an sich auch noch u.a. ein Motoren Driver IC benötigt wird:

Welches Raspberry Pi Modell verwendet wird, spielt keine Rolle. Ein Raspberry Pi Zero ist praktisch, da es leicht ist und wenig Platz benötigt, allerdings können später nur schwer Erweiterungen (wie z.B. USB Kameras) angebracht werden.

 

Raspberry Pi Roboter Bausatz aufbauen

Neben den Rädern und Motoren kommt der Bausatz mit einigen Schrauben und Platten, welche wir zusammenbauen werden. Die enthaltenen Teile des zweirädrigen Bausatzes sind folgende:

Raspberry Pi Roboter Bausatz Übersicht

Raspberry Pi Roboter Bausatz Übersicht

Als erstes werden wir die Motoren fest schrauben. Dazu nehmen wir erst einmal die beiden Motoren und befestigen die Rädchen daran:

Raspberry Pi Roboter Bausatz Motoren

Mit Hilfe der 4 langen Schrauben sowie wie den 4 kleineren Platten werden die Motoren an der großen Platte befestigt. Dazu wird auf mittig beiden Seiten eine Platte durch das passende Loch geschoben. Der Motor wird daneben platziert. Es muss darauf geachtet werden, dass die Verbindungen beider Motoren jeweils nach innen zeigen.

Raspberry Pi Roboter Bausatz Motor Achse

Auf den äußeren Seiten werden die verbliebenen zwei Platten platziert und die langen Schrauben (von außen) durchgeführt. Innen werden die kleinen Muttern angebracht und damit die Motoren befestigt.

Raspberry Pi Roboter Bausatz Motoren befestigt

Falls du die Batterien anstelle einer Powerbank verwenden willst, kannst du den Schalter noch in das mittige Loch stecken.

Als nächstes wird das Vorderrad befestigt. Wir nehmen uns dazu das drehende Rad, die 4 Abstandshalter sowie 8 Schrauben. Ich empfehle das Rad etwas zu ölen, bevor es befestigt wird, da es sich manchmal nur schwer bewegen lässt.

Raspberry Pi Roboter Bausatz Vorderrad

Die vier Abstandshalter werden zuerst an das Rad geschraubt. Anschließend werden sie mit den restlichen Schrauben vorne an der Platte befestigt. Außerdem kannst du die Hinterräder an en Motoren befestigen.

Nun müssen nur noch jeweils zwei Kabel an die „Laschen“ (siehe 2. Bild sowie 3. Bild, linke Seite) des Motors gelötet werden, was ein wenig Feingefühl benötigt. Wenn die die Motoren testen möchtest kannst du anschließend je ein Kabel an 3.3V (Pin 1) vom Raspberry Pi heften und eines an GND (Pin 6). Der Motor sollte sich nun bewegen (ob vorwärts oder rückwärts spielt erst einmal keine Rolle).

 

Der letzte Schritt ist nicht nur für jene, die Batterien verwenden wollen, da die Motoren einen höheren Strom brauchen, als der Raspberry Pi zur Verfügung stellen kann. Dazu muss der Batteriehalter mit den verbleibenden zwei Schrauben und Muttern auf der vorderen Oberseite der Platte befestigt werden. Die Kabel können durch das kleine runde Loch in der Mitte nach unten verlegt werden:

Um die Batterien als Spannungsquelle für den Pi nutzen zu können, brauchst du den Spannungswandler LM2596. Damit wird die Spannung auf 5V angepasst (zum Tutorial). Zwischen USB Anschluss und Spannungswandler kannst du den Schalter verbinden, um so die Stromversorgung ggf. unterbrechen zu können. Der Einfachheit halber nutze ich allerdings eine Powerbank für die Stromversogung des Pi. Im schematischen Aufbau ist der Spannungswandler der Vollständigkeit halber dennoch vorhanden. Die Spannung für die Motoren kommt von den Batterien.

 

 

Anschluss der Motoren

Um die beiden DC Motoren vorwärts und rückwärts laufen lassen zu können, benötigen wir den Motor Treiber IC (L293D). Dieser kann 4 Channel steuern, reicht also perfekt für unsere zwei DC Motoren. Im folgenden schematischen Aufbau kannst du die Verbindungen sehen:

Raspberry Pi Roboter Bausatz DC Motoren L293D+LM2596

Die genaue Funktionsweise und Verkabelung ist auch u.a. in diesem Tutorial beschrieben, daher gehe ich hier nicht genauer darauf ein. Als GPIO Pins für den linken Motor nehme ich 17 und 27 sowie 23 und 24 für den rechten Motor. Achte darauf, dass eine externe Stromversorgung (Batterien) benutzt wird, da der 5V Pin des Pi’s nicht ausreicht (Motoren klappern dann nur).

 

 

Code zum Bewegen des Roboters

Als letztes, bevor der Roboter seine ersten Schritte fährt, fehlt noch der entsprechende Code. Dafür habe ich eine Klasse geschrieben, welche auch in den folgenden Teilen verwendet wird.

Wir erstellen einen Ordner, in welchen alle Dateien des Roboters hinein kommen und erstellen die Datei, in welche der Code für den Motor kommt:

sudo mkdir RaspberryPi-Robot
cd RaspberryPi-Robot
sudo nano l293d.py

Die Datei bekommt folgenden Inhalt:

Mit STRG+O, STRG+X speichern und schließen wir den Editor. Wir starten einen ersten Test, in dem der Roboter ein paar Zentimeter fährt und sich einmal im Kreis dreht:

sudo python

Falls die Funktionen nicht funktionieren, wie sie sollten (fährt rückwärts statt vorwärts, etc.) einfach mal die beiden Kabel eines Motors tauschen und erneut testen. Die GPIO Belegung muss natürlich angepasst werden, sofern sie von der hier verwendeten Belegung abweicht.

 

Anpassen der Motoren-Parameter

Für die weiteren Teile ist es wichtig, dass die beiden Parameter DIST_PER_SEC und SEC_PER_TURN richtig angegeben werden. Diese sind allerdings vom Untergrund abhängig (Teppichboden, Parkett, Fließen, etc.) und müssen daher individuell gemessen werden.  Um DIST_PER_SEC zu messen, reicht es folgenden Befehl auszuführen:

l.forward();time.sleep(1.0);l.stop()

Anschließend kannst du einfach den zurückgelegten Abstand messen und den Wert (in Zentimeter) eintragen.

Um SEC_PER_TURN zu messen, ist ein wenig Geschick nötig. Und zwar starten wir dafür einen der Motoren und stoppen, sobald eine 360° Umdrehung fertig ist. Hier musst du etwas mit der Wartezeit spielen, bis du einen guten Wert gefunden hast:

wartezeit = 2.08
l.forwardLeft();time.sleep(wartezeit);l.stop()

Danach müssen beide Werte noch in der Datei angepasst werden.

 

Im nächsten Teil werden wir den Roboter einer Linie folgen lassen.

136 Kommentare

  1. I do not like these caster wheels. If you try to go forward, stop and then backward the wheel turn about its pivot point and changes the orientation of the robot. You should be able to go backward and forward repeatedly along the same line.
    I think these are better:
    https://www.amazon.co.uk/Ball-Caster-Metal-3-8/dp/B0054JDI0G
    but you may need more spacers.
    Sorry, I do not speak German but I can follow the code, diagrams and pictures.
    Great site, Thanks

    Antworten