Wie kann man mit Arduino einen Roboter zur Vermeidung von Hindernissen bauen?

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

(Mit freundlicher Genehmigung von Circuit Digest)

In diesem Projekt wird ein auf Arduino basierender Hindernisvermeidungsroboter entwickelt, der mithilfe eines Ultraschallsensors alle Hindernisse auf seinem Weg erkennt.

Wie vermeide ich Hindernisse mit dem Ultraschallsensor?

Da wir die Zusammenfassung unseres Projekts kennen, gehen wir einen Schritt voraus und sammeln einige Informationen, 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 eine kurze Untersuchung jeder Komponente durchzuführen. Dies hilft uns, die Unannehmlichkeiten in der Mitte des Projekts zu vermeiden. Eine vollständige Liste aller in diesem Projekt verwendeten Komponenten finden Sie unten.

Schritt 2: Studieren der Komponenten

Nachdem wir nun eine vollständige Liste aller Komponenten haben, gehen wir einen Schritt vorwärts und gehen eine kurze Studie über die Funktionsweise jeder Komponente durch.

Arduino Nano ist eine Steckbrett-freundliche Mikrocontroller-Karte, mit der verschiedene Aufgaben in einer Schaltung gesteuert oder ausgeführt werden. Wir brennen einen C-Code auf Arduino Nano, um der Mikrocontroller-Karte mitzuteilen, wie und welche Operationen durchzuführen sind. Arduino Nano hat genau die gleiche Funktionalität wie Arduino Uno, ist jedoch recht klein. Der Mikrocontroller auf der Arduino Nano-Platine ist ATmega328p.

Arduino Nano

Der L298N ist eine integrierte Hochstrom- und Hochspannungsschaltung. Es handelt sich um eine doppelte Vollbrücke, die für die Aufnahme von Standard-TTL-Logik ausgelegt ist. Es verfügt über zwei Freigabeeingänge, über die das Gerät unabhängig arbeiten kann. Es können zwei Motoren gleichzeitig angeschlossen und betrieben werden. Die Drehzahl der Motoren wird über die PWM-Pins variiert. Die Pulsweitenmodulation (PWM) ist eine Technik, mit der der Spannungsfluss in jeder elektronischen Komponente gesteuert werden kann. Dieses Modul verfügt über eine H-Brücke, die für die Steuerung der Drehrichtung in den Motoren durch Invertieren der Stromrichtung verantwortlich ist. Mit dem Aktivierungsstift A und dem Aktivierungsstift B wird die Drehzahl beider Motoren geändert. Dieses Modul kann zwischen 5 und 35 V und einem Spitzenstrom von bis zu 2A betrieben werden. Der Eingangspin1 und der Eingangspin2 sowie für den ersten Motor und der Eingangspin3 und der Eingangspin4 sind für den zweiten Motor.

L298N Motortreiber

Die HC-SR04-Karte ist ein Ultraschallsensor, mit dem der Abstand zwischen zwei Objekten bestimmt wird. 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 wieder in das elektrische Signal um. Wenn der Sender eine Ultraschallwelle sendet, wird diese nach einer Kollision mit einem bestimmten Objekt reflektiert. Die Entfernung wird anhand der Zeit berechnet, die das Ultraschallsignal benötigt, um vom Sender zum Empfänger zurückzukehren.

Ultraschallsensor

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 Auto Rad Chasses und kleben Sie ein Steckbrett auf die Oberseite. Montieren Sie den Ultraschallsensor vorne an den Chasses und einen Batteriefachdeckel hinter den Chasses.
  2. Befestigen Sie das Arduino Nano-Board am Steckbrett und befestigen Sie den Motortreiber direkt hinter dem Steckbrett an den Chasses. Verbinden Sie die Enable-Pins der Motoren mit Pin6 und Pin9 von Arduino Nano. Die Pins In1, In2, In3 und In4 des Motortreibermoduls sind mit Pin2, Pin3, Pin4 und Pin5 des Arduino Nano verbunden.
  3. Der Trigger- und Echo-Pin des Ultraschallsensors ist mit dem Pin 11 bzw. In 10 des Arduino Nano verbunden. Der Vcc und der Erdungsstift des Ultraschallsensors sind mit 5 V und Masse des Arduino Nano verbunden.
  4. Das Motorsteuerungsmodul wird von der Batterie gespeist. Die Arduino Nano-Karte wird über den 5-V-Anschluss des Motortreibermoduls mit Strom versorgt, und der Ultraschallsensor wird über die Arduino Nano-Karte mit Strom versorgt. Das Gewicht und die Energie der Batterien können zum bestimmenden Faktor für ihre Leistung werden.
  5. Stellen Sie sicher, dass Ihre Verbindungen mit den unten im Schaltplan gezeigten übereinstimmen.Schaltplan

