Proiect Arduino

MAȘINĂ AUTONOMĂ CU URMĂRIRE DE LINIE

ESP32|Senzori IR|Motoare DC|Control PID

Proiect Arduino · 2026–2027

DESCARCĂ PPTX
// 01

PREZENTARE GENERALĂ

Un vehicul autonom care urmărește o linie neagră pe o suprafață albă folosind senzori infraroșu. Mașina citește datele de la senzori, le prelucrează printr-un algoritm de control PID și ajustează viteza motoarelor pentru a rămâne pe traseu — totul fără intervenție umană.

Controler

ESP32 DevKit — procesor dual-core, WiFi, Bluetooth

Senzori

Matrice de 6 senzori IR (TCRT5000)

Motoare

2–4 motoare DC cu reductor + Driver L298N

Algoritm

Buclă de control PID la ~100 de cicluri/secundă

// 02

GLOSAR DE TERMENI

PID Control Proporțional-Integral-Derivativ
Un algoritm de control automat care corectează continuu eroarea dintre poziția dorită și cea reală. Combină trei tipuri de corecție (P, I, D) pentru a menține mașina pe linie cât mai precis. Este cel mai folosit algoritm de control din industrie — de la termostate la drone.
Gândește-te la un șofer: vede curba (P), își amintește drumul (I) și anticipează ce urmează (D).
Kp Constanta Proporțională
Un număr (coeficient) care decide cât de puternică e reacția mașinii la eroare. Cu cât Kp e mai mare, cu atât virează mai brusc. Dacă e prea mare → oscilații (zig-zag). Dacă e prea mic → mașina reacționează lent și pierde linia.
Kp = 25 înseamnă: „pentru fiecare unitate de eroare, aplică o corecție de 25".
Ki Constanta Integrală
Controlează acumularea erorilor mici de-a lungul timpului. Dacă mașina deviază constant ușor într-o parte (din cauza motoarelor inegale, de ex.), Ki corectează această derivă. Se folosește cu valori foarte mici (0.01–0.1), altfel devine instabil.
Ca un șofer care observă că mereu trage ușor stânga și compensează automat.
Kd Constanta Derivativă
Măsoară cât de repede se schimbă eroarea și frânează corecția înainte să depășească ținta. Previne oscilațiile cauzate de Kp. Acționează ca un „amortizor" — dacă eroarea crește rapid, aplică o contra-forță.
Ca un șofer care ridică piciorul de pe accelerație când vede că se apropie prea repede de centrul benzii.
IR Senzori Infraroșu (TCRT5000)
Senzori care emit lumină infraroșie invizibilă și măsoară cât se reflectă înapoi. Suprafața albă reflectă mult (valoare mare), cea neagră absoarbe (valoare mică). Mașina are 6 senzori aliniați pe un rând care „văd" unde e linia neagră.
Funcționează ca ochii mașinii — fiecare senzor „vede" dacă sub el e alb sau negru.
ESP32 Microcontroler (Creierul Mașinii)
Un mini-computer pe un singur cip care rulează programul mașinii. Citește senzorii, calculează algoritmul PID și trimite comenzi motoarelor — totul de ~100 de ori pe secundă. Are WiFi și Bluetooth integrate, ceea ce permite control și monitorizare wireless.
Echivalentul procesorul unui telefon, dar specializat pe controlul hardware-ului.
PWM Modulare în Lățime a Pulsului
Tehnica prin care ESP32 controlează viteza motoarelor. În loc să dea tensiune continuă, trimite impulsuri rapide de curent. Cu cât impulsurile sunt mai lungi (0–255), cu atât motorul se rotește mai repede. PWM 0 = oprit, PWM 255 = viteză maximă.
Ca și cum ai aprinde și stinge rapid un bec — cu cât stă mai mult aprins, cu atât pare mai luminos.
L298N Driver de Motor (Punte H)
Un amplificator de putere între ESP32 și motoare. ESP32 nu poate alimenta motoarele direct (curent prea mic), așa că L298N primește comenzi mici de la ESP32 și le transformă în curent mare pentru motoare. Controlează atât viteza cât și direcția (înainte/înapoi).
Ca un releu inteligent: ESP32 zice „motor stânga 70%", L298N face treaba grea.
Eroare Abaterea de la Centru
Diferența dintre pozița dorită (centru) și poziția reală a mașinii pe linie. Se calculează din citirile senzorilor: dacă linia e sub senzorii din stânga → eroare negativă (trebuie să vireze stânga), sub cei din dreapta → eroare pozitivă (virează dreapta), la centru → eroare 0.
Eroare = 0 înseamnă perfect centrat. Eroare = -2 înseamnă mult deplasat spre stânga.
Calibrare Ajustarea Senzorilor la Mediu
Procesul prin care mașina învață ce înseamnă „alb" și „negru" pe suprafața curentă. La pornire, senzorii citesc valorile minime și maxime, iar pragul de decizie se setează la mijloc. Fără calibrare, mașina poate confunda culorile pe suprafețe diferite.
Ca și cum ai regla luminozitatea unui ecran — ce e „luminos" depinde de camera în care ești.
Base Speed Viteza de Bază
Viteza constantă cu care mașina merge pe linie dreaptă, de obicei 60–70% din maxim. Corecția PID se adaugă și se scade din această viteză: un motor accelerează, celălalt încetinește. Dacă viteza de bază e prea mare, PID nu mai are loc de corecție.
Ca viteza de croazieră la o mașină reală — prea repede și nu mai poți vira.
GPIO General Purpose Input/Output
Pinii fizici ai ESP32 prin care comunică cu lumea externă. Fiecare pin poate fi configurat ca intrare (citește date de la senzori) sau ieșire (trimite comenzi la motoare/LED-uri). ESP32 are ~30 de GPIO-uri, fiecare cu un număr unic (GPIO 4, GPIO 16, etc.).
Ca porturile USB ale unui laptop — conectezi dispozitive diferite la porturi diferite.
// 03

