Zum Inhalt springen
Anilsharma26 / Pixabay

Ein autonomes Auto bauen

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 …

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:

Tipps: Du solltest die Drähte zuerst mit den Motoren verbinden. In der Packung sind in der Regel pro Rad ein schwarzes und ein rotes Stück Draht. Lege mit dem Entminterer so viel Draht frei, so dass du es zusammenzwirbeln und um die Kontakte des Motors wickeln kannst.

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:

  1. Den Raspberry Pi noch nicht einschalten!
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Verbinde den Raspberry Pi mit dem Monitor und danach mit der Stromversorgung.

Probelauf mit einem Rad

  1. 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…
  2. 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)
  1. Führe das obige Python-Skript aus. Was beobachtest du?
  2. 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?

4 Räder steuern

Oben hast du gelernt, wie man ein einziges Rad steuert. Mithilfe des Diagrams unten kannst du die übrigen Motoren anschließen. Beachte insbesondere die Notiz, die dich auf die Verkabelung überkreuz hinweist.

Für diesen Teil gebe ich dir nur minimale Hinweise, damit du alles, was du bisher gelernt hast, konzentrieren und das Problem selbst lösen kannst.

  • Erstelle Code, mit dem du alle Räder bewegen kannst. Mit diesem Setting ist es nicht möglich, jedes Rad einzeln anzusteuern. Du siehst bereits am Diagramm, welche Räder zusammengefasst werden!
  • Erstelle Code, mit dem du vor und zurück fahren kannst sowie das Auto nach rechts und links drehen kannst.
  • Tipp: Verwende Funktionen wie beispielsweise forward, Reverse, left, right.
  • Es gibt bestimmte PINs, mit denen sogenanntes PWM möglich ist. Was das genau ist, kannst du hier nachlesen. Wir nutzen das hier einfach. So wie in dem Code oben.

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline-Feedback
Sieh alle Kommentare
0
Freue mich auf deine Ideen, kommentiere!x