Search Code

Lecția 25/31: Mașina inteligentă Car-3 evită obstacole folosind senzori infraroșii | SunFounder Robojax

Lecția 25/31: Mașina inteligentă Car-3 evită obstacole folosind senzori infraroșii | SunFounder Robojax

Acest proiect transformă mașina ta inteligentă SunFounder 3-in-1 Arduino într-un vehicul autonom care evită obstacolele. Prin montarea a doi senzori cu infraroșu (IR)—unul pe stânga și unul pe dreapta—mașina poate detecta obiecte în calea sa și poate lua decizii în fracțiuni de secundă pentru a le ocoli. Acesta este un pas fundamental în robotică, învățându-te cum să combini intrarea de la senzori cu logica de control a motoarelor pentru a crea o mașină reactivă, cu autoconducere. Principiile pe care le vei învăța aici se aplică unei game largi de aplicații din lumea reală, inclusiv:

  • Construirea unui aspirator robotic care navighează printr-o cameră fără să se lovească de mobilier.
  • Crearea unui robot care urmărește o linie sau rezolvă labirinturi pentru competiții sau proiecte educaționale.
  • Dezvoltarea unui robot automat de patrulare de securitate care poate cutreiera un perimetru și poate evita pereții.
  • Proiectarea unei mașini de jucărie inteligente care se poate juca independent fără să rămână blocată.

Acest ghid se bazează direct pe lecțiile anterioare în care ai învățat să controlezi motoarele mașinii și să înțelegi cum funcționează senzorii IR. Aici, vom combina aceste abilități pentru a implementa un algoritm simplu, dar eficient, de evitare a obstacolelor.

Cum Funcționează Logica de Evitare a Obstacolelor

Ideea de bază este simplă: mașina folosește doi senzori IR pentru a verifica obstacolele pe părțile stângă și dreaptă. Fiecare senzor emite un semnal digital: LOW (0) când detectează un obiect în raza sa (aproximativ 20 cm) și HIGH (1) când calea este liberă. Logica determină apoi acțiunea mașinii pe baza stărilor senzorilor (în videoclip la 02:35):

  • Obstacol pe Stânga, Dreapta Liberă: Mașina virează la dreapta pentru a-l evita.
  • Obstacol pe Dreapta, Stânga Liberă: Mașina virează la stânga.
  • Obstacole pe Ambele Părți: Mașina se deplasează înapoi pentru a scăpa dintr-un potențial punct mort.
  • Fără Obstacole: Mașina merge înainte.

Această abordare reactivă este un exemplu clasic de mașină cu stări finite, unde comportamentul mașinii este un răspuns direct la intrările curente ale senzorilor.

Sunfounder-Smartcar-Obstacle-avoideance-1

Componente Hardware

Pentru a finaliza acest proiect, vei avea nevoie de următoarele componente, toate incluse în kit-ul SunFounder 3-in-1 Arduino:

  • 1x Kit Mașină Inteligentă SunFounder 3-in-1 Arduino (sau piese echivalente)
  • 2x Senzori de Evitare a Obstacolelor cu Infraroșu
  • 1x Arduino Uno (sau placă compatibilă)
  • 1x Placă/Scut de Control al Motoarelor
  • Fire de Legătură (Jumper Wires)

Ghid de Cablare

Alinierea corectă a senzorilor este critică pentru ca acest proiect să funcționeze. Senzorii IR trebuie aliniați astfel încât să fie orientați înainte și ușor spre exterior, deoarece vor detecta obstacolele pe flancurile mașinii (în videoclip la 02:07). Diagrama de cablare următoare arată cum să conectezi senzorii la Arduino. Te rugăm să reții că instructorul a folosit un punct specific de distribuție a energiei pe breadboard-ul mașinii, dar conexiunile la Arduino sunt cele care contează.

Sunfounder-Smartcar-Obstacle-avoideance-wiring

