Kako napraviti izbjegavanje prepreka robotu pomoću Arduina?

Svijet se brzo kreće, a tehnologija se s njim kreće i na polju robotike. Primjene robotike mogu se vidjeti svugdje u svijetu. Koncept mobilnih ili autonomnih robota koji se kreću bez ikakve vanjske pomoći najdublje je područje istraživanja. Postoji toliko mnogo vrsta mobilnih robota, na primjer, tumači za samolokalizaciju i mapiranje (SLAM), praćenje linija, Sumo botovi itd. Robot koji izbjegava prepreku jedan je od njih. Koristi tehniku ​​za promjenu puta ako otkrije bilo kakvu prepreku na svom putu.



(Slika ljubaznošću: sažetak kruga)

U ovom je projektu dizajniran robot za izbjegavanje prepreka zasnovan na Arduinu koji će koristiti ultrazvučni senzor za otkrivanje svih prepreka na putu.



Kako izbjeći prepreke pomoću ultrazvučnog senzora?

Budući da znamo sažetak našeg projekta, pomaknimo se korak naprijed i prikupimo neke informacije kako bismo započeli projekt.



Korak 1: Prikupljanje komponenata

Najbolji pristup za početak bilo kojeg projekta je sastaviti popis cjelovitih komponenata na početku i prolazeći kroz kratku studiju svake komponente. To nam pomaže u izbjegavanju neugodnosti usred projekta. Cjelovit popis svih komponenata korištenih u ovom projektu dan je u nastavku.



  • Šasija kotača za automobil
  • Baterija

Korak 2: Proučavanje komponenata

Sada, budući da imamo cjelovit popis svih komponenata, pomaknimo se korak naprijed i prođite kroz kratku studiju rada svake komponente.

Arduino nano je mikrokontrolerska ploča prilagođena pločama koja se koristi za upravljanje ili izvršavanje različitih zadataka u krugu. Izgaramo a C kod na Arduino Nano kako bi ploči mikrokontrolera rekao kako i koje radnje izvesti. Arduino Nano ima potpuno istu funkcionalnost kao Arduino Uno, ali u prilično maloj veličini. Mikrokontroler na ploči Arduino Nano je ATmega328p.

Arduino Nano



L298N je integrirani krug velike struje i visokog napona. To je dvostruki puni most dizajniran da prihvati standardnu ​​TTL logiku. Ima dva ulaza za omogućavanje koji omogućavaju uređaju neovisan rad. Dva se motora mogu istovremeno povezati i upravljati. Brzina motora varira kroz PWM klinove. Modulacija širine impulsa (PWM) tehnika je kojom se može kontrolirati protok napona u bilo kojoj elektroničkoj komponenti. Ovaj modul ima H-most koji je odgovoran za kontrolu smjera rotacije u motorima okretanjem smjera struje. Omogućuju pin A i Enable Pin B koriste se za promjenu brzine rada oba motora. Ovaj modul može raditi između 5 i 35 V i vršne struje do 2A. Ulazni pin1 i ulazni pin2 i za prvi motor, a ulazni pin3 i ulazni pin4 su za drugi motor.

L298N Motorni vozač

Ploča HC-SR04 ultrazvučni je senzor koji se koristi za određivanje udaljenosti između dva predmeta. Sastoji se od odašiljača i prijamnika. Predajnik pretvara električni signal u ultrazvučni signal, a prijemnik ultrazvučni signal natrag u električni signal. Kada odašiljač pošalje ultrazvučni val, on se odražava nakon sudara s određenim objektom. Udaljenost se izračunava pomoću vremena koje je potrebno ultrazvučnom signalu da pređe s odašiljača i vrati se na prijemnik.

Ultrazvučni senzor

Korak 3: Sastavljanje komponenata

Sad kad znamo kako funkcionira većina korištenih komponenata, započnimo sastavljati sve komponente i stvorimo robota koji izbjegava prepreke.

  1. Uzmite šasije kotača automobila i na njegov vrh zalijepite ploču za ploču. Postavite ultrazvučni senzor na prednju stranu kućišta, a poklopac baterije iza kućišta.
  2. Popravite ploču Arduino Nano na ploči za ploču i pričvrstite vozač motora odmah iza ploče, na šasije. Spojite Omogućene iglice motora motora na Pin6 i Pin9 Arduino nano. Igle In1, In2, In3 i In4 modula pogonskog motora spojene su na pin2, pin3, pin4 i pin5 Arduino nano-a.
  3. Trig i echo iglica ultrazvučnog senzora spojena su na pin11 i in10 Arduino nano-a. Vcc i uzemljenje pin ultrazvučnog senzora povezani su na 5 V i uzemljenje Arduino Nano-a.
  4. Modul upravljačkog sklopa motora napaja baterija. Arduino Nano ploča napaja se iz 5V priključka modula pogonskog motora, a ultrazvučni senzor napaja se iz Arduino nano ploče. težina i energija baterija mogu postati odlučujući čimbenik njezinih performansi.
  5. Provjerite jesu li vaše veze iste kao što je prikazano dolje na shemi spojeva.

    Kružni dijagram