COMPONENTE NECESARE

ESP32 DevKit V1
Microcontrolerul principal — WiFi, Bluetooth, multe porturi GPIO
Matrice 6 Senzori IR
TCRT5000 — citește poziția liniei prin ieșire analogică
Driver Motor L298N
Punte H dublă — controlează 2 motoare (viteză + direcție)
2× Motoare DC + Roți
Motoare TT (3–6V) cu roți de cauciuc pentru aderență
Șasiu / Cadru
Platformă din acril sau printată 3D pentru montaj
Baterie (7.4V)
2S LiPo sau 4×AA — alimentează motoarele + ESP32
LED-uri + Rezistențe
Indicatoare de stare: alimentare, viraje, linie pierdută
Fire + Breadboard
Conexiuni de prototipare între module
// 04

CUM FUNCȚIONEAZĂ

PASUL 1
DETECTARE
Senzorii IR citesc poziția liniei
PASUL 2
PRELUCRARE
ESP32 calculează abaterea de la centru
PASUL 3
PID
Algoritmul PID calculează corecția
PASUL 4
ACȚIUNE
Motoarele ajustează viteza și direcția

Algoritmul de Control PID

P Proporțional — Corecție proporțională cu eroarea. Eroare mare = virare bruscă
I Integral — Acumulează erorile anterioare. Corectează devierea constantă
D Derivativ — Anticipează eroarea viitoare. Previne oscilațiile și depășirile
Ieșire = Kp × eroare + Ki × ∫(eroare) + Kd × d(eroare)/dt
// 05

PROBLEME POSIBILE

