- Hvordan man bygger forhindring, der undgår robot ved hjælp af ultralydssensor
- Komponenter, der kræves
- Kredsløbsdiagram
- Hindring, der undgår robot ved hjælp af Arduino - kode
Hindring, der undgår robot, er en intelligent enhed, der automatisk kan mærke forhindringen foran den og undgå dem ved at dreje sig selv i en anden retning. Dette design giver robotten mulighed for at navigere i et ukendt miljø ved at undgå kollisioner, hvilket er et primært krav for enhver autonom mobil robot. Anvendelsen af Obstacle Avoiding-robotten er ikke begrænset, og den bruges i de fleste af de militære organisationer nu, som hjælper med at udføre mange risikable job, der ikke kan udføres af nogen soldater.
Vi har tidligere bygget Hindring, der undgår robot ved hjælp af Raspberry Pi og ved hjælp af PIC Microcontroller. Denne gang vil vi bygge en hindring, der undgår robot ved hjælp af en ultralydssensor og Arduino. Her bruges en ultralydssensor til at registrere forhindringerne i stien ved at beregne afstanden mellem robotten og forhindringen. Hvis roboten finder nogen forhindringer, ændrer den retning og fortsætter med at bevæge sig.
Hvordan man bygger forhindring, der undgår robot ved hjælp af ultralydssensor
Før du bygger robotten, er det vigtigt at forstå, hvordan ultralydssensoren fungerer, fordi denne sensor vil have en vigtig rolle i detekteringen af forhindringer. Det grundlæggende princip bag arbejdet med ultralydssensor er at notere den tid, det tager for sensoren at transmittere ultralydsstråler og modtage ultralydsstrålene efter at have ramt overfladen. Derefter beregnes afstanden ved hjælp af formlen. I dette projekt anvendes den bredt tilgængelige HC-SR04 ultralydssensor. For at bruge denne sensor vil lignende fremgangsmåde følges forklaret ovenfor.
Så Trig pin af HC-SR04 er lavet højt for mindst 10 os. En lydstråle transmitteres med 8 impulser på hver 40 KHz.
Signalet rammer derefter overfladen og vender tilbage og fanges af modtagerens Echo-pin fra HC-SR04. Echo-stiften var allerede blevet høj på det tidspunkt, hvor den sendte høj.
Den tid, det tager af stråle at vende tilbage, gemmes i variabel og konverteres til afstand ved hjælp af passende beregninger som nedenfor
Afstand = (Tid x Lydhastighed i luft (343 m / s)) / 2
Vi brugte ultralydssensor i mange projekter for at lære mere om ultralydssensor, kontrollere andre projekter relateret til ultralydssensor.
Komponenterne til denne hindring, der undgår robot, kan let findes. For at fremstille chassis kan ethvert legetøjsstel bruges eller skræddersyes.
Komponenter, der kræves
- Arduino NANO eller Uno (enhver version)
- HC-SR04 Ultralydssensor
- LM298N Motordrivermodul
- 5V jævnstrømsmotorer
- Batteri
- Hjul
- Chassis
- Jumper Wires
Kredsløbsdiagram
Det komplette kredsløbsdiagram for dette projekt er angivet nedenfor, som du kan se det bruger en Arduino nano. Men vi kan også opbygge en forhindring for at undgå robot ved hjælp af Arduino UNO med samme kredsløb (følg den samme pinout) og kode.
Når kredsløbet er klart, skal vi bygge vores forhindring for at undgå bil ved at samle kredsløbet oven på et robotchassis som vist nedenfor.
Hindring, der undgår robot ved hjælp af Arduino - kode
Det komplette program med en demonstrationsvideo gives i slutningen af dette projekt. Programmet inkluderer opsætning af HC-SR04-modul og udsendelse af signaler til motorstifter for at flytte motorretningen i overensstemmelse hermed. Ingen biblioteker vil blive brugt i dette projekt.
Først definerer trig og ekko pin af HC-SR04 i programmet. I dette projekt er trig pin tilsluttet GPIO9 og echo pin er forbundet til GPIO10 fra Arduino NANO.
int trigPin = 9; // trig-pin af HC-SR04 int echoPin = 10; // Ekko stift af HC-SR04
Definer stifter til input af LM298N Motor Driver Module. LM298N har 4 dataindgangsstifter, der bruges til at styre retningen på motoren, der er tilsluttet den.
int revleft4 = 4; // Vend bevægelse af venstre motor int fwdleft5 = 5; // ForWarD-bevægelse af venstre motor int revright6 = 6; // Vend bevægelse af højre motor int fwdright7 = 7; // ForWarD-bevægelse af højre motor
I opsætningsfunktionen () skal du definere dataretningen for de anvendte GPIO-ben. De fire motorstifter og udløserstift er indstillet som OUTPUT, og Echo Pin er indstillet som input.
pinMode (revleft4, OUTPUT); // indstil motorstifter som output pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // indstil trig pin som output pinMode (echoPin, INPUT); // indstil ekko-pin som input for at fange reflekterede bølger
I funktionen loop () skal du få afstanden fra HC-SR04 og flytte motorretningen ud fra afstanden. Afstanden viser objektafstanden, der kommer foran robotten. Afstanden tages ved at sprænge en stråle af ultralyd op til 10 os og modtage den efter 10us. For at lære mere om måling af afstand ved hjælp af ultralydssensor og Arduino, skal du følge linket.
digitalWrite (trigPin, LOW); forsinkelseMikrosekunder (2); digitalWrite (trigPin, HIGH); // send bølger i 10 us delayMicroseconds (10); varighed = pulseIn (echoPin, HIGH); // modtage reflekterede bølgeafstand = varighed / 58,2; // konvertere til afstandsforsinkelse (10);
Hvis afstanden er større end den definerede afstand, er der ingen hindring i vejen, og den bevæger sig fremad.
hvis (afstand> 19) { digitalWrite (fwdright7, HIGH); // gå videre digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Hvis afstanden er mindre end den definerede afstand for at undgå hindring, betyder der, at der er en hindring foran. Så i denne situation vil robotten stoppe et stykke tid og derefter bevæge sig bagud, derefter stoppe et stykke tid og derefter dreje til en anden retning.
hvis (afstand <18) { digitalWrite (fwdright7, LOW); // Stop digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); forsinkelse (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); forsinkelse (500); digitalWrite (fwdright7, LOW); // Stop digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); forsinkelse (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); forsinkelse (500); }
Så det er sådan, en robot kan undgå forhindringer i vejen uden at sidde fast noget sted. Find den komplette kode og video nedenfor.