====== Rover ====== ==== Beschreibung: ==== Ziel des Projektes ist es, dass der Rover mittels einer HTML Seite gesteuert wird. Der Rover besteht aus zwei Raupenantrieben, die jeweils von zwei Motoren betrieben werden. Die Motoren werden über Ausgänge des Raspberry Pis angesprochen. Die Stromversorgung ist über PowerBanks/Akkus realisiert, die sowohl den Raspberry Pi als auch die Motoren mit Energie versorgen. Mit einer Kamera kann man während der Fahrt oder im Stillstand die Umgebung betrachten. Diese ist über Servos horizontal und vertikal in ihrer Position verstellbar. {{ :rover.jpg?nolink&600 |}} ==== Aufbau: ==== __ Software:__ Die Skripte wurden in Phyton und HTML geschrieben. Damit dieses Projekt realisierbar ist, ist es notwendig Pakete auf den Raspberry Pi zu installieren. Der Zugriff während der Programmier Phase erfolgt über Putty (SSH, Terminal) oder alternativ über VPN (grafische Oberfläche). Beide Möglichkeiten müssen in der Konfigurationsdatei des Raspberry Pis aktiviert werden. __Eingesetzte Software__ ⦁ Python ⦁ Kamera (Motion) ⦁ VNC (um extern mit einem PC eine Verbindung aufzubauen) ⦁ Flask Server für Kommunikation (Bewegung des Rovers) Als nächsten Schritt stellt man die Kamera Optionen richtig ein. Dazu öffnet man die config Datei der Kamera und stellt folgende Parameter ein. ⦁ daemon = on ⦁ framerate = 90 ⦁ stream maxrate = 100 ⦁ stream localhost off ==== Bauteile: ==== ⦁ Raspberry Pi ⦁ Rover Kit mit Motoren ⦁ Servo für die Kamera ⦁ Raspberry Pi Kamera ⦁ Brett um Hardware zu montieren ⦁ Power Bank für Spannungsversorgung ⦁ Power Bank __Beschreibung des Codes:__ Über die eingefügten Bilder auf der HTML Seite, die einen Link hinterlegt haben, sendet der Flask Server mit der Methode POST den Befehl an den Raspberry Pi. Dieser schaltet darauf hin den entsprechenden Motor an oder aus. Das gleiche gilt für die Servos. Die Kamera läuft im Hintergrund und der Livestream kann mittels Browser betrachtet werden. __Erweiterungsmöglichkeiten:__ Man könnte einen Ultraschall Sensor montieren der dann die Entfernung zu einem Objekt misst. Der Rover könnte dann auf dieses Hinderniss reagieren und selbstständig stoppen. ==== Code-Ausschnitte: ==== **Ansteuerung des Motors / Servos** import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BOARD) #GPIO-Belegung auf die des Shields stellen #Alle GPIO PINS als Ausgang GPIO.setup (31, GPIO.OUT) #Beide angeschlossenen GPIOs als Ausgang deklarieren GPIO.setup (33, GPIO.OUT) GPIO.setup (35, GPIO.OUT) #Beide angeschlossenen GPIOs als Ausgang deklarieren GPIO.setup (37, GPIO.OUT) def Servo1hoch(): GPIO.setmode(GPIO.BOARD) #GPIO-Belegung auf die des Shields stellen GPIO.setup (22, GPIO.OUT) #Servo 1 als Ausgang Servo1 = GPIO.PWM (22, 50) #GPIO 11 als PWM mit 50Hz Servo1.start(2.5) #Initialisierung Servo1.ChangeDutyCycle(2.5) sleep(1) print("Servo ist oben") sleep(1) Servo1.stop() def forward(): GPIO.output(31, GPIO.HIGH) #Die GPIOs umgekehrt schalten, Drehrichtung wird invertiert GPIO.output(33, GPIO.LOW) #Wichtig: Erst den Aktiven GPIO auf "low" stellen! GPIO.output(35, GPIO.HIGH) #Den Motor starten, indem ein GPIO Strom ausgibt, der andere nicht. GPIO.output(37, GPIO.LOW) sleep(1) print("motor dreht vorwaerts") GPIO.output(31, GPIO.LOW) #GPIOs stromlos schalten GPIO.output(33, GPIO.LOW) GPIO.output(35, GPIO.LOW) #GPIOs stromlos schalten GPIO.output(37, GPIO.LOW) **Aufsetzen des Flask Servers und Weiterleitung der Steuerbefehle ** from flask import Flask, render_template, request, redirect, url_for, make_response import motors import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) #Einstellen auf die GPIO Pin Belegung des Boards app = Flask(__name__) #Aufsetzen des Flask Servers @app.route('/') #Wenn die Home IP eingegeben wird, wird index.html aufgerufen def index(): return render_template('index.html') #Beim Betaetigen eines Buttons wird der Pin mit Post uebergeben und hier im Python Code der jeweiligen Motor Funktion uebergeben @app.route('/', methods=['POST']) def reroute(changepin): changePin = int(changepin) #cast changepin to an int if changePin == 1: motors.turnLeft() **HTML Ausschnitt (Bei betätigung des Buttons sendet er den Pin 1** Roboter mit Kamera

Ferngesteuerter Robtoter mit Kamera

Rover Bewegungssteuerung