Korak 4: Početak rada s Arduinom

Ako već niste upoznati s Arduino IDE-om, ne brinite jer je u nastavku objašnjen korak po korak za postavljanje i upotrebu Arduino IDE-a s pločom mikrokontrolera.

  1. Preuzmite najnoviju verziju Arduino IDE sa Arduino.
  2. Spojite svoju Arduino Nano ploču s prijenosnim računalom i otvorite upravljačku ploču. na upravljačkoj ploči kliknite na Hardver i zvuk . Sada kliknite na Uređaji i pisači. Ovdje pronađite priključak na koji je spojena vaša ploča mikrokontrolera. U mom slučaju jest COM14 ali je različito na različitim računalima.

    Pronalaženje luke

  3. Kliknite izbornik Alat. i postavite ploču na Arduino Nano s padajućeg izbornika.

    Odbor za postavljanje

  4. U istom izborniku Alata postavite port na broj porta koji ste prije primijetili u Uređaji i pisači .

    Postavka porta

  5. U istom izborniku Alata postavite procesor na ATmega328P (stari pokretač).

    Procesor

  6. Preuzmite dolje priloženi kôd i zalijepite ga u svoj Arduino IDE. Klikni na Učitaj gumb za snimanje koda na ploči mikrokontrolera.

    Učitaj

Da biste preuzeli kôd, kliknite ovdje.

Korak 5: Razumijevanje kodeksa

Kodeks je dobro komentiran i samorazumljiv. Ali ipak, objašnjeno je u nastavku

1. Na početku koda inicijaliziraju se sve iglice ploče Arduino Nano koje su povezane s ultrazvučnim senzorom i modulom pogonskog motora. Pin6 i Pin9 su PWM pinovi koji mogu mijenjati protok napona u zavisnosti od brzine robota. Dvije varijable, trajanje, i udaljenost inicijaliziraju se za pohranu podataka koji će se kasnije koristiti za izračunavanje udaljenosti ultrazvučnog senzora i prepreke.

int enable1pin = 6; // Osovinice za prvi motor int motor1pin1 = 2; int motor1pin2 = 3; int enable2pin = 9; // Osovine za drugi motor int motor2pin1 = 4; int motor2pin2 = 5; const int trigPin = 11; // Okidač pin ultrazvučnog Sesnora const int echoPin = 10; // Echo Pin Of Ultrasonic Sesnor dugog trajanja; // varijable za izračunavanje udaljenosti plutajuće udaljenosti;

2. void postavljanje () je funkcija koja se koristi za postavljanje svih korištenih pinova, kao ULAZNI i IZLAZ. Brzina prijenosa podataka definirana je u ovoj funkciji. Brzina prijenosa je brzina komunikacije kojom ploča mikrokontrolera komunicira s integriranim senzorima.

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

3. petlja void () je funkcija koja se ponavlja u ciklusu. U ovoj funkciji mi kažemo ploči mikrokontrolera kako i koje operacije treba izvršiti. Ovdje je, prvo, okidač postavljen tako da šalje signal koji će eho detektirati. Zatim se izračuna vrijeme koje se ultrazvučnom signalu putuje od i do senzora i sprema u varijablu trajanje. Tada se to vrijeme koristi u formuli za izračunavanje udaljenosti prepreke i ultrazvučnog senzora. Tada se primjenjuje uvjet da će se, ako je udaljenost veća od 5 cm, robot pomaknuti naprijed u ravnoj liniji, a ako je udaljenost manja od 50 cm, robot će skrenuti oštro udesno.

void loop () {digitalWrite (trigPin, LOW); // Slanje i otkrivanje kašnjenja ultrazvučnog signalaMicroseconds (2); digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); trajanje = pulsIn (echoPin, HIGH); // Izračunavanje vremena koje ultrazvučni val uzima za odražavanje udaljenosti = 0,034 * (trajanje / 2); // Izračunavanje udaljenosti između tebe i robota. if (distance> 50) // Pomakni naprijed ako je udaljenost veća od 50 cm {digitalWrite (enable1pin, HIGH); digitalWrite (enable2pin, HIGH); digitalWrite (motor1pin1, HIGH); digitalWrite (motor1pin2, LOW); digitalWrite (motor2pin1, HIGH); digitalWrite (motor2pin2, LOW); } inače ako (udaljenost<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); }

Prijave

Dakle, ovdje je bio postupak za izradu robota koji izbjegava prepreke. Ova tehnologija za izbjegavanje prepreka može se tužiti i u drugim aplikacijama. Neke od tih aplikacija su kako slijedi.

  1. Sustav za praćenje.
  2. Svrha mjerenja udaljenosti.
  3. To se može koristiti u automatskim robotima za usisavanje.
  4. To se može koristiti u štapićima za slijepe osobe.