Hvordan lage hindringer for å unngå robot ved hjelp av Arduino?

Verden beveger seg raskt, og teknologien beveger seg også med den innen robotikk. Anvendelsene av robotikk kan sees overalt i verden. Konseptet med mobile eller autonome roboter som beveger seg uten ekstern hjelp er det mest imponerende forskningsfeltet. Det er så mange typer mobile roboter, for eksempel, Self Localization and Mapping (SLAM) tolker, Line following, Sumo Bots, etc. En hindring som unngår robot er en av dem. Den bruker en teknikk for å endre stien hvis den oppdager noen hindring i veien.



(Bilde med tillatelse: Circuit digest)

I dette prosjektet er en Arduino-basert hindringsunngåelig robot designet som vil bruke en ultralydssensor til å oppdage alle hindringene i veien.



Hvordan unngå hindringer ved bruk av ultralydssensor?

Som vi vet sammendraget av prosjektet vårt, la oss gå et skritt foran og samle litt informasjon for å starte prosjektet.



Trinn 1: Samle komponentene

Den beste tilnærmingen for å starte et prosjekt er å lage en liste over komplette komponenter i starten og gjennom en kort studie av hver komponent. Dette hjelper oss med å unngå ulempene midt i prosjektet. En komplett liste over alle komponentene som er brukt i dette prosjektet er gitt nedenfor.



  • Car Wheel Chassis
  • Batteri

Trinn 2: Studere komponentene

Nå som vi har en komplett liste over alle komponentene, la oss gå et skritt fremover og gå gjennom en kort studie av hvordan hver komponent fungerer.

Arduino nano er et brødbordvennlig mikrokontrollerkort som brukes til å kontrollere eller utføre forskjellige oppgaver i en krets. Vi brenner en C-kode på Arduino Nano for å fortelle mikrokontrollerkortet hvordan og hvilke operasjoner som skal utføres. Arduino Nano har nøyaktig samme funksjonalitet som Arduino Uno, men i ganske liten størrelse. Mikrokontrolleren på Arduino Nano-kortet er ATmega328p.

Arduino Nano



L298N er en integrert krets med høy strøm og høyspenning. Det er en dobbel fullbro designet for å akseptere standard TTL-logikk. Den har to aktiveringsinnganger som gjør at enheten kan fungere uavhengig. To motorer kan kobles til og betjenes samtidig. Motorens hastighet varieres gjennom PWM-pinnene. Pulse Width Modulation (PWM) er en teknikk der strømmen av spenning i en hvilken som helst elektronisk komponent kan styres. Denne modulen har en H-bro som er ansvarlig for kontrollen av rotasjonsretningen i motorene ved å invertere strømretningen. Enable pin A og Enable Pin B brukes til å endre hastigheten til begge motorene. Denne modulen kan operere mellom 5 og 35V og toppstrøm opp til 2A. Inngangspinne1 og inngangspinne2 og for første motor og inngangspinne3 og inngangspinne4 er for den andre motoren.

L298N Motordriver

HC-SR04-kortet er en ultralydssensor som brukes til å bestemme avstanden mellom to objekter. Den består av en sender og en mottaker. Senderen konverterer det elektriske signalet til et ultralydssignal og mottakeren konverterer ultralydsignalet tilbake til det elektriske signalet. Når senderen sender en ultralydbølge, reflekteres den etter kollisjon med en bestemt gjenstand. Avstanden beregnes ved å bruke tiden det tar for ultralydsignalet å gå fra senderen og komme tilbake til mottakeren.

Ultralydssensor

Trinn 3: Montere komponentene

Nå som vi nå vet hvordan de fleste komponentene brukes, kan vi begynne å montere alle komponentene og produsere en hindring som unngår en robot.

  1. Ta et bilhjul chasses og stikk et brødbrett på toppen. Monter ultralydsensoren foran chassene og en batterilokk bak chassene.
  2. Fest Arduino Nano-brettet på brødplaten og fest motorføreren rett bak brødplaten, på chassene. Koble Aktiver pinnene på begge motorene til Pin6 og Pin9 i Arduino nano. In1, In2, In3 og In4-pinnene til motordrivermodulen er koblet til henholdsvis pin2, pin3, pin4 og pin5 i Arduino nano.
  3. Trig og ekkopinnen til ultralydssensoren er koblet til henholdsvis pin11 og in10 av Arduino nano. Vcc og jordpinnen til ultralydssensoren er koblet til 5V og bakken til Arduino Nano.
  4. Motorkontrollmodulen får strøm fra batteriet. Arduino Nano-kortet får strøm fra 5V-porten på motordrivermodulen, og ultralydsensoren vil få sin kraft fra Arduino nano-kortet. vekten og energien til batteriene kan bli den avgjørende faktoren for ytelsen.
  5. Forsikre deg om at tilkoblingene dine er de samme som vist nedenfor i kretsskjemaet.

    Kretsdiagram

