Wie kann man mit Arduino einen Roboter zur Hindernisvermeidung machen?

Die Welt bewegt sich schnell, und auch im Bereich der Robotik bewegt sich die Technik mit. Die Anwendungen der Robotik sind überall auf der Welt zu sehen. Das Konzept der mobilen oder autonomen Roboter, die sich ohne externe Hilfe bewegen, ist das eindringlichste Forschungsgebiet. Es gibt so viele Arten von mobilen Robotern, z. B. SLAM-Interpreter (Self Localization and Mapping), Linienverfolgung, Sumo-Bots usw. Ein Hindernis, das Robotern aus dem Weg geht, ist einer davon. Es verwendet eine Technik, um den Weg zu ändern, wenn es ein Hindernis im Weg erkennt.

In diesem Projekt wird ein Arduino-basierter Hindernisvermeidungsroboter entwickelt, der einen Ultraschallsensor verwendet, um alle Hindernisse auf seinem Weg zu erkennen.

Wie vermeide ich Hindernisse mit dem Ultraschallsensor?

Da wir die Zusammenfassung unseres Projekts kennen, lassen Sie uns einen Schritt weitergehen und einige Informationen sammeln, um das Projekt zu starten.

Schritt 1: Sammeln der Komponenten

Der beste Ansatz, um ein Projekt zu starten, besteht darin, zu Beginn eine Liste der vollständigen Komponenten zu erstellen und jede Komponente kurz zu studieren. Dies hilft uns, Unannehmlichkeiten mitten im Projekt zu vermeiden. Eine vollständige Liste aller in diesem Projekt verwendeten Komponenten finden Sie unten.

Schritt 2: Studieren der Komponenten

Da wir nun eine vollständige Liste aller Komponenten haben, gehen wir einen Schritt weiter und gehen eine kurze Untersuchung der Funktionsweise jeder Komponente durch.

Arduino nano ist ein Steckbrett-freundliches Mikrocontroller-Board, das verwendet wird, um verschiedene Aufgaben in einer Schaltung zu steuern oder auszuführen. Wir brennen ein C-Code auf Arduino Nano, um der Mikrocontrollerplatine mitzuteilen, wie und welche Operationen ausgeführt werden sollen. Arduino Nano hat genau die gleiche Funktionalität wie Arduino Uno, aber in einer recht kleinen Größe. Der Mikrocontroller auf dem Arduino Nano Board ist ATmega328p.

Der L298N ist ein integrierter Hochstrom- und Hochspannungsschaltkreis. Es handelt sich um eine Dual-Vollbrücke, die für die Standard-TTL-Logik ausgelegt ist. Es verfügt über zwei Freigabeeingänge, die es dem Gerät ermöglichen, unabhängig zu arbeiten. Es können zwei Motoren gleichzeitig angeschlossen und betrieben werden. Die Drehzahl der Motoren wird über die PWM-Pins variiert. Pulsweitenmodulation (PWM) ist eine Technik, bei der der Spannungsfluss in jedem elektronischen Bauteil gesteuert werden kann. Dieses Modul verfügt über eine H-Brücke, die für die Drehrichtungssteuerung in den Motoren durch Umkehrung der Stromrichtung verantwortlich ist. Der Enable-Pin A und Enable-Pin B werden verwendet, um die Geschwindigkeit beider Motoren zu ändern. Dieses Modul kann zwischen 5 und 35 V und einem Spitzenstrom von bis zu 2 A betrieben werden. Der Input Pin1 und Input Pin2 und für den ersten Motor und der Input Pin3 und Input Pin4 sind für den zweiten Motor.

Das Board HC-SR04 ist ein Ultraschallsensor, der verwendet wird, um den Abstand zwischen zwei Objekten zu bestimmen. Es besteht aus einem Sender und einem Empfänger. Der Sender wandelt das elektrische Signal in ein Ultraschallsignal um und der Empfänger wandelt das Ultraschallsignal zurück in das elektrische Signal. Wenn der Sender eine Ultraschallwelle sendet, wird diese nach einer Kollision mit einem bestimmten Objekt reflektiert. Die Entfernung wird aus der Zeit berechnet, die das Ultraschallsignal vom Sender bis zum Empfänger benötigt.

Schritt 3: Zusammenbau der Komponenten

Nachdem wir nun wissen, wie die meisten verwendeten Komponenten funktionieren, beginnen wir mit der Montage aller Komponenten und produzieren einen Roboter zur Vermeidung von Hindernissen.

  1. Nehmen Sie ein Autofahrwerk und kleben Sie ein Steckbrett darauf. Montieren Sie den Ultraschallsensor an der Vorderseite der Chassis und eine Batteriekappe hinter den Chassis.
  2. Befestigen Sie das Arduino Nano Board auf dem Steckbrett und befestigen Sie den Motortreiber direkt hinter dem Steckbrett auf den Chassis. Verbinden Sie die Enable-Pins beider Motoren mit den Pin6 und Pin9 von Arduino nano. Die Pins In1, In2, In3 und In4 des Motortreibermoduls sind jeweils mit Pin2, Pin3, Pin4 und Pin5 des Arduino nano verbunden.
  3. Der Trig- und Echo-Pin des Ultraschallsensors ist mit dem Pin11 bzw. in10 des Arduino nano verbunden. Der Vcc- und Massepin des Ultraschallsensors sind mit den 5V und Masse des Arduino Nano verbunden.
  4. Das Motorcontrollermodul wird von der Batterie gespeist. Die Arduino Nano-Platine wird vom 5V-Anschluss des Motortreibermoduls mit Strom versorgt und der Ultraschallsensor wird von der Arduino-Nanoplatine mit Strom versorgt. Gewicht und Energie der Batterien können der bestimmende Faktor für ihre Leistung sein.
  5. Stellen Sie sicher, dass Ihre Verbindungen mit den unten im Schaltplan gezeigten übereinstimmen.

