- Erforderliche Komponente:
- Montage des Bodenreinigungsroboters:
- Verkabelung und Anschlüsse:
- Programmiererklärung:
Automatische Bodenreiniger sind nichts Neues, haben aber alle ein gemeinsames Problem. Sie sind alle zu teuer für das, was sie tun. Heute werden wir einen automatischen Reinigungsroboter für zu Hause herstellen, der nur einen kleinen Bruchteil der auf dem Markt erhältlichen Roboter kostet. Dieser Roboter kann die Hindernisse und Objekte vor sich erkennen und sich unter Vermeidung der Hindernisse weiter bewegen, bis der gesamte Raum gereinigt ist. Daran ist eine kleine Bürste angebracht, um den Boden zu reinigen.
Überprüfen Sie auch unseren intelligenten Staubsaugerroboter mit Arduino
Erforderliche Komponente:
- Arduino UNO R3.
- Ultraschallsensor.
- Arduino Motor Treiberschild.
- Radantriebsroboter-Chassis.
- Computer zum Programmieren des Arduino.
- Batterie für die Motoren.
- Eine Power Bank zur Stromversorgung des Arduino
- Eine Schuhbürste.
- Ein Scotch Brite Scrub Pad.
Hinweis: Anstelle von Batterien können Sie auch einen langen 4-adrigen Draht verwenden, wie wir es getan haben. Dies ist zwar keine sehr elegante oder praktische Lösung, aber Sie können dies tun, wenn Sie nicht vorhaben, sie jeden Tag in der realen Welt einzusetzen. Stellen Sie sicher, dass die Kabellängen ausreichend sind.
Bevor wir ins Detail gehen, wollen wir zunächst auf Ultraschall eingehen.
Ultraschallsensor HC-SR04:
Mit dem Ultraschallsensor wird der Abstand mit hoher Genauigkeit und stabilen Messwerten gemessen. Es kann Entfernungen von 2 cm bis 400 cm oder von 1 Zoll bis 13 Fuß messen. Es sendet eine Ultraschallwelle mit einer Frequenz von 40 kHz in der Luft aus. Wenn das Objekt in die Quere kommt, springt es zurück zum Sensor. Indem Sie die Zeit verwenden, die benötigt wird, um das Objekt zu treffen und zurück zu kommen, können Sie die Entfernung berechnen.
Der Ultraschallsensor verwendet eine Technik namens "ECHO". "ECHO" ist einfach eine reflektierte Schallwelle. Sie haben ein ECHO, wenn der Ton nach Erreichen einer Sackgasse wieder reflektiert wird.
Das HCSR04-Modul erzeugt eine Schallschwingung im Ultraschallbereich, wenn wir den 'Trigger'-Pin für etwa 10 us hoch stellen, wodurch ein Schallstoß von 8 Zyklen mit Schallgeschwindigkeit gesendet wird und nach dem Auftreffen auf das Objekt vom Echo-Pin empfangen wird. Abhängig von der Zeit, die die Schallvibration benötigt, um zurück zu kommen, liefert sie eine geeignete Impulsausgabe. Wenn das Objekt weit entfernt ist, dauert es länger, bis ECHO gehört wird, und die Ausgangsimpulsbreite ist groß. Und wenn sich das Hindernis in der Nähe befindet, ist der ECHO schneller zu hören und die Ausgangsimpulsbreite ist kleiner.
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. Somit beträgt die Zeit zum Erreichen des Hindernisses nur die Hälfte der Gesamtzeit
Abstand in Zentimeter = 17150 * T.
Wir haben zuvor viele nützliche Projekte mit diesem Ultraschallsensor und Arduino durchgeführt. Überprüfen Sie diese unten:
- Arduino-basierte Entfernungsmessung mit Ultraschallsensor
- Türalarm mit Arduino und Ultraschallsensor
- IOT-basierte Müllcontainerüberwachung mit Arduino
Montage des Bodenreinigungsroboters:
Montieren Sie den Arduino am Chassis. Stellen Sie sicher, dass Sie nichts kurzschließen, falls Ihr Gehäuse aus Metall besteht. Es ist eine gute Idee, eine Box für den Arduino und die Motorsteuerung zu kaufen. Befestigen Sie die Motoren mit Schrauben an den Rädern und am Fahrgestell. Ihr Chassis sollte ab Werk über Optionen verfügen. Andernfalls können Sie eine andere Lösung improvisieren. Epoxid ist keine schlechte Idee. Montieren Sie die Schuhbürste an der Vorderseite des Gehäuses. Wir haben hierfür eine Kombination aus M-Seal-Epoxidharz und gebohrten Schrauben verwendet. Sie können jedoch auch jede andere Lösung verwenden, die für Sie möglicherweise einfacher ist. Montieren Sie das Scotch Brite-Peeling-Pad hinter der Bürste. Wir haben eine Welle verwendet, die über das Chassis läuft und es im Spiel hält, obwohl dies auch nicht improvisierbar ist. Eine federbelastete Welle kann dazu verwendet werden. Montieren Sie die Batterien (oder Kabel auf der Rückseite des Gehäuses).Epoxidharz oder ein Batteriehalter sind gute Möglichkeiten, dies zu tun. Heißkleber ist auch nicht schlecht.
Verkabelung und Anschlüsse:
Die Schaltung für diesen automatischen Hausreinigungsroboter ist sehr einfach. Schließen Sie den Ultraschallsensor an der Arduino wie unten erwähnt und legen den Motortreiber Abschirmung auf das Arduino wie jede andere Schild.
Der Trigger-Pin von Ultrasonic ist mit dem 12. Pin des Arduino verbunden, der Echo-Pin mit dem 13. Pin, der Spannungsstift mit dem 5-V-Pin und der Erdungsstift mit dem Erdungsstift. Der Echo-Pin und der Trig-Pin ermöglichen dem Arduino die Kommunikation mit dem Sensor. Der Sensor wird über die Spannungs- und Erdungsstifte mit Strom versorgt, und die Trigger- und Echo-Stifte ermöglichen das Senden und Empfangen von Daten mit dem Arduino. Erfahren Sie hier mehr über die Schnittstelle zwischen Ultraschallsensor und Arduino.
Die Motorabschirmung sollte mindestens 2 Ausgänge haben und an Ihre 2 Motoren angeschlossen sein. Normalerweise sind diese Ausgänge mit „M1“ und „M2“ oder „Motor 1“ und „Motor 2“ gekennzeichnet. Verdrahten Sie Ihre Batterien und die Power Bank mit dem Motorschild bzw. Arduino. Verbinden Sie sie nicht über Kreuz. Ihr Motorschild sollte einen Eingangskanal haben. Wenn Sie Kabel verwenden, schließen Sie diese an Netzteile an.
Programmiererklärung:
Öffnen Sie die Arduino IDE. Fügen Sie den vollständigen Arduino-Code, der am Ende dieses Tutorials angegeben ist, in die IDE ein. Verbinden Sie Ihr Arduino mit dem Computer. Wählen Sie den Port unter Extras / Port. Klicken Sie auf die Schaltfläche zum Hochladen.
Testen Sie den Roboter. Wenn es zu wenig oder zu viel wird, experimentieren Sie mit den Verzögerungen, bis sie perfekt sind.
Bevor wir in den Code gehen, müssen wir die Adafruit Motor Shield Library installieren, um die Gleichstrommotoren anzutreiben. Da wir das Motortreiberschild L293D verwenden, müssen wir die AFmotor Library von hier herunterladen. Fügen Sie es dann Ihrem Arduino IDE-Bibliotheksordner hinzu. Stellen Sie sicher, dass Sie es in AFMotor umbenennen. Weitere Informationen zum Installieren dieser Bibliothek.
Code ist einfach und leicht zu verstehen, aber hier haben wir einige Teile davon erklärt:
Der folgende Code richtet den Roboter ein. Zuerst haben wir die Adafruit-Bibliothek zum Antreiben der Motoren mit Motortreiberschild aufgenommen. Danach haben wir Trig Pin und Echo Pin definiert. Es werden auch die Motoren eingerichtet. Hiermit wird der Trigger-Pin ausgegeben und der Echo-Pin eingegeben.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); void setup () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }}
Der folgende Code weist das Arduino an, die folgenden Befehle zu wiederholen. Danach sendet und empfängt der Sensor Ultraschallgeräusche. Es berechnet die Entfernung zum Objekt, sobald die Ultraschallwellen zurückprallen. Nachdem festgestellt wurde, dass sich das Objekt innerhalb der festgelegten Entfernung befindet, weist es den Arduino an, die Motoren entsprechend zu drehen.
void loop () {lange Dauer, Entfernung; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); Dauer = PulsIn (echoPin, HIGH); Entfernung = (Dauer / 2) / 29,1; if (Abstand <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (BACKWARD); motor2.run (BACKWARD); Verzögerung (2000); // ÄNDERN SIE DIESES, WIE DER ROBOTER DREHT.
Dadurch dreht sich der Roboter, indem er einen Motor dreht und den anderen stagniert.
Mit dem folgenden Code dreht der Roboter beide Motoren in die gleiche Richtung, um sich vorwärts zu bewegen, bis er ein Objekt an der oben genannten Grenze erkennt.
sonst {motor1.setSpeed (160); // ÄNDERN SIE DIESES NACH WIE SCHNELL IHR ROBOTER GEHEN SOLLTE. motor2.setSpeed (160); // ÄNDERN SIE DIESES AUF DEN GLEICHEN WERT, WIE SIE OBEN EINFÜGEN. motor1.run (FORWARD); motor2.run (FORWARD); }}