Ich werde in diesem Threat (ist übrigens mein 700ster) den Aufbau meines "PinselBot" beschreiben, um anderen die Möglichkeiten den Bot nachzubauen bzw. Anregungen für Weiterentwicklungen zu geben. Es soll dargestellt werden, dass es im Grunde nicht besonders schwer ist, Module bzw. Sensoren direkt an die GPIO Schnittstelle des Raspberri Pi anzuschliessen und damit einen autonomen Roboter aufzubauen.
ACHTUNG: Die GPIO Pins dürfen mit einer Spannung von max 3,3 Volt im Eingang (Input) betrieben werden, höhere Spannung führt im schlimmsten Fall zur Zerstörung des RPi's!!! Ich übernehme keine Verantwortung, sollte jemand meiner Anleitung folgen und durch fehlerhafte Verkabelung sein Board zerstören.
Als Buch für den Anfänger empfehle ich "Durchstarten mit Raspberry Pi" von Erik Bartmann ISBN: 978-3-86899-410-0 (dies soll keine Werbung sein, aber ich finde das Buch sehr gut). Ich gehe davon aus, dass das RPi mit Raspian "Wheezy" vorbereitet ist und eine WLAN Verbindung zum Netzwerk besteht.
Beginnen möchte ich mit dem Antrieb:
Einkaufsliste:
Neben dem Raspbery Pi benötigst du
- RP5/6 Fahrgestell inkl. Motoren und Batteriehalter
- Motortreiber L298N fertig aufgebautes Modul
- Mobiles Ladegerät
- Female to Female Kabel
- USB Kabel Ladegerät-RPi
- 6 Stk. Akkus vom Typ AA
Weiters habe ich mir aus 2mm Plexiglas eine 220x100mm grosse "Plattform" geschnitten. Darauf kommen RPi und Motortreiber, befestigt mit z. B. Klettband. Aja, Distanzbolzen zur Besfestigung der Plattform am Fahrgestell braucht man auch noch.
Die Verkabelung ist relativ einfach, weil man in dieser Phase noch kein Steckbrett benötigt wird, siehe Fotos.
Zu beachten ist, dass das Massekabel vom RPi kommend an die Masse des L298N geklemmt wird, sonst funktioniert das Ganze nicht.
Noch die GPIO-Library installieren:
von http://pypi.python.org/pypi/RPi.GPIO herunterladen
in der Console
$ tar zxf RPi.GPIO-0.x.x.tar.gz
$ cd RPi.GPIO-0.x.x
$ sudo python setup.py install
Nachdem das erledigt ist, kann das Programm ins /pi/home Verzeichnis kopiert werden:
Das Programm kennt nur Vollgas und Stop, die Geschwindigkeit kann nicht reguliert werden.Code:#Get the GPIO module import RPi.GPIO as GPIO #Get the time module import time #A routine to control a pair of pins def ControlAPairOfPins(FirstPin,FirstState,SecondPin,SecondState): if FirstState == "1": GPIO.output(int(FirstPin),True) else: GPIO.output(int(FirstPin),False) if SecondState == "1": GPIO.output(int(SecondPin),True) else: GPIO.output(int(SecondPin),False) #Just retur return ####Main body of code #Get rid of warnings GPIO.setwarnings(False) #Set the GPIO mode GPIO.setmode(GPIO.BOARD) #Set the pins to be outputs GPIO.setup(19,GPIO.OUT) GPIO.setup(21,GPIO.OUT) GPIO.setup(23,GPIO.OUT) GPIO.setup(24,GPIO.OUT) while True: ControlAPairOfPins("19","1","21","0") ControlAPairOfPins("23","1","24","0") print "Drehung nach rechts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","0","21","1") ControlAPairOfPins("23","0","24","1") print "Drehung nach Links" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","1","21","0") ControlAPairOfPins("23","0","24","1") print "Geradeaus vorwaerts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1) ControlAPairOfPins("19","0","21","1") ControlAPairOfPins("23","1","24","0") print "Geradeaus rueckwaerts" time.sleep(1) ControlAPairOfPins("19","0","21","0") ControlAPairOfPins("23","0","24","0") print "Stop" time.sleep(1)
Gestartet wird mit dem Befehl
$sudo python motor.py
Achtung: Der Roboter bewegt sich, sofern alles richtig gemacht wurde!
Lesezeichen