Ein autonom fahrendes Auto zu bauen, ist ein schwieriges und komplexes Unterfangen. Vielleicht verfolgst du die Nachrichten zu dem Thema oder interessierst dich generell dafür. Große und namhafte Hersteller versuchen sich seit Jahren daran und investieren viel Geld in Forschung und Entwicklung. Wir werden also kein Auto auf die Straßen bringen, sondern ein kleines Vehikel basteln, das zumindest nicht direkt auf eine Wand zufahren soll. Mit etwas mehr Forschung, schaffen wir auch mehr …
Inhaltsverzeichnis
Die Grundlagen
Einen Plan machen
Jetzt geht es so richtig los! Anders als bei der Übung zu den LEDs wird es jetzt wirklich handwerklich. Ich hoffe, du freust dich darauf! Befolge die Schritte unten ganz genau, dann solltest nur wenige Hindernisse zu überwinden haben.
Werkzeug und Material: Statte dich mit dem unten aufgeführten Werkzeug und Material aus, bevor du loslegst.
- Auto-Kit von Joy-IT (4 Motoren)
- Schraubendreher (im Kit enthalten)
- Kabelentmanteler (eine Art Zange, um den Plastikmantel von leitenden Drähten zu trennen)
- L298N Motorsteuerung
- 4 mal AA-Batterie bzw. -Akku
- evtl. Lötmaterial (in der Schule löten wir die Teile derzeit nicht)
- Raspberry Pi + Zubehör für Bedienung
Grundgerüst aufbauen
Wir statten uns aus mit einem Kit, das die wichtigsten Teile bereithält. Aktuell verwenden wir ein Produkt der Marke Joy-IT. Baue das Auto nach der folgenden Anleitung (des Herstellers) auf, bevor wir mit den Programmierübungen anfangen:
Einen Motor steuern
Ja, richtig gelesen! Du wirst erst einmal nur einen Motor steuern, um die Grundlagen zu verstehen.
Verbinde die Bauteile nach dem Schema unten. Dafür benötigst du verschiedene Kabel. Kabel, die du einklemmst, nimmst du aus der Spule und verwendest dafür möglichst keine Jumper-Kabel, weil sie nur dünne Nadeln haben. Gehe wie folgt vor:
- Den Raspberry Pi noch nicht einschalten!
- Verbinde den Motor eines(!) Rades mit der Motorsteuerung. Die Motorsteuerung ist eine eigene kleine Platine, in unserem Fall ist es eine rote Platine des Modells L298N. In den folgenden Übungen wirst du diesen Motortreiber (motor driver) besser kennenlernen.
- Verbinde die Motorsteuerung mit dem Raspberry Pi. Nutze bitte ganz genau die Pins im Bild, der Code in den Übungen wird sich auf diese beziehen.
- Verbinde die Motorsteuerung mit dem Batteriehalter. 2 Batterien sollten zunächst ausreichen. Beachte: Der Motor wird von den Batterien angetrieben. Die Energie des Raspberry Pi reicht nicht dafür aus, sich selbst und Motoren zu steuern.
- Du nutzt das Auto oben, das heißt sobald du den Code ausführst, wird sich das Auto auch bei einem Rad bewegen. Damit nicht alles im Chaos endet, sollte das Rad in der Luft sein! Lege entweder etwas unter das Auto oder das Auto auf die Seite, auf der sich nichts bewegen wird.
- Verbinde den Raspberry Pi mit dem Monitor und danach mit der Stromversorgung.

Probelauf mit einem Rad
- Lege einen Ordner auf dem Raspberry Pi an, unter Documents. In diesen Ordner legst du alle Projektdateien ab. Achte darauf, dass die Dateinamen nicht zu umständlich sind. Wir werden später ein mal per Command Line auf den Pi zugreifen, also ohne Bildschirm. Da brauchen wir keine langen Namen…
- Erstelle die Datei motors.py mit diesem Inhalt:
# motors.py import RPi.GPIO as gpio import time def initBoard(): gpio.setmode(gpio.BOARD) # gpio.setwarnings(False) def initMotors(): initBoard() gpio.setup(11, gpio.OUT) #IN1 gpio.setup(13, gpio.OUT) #IN2 gpio.setup(12, gpio.OUT) #pwm0 (hardware) EN1: controls M1-speed with IN1 and IN2 def forward(tf,speed): print("start forward") initMotors() pwm1 = gpio.PWM(12,100) #arg1: pin, arg2: frequenz in Hz pwm1.start(speed) #min 20, max 100 gpio.output(11, 0) #IN1 gpio.output(13, 1) #IN2 time.sleep(tf) gpio.cleanup() print("clean up") forward(3,50)
- Führe das obige Python-Skript aus. Was beobachtest du?
- Nun betrachten wir diesen Block etwas genauer:
def forward(tf,speed): initMotors() pwm1 = gpio.PWM(12,100) #arg1: pin, arg2: frequenz in Hz pwm1.start(speed) #min 20, max 100 gpio.output(11, 0) #IN1 gpio.output(13, 1) #IN2
Was bewirkt dieser Block genau? Analysiere den Code Zeile für Zeile. Die zwei markierten Zeilen sind wichtig für die Motorsteuerung. Tausche die 0 mit der 1. Führe den Code erneut aus. Was stellst du fest?
Ein Rad ohne Motorsteuerung steuern
Es ist prinzipiell auch möglich, einen Motor ohne Motorsteuerung zu nutzen. Dafür verbindest du ein Pin mit GND und einen mit einem freien Pin. Sobald der Output auf True gesetzt ist, bewegt sich das Rad.
- Wie kann man das Rad in die andere Richtung drehen lassen?

Servomotor steuern
Schließe den Servmotor an:
- gelbes Kabel: PIN Nummer 11 an,
#this code is for the use of servormotors #tested with MG996R, circuit diagram is given import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BOARD) GPIO.setup(11, GPIO.OUT) pwm=GPIO.PWM(11, 50) #select pin, 50Hz is standard pwm.start(0) def setAngle(angle): duty = angle / 18 + 3 GPIO.output(11, True) pwm.ChangeDutyCycle(duty) sleep(1) GPIO.output(11, False) pwm.ChangeDutyCycle(duty) setAngle(90) pwm.stop() GPIO.cleanup()