- Komponent påkrævet:
- Montering af gulvrengøringsrobot:
- Ledningsføring og tilslutninger:
- Programmering Forklaring:
Automatiske gulvrensere er ikke noget nyt, men de har alle et fælles problem. De er alle for dyre for det, de gør. I dag laver vi en automatisk rengøringsrobot til hjemmet, der kun koster en lille del af dem på markedet. Denne robot kan opdage forhindringer og genstande foran den og kan fortsætte med at bevæge sig, undgå forhindringerne, indtil hele rummet er renset. Den har en lille børste fastgjort til at rengøre gulvet.
Tjek også vores Smart støvsugerrobot ved hjælp af Arduino
Komponent påkrævet:
- Arduino UNO R3.
- Ultralydssensor.
- Arduino Motor Driver-skjold.
- Hjuldrev robotchassis.
- Computer til at programmere Arduino.
- Batteri til motorerne.
- En powerbank til at drive Arduino
- En skobørste.
- En Scotch Brite Scrub Pad.
Bemærk: I stedet for at bruge batterier kan du også bruge en lang 4-strenget ledning som vi gjorde. Selvom dette ikke er en meget elegant eller praktisk løsning, men du kan gøre, hvis du ikke planlægger at bruge det i den virkelige verden hver dag. Sørg for, at kabellængderne er tilstrækkelige.
Før vi går i detaljer, kan vi først diskutere om ultralyd.
HC-SR04 Ultralydssensor:
Ultralydssensoren bruges til at måle afstanden med høj nøjagtighed og stabile aflæsninger. Det kan måle afstand fra 2 cm til 400 cm eller fra 1 tomme til 13 fod. Den udsender en ultralydsbølge med frekvensen 40KHz i luften, og hvis objektet kommer i vejen, vil den hoppe tilbage til sensoren. Ved at bruge den tid, det tager at ramme objektet og komme tilbage, kan du beregne afstanden.
Ultralydssensoren bruger en teknik kaldet “ECHO”. "ECHO" er simpelthen en reflekteret lydbølge. Du får en ECHO, når lyden reflekteres tilbage, når du har nået en blindgyde.
HCSR04-modulet genererer en lydvibration i ultralydsområdet, når vi gør 'Trigger'-stiften høj i ca. 10us, hvilket vil sende en 8-cyklisk sonisk burst ved lydens hastighed, og efter at have ramt objektet, modtages den af Echo-stiften. Afhængig af den tid det tager af lydvibrationer at komme tilbage, giver den passende pulsudgang. Hvis objektet er langt væk, tager det mere tid for ECHO at blive hørt, og outputpulsbredden vil være stor. Og hvis forhindringen er nær, høres ECHO hurtigere, og outputpulsbredden bliver mindre.
Vi kan beregne afstanden på objektet baseret på den tid, det tager af ultralydsbølgen at vende tilbage til sensoren. Da lydens tid og hastighed er kendt, kan vi beregne afstanden ved hjælp af følgende formler.
Afstand = (Tid x Lydhastighed i luft (343 m / s)) / 2.
Værdien divideres med to, da bølgen bevæger sig fremad og bagud og dækker samme afstand. Således er tiden til at nå forhindringer kun halvdelen af den samlede tid, det tager
Så afstand i centimeter = 17150 * T.
Vi har tidligere lavet mange nyttige projekter ved hjælp af denne ultralydssensor og Arduino, se dem nedenfor:
- Arduino-baseret afstandsmåling ved hjælp af ultralydssensor
- Døralarm ved hjælp af Arduino og ultralydssensor
- IOT-baseret dumpingovervågning ved hjælp af Arduino
Montering af gulvrengøringsrobot:
Monter Arduino på kabinettet. Sørg for, at du ikke kortslutter noget, hvis dit chassis er lavet af metal. Det er en god ide at få en kasse til Arduino og motorstyringsskjoldet. Fastgør motorerne med hjulene og chassiset ved hjælp af skruer. Dit chassis skal have muligheder for at gøre dette fra fabrikken, men hvis det ikke gør det, kan du improvisere en anden løsning. Epoxy er ikke en dårlig idé. Monter skobørsten på forsiden af kabinettet. Vi brugte en kombination af M-Seal epoxy og borede skruer til dette, selvom du kan bruge enhver anden løsning, der kan være lettere for dig. Monter Scotch Brite skrubbepude bag børsten. Vi brugte en aksel, der gik hen over kabinettet, der holder den i spil, selvom dette også er improviseret. En fjederbelastet aksel kan bruges til at ledsage den. Monter batterierne (eller kablerne på bagsiden af kabinettet).Epoxy eller en batteriholder er gode måder at gøre dette på. Varm lim er heller ikke dårlig.
Ledningsføring og tilslutninger:
Kredsløb til denne automatiske rengøringsrobot til hjemmet er meget enkel. Tilslut ultralydssensoren til Arduino som nævnt nedenfor, og placer motordriverens skærm på Arduino som ethvert andet skjold.
Trig pin af Ultrasonic er forbundet til den 12. pin på Arduino, Echo pin er forbundet til den 13. pin, spændings pin til 5V pin og jorden pin til jorden pin. Echo pin og Trig pin tillader Arduino at kommunikere med sensoren. Strøm leveres til sensoren gennem spændings- og jordstifterne, og Trig- og Echo-stifter gør det muligt at sende og modtage data med Arduino. Lær mere om interfacing ultralydssensor med Arduino her.
Motorafskærmningen skal have mindst 2 udgange, og de skal forbindes til dine 2 motorer. Normalt er disse udgange mærket “M1” og “M2” eller “Motor 1” og “Motor 2”. Træk dine batterier og strømbank op til henholdsvis motorskærmen og Arduino. Kryds forbind dem ikke. Dit motorskærm skal have en indgangskanal. Hvis du bruger ledninger, skal du slutte dem til vekselstrømsadaptere.
Programmering Forklaring:
Åbn Arduino IDE. Indsæt den komplette Arduino-kode, der er givet i slutningen af denne tutorial, i IDE. Slut din Arduino til computeren. Vælg porten i Værktøjer / Port. Klik på upload-knappen.
Test robotten. Hvis det bliver for lidt eller for meget, skal du eksperimentere med forsinkelserne, indtil de er perfekte.
Før vi går ind i koden, skal vi installere Adafruit Motor Shield Library for at drive jævnstrømsmotorer. Da vi bruger L293D-motordriverskjoldet, skal vi downloade AFmotor-biblioteket herfra. Tilføj det derefter i din Arduino IDE-biblioteksmappe. Sørg for at omdøbe det til AFMotor . Lær mere om installation af dette bibliotek.
Kode er let og kan let forstås, men her har vi forklaret nogle få dele af den:
Nedenstående kode konfigurerer robotten. Først har vi inkluderet Adafruit-biblioteket til at køre motorerne med motordriverskjold. Derefter definerede vi Trig pin og Echo pin. Det opsætter også motorerne. Det indstiller Trig pin til output og Echo pin til input.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); ugyldig opsætning () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Nedenstående kode fortæller Arduino at sløjfe følgende kommandoer. Derefter bruger den sensoren til at transmittere og modtage ultralydslyde. Den beregner afstanden fra objektet, når ultralydsbølger hopper tilbage, efter at have bemærket, at objektet er inden for den indstillede afstand, fortæller det Arduino at rotere motorerne i overensstemmelse hermed.
void loop () {lang varighed, afstand; digitalWrite (trigPin, LOW); forsinkelseMikrosekunder (2); digitalWrite (trigPin, HIGH); forsinkelseMikrosekunder (10); digitalWrite (trigPin, LOW); varighed = pulseIn (echoPin, HIGH); afstand = (varighed / 2) / 29,1; hvis (afstand <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (BACKWARD); motor2.run (BACKWARD); forsinkelse (2000); // ÆNDR DETTE I HENHOLD TIL HVORDAN ROBOTEN TURNER.
Dette får robotten til at dreje ved at dreje den ene motor og holde den anden stillestående.
Nedenstående kode får robotten til at dreje begge motorer i samme retning for at få den til at bevæge sig fremad, indtil den registrerer et objekt i den førnævnte grænse.
ellers {motor1.setSpeed (160); // ÆNDR DETTE I HENHOLD TIL HVORDAN HURTIG DIN ROBOT SKAL GÅ. motor2.setSpeed (160); // SKIFT DETTE TIL SAMME VÆRDI, SOM DU SÆTTER OVER. motor1.run (FORWARD); motor2.run (FORWARD); }