Schritt 4: Erste Schritte mit Arduino

Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, da im Folgenden eine schrittweise Anleitung zum Einrichten und Verwenden der Arduino IDE mit einer Mikrocontroller-Karte erläutert wird.

  1. Laden Sie die neueste Version von Arduino IDE von herunter Arduino.
  2. Schließen Sie Ihr Arduino Nano-Board an Ihren Laptop an und öffnen Sie das Bedienfeld. Klicken Sie in der Systemsteuerung auf Hardware und Sound. Klicken Sie nun auf Geräte und Drucker. Hier finden Sie den Anschluss, an den Ihre Mikrocontroller-Karte angeschlossen ist. In meinem Fall ist es COM14, aber es ist auf verschiedenen Computern unterschiedlich.Port finden
  3. Klicken Sie auf das Menü Tool. und stellen Sie das Board aus dem Dropdown-Menü auf Arduino Nano.Board einstellen
  4. Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor in den Geräten und Druckern beobachtet haben.Port einstellen
  5. Stellen Sie im selben Tool-Menü den Prozessor auf ATmega328P (Old Bootloader) ein.Prozessor
  6. Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino IDE ein. Klicken Sie auf die Schaltfläche zum Hochladen, um den Code auf Ihrer Mikrocontroller-Karte zu brennen.Hochladen

Um den Code herunterzuladen, Klicke 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-Karte, 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 Entfernung, werden initialisiert, um Daten zu speichern, die später zur Berechnung der Entfernung des Ultraschallsensors und des Hindernisses verwendet werden.

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

2. void setup () ist eine Funktion, mit der alle verwendeten Pins wie INPUT und OUTPUT gesetzt werden. In dieser Funktion wird die Baudrate definiert. Die Baudrate ist die Kommunikationsgeschwindigkeit, mit der die Mikrocontroller-Karte mit den darin integrierten Sensoren kommuniziert.

void setup () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, OUTPUT); pinMode (motor1pin2, OUTPUT); pinMode (motor2pin1, OUTPUT); pinMode (motor2pin2, OUTPUT); }}

3. void loop () ist eine Funktion, die in einem Zyklus wiederholt ausgeführt wird. In dieser Funktion teilen wir der Mikrocontroller-Karte mit, wie und welche Vorgänge ausgeführt werden sollen. Hier wird zuerst der Trigger-Pin so eingestellt, dass er ein Signal sendet, das vom Echo-Pin erkannt wird. Dann wird die Zeit, die das Ultraschallsignal benötigt, um vom und zurück zum Sensor zu gelangen, berechnet und in der variablen Dauer gespeichert. Diese Zeit wird dann in einer Formel verwendet, um die Entfernung 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 loop () {digitalWrite (trigPin, LOW); // Senden und Erkennen des Ultraschallsignals delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); Dauer = PulsIn (echoPin, HIGH); // Berechnung der von der Ultraschallwelle aufgenommenen Zeit, um die Rückentfernung zu reflektieren = 0,034 * (Dauer / 2); // Berechne die Entfernung zwischen dir, Robbot 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); } else if (Abstand <50) // Sharp Right Turn, 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); } delay (300); }}

Anwendungen

Hier war das Verfahren, um einen Roboter zur Vermeidung von Hindernissen herzustellen. Diese Technologie zur Vermeidung von Hindernissen kann auch in anderen Anwendungen eingesetzt werden. Einige dieser Anwendungen sind wie folgt.

  1. Verfolgungssystem.
  2. Entfernungsmesszwecke.
  3. Dies kann in automatischen Staubsaugerrobotern verwendet werden.
  4. Dies kann in Sticks für Blinde verwendet werden.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *