Name: Staicu Dan-Dominic
Group: 331CA
Acest proiect reprezintă o implementare practică a unui robot autonom de tip line follower, construit folosind placa Arduino Portenta H7. Scopul principal a fost dezvoltarea unui sistem capabil să detecteze și să urmeze o linie cu precizie, folosind un algoritm de control PID reglabil în timp real.
Ideea a pornit din dorința de a învăța cum să combin senzorică de precizie, control al motoarelor și interfețe moderne, într-un sistem embedded performant. Am ales Portenta H7 pentru a explora capabilitățile dual-core ale acesteia și pentru a pregăti o bază solidă pentru aplicații embedded mai complexe.
Consider că acest proiect este valoros atât pentru dezvoltarea mea personală în domeniul roboticii și automatizării, cât și ca prim pas spre participarea în competiții de tip Line Follower. Este o platformă extensibilă pe care pot continua să o îmbunătățesc și să o adaptez pentru trasee mai complexe și cerințe mai stricte.
Sistemul este compus din următoarele module:
Portenta H7 citește valorile de la senzori, calculează eroarea și aplică corecția PID asupra motoarelor prin driverul HR8833. Interfața web permite modificarea în timp real a valorilor KP, KI, KD și vitezei de referință.
Stadiul actual al implementării hardware
La acest moment, partea hardware a fost finalizată și asamblată complet. Toate modulele au fost testate individual (senzori, motoare, impeller, sursă alimentare), iar integrarea a fost validată pe platforma Portenta H7.
Lista de piese:
Descriere detaliată a funcționalității hardware
1. Microcontroller (Portenta H7)
Rol: creierul sistemului, citește date de la senzori, calculează corecția PID, generează semnale PWM pentru controlul motoarelor. Interfețe folosite: GPIO pentru selectarea canalelor multiplexorului (S0-S3) Analog input pentru semnalul de la senzori (SIG → A6) PWM output pentru controlul motoarelor (D5, D6) GPIO output pentru direcție (D4, D7) D8 pentru receptor IR
2. Senzori de linie (16 IR cu multiplexor analogic)
Modulul conține 16 senzori IR, multiplexați pe un singur canal analogic. Conexiuni: S0–S3: pinii digitali D0–D3 pentru selectarea canalului activ SIG: pinul analogic A6 Permite citirea rapidă a fiecărui senzor fără a aglomera pinii analogici ai Portenta.
3. Motor Driver HR8833
Controlează două motoare DC independent, pe bază de PWM și semnal de direcție. Pini utilizați: Motor 1: DIR (D4), PWM (D5) Motor 2: DIR (D7), PWM (D6) Asigură atât modurile „coast” cât și „brake”, pentru frânare rapidă.
4. Motoare Pololu + Roti aderente
Asigură tracțiune pe suprafață cu frecare redusă. Alimentate direct din driver, controlate fin via PWM.
5. Impeller
Efect de „downforce” pentru stabilitate crescută la viteze mari. Alimentat separat, are switch on/off pentru testare independentă.
6. Baterie LiPo 7.4V și Step-down 5V
Bateria furnizează energia principală pentru motoare și control. Regulatorul step-down convertește la 5V pentru Portenta, senzori și logica de control. Consumul estimat în sarcină maximă: ~1A pentru motoare, ~100-200mA pentru control/senzori.
Componentă | Pin Portenta H7 | Mod/Tip | Motiv/Utilizare |
————— | ————— | ———— | ———————————— |
Multiplexor S0 | D0 | OUTPUT | Selectare canal IR |
Multiplexor S1 | D1 | OUTPUT | Selectare canal IR |
Multiplexor S2 | D2 | OUTPUT | Selectare canal IR |
Multiplexor S3 | D3 | OUTPUT | Selectare canal IR |
Multiplexor SIG | A6 | ANALOG INPUT | Citire valoare IR |
Motor 1 DIR | D4 | OUTPUT | Direcție motor stânga |
Motor 1 PWM | D5 | PWM OUTPUT | Viteză motor stânga |
Motor 2 PWM | D6 | PWM OUTPUT | Viteză motor dreapta |
Motor 2 DIR | D7 | OUTPUT | Direcție motor dreapta |
IR Receiver | D8 | INPUT | Primire comandă pornire/oprire robot |
Impeller-ul
are un switch separat pentru a putea folosi robotul si fără a avea impeller-ul pornit.
Stadiul implementării software
Firmware-ul a fost dezvoltat în PlatformIO (cu suport Arduino), folosind C++ modular. Toate modulele principale (citirea senzorilor, controlul motoarelor, algoritmul PID, comunicarea cu interfața web) sunt implementate și testate pe hardware real.
Biblioteci folosite și motivare
Am evitat biblioteci „grele” sau generice pentru PID sau multiplexare, tocmai pentru a optimiza resursele pe Portenta H7 și a avea control complet asupra funcționalității.
Element de noutate / originalitate
Structura și arhitectura software
Organizare modulară:
Fluxul principal:
Validarea funcționalității
Calibrarea senzorilor
Optimizări și best-practices
https://youtube.com/shorts/tS6IaLmMsx4
Fişierele se încarcă pe wiki folosind facilitatea Add Images or other files. Namespace-ul în care se încarcă fişierele este de tipul :pm:prj2025:c? sau :pm:prj20??:c?:nume_student (dacă este cazul). Exemplu: Dan-Dominic Staicu, 331CA → :pm:prj2025:cc:dan_dominic.staicu.
Resurse Hardware
ST STM32H747XI Processor Datasheet
Resurse Software