- Komponent krävs:
- Montering av golvrengöringsrobot:
- Ledningar och anslutningar:
- Programmeringsförklaring:
Automatiska golvrengörare är inget nytt, men de har alla ett gemensamt problem. De är alla för dyra för vad de gör. Idag kommer vi att göra en automatisk hushållsrobot som bara kostar en liten bråkdel av de som finns på marknaden. Denna robot kan upptäcka hinder och föremål framför den och kan fortsätta att röra sig, undvika hinder tills hela rummet är rengjort. Den har en liten borste fäst för att rengöra golvet.
Kolla också vår smarta dammsugningsrobot med Arduino
Komponent krävs:
- Arduino UNO R3.
- Ultraljudssensor.
- Arduino Motor Driver sköld.
- Hjuldrivande robotchassi.
- Dator för att programmera Arduino.
- Batteri för motorerna.
- En kraftbank för att driva Arduino
- En skoborste.
- En Scotch Brite Scrub Pad.
Obs: Istället för att använda batterier kan du också använda en lång 4-trådig tråd som vi gjorde. Även om detta inte är en mycket elegant eller praktisk lösning, men du kan göra om du inte planerar att använda den i den verkliga världen varje dag. Se till att kabelns längder är tillräckliga.
Innan vi går i detalj kan vi diskutera om Ultraljud först.
HC-SR04 ultraljudssensor:
Ultraljudsensorn används för att mäta avståndet med hög noggrannhet och stabila avläsningar. Den kan mäta avstånd från 2 cm till 400 cm eller från 1 tum till 13 fot. Det avger en ultraljudsvåg med frekvensen 40KHz i luften och om objektet kommer i vägen kommer det att studsa tillbaka till sensorn. Genom att använda den tid det tar att slå objektet och kommer tillbaka kan du beräkna avståndet.
Ultraljudsgivaren använder en teknik som kallas "ECHO". "ECHO" är helt enkelt en reflekterad ljudvåg. Du kommer att få en ECHO när ljudet reflekteras tillbaka när du når en återvändsgränd.
HCSR04-modulen genererar en ljudvibration i ultraljudsområdet när vi gör 'Trigger' -stiften hög i ungefär 10us vilket kommer att skicka en 8-cyklisk ljudutbrott vid ljudets hastighet och efter att ha slagit på objektet kommer den att tas emot av Echo-stiftet. Beroende på hur lång tid vibrationerna tar för att komma tillbaka, ger det lämplig pulsutgång. Om objektet är långt borta tar det mer tid för ECHO att höras och utgångspulsbredden blir stor. Och om hindret är nära kommer ECHO att höras snabbare och utsignalens pulsbredd blir mindre.
Vi kan beräkna objektets avstånd baserat på den tid som ultraljudsvåg tar för att återvända till sensorn. Eftersom ljudets tid och hastighet är känd kan vi beräkna avståndet med följande formler.
Avstånd = (Tid x Ljudets hastighet i luft (343 m / s)) / 2.
Värdet divideras med två eftersom vågen går framåt och bakåt och täcker samma avstånd. Således är tiden för att nå hinder bara hälften av den totala tiden det tar
Så Avstånd i centimeter = 17150 * T.
Vi har tidigare gjort många användbara projekt med denna ultraljudssensor och Arduino, kolla in dem nedan:
- Arduino-baserad avståndsmätning med ultraljudssensor
- Dörrlarm med Arduino och ultraljudssensor
- IOT-baserad Dumpster-övervakning med Arduino
Montering av golvrengöringsrobot:
Montera Arduino på chassit. Se till att du inte kortsluter någonting om ditt chassi är av metall. Det är en bra idé att skaffa en låda till Arduino och motorstyrningsskölden. Säkra motorerna med hjulen och chassit med skruvar. Ditt chassi bör ha alternativ för att göra detta från fabriken, men om det inte gör det kan du improvisera en annan lösning. Epoxi är inte en dålig idé. Montera skoborsten på framsidan av chassit. Vi använde en kombination av M-Seal epoxi och borrade skruvar för detta, men du kan använda vilken annan lösning som helst som kan vara enklare för dig. Montera Scotch Brite skrubbplatta bakom borsten. Vi använde en axel som gick över chassit som håller det i spel, även om det också är improviserat. En fjäderbelastad axel kan användas för att följa med den. Montera batterierna (eller kablarna på baksidan av chassit).Epoxi eller en batterihållare är bra sätt att göra detta. Hett lim är inte heller dåligt.
Ledningar och anslutningar:
Kretsen för den här automatiska hushållsroboten är väldigt enkel. Anslut ultraljudssensorn till Arduino som nämns nedan och placera motordrivrutinsskärmen på Arduino som alla andra skärmar.
Trig pin of Ultrasonic är ansluten till den 12: e stiften på Arduino, Echo-stiften är ansluten till den 13: e stiften, spänningsstiftet till 5V-stiftet och jordstiftet till jordstiftet. Echo-stiftet och Trig-stiftet gör att Arduino kan kommunicera med sensorn. Ström levereras till sensorn via spännings- och jordstiften, och Trig- och Echo-stiften gör det möjligt att skicka och ta emot data med Arduino. Läs mer om gränssnitt ultraljudssensor med Arduino här.
Motorskyddet ska ha minst två utgångar och de ska anslutas till dina två motorer. Normalt är dessa utgångar märkta "M1" och "M2" eller "Motor 1" och "Motor 2". Anslut batterierna och kraftbanken till motorskärmen respektive Arduino. Korsanslut dem inte. Din motorskydd ska ha en ingångskanal. Om du använder ledningar, anslut dem till nätadaptrar.
Programmeringsförklaring:
Öppna Arduino IDE. Klistra in hela Arduino-koden, som ges i slutet av denna handledning, i IDE. Anslut din Arduino till datorn. Välj porten i Verktyg / Port. Klicka på uppladdningsknappen.
Testa roboten. Om det blir för lite eller för mycket, experimentera med förseningarna tills det är perfekt.
Innan vi går in i koden måste vi installera Adafruit Motor Shield Library för att driva DC-motorerna. Eftersom vi använder motorskyddet L293D måste vi ladda ner AFmotor Library härifrån. Lägg sedan till den i din Arduino IDE-biblioteksmapp. Se till att du byter namn till AFMotor . Läs mer om installation av detta bibliotek.
Koden är lätt och kan lätt förstås, men här har vi förklarat några delar av den:
Nedanstående kod ställer in roboten. Först har vi inkluderat Adafruit-biblioteket för att driva motorerna med motorskydd. Efter det definierade vi Trig pin och Echo pin. Det sätter också upp motorerna. Det ställer in Trig pin till output och Echo pin till input.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); ogiltig installation () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Nedanstående kod ber Arduino att slinga följande kommandon. Därefter använder den sensorn för att sända och ta emot ultraljud. Den beräknar avståndet det är från objektet när ultraljudsvågor studsar tillbaka, efter att ha noterat att objektet ligger inom det inställda avståndet, berättar det för Arduino att rotera motorerna därefter.
void loop () {long duration, distance; digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); varaktighet = pulseIn (echoPin, HIGH); avstånd = (varaktighet / 2) / 29,1; if (avstånd <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (BACKWARD); motor2.run (BACKWARD); fördröjning (2000); // ÄNDRA DETTA ENLIGT HUR ROBOTEN TURNAR.
Detta får roboten att rotera genom att rotera en motor och hålla den andra stillastående.
Nedanstående kod gör att roboten vrider båda motorerna i samma riktning för att få den att röra sig framåt tills den upptäcker ett föremål i ovannämnda gräns.
annat {motor1.setSpeed (160); // ÄNDRA DETTA ENLIGT HUR SNABB DIN ROBOT SKA GÅ. motor2.setSpeed (160); // FÖRÄNDRA DETTA TILL SAMMA VÄRDE NÄR DU SÄTTAR OVAN. motor1.run (FORWARD); motor2.run (FORWARD); }