Mașina oscilează / face zig-zag pe linie dreaptă
Cauză: PID nereglat — Kd prea mic sau Kp prea mare
Mașina pierde linia în viraje strânse
Cauză: Viteză prea mare pentru raza virajului, sau senzorii detectează curba prea târziu
Senzorii dau valori inconsistente
Cauză: Interferență de lumină ambiantă, înălțime greșită a senzorilor sau probleme cu suprafața
Motoarele se rotesc cu viteze diferite
Cauză: Toleranțe de fabricație — motoarele nu sunt niciodată identice
ESP32 se resetează aleatoriu în funcționare
Cauză: Căderi de tensiune când motoarele consumă curent mare (condiție de blocare)
Funcționează pe hârtie dar eșuează pe alte suprafețe
Cauză: Pragul este fix — necesită calibrare pentru fiecare suprafață
// 06

SOLUȚII

Zig-Zag / Oscilații
  • Începe doar cu P, crește Kp până la oscilație
  • Adaugă D pentru amortizare — crește Kd treptat
  • Adaugă I doar pentru derivă constantă
  • Valori de start: Kp=25, Ki=0, Kd=15
Pierderea Liniei în Viraje
  • Reduce viteza proporțional cu 1/eroare
  • Folosește media ponderată a tuturor celor 6 senzori
  • Adaugă recuperare: rotire pentru regăsirea liniei
  • Matrice mai largă = detectare mai timpurie
Probleme cu Senzorii
  • Calibrare la pornire: citește valori min/max
  • Prag = (min + max) / 2 pentru fiecare senzor
  • Montaj la 5–15mm de sol, testează înălțimea
  • Adaugă ecran de protecție la lumină
Viteze Diferite ale Motoarelor
  • Aplică un factor de corecție software
  • Folosește encodere pentru control în buclă închisă
  • Măsoară RPM real, calculează raportul
Resetări ale ESP32
  • Adaugă condensator 470μF–1000μF pe linia de alimentare
  • Alimentare separată: baterie→motoare, regulator→ESP32
  • Folosește LM7805 sau convertor buck pentru 5V stabil
Adaptare la Suprafață
  • Rutină de auto-calibrare la pornire
  • Stochează calibrarea în memoria ESP32 (NVS)
  • Prag adaptiv în timpul funcționării
// 07

TESTARE ȘI REGLARE PID

1

Test Senzori

Afișează valorile brute pe Serial. Verifică dacă fiecare senzor detectează alb/negru.

2

Test Motoare

Rulează fiecare motor la diferite valori PWM. Verifică direcția. Notează PWM-ul minim de pornire.

3

Control doar cu P

Setează Ki=0, Kd=0. Începe cu Kp=10, crește până când mașina urmărește linia dar oscilează.

4

Adaugă Derivata

Menține Kp la ~60% din valoarea critică. Crește Kd până când oscilațiile se opresc.

5

Adaugă Integrala

Doar dacă mașina deviază constant într-o parte. Folosește Ki foarte mic (0.01–0.1).

6

Optimizare Viteză

Crește viteza de bază treptat. Reglează Kd pentru fiecare viteză. Găsește viteza maximă stabilă.

// 08

ÎMBUNĂTĂȚIRI ȘI IDEI BONUS

Panou WiFi
ESP32 servește o pagină web cu date live de la senzori și valori PID. Reglare de pe telefon!
Gestionare Intersecții
Detectează intersecții în T și încrucișări. Programează reguli de prioritate.
Adaptare Viteză
Încetinește în curbe, accelerează pe linii drepte. Viteză = f(1/eroare).
Cronometru + Numărător Tururi
Detectează marcajul start/finiș. Numără tururile, afișează cel mai bun timp pe OLED.
Evitare Obstacole
Adaugă senzor ultrasonic HC-SR04. Oprește dacă există obstacol pe traseu.
Indicatoare LED
Viraj stânga = clipire stânga. Dreapta = clipire dreapta. Linie pierdută = roșu.
Control Bluetooth
Comută între modul autonom și manual de pe telefon, pentru depanare.
Înregistrare Date
Salvează datele senzorilor + PID pe card SD. Analizează pentru optimizare.