Trinn 4: Komme i gang med Arduino

Hvis du ikke allerede er kjent med Arduino IDE, ikke bekymre deg fordi en trinnvis prosedyre for å sette opp og bruke Arduino IDE med et mikrokontrollerkort er forklart nedenfor.

  1. Last ned den nyeste versjonen av Arduino IDE fra Arduino.
  2. Koble Arduino Nano-kortet til den bærbare datamaskinen og åpne kontrollpanelet. i kontrollpanelet, klikk på Maskinvare og lyd . Klikk nå på Enheter og skrivere. Her finner du porten som mikrokontrollerkortet er koblet til. I mitt tilfelle er det COM14 men det er forskjellig på forskjellige datamaskiner.

    Finne havn

  3. Klikk på Verktøy-menyen. og sett styret til Arduino Nano fra rullegardinmenyen.

    Sette styret

  4. I samme Verktøy-meny, sett porten til portnummeret du observerte før i Enheter og skrivere .

    Innstilling av port

  5. I samme verktøymeny, sett prosessoren til ATmega328P (gammel bootloader).

    Prosessor

  6. Last ned koden som er vedlagt nedenfor, og lim den inn i Arduino IDE. Klikk på laste opp -knappen for å brenne koden på mikrokontrollerkortet.

    Laste opp

For å laste ned koden, Klikk her.

Trinn 5: Forstå koden

Koden er godt kommentert og selvforklarende. Men likevel forklares det nedenfor

1. Ved starten av koden initialiseres alle pinnene på Arduino Nano-kortet som er koblet til ultralydssensoren og motordrivermodulen. Pin6 og Pin9 er PWM-pinner som kan variere strømmen for å variere hastigheten til roboten. To variabler, varighet, og avstand initialiseres for å lagre data som senere skal brukes til å beregne avstanden til ultralydssensoren og hindringen.

int enable1pin = 6; // Pins for First Motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Pins For Second Motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Trigger Pin Of Ultrasonic Sesnor const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor lang varighet; // variabler for å beregne avstandens flytavstand;

2. ugyldig oppsett () er en funksjon som brukes til å stille inn alle pinnene som brukes, som INNGANG og PRODUKSJON. Baudrate er definert i denne funksjonen. Baud Rate er kommunikasjonshastigheten som mikrokontrollerkortet kommuniserer med sensorene integrert med.

ugyldig oppsett () {Serial.begin (9600); pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); pinMode (enable1pin, OUTPUT); pinMode (enable2pin, OUTPUT); pinMode (motor1pin1, OUTPUT); pinMode (motor1pin2, OUTPUT); pinMode (motor2pin1, OUTPUT); pinMode (motor2pin2, OUTPUT); }

3. ugyldig sløyfe () er en funksjon som kjører gjentatte ganger i en syklus. I denne funksjonen forteller vi mikrokontrollerkortet hvordan og hvilke operasjoner som skal utføres. Her er først utløserpinnen satt til å sende et signal som vil bli oppdaget av ekkopinnen. Deretter beregnes og lagres tiden som ultralydssignalet tar for å reise fra og tilbake til sensoren og lagres i variabelen varighet. Da brukes denne tiden i en formel for å beregne avstanden til hindringen og ultralydssensoren. Deretter blir det brukt en betingelse om at hvis avstanden er mer enn 5oCm, vil roboten bevege seg fremover i en rett linje, og hvis avstanden er mindre enn 50cm, vil roboten ta en skarp høyersving.

void loop () {digitalWrite (trigPin, LOW); // Sende og oppdage Ultralydssignalforsinkelse Mikrosekunder (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); varighet = pulseIn (echoPin, HIGH); // Kalulere timme tatt av ultralydbølgen for å reflektere tilbake avstand = 0,034 * (varighet / 2); // Beregning av avstanden mellom uken og hindringen. hvis (avstand> 50) // Gå fremover hvis avstanden er større enn 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } annet hvis (avstand<50) // Sharp Right Turn if the distance is less than 50cm { digitalWrite(enable1pin, HIGH); digitalWrite(enable2pin, HIGH); digitalWrite(motor1pin1, HIGH); digitalWrite(motor1pin2, LOW); digitalWrite(motor2pin1, LOW); digitalWrite(motor2pin2, LOW); } delay(300); }

applikasjoner

Så her var prosedyren for å lage en hindring som unngår robot. Denne hindring som unngår teknologi kan også saksøkes i andre applikasjoner. Noen av disse applikasjonene er som følger.

  1. Sporingssystem.
  2. Avstandsmålingsformål.
  3. Dette kan brukes i automatiske støvsugingsroboter.
  4. Dette kan brukes i Sticks for blinde mennesker.