- Erforderliche Komponenten:
- Ultraschallsensormodul:
- Schaltungserklärung:
- Wie es funktioniert:
- Programmiererklärung:
Roboter sind Maschinen, die den menschlichen Aufwand bei schweren Arbeiten reduzieren, indem sie die Aufgaben in Branchen, Fabriken, Krankenhäusern usw. automatisieren. Die meisten Roboter werden mit Steuergeräten oder Komponenten wie Druckknopf, Fernbedienung, Joystick, PC, Gesten usw. betrieben Ausführen eines Befehls mithilfe eines Controllers oder Prozessors. Aber heute sind wir hier mit einem automatischen Roboter, der sich autonom bewegt, ohne dass externe Ereignisse das gesamte Hindernis auf seinem Weg umgehen. Ja, wir sprechen über einen Roboter zur Vermeidung von Hindernissen. In diesem Projekt haben wir Raspberry Pi und Motortreiber verwendet, um den Roboter und den Ultraschallsensor zum Erkennen von Objekten auf dem Weg des Roboters anzutreiben.
Zuvor haben wir viele nützliche Roboter behandelt. Sie finden sie in unserem Abschnitt Robotik-Projekte.
Erforderliche Komponenten:
- Himbeer-Pi
- Ultraschallsensormodul HC-SR04
- ROBOTER Chassis komplett mit Schraube
- Gleichstrommotoren
- L293D IC
- Räder
- Brotbrett
- Widerstand (1k)
- Kondensator (100 nF)
- Kabel anschließen
- Netzteil oder Power Bank
Ultraschallsensormodul:
Ein Hindernisvermeidungsroboter ist ein automatisierter Roboter und muss nicht mit einer Fernbedienung gesteuert werden. Diese Arten von automatisierten Robotern verfügen über einige "Six Sense" -Sensoren wie Hindernisdetektoren, Schalldetektoren, Wärmemelder oder Metalldetektoren. Hier haben wir die Hinderniserkennung mit Ultraschallsignalen durchgeführt. Zu diesem Zweck haben wir ein Ultraschallsensormodul verwendet.
Ultraschallsensoren werden üblicherweise verwendet, um Objekte zu erfassen und den Abstand des Hindernisses vom Sensor zu bestimmen. Dies ist ein großartiges Werkzeug, um die Entfernung ohne physischen Kontakt zu messen, z. B. Wasserstandsmessung im Tank, Entfernungsmessung, Hindernisvermeidungsroboter usw. Hier haben wir das Objekt erkannt und die Entfernung mithilfe des Ultraschallsensors und des Raspberry Pi gemessen.
Mit dem Ultraschallsensor HC-SR04 wird der Abstand im Bereich von 2 cm bis 400 cm mit einer Genauigkeit von 3 mm gemessen. Das Sensormodul besteht aus einem Ultraschallsender, -empfänger und dem Steuerkreis. Der Ultraschallsensor besteht aus zwei kreisförmigen Augen, von denen eines zum Senden der Ultraschallwelle und das andere zum Empfangen der Ultraschallwelle verwendet wird.
Wir können die Entfernung des Objekts basierend auf der Zeit berechnen, die die Ultraschallwelle benötigt, um zum Sensor zurückzukehren. Da die Zeit und Geschwindigkeit des Schalls bekannt sind, können wir die Entfernung nach den folgenden Formeln berechnen.
- Entfernung = (Zeit x Schallgeschwindigkeit in Luft (343 m / s)) / 2.
Der Wert wird durch zwei geteilt, da sich die Welle über dieselbe Strecke vorwärts und rückwärts bewegt. Die Zeit zum Erreichen des Hindernisses beträgt also nur die Hälfte der Gesamtzeit.
Also haben wir den Abstand (in Zentimetern) vom Hindernis wie folgt berechnet:
puls_start = time.time () während GPIO.input (ECHO) == 1: #Überprüfen Sie, ob das ECHO HIGH GPIO.output (led, False) ist Entfernung = rund (Entfernung, 2) avgDistance = avgDistance + Entfernung
Dabei ist puls_duration die Zeit zwischen dem Senden und Empfangen von Ultraschallsignalen.
Schaltungserklärung:
Die Schaltung ist für diesen Roboter zur Vermeidung von Hindernissen mit Raspberry Pi sehr einfach. Ein Ultraschallsensormodul zur Erkennung von Objekten ist an den GPIO-Pins 17 und 27 des Raspberry Pi angeschlossen. Ein Motortreiber-IC L293D ist an den Raspberry Pi 3 angeschlossen, um die Motoren des Roboters anzutreiben. Die Eingangspins 2, 7, 10 und 15 des Motortreibers sind mit den Raspberry Pi GPIO-Pins 12, 16, 20 bzw. 21 verbunden. Hier haben wir zwei Gleichstrommotoren verwendet, um den Roboter anzutreiben, wobei ein Motor mit den Ausgangspins 3 und 6 des Motortreiber-IC und ein anderer Motor mit Pin 11 und 14 des Motortreiber-IC verbunden ist.
Wie es funktioniert:
Die Arbeit mit diesem autonomen Roboter ist sehr einfach. Wenn der Roboter eingeschaltet ist und zu laufen beginnt, misst Raspberry Pi die Entfernung der Objekte vor ihm mithilfe des Ultraschallsensormoduls und speichert es in einer Variablen. Dann vergleicht RPi diesen Wert mit vordefinierten Werten und trifft entsprechende Entscheidungen, um den Roboter nach links, rechts, vorwärts oder rückwärts zu bewegen.
Hier in diesem Projekt haben wir einen Abstand von 15 cm ausgewählt, um eine Entscheidung von Raspberry Pi zu treffen. Immer wenn Raspberry Pi weniger als 15 cm von einem Objekt entfernt ist, stoppt Raspberry Pi den Roboter und bewegt ihn zurück und dreht ihn dann nach links oder rechts. Bevor Raspberry Pi es wieder vorwärts bewegt, prüft es erneut, ob ein Hindernis im Bereich von 15 cm vorhanden ist. Wenn ja, wird der vorherige Vorgang erneut wiederholt. Andernfalls bewegen Sie den Roboter vorwärts, bis er wieder ein Hindernis oder einen Gegenstand erkennt.
Programmiererklärung:
Wir verwenden hier die Python-Sprache für das Programm. Vor dem Codieren muss der Benutzer Raspberry Pi konfigurieren. In unseren vorherigen Tutorials finden Sie Informationen zu den ersten Schritten mit Raspberry Pi und zum Installieren und Konfigurieren von Raspbian Jessie OS in Pi.
Der Programmierteil dieses Projekts spielt eine sehr wichtige Rolle für die Ausführung aller Operationen. Zunächst schließen wir die erforderlichen Bibliotheken ein, initialisieren Variablen und definieren Pins für Ultraschallsensor, Motor und Komponenten.
RPi.GPIO als GPIO-Importzeit importieren # Zeitbibliothek importieren GPIO.setwarnings (False) GPIO.setmode (GPIO.BCM) TRIG = 17 ECHO = 27……………..
Danach haben wir einige Funktionen erstellt: def forward (), def back (), def left (), def right () , um den Roboter vorwärts, rückwärts, links oder rechts zu bewegen, und def stop () , um den Roboter anzuhalten. Überprüfen Sie die Funktionen im unten angegebenen Code.
Dann haben wir im Hauptprogramm den Ultraschallsensor gestartet und die Zeit zwischen Senden und Empfangen des Signals abgelesen und die Entfernung berechnet. Hier haben wir diesen Vorgang zur besseren Genauigkeit fünfmal wiederholt. Wir haben bereits den Prozess der Entfernungsberechnung mit dem Ultraschallsensor erklärt.
i = 0 avgDistance = 0 für i im Bereich (5): GPIO.output (TRIG, False) time.sleep (0.1) GPIO.output (TRIG, True) time.sleep (0.00001) GPIO.output (TRIG, False) während GPIO.input (ECHO) == 0: GPIO.output (led, False) puls_start = time.time () während GPIO.input (ECHO) == 1: #Überprüfen Sie, ob das ECHO HIGH GPIO.output (led, False) Puls_Ende = Zeit.Zeit () Puls_Dauer = Puls_Ende - Puls_Startdistanz = Puls_Dauer * 17150 Distanz = Rund (Distanz, 2) AvgDistance = AvgDistance + Distanz
Wenn der Roboter ein Hindernis vor sich findet, haben wir den Roboter so programmiert, dass er einen anderen Weg einschlägt, nachdem er sich vom Hindernis entfernt hat.
if avgDistance <15: count = count + 1 stop () time.sleep (1) back () time.sleep (1.5) if (count% 3 == 1) & (flag == 0): right () flag = 1 else: left () flag = 0 time.sleep (1.5) stop () time.sleep (1) else: forward () flag = 0
Der vollständige Code für diesen Raspberry Pi Hindernisvermeidungsroboter ist unten mit einem Demonstrationsvideo angegeben.