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:

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?

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?
Quelle: https://www.bigmessowires.com/2018/05/26/raspberry-pi-gpio-programming-in-c/

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()

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