Search Code

Lekcija 25/31: Pametni automobil Car-3 izbjegava prepreke koristeći infracrvene senzore | SunFounder Robojax

Lekcija 25/31: Pametni automobil Car-3 izbjegava prepreke koristeći infracrvene senzore | SunFounder Robojax

Ovaj projekat pretvara vaš SunFounder 3-u-1 Arduino pametni automobil u autonomno vozilo koje izbjegava prepreke. Montiranjem dva infracrvena (IR) senzora—jednog s lijeve i jednog s desne strane—automobil može detektovati objekte na svom putu i donositi odluke u djeliću sekunde da ih zaobiđe. Ovo je temeljni korak u robotici koji vas uči kako kombinovati senzorske ulaze s logikom upravljanja motorima kako biste stvorili reaktivnu, samovozeću mašinu. Principi koje ćete ovdje naučiti primjenjuju se na širok spektar stvarnih aplikacija, uključujući:

  • Izgradnju robotskog usisivača koji se kreće po prostoriji bez udaranja u namještaj.
  • Kreiranje robota koji prati liniju ili rješava lavirint za takmičenja ili obrazovne projekte.
  • Razvoj automatizovanog sigurnosnog patrolnog robota koji može kružiti po perimetru i izbjegavati zidove.
  • Dizajniranje pametnog autića igračke koji se može samostalno igrati bez zaglavljivanja.

Ovaj vodič se direktno nadovezuje na prethodne lekcije u kojima ste naučili upravljati motorima automobila i razumjeti kako IR senzori rade. Ovdje ćemo kombinovati te vještine kako bismo implementirali jednostavan, ali efikasan algoritam za izbjegavanje prepreka.

Kako funkcioniše logika izbjegavanja prepreka

Osnovna ideja je jednostavna: automobil koristi dva IR senzora za provjeru prepreka s lijeve i desne strane. Svaki senzor daje digitalni signal: LOW (0) kada detektuje objekat u svom dometu (oko 20 cm) i HIGH (1) kada je put čist. Logika zatim određuje akciju automobila na osnovu stanja senzora (u videu na 02:35):

  • Prepreka s lijeve strane, desna čista: Automobil skreće udesno kako bi je izbjegao.
  • Prepreka s desne strane, lijeva čista: Automobil skreće ulijevo.
  • Prepreke s obje strane: Automobil se kreće unazad kako bi pobjegao iz potencijalne slijepe ulice.
  • Bez prepreka: Automobil vozi naprijed.

Ovaj reaktivni pristup klasičan je primjer konačnog automata, gdje je ponašanje automobila direktan odgovor na trenutne senzorske ulaze.

Sunfounder-Smartcar-Obstacle-avoideance-1

Hardverske komponente

Za završetak ovog projekta trebat će vam sljedeće komponente, koje su sve uključene u SunFounder 3-u-1 Arduino komplet:

  • 1x SunFounder 3-u-1 Arduino Smart Car komplet (ili ekvivalentni dijelovi)
  • 2x Infracrveni senzori za izbjegavanje prepreka
  • 1x Arduino Uno (ili kompatibilna ploča)
  • 1x Motor Driver Shield/Ploča
  • Kratkospojne žice

Vodič za povezivanje

Pravilno poravnanje senzora ključno je za rad ovog projekta. IR senzori moraju biti poravnati okrenuti naprijed i blago prema van, jer će detektovati prepreke na bočnim stranama automobila (u videu na 02:07). Sljedeći dijagram povezivanja pokazuje kako spojiti senzore na Arduino. Imajte na umu da je instruktor koristio specifičnu tačku za distribuciju napajanja na breadboardu automobila, ali veze s Arduinom su ono što je bitno.

Sunfounder-Smartcar-Obstacle-avoideance-wiring

Veze su sljedeće (u videu na 03:47):

  • Napajanje (VCC): Spojite VCC pin oba IR senzora na 5V izlaz na Arduinu ili na napojnu šinu automobila.
  • Uzemljenje (GND): Spojite GND pin oba IR senzora na zajedničko uzemljenje na Arduinu ili na šinu uzemljenja automobila.
  • Izlaz desnog senzora (OUT): Spojite digitalni izlazni pin desnog IR senzora na digitalni pin 7 na Arduinu.
  • Izlaz lijevog senzora (OUT): Spojite digitalni izlazni pin lijevog IR senzora na digitalni pin 8 na Arduinu.

