- Hur man bygger hinder för att undvika robot med ultraljudssensor
- Komponenter krävs
- Kretsschema
- Hinder undvika robot med Arduino - kod
Hindring undvika robot är en intelligent enhet som automatiskt kan känna av hindret framför den och undvika dem genom att vända sig åt en annan riktning. Denna design gör det möjligt för roboten att navigera i en okänd miljö genom att undvika kollisioner, vilket är ett primärt krav för alla autonoma mobilrobotar. Tillämpningen av roboten Hindring Undvikande är inte begränsad och den används i de flesta militära organisationer nu som hjälper till att utföra många riskabla jobb som inte kan utföras av några soldater.
Vi byggde tidigare Obstacle Avoiding Robot med Raspberry Pi och med PIC Microcontroller. Den här gången bygger vi en hinder som undviker en robot med en ultraljudssensor och Arduino. Här används en ultraljudssensor för att känna av hinder i vägen genom att beräkna avståndet mellan roboten och hindret. Om roboten hittar något hinder ändrar den riktningen och fortsätter att röra sig.
Hur man bygger hinder för att undvika robot med ultraljudssensor
Innan du börjar bygga roboten är det viktigt att förstå hur ultraljudssensorn fungerar eftersom den här sensorn kommer att ha en viktig roll för att upptäcka hinder. Den grundläggande principen bakom arbetet med ultraljudssensor är att notera den tid det tar för sensorn att överföra ultraljudstrålar och ta emot ultraljudstrålarna efter att ha träffat ytan. Därefter beräknas avståndet med formeln. I detta projekt används den allmänt tillgängliga HC-SR04 ultraljudssensorn. För att använda denna sensor kommer liknande tillvägagångssätt att följas förklaras ovan.
Så, Trig pin av HC-SR04 görs högt för minst 10 oss. En sonstråle sänds med åtta pulser på 40 KHz vardera.
Signalen träffar sedan ytan och återvänder tillbaka och fångas av mottagarens Echo-stift av HC-SR04. Echo-stiftet hade redan gjort högt vid tiden för att skicka högt.
Tiden som strålen tar för att återvända sparas i variabel och konverteras till avstånd med hjälp av lämpliga beräkningar som nedan
Avstånd = (Tid x Ljudets hastighet i luft (343 m / s)) / 2
Vi använde ultraljudssensor i många projekt, för att lära oss mer om ultraljudssensor, kontrollera andra projekt relaterade till ultraljudssensor.
Komponenterna för detta hinder som undviker robot kan hittas enkelt. För att göra chassi kan valfritt leksakschassi användas eller skräddarsys.
Komponenter krävs
- Arduino NANO eller Uno (vilken version som helst)
- HC-SR04 ultraljudssensor
- LM298N Motor Driver Module
- 5V DC-motorer
- Batteri
- Hjul
- Chassi
- Bygeltrådar
Kretsschema
Det fullständiga kretsschemat för detta projekt ges nedan, som du kan se använder det en Arduino-nano. Men vi kan också bygga ett hinder för att undvika att robot använder Arduino UNO med samma krets (följ samma pinout) och kod.
När kretsen är klar måste vi bygga vårt hinder för att undvika bil genom att montera kretsen ovanpå ett robotchassi som visas nedan.
Hinder undvika robot med Arduino - kod
Hela programmet med en demonstrationsvideo ges i slutet av detta projekt. Programmet inkluderar installation av HC-SR04-modul och utmatning av signalerna till motorstiftet för att flytta motorriktningen i enlighet därmed. Inga bibliotek kommer att användas i detta projekt.
Först definierar trig och eko stift HC-SR04 i programmet. I detta projekt är trigpinnen ansluten till GPIO9 och echo pin är ansluten till GPIO10 från Arduino NANO.
int trigPin = 9; // trig-pin av HC-SR04 int echoPin = 10; // Ekostift av HC-SR04
Definiera stift för inmatning av LM298N Motor Driver Module. LM298N har fyra dataingångar som används för att styra riktningen på den motor som är ansluten till den.
int revleft4 = 4; // Vänd rörelse av vänster motor int fwdleft5 = 5; // ForWarD-rörelse för vänster motor int revright6 = 6; // Vänd rörelse av höger motor int fwdright7 = 7; // ForWarD-rörelse av höger motor
I funktionen setup () definierar du datariktningen för använda GPIO-stift. De fyra motorstiften och uttagsstiftet är inställt som UTGÅNG och Echo-stiftet är inställt som ingång.
pinMode (revleft4, OUTPUT); // ställa in motorstift som utgång pinMode (fwdleft5, OUTPUT); pinMode (revright6, OUTPUT); pinMode (fwdright7, OUTPUT); pinMode (trigPin, OUTPUT); // ställa in trigpin som utgång pinMode (echoPin, INPUT); // ställ in eko-stift som ingång för att fånga reflekterade vågor
I funktionen loop () , få avståndet från HC-SR04 och flytta motorriktningen baserat på avståndet. Avståndet visar objektets avstånd som kommer framför roboten. Avståndet tas genom att spränga en ultraljudstråle upp till 10 oss och ta emot den efter 10us. För att lära dig mer om att mäta avstånd med ultraljudssensor och Arduino, följ länken.
digitalWrite (trigPin, LOW); delayMicroseconds (2); digitalWrite (trigPin, HIGH); // skicka vågor för 10 us delayMicroseconds (10); varaktighet = pulseIn (echoPin, HIGH); // ta emot reflekterade vågavstånd = varaktighet / 58,2; // konvertera till avståndsfördröjning (10);
Om avståndet är större än det definierade avståndet betyder det inget hinder i dess väg och det kommer att röra sig framåt.
if (avstånd> 19) { digitalWrite (fwdright7, HIGH); // gå framåt digitalWrite (revright6, LOW); digitalWrite (fwdleft5, HIGH); digitalWrite (revleft4, LOW); }
Om avståndet är mindre än det definierade avståndet för att undvika hinder betyder det att det finns något hinder framför. Så i den här situationen stannar roboten ett tag och rör sig bakåt efter det igen och stannar en stund och tar sedan en annan riktning.
if (avstånd <18) { digitalWrite (fwdright7, LOW); // Stoppa digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); fördröjning (500); digitalWrite (fwdright7, LOW); // movebackword digitalWrite (revright6, HIGH); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, HIGH); fördröjning (500); digitalWrite (fwdright7, LOW); // Stoppa digitalWrite (revright6, LOW); digitalWrite (fwdleft5, LOW); digitalWrite (revleft4, LOW); fördröjning (100); digitalWrite (fwdright7, HIGH); digitalWrite (revright6, LOW); digitalWrite (revleft4, LOW); digitalWrite (fwdleft5, LOW); fördröjning (500); }
Så detta är hur en robot kan undvika hinder i vägen utan att fastna någonstans. Hitta den fullständiga koden och videon nedan.