Einfacher Pi-Roboter
Simple Pi Robot zielt darauf ab, die Robotersteuerung in eine einfache Form zu bringen.
Simple Pi Robot zielt darauf ab, die Robotersteuerung in eine einfache Form zu bringen.
Die Teileliste
(1) Raspberry Pi (Jedes Modell), aber mit der kürzlichen Einführung von Pizero oder Pi 2 sollte eine gute Option sein, mein aktuelles Modell verwendet B+.
(2) 40-poliges GPIO-Kabel (bei Verwendung von Pi B+ oder Pi 2).
(3) Steckbrett (zur schnellen Montage verschiedener Sensoren).
(4) Ein 2WD-Chassis.
(5) Distanzsensor (Ultraschall HC SR04).
(6) Powerbank (zum Einschalten des Pi).
(7) Wiederaufladbare Batterien AA (vorzugsweise 2100 mAh).
(8) Überbrückungsdrähte sowohl männlich als auch weiblich, Widerstände.
(9) WiFi-Adapter (EDUP/EDIMAX für die drahtlose Kommunikation mit pi).
(10) Speicherkarte (4 GB und höher zum Ausführen des Betriebssystems auf pi).
(11) Motortreiber (L298).
(12) Servomotor.
(13) Verschiedenes – Kabelbinder (zum Binden der Überbrückungsdrähte) und Schaumstoffband (zum Halten von Servos oder anderen Sensoren, bei denen keine Schraubmontage verwendet werden kann).
Schritt 1:Auswahl des Motorantriebsschilds
Derzeit sind nur sehr wenige Motorantriebsschilde für Raspberry Pi verfügbar, um nur einige zu nennen:-
(1) RTK-Motorcontroller-Abschirmung
(2) Pololu DRV8835 Dual-Motor-Treiber-Kit für Raspberry Pi
(3) Adafruit DC und Schrittmotor-HAT für Raspberry Pi
(4) Raspirobot-Board von Adafruit
und in letzter Zeit Unterentwicklung wie ZEROBORG
Eines der häufigsten Probleme beim Bau eines Roboters besteht darin, den Verdrahtungsaufwand zu minimieren, und dasselbe kann durch die Verwendung der Abschirmungen/Hut erreicht werden. Ich habe versucht, meinen Roboter zu bauen, zuerst mit einem der Shield-Äquivalente zu Raspirobot vom Hersteller ALSROBOT. Die Kits werden aus China geliefert, aber das Problem war, dass ich die Motoreingangsspannung nicht erhöhen konnte. Das Maximum war weniger als 5 Volt, mit einem leichten Ungleichgewicht zwischen den Spannungen, trotzdem kann man den folgenden Link überprüfen – ALSROBOT – PI-Motortreiberschild
Wie auch immer In meinem aktuellen Tutorial habe ich den billigen und vielseitigen L298-Motortreiber verwendet – L298.
Der Vorteil der obigen Platine ist, abgesehen davon, dass sie billig ist, dass ein geregelter 5 Volt-Ausgang zur Verfügung steht.
Ich habe die L298-Platine verwendet, um zwei Gleichstrommotoren und 1 Servomotoren anzutreiben.
Schritt 2:Der L298-Motortreiber
Ich habe den L298-Motortreiber an der Unterseite meines Chassis montiert, um jetzt den Gleichstrommotor und den Servomotor anzuschließen
(i) Gleichstrommotor -A zum Ausgang -A (+ &-).
(ii) Gleichstrommotor -B zum Ausgang -B (+ &-).
(iii) Servomotor +ve bis +5V geregelte Versorgung der L298-Platine &Servomotor -ve an GND der L298-Platine.
Lassen Sie den Jumper des Aktivierungsstifts unverändert, wenn Sie keine Geschwindigkeitssteuerung wünschen, entfernen Sie andernfalls den Jumper. Der eingesetzte Jumper stellt eine +5-V-Versorgung sicher, um den Pin zu aktivieren, der wiederum den Motor mit Nenndrehzahl antreibt.
Verbinden Sie nun 4 Nos-Jumperdrähte mit den Steuereingängen, verbinden Sie das andere Ende der Jumperdrähte mit dem GPIO-Pin, wie im nächsten Schritt angegeben.
Für Servomotor eine Nr. Überbrückungskabel für die Steuerung zum GPIO-Pin wie im nächsten Schritt
Schritt 3:Der Servomotor
Das Servo hat eine 3-Draht-Verbindung:Strom, Masse und Steuerung. Die Stromquelle muss ständig angelegt sein.
Das Steuersignal ist pulsweitenmoduliert (PWM), aber hier bestimmt die Dauer des positiven Impulses die Position der Servowelle. Ein Impuls von 1,520 Millisekunden ist beispielsweise die Mittelposition für ein Futaba S148-Servo. Ein längerer Impuls führt dazu, dass sich das Servo von der Mittelposition im Uhrzeigersinn dreht, und ein kürzerer Impuls lässt das Servo von der Mittelposition gegen den Uhrzeigersinn drehen.
Ich habe Futuba s3003 Servo verwendet – die Verbindung ist sehr einfach das "+" &"-" geht wie oben beschrieben zum L298 Board. Es ist wichtig, auf die Betriebsspannung des Servos zu achten (in meinem Fall sind es 4,8 – 6 V siehe Bild oben), das Signalkabel muss an den GPIO-Ausgang angeschlossen werden, normalerweise ist er weiß oder orange.
Die Steuerung von Servomotoren in Raspberry Pi mag schwierig sein, aber dann gibt es eine sehr leistungsstarke Bibliothek, die @ RPIO.PWM gehostet wird. Verwenden Sie den folgenden Code, um sie auf Pi zu installieren.
sudo apt-get install python-setuptoolssudo easy_install -U RPIO
Weitere Informationen zu RPIO.PWM und dem verwendeten DMA finden Sie unter dem Link https://pythonhosted.org/RPIO/pwm_py.html
Schritt 4:Das Roboter-Chassis
Ich habe Ellipzo Robot Chassis mit 2wd verwendet, 2wd sind einfach und leicht zu steuern.
Das Kit wird mit DC-Motoren, Pan-Kit für Servomotoren und allen erforderlichen Hardwares zum Zusammenbau des Kits geliefert.
Den detaillierten Link finden Sie unter – Ellipzo Robot-Fahrgestell-Kit.
Pl. Sehen Sie sich das Video zur Montage des Raspberry Pi zusammen mit dem L298-Motortreiber, dem Breakout-Board, dem Kameramodul und der Powerbank an.
Schritt 5:Der Distanzsensor
Die Integration des Distanzsensors ist einfach und wir benötigen nur einen 1k-Widerstand zusammen mit Überbrückungsdrähten. Verbinden Sie VCC &GND mit pi +5Volt bzw. GND.
Die anderen beiden Pins TRIG &ECHO sind wie in den vorherigen Schritten mit GPIO-Pins zu verbinden. Denken Sie daran, den Widerstand wie im Bild gezeigt anzuschließen.
Der Python-Code zum Messen der Entfernung ist im letzten Schritt enthalten.
Schritt 6:Raspberry Pi-Kamera – Videostreaming mit VLC-Player
Hier habe ich das Pi-Kameramodul verwendet, die Einrichtung ist recht einfach und Sie können auf den Link verweisen:Himbeer-Pi-Kamera-Setup
Beginnen Sie für das Video-Streaming mit VLC mit der Installation von VLC auf Himbeer-Pi
sudo apt-get install vlc
Um mit dem Streamen des Kameravideos mit RTSP zu beginnen, geben Sie Folgendes ein
raspivid -o - -t 0 -n | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
oder mit der richtigen Breite und Höhe folgenden Code verwenden
raspivid -o - -t 0 -n -w 600 -h 400 -fps 12 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
Um nun den Stream über den VLC-Player anzuzeigen, öffnen Sie VLC auf Ihrem Remote-System, als einen Netzwerkstream mit
. zu öffnenrtsp://###.##.###.###:8554/
wobei ###.###.###.### die vom Netzwerkrouter angegebene Adresse Ihres Pi ist.
Wenn sich der Pi jetzt in Ihrem Zuhause bewegt, sehen Sie den Videostream auf Ihrem Remote-System.
Schritt 7:Raspberry Pi-Pinbelegung und Python-Code
Schritt 8:Einige Montagebilder
Code
from RPIO import PWMimport RPi.GPIO as GPIOfrom RPIO import PWMimport RPi.GPIO as GPIOimport timefrom time import sleepfrom subprocess import callGPIO.setmode(GPIO.BCM)GPIO.setup(19,GPIO .OUT)GPIO.setup(26,GPIO.OUT)GPIO.setup(16,GPIO.OUT)GPIO.setup(20,GPIO.OUT)GPIO.setup(21,GPIO.IN)GPIO.setup(8,GPIO .OUT)GPIO.setup(27,GPIO.OUT)GPIO.setup(9,GPIO.OUT)TRIG=18ECHO=17print"controls"print"1:vorwärts bewegen"print"2:rückwärts bewegen"print"3:stop robot"print"4:Bild mit benutzerdefiniertem Namen aufnehmen"print"5:vorwärts bewegen mit Geschwindigkeitssteuerung"print"6:Roboter drehen"print"7:Roboter drehen"print"8:für Servosteuerung bitte "print" 11 :Willkommen bei der autonomen Steuerung"Drucken"drücken Sie die Eingabetaste, um den Befehl zu senden"def takestillpic(inp):print"Bitte geben Sie das Fotozeichen ein"inp =raw_input() call( ["raspistill -vf -hf -o " + str(inp) + ".jpg" ],shell=True ) def fwd():GPIO.output(19,True) GPIO.output(26,False) GPIO.output(16,True) GPIO.output(20,False)def rev ():GPIO.output(19,False) GPI O.output(26,True) GPIO.output(16,False) GPIO.output(20,True)def stop():GPIO.output(19,False) GPIO.output(26,False) GPIO.output(16 ,False) GPIO.output(20,False)def distmeas():print" Distanzmessung läuft" GPIO.setup(TRIG,GPIO.OUT) GPIO.setup(ECHO,GPIO.IN) GPIO.output(TRIG,False ) print" Warten auf Sensor zur Beruhigung bitte" time.sleep(2) GPIO.output(TRIG,True) time.sleep(0.00001) GPIO.output(TRIG,False) while GPIO.input(ECHO)==0:pulse_start =time.time() while GPIO.input(ECHO)==1:pulse_end=time.time() pulse_duration =pulse_end - pulse_start distance =pulse_duration * 17150 distance =round(distanz,2) print " Distance ", distance, " cm" wenn Abstand <50 :GPIO.output(19,False) GPIO.output(26,False) GPIO.output(16,False) GPIO.output(20,False) time.sleep(1) print "Roboter gestoppt als Abstand ist kleiner" print "Jetzt fährt der Roboter rückwärts" GPIO.output(19,False) GPIO.output(26,True) GPIO.output(16,False) GPIO.output(20,True) time.sleep(1) GPIO .Ausgabe(19,Falsch) GPIO.Ausgabe(26,Falsch) G PIO.output(16,False) GPIO.output(20,False) TLr() time.sleep(4) fwd() distmeas() else:distmeas() def TL():GPIO.output(19,True) GPIO .output(26,False) GPIO.output(16,False) GPIO.output(20,False)def TLr():GPIO.output(19,True) GPIO.output(26,False) time.sleep(0.75) GPIO.output(19,False) GPIO.output(26,False)while True:inp=raw_input() if inp =="1":fwd() print"Roboter bewegt sich in Vorwärtsrichtung" elif inp =="2" :rev() print"Roboter bewegt sich in Drehzahlrichtung" elif inp=="3":stop() print"Roboter gestoppt" elif inp =="4":takestillpic(inp) print "Foto bitte" elif inp ==" 5":GPIO.output(7,False) GPIO.output(8,False) elif inp =="6":TL() elif inp =="7":TLr() elif inp =="8":servo =PWM.Servo() servo.set_servo(27,1000) time.sleep(2) servo.stop_servo(27) elif inp =="9":servo =PWM.Servo() servo.set_servo(27.1500) time .sleep(2) servo.stop_servo(27) elif inp =="10":servo =PWM.Servo() servo.set_servo(27,2000) time.sleep(2) servo.stop_servo(27) elif inp =="11":fwd() distmeas() GPIO.c Leanup()
Quelle:Einfacher Pi-Roboter
Herstellungsprozess
- Experten für die Reparatur von Fanuc-Servomotoren
- Sachkundige Reparatur von Siemens Servomotoren
- Tipps für die Reparatur und Fehlerbehebung von Servomotoren
- Hindernisse vermeiden Roboter mit Servomotor
- Roboter für supercoole Indoor-Navigation
- Servobewegung verbessert den Roboterbetrieb
- Die Schönheit des Planetengetriebes für Servomotoren
- Was ist ein Servomotor?
- Was ist ein Servomotor-Reduzierer?
- Koppeln von Getrieben mit Servomotoren