Veze za motor driver za lijeve i desne motore iste su kao one uspostavljene u prethodnoj lekciji o upravljanju motorima.

Objašnjenje koda

Kod za ovaj projekat je jednostavan. Glavni program dostupan je za preuzimanje ispod članka. Ovdje ćemo se fokusirati na dijelove koje korisnik može konfigurisati i koje možete prilagoditi za svoj automobil.

const int A_1B = 5;
const int A_1A = 6;
const int B_1B = 9;
const int B_1A = 10;

const int rightIR = 7;
const int leftIR = 8;

Ove linije definišu pinove koji se koriste za motor driver i IR senzore. Pinovi motora (A_1B, A_1A, B_1B, B_1A) kontrolišu brzinu i smjer dva motora. Pinovi rightIR i leftIR su mjesta gdje spajate signalne žice sa svojih senzora. Ako ste koristili druge pinove, promijenili biste ove vrijednosti ovdje.

int speed = 150;

Ova varijabla postavlja osnovnu brzinu automobila. Vrijednost može biti od 0 do 255, gdje je 255 maksimalna brzina. Vrijednost od 150 dobra je početna tačka za učenje, jer je dovoljno brza da bude zanimljiva, ali dovoljno spora da omogući vrijeme reakcije (u videu na 07:10). Ovo možete prilagoditi kako biste učinili automobil bržim ili sporijim.

Ostatak koda definira logiku u funkciji loop(). Ona čita stanje lijevog i desnog senzora, a zatim poziva odgovarajuću funkciju kretanja (moveForward(), moveBackward(), backLeft(), backRight()). Ove funkcije su unaprijed definirane i kontroliraju pokretač motora kako bi se postiglo željeno kretanje. Instruktor je također dodao funkciju stop() u kasnijoj modifikaciji kako bi zaustavio automobil na kratko vrijeme nakon manevra izbjegavanja, čineći njegove pokrete promišljenijim (u videu na 10:29).

Demonstracija projekta uživo

U videu, instruktor prvo demonstrira logiku koristeći Serial Monitor. Postavljanjem kutije blizu senzora, možete vidjeti odgovarajuće poruke poput "Go Left", "Go Right" ili "Go Backward" na ekranu, što potvrđuje da su očitanja senzora i logika ispravni (u videu na 09:11).

Nakon provjere logike, instruktor dodaje ključno poboljšanje: funkciju stop(). Ova funkcija potpuno zaustavlja automobil na definirano vrijeme (npr. 1 sekundu) nakon što izvrši skretanje ili vožnju unazad, sprječavajući trzave pokrete i omogućavajući automobilu da ponovno procijeni svoje okruženje (u videu na 10:29).

Na kraju, automobil se testira na podu s nizom prepreka. Video prikazuje automobil kako uspješno prolazi oko kutija, skreće lijevo, desno i vozi unazad po potrebi kako bi pronašao slobodan put, demonstrirajući praktičnu primjenu ovog algoritma za izbjegavanje prepreka (u videu na 12:13).

Poglavlja

  • [00:00] Uvod u izbjegavanje prepreka s IR senzorima
  • [01:24] Preduvjeti i pregled projekta
  • [02:35] Kako funkcionira logika izbjegavanja prepreka
  • [03:47] Povezivanje IR senzora i motora
  • [05:40] Otvaranje i objašnjenje koda
  • [09:11] Testiranje logike sa Serial Monitorom
  • [10:29] Dodavanje funkcije zaustavljanja za glatkiju navigaciju
  • [11:42] Testiranje funkcije zaustavljanja
  • [12:13] Završni praktični test na podu

Images

Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-1
Sunfounder-Smartcar-Obstacle-avoideance-wiring
Sunfounder-Smartcar-Obstacle-avoideance-wiring
894-Lesson 25: SunFounder's 3-in-1 Arduino kit Car-3 Smart Car Avoids Obstacle Using Infrared Sensors
Language: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Resources & references

Files📁

Arduino Libraries (zip)