Schritt 4: Erste Schritte mit Arduino

Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, denn im Folgenden wird eine Schritt-für-Schritt-Anleitung zum Einrichten und Verwenden der Arduino IDE mit einem Mikrocontroller-Board erklärt.

  1. Laden Sie die neueste Version der Arduino IDE von Arduino herunter.
  2. Schließen Sie Ihr Arduino Nano-Board an Ihren Laptop an und öffnen Sie das Bedienfeld. Klicken Sie in der Systemsteuerung aufHardware und Sound. Klicken Sie nun aufGeräte und Drucker.Suchen Sie hier den Port, an dem Ihr Mikrocontroller-Board angeschlossen ist. In meinem Fall ist es COM14aber es ist auf verschiedenen Computern unterschiedlich.
  3. Klicken Sie auf das Werkzeugmenü. und setze das Board auf Arduino Nano aus dem Dropdown-Menü.
  4. Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor im . beobachtet haben Geräte und Drucker.
  5. Stellen Sie im selben Werkzeugmenü den Prozessor auf ATmega328P (alter Bootloader).
  6. Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino-IDE ein. Klick auf das hochladen Taste, um den Code auf Ihrer Mikrocontroller-Platine zu brennen.

Um den Code herunterzuladen, klicken Sie hier.

Schritt 5: Den Code verstehen

Der Code ist gut kommentiert und selbsterklärend. Trotzdem wird es unten erklärt

1. Zu Beginn des Codes werden alle Pins der Arduino Nano-Platine, die mit dem Ultraschallsensor und dem Motortreibermodul verbunden sind, initialisiert. Pin6 und Pin9 sind PWM-Pins, die den Spannungsfluss variieren können, um die Geschwindigkeit des Roboters zu variieren. Zwei Variablen, Dauer, und Entfernungwerden initialisiert, um Daten zu speichern, die später verwendet werden, um den Abstand des Ultraschallsensors und des Hindernisses zu berechnen.

int enable1pin=6; // Pins für den ersten Motor int motor1pin1 = 2; int motor1pin2=3; int enable2pin=9; // Pins für den zweiten Motor int motor2pin1 = 4; int motor2pin2=5; const int trigPin = 11; // Trigger-Pin des Ultraschallsensors const int echoPin = 10; // Echo Pin des Ultraschallsensors lange Dauer; // Variablen zum Berechnen der Distanz float distance; 

2. void setup ()ist eine Funktion, mit der alle verwendeten Pins gesetzt werden, z EINGANG und AUSGABE.In dieser Funktion wird die Baudrate definiert. Die Baudrate ist die Kommunikationsgeschwindigkeit, mit der die Mikrocontrollerplatine mit den darin integrierten Sensoren kommuniziert.

Void setup () { Serial.begin (9600); pinMode (trigPin, AUSGANG); pinMode (echoPin, INPUT); pinMode (enable1pin, AUSGANG); pinMode (enable2pin, AUSGANG); PinMode (Motor1Pin1, AUSGANG); PinMode (Motor1Pin2, AUSGANG); PinMode (Motor2Pin1, AUSGANG); PinMode (Motor2Pin2, AUSGANG); }

3. Leere Schleife ()ist eine Funktion, die in einem Zyklus wiederholt ausgeführt wird. In dieser Funktion teilen wir der Mikrocontroller-Platine mit, wie und welche Operationen ausgeführt werden sollen. Hier wird zuerst der Trigger-Pin so eingestellt, dass er ein Signal sendet, das vom Echo-Pin erkannt wird. Anschließend wird die Zeit, die das Ultraschallsignal für den Weg vom und zurück zum Sensor benötigt, berechnet und in der Variablen gespeichert Dauer. Diese Zeit wird dann in einer Formel verwendet, um den Abstand des Hindernisses und des Ultraschallsensors zu berechnen. Dann wird die Bedingung angewendet, dass sich der Roboter bei einer Entfernung von mehr als 5 cm in einer geraden Linie vorwärts bewegt und bei einer Entfernung von weniger als 50 cm eine scharfe Rechtskurve macht.

Void Schleife () { DigitalWrite (trigPin, LOW); // Senden und Erkennen des Ultraschallsignals delayMicroseconds(2); digitalWrite (trigPin, HOCH); VerzögerungMikrosekunden(10); digitalWrite (trigPin, LOW); Dauer = pulseIn(echoPin, HIGH); // Berechnen der Zeit, die die Ultraschallwelle benötigt, um den Abstand zurückzureflektieren = 0,034 * (Dauer/2); // Berechnung der Distanz zwischen dem Roboter und dem Hindernis. If (Abstand> 50) // Vorwärts bewegen, wenn der Abstand größer als 50 cm ist { DigitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); aufrechtzuerhalten. Sonst if (Abstand <50) // Scharfe Rechtskurve, wenn der Abstand weniger als 50 cm beträgt { DigitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, LOW); digitalWrite (motor2pin2, LOW); } Verzögerung (300); }

Anwendungen

Hier also das Verfahren, um einen Hindernisvermeidungsroboter zu erstellen. Diese Hindernisvermeidungstechnologie kann auch in anderen Anwendungen verwendet werden. Einige dieser Anwendungen sind wie folgt.

  1. Verfolgungssystem.
  2. Zwecke der Entfernungsmessung.
  3. Dies kann in automatischen Staubsaugerrobotern verwendet werden.
  4. Dies kann in Sticks für Blinde verwendet werden.
Facebook Twitter Google Plus Pinterest