Conexiunile de cablare sunt următoarele (în videoclip la 03:47):

  • Alimentare (VCC): Conectează pinul VCC al ambilor senzori IR la ieșirea de 5V de pe Arduino sau la linia de alimentare a mașinii.
  • Masă (GND): Conectează pinul GND al ambilor senzori IR la o masă comună de pe Arduino sau la linia de masă a mașinii.
  • Ieșire Senzor Dreapta (OUT): Conectează pinul de ieșire digital al senzorului IR din dreapta la pinul digital 7 de pe Arduino.
  • Ieșire Senzor Stânga (OUT): Conectează pinul de ieșire digital al senzorului IR din stânga la pinul digital 8 de pe Arduino.

Conexiunile driverului de motor pentru motoarele din stânga și dreapta sunt aceleași cu cele stabilite în lecția anterioară despre controlul motoarelor.

Explicația Codului

Codul pentru acest proiect este simplu. Programul principal este disponibil pentru descărcare mai jos, în articol. Aici, ne vom concentra pe părțile configurabile de utilizator pe care le poți ajusta pentru propria mașină.

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;

Aceste linii definesc pinii folosiți pentru driverul de motor și senzorii IR. Pinii motorului (A_1B, A_1A, B_1B, B_1A) controlează viteza și direcția celor două motoare. Pinii rightIR și leftIR sunt locurile unde conectezi firele de semnal de la senzorii tăi. Dacă ai folosit alți pini, ai schimba aceste valori aici.

int speed = 150;

Această variabilă setează viteza de bază a mașinii. Valoarea poate varia de la 0 la 255, unde 255 este viteza maximă. O valoare de 150 este un bun punct de plecare pentru învățare, deoarece este suficient de rapidă pentru a fi interesantă, dar suficient de lentă pentru a permite timp de reacție (în videoclip la 07:10). Poți ajusta aceasta pentru a face mașina mai rapidă sau mai lentă.

Restul codului definește logica din funcția loop(). Aceasta citește starea senzorilor din stânga și din dreapta, apoi apelează funcția de mișcare corespunzătoare (moveForward(), moveBackward(), backLeft(), backRight()). Aceste funcții sunt predefinite și controlează driverul motorului pentru a obține mișcarea dorită. Instructorul a adăugat, de asemenea, o funcție stop() într-o modificare ulterioară, pentru a opri mașina pentru o scurtă perioadă după o manevră de evitare, făcând mișcările mai deliberate (în video la 10:29).

Demonstrație live a proiectului

În video, instructorul demonstrează mai întâi logica folosind Monitorul Serial. Plasând o cutie lângă senzori, puteți vedea mesajele corespunzătoare precum „Go Left", „Go Right" sau „Go Backward" apărând pe ecran, confirmând că citirile senzorilor și logica sunt corecte (în video la 09:11).

După verificarea logicii, instructorul adaugă o îmbunătățire crucială: o funcție stop(). Această funcție aduce mașina la o oprire completă pentru o perioadă definită (de exemplu, 1 secundă) după ce execută o virare sau o mers înapoi, prevenind mișcările bruște și permițând mașinii să-și reevalueze împrejurimile (în video la 10:29).

În final, mașina este testată pe podea cu o serie de obstacole. Video-ul arată mașina navigând cu succes printre cutii, virând la stânga, la dreapta și mergând înapoi după cum este necesar pentru a găsi o cale liberă, demonstrând aplicarea în lumea reală a acestui algoritm de evitare a obstacolelor (în video la 12:13).

Capitole

  • [00:00] Introducere în evitarea obstacolelor cu senzori IR
  • [01:24] Cerințe preliminare și prezentarea proiectului
  • [02:35] Cum funcționează logica de evitare a obstacolelor
  • [03:47] Conectarea senzorilor IR și a motoarelor
  • [05:40] Deschiderea și explicarea codului
  • [09:11] Testarea logicii cu Monitorul Serial
  • [10:29] Adăugarea unei funcții de oprire pentru o navigare mai lină
  • [11:42] Testarea funcției de oprire
  • [12:13] Testul practic final pe podea

Imagini

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
Limba: C++
This code has not been parsed yet. Please return to the admin panel to parse it.

Resurse și referințe

Fișiere📁

Biblioteci Arduino (zip)