Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:atoader:mircea.braguta [2026/05/09 23:27]
mircea.braguta created
pm:prj2026:atoader:mircea.braguta [2026/05/25 08:07] (current)
mircea.braguta
Line 1: Line 1:
-====== ​Nume proiect ​======+====== ​Tracker Turret ​====== 
 ===== Introducere ===== ===== Introducere =====
  
-<note tip> +Tracker Turret este un sistem embedded capabil să detecteze și să urmărească automat o persoană folosind procesare video în timp real și control hardware al unei turete motorizate. Proiectul combină algoritmi de computer vision, comunicație serială și control hardware low-level într-o platformă integrată. 
-Prezentarea pe scurt a proiectului ​vostru+ 
-  ce face +Ideea proiectului ​pornit de la dorința de a crea un sistem care îmbină procesarea video cu controlul mecanic în timp real. Sistemul utilizează camere video conectate la o placă Avnet MaaXBoard pentru detectarea și urmărirea unei persoane folosind OpenCV. Datele rezultate sunt transmise către un microcontroler Arduino Nano ESP32 care controlează mișcarea servo motoarelor și afișarea informațiilor pe un display OLED. 
-  care este scopul lui + 
-  care a fost ideea de la care aţi pornit +Scopul principal al proiectului ​este realizarea unei platforme autonome capabile să
-  de ce credeţi că este util pentru ​alţii şpentru voi + 
-</​note>​+detecteze fețe în timp real 
 +urmărească poziția unei persoane 
 +controleze mecanic orientarea turetei 
 +afișeze starea sistemului pe display 
 +* comunice între module hardware diferite 
 + 
 +Proiectul poate avea aplicații în: 
 + 
 +* robotică 
 +* sisteme autonome 
 +* supraveghere inteligentă 
 +* automatizare 
 +* cercetare în computer vision și embedded systems 
 + 
 +Elementul de noutate ​al proiectului constă în integrarea unui sistem Linux embedded capabil de procesare video avansată cu un microcontroler dedicat controlului hardware în timp real, utilizând mai multe protocoale hardware ștehnici low-level studiate în laborator. 
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Sistemul este împăit în două componente principale:
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului ​în care interacţionează.+
  
-Exemplu ​de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html +* modulul ​de procesare video 
-</​note>​+* modulul de control hardware
  
-===== Hardware Design =====+==== Modulul de procesare video
  
-<note tip> +Procesarea video este realizată pe placa Avnet MaaXBoard ​i.MX8M care rulează Linux embeddedPe aceasta rulează un program Python bazat pe OpenCV responsabil pentru:
-Aici puneţi tot ce ţine de hardware design: +
-  * listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şdin datasheet-uri,​ e.ghttp://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
-===== Software Design =====+* capturarea imaginilor de la cameră 
 +* detectarea fețelor folosind clasificatori Haar Cascade 
 +* estimarea poziției țintei în imagine 
 +* generarea comenzilor de control
  
 +În funcție de poziția feței detectate în cadru:
  
-<note tip> +dacă fața este în stânga -> se transmite comanda ​de rotire stânga 
-Descrierea codului aplicaţiei (firmware):​ +dacă fața este în dreapta ​-> se transmite comanda de rotire dreapta 
-  ​mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +dacă fața este centrată -> tureta se oprește 
-  librării şi surse 3rd-party (e.g. Procyon AVRlib) +dacă nu există față detectată -sistemul intră în modul SEARCHING
-  algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  (etapa 3) surse şi funcţii implementate +
-</note>+
  
-===== Rezultate Obţinute =====+Comenzile sunt transmise prin UART către microcontroler.
  
-<note tip> +==== Modulul de control hardware
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Controlul hardware este realizat folosind Arduino Nano ESP32 programat folosind ESP-IDF și drivere hardware low-level.
  
-===== Download =====+Microcontrollerul este responsabil pentru:
  
-<note warning> +* controlul servo motoarelor folosind PWM hardware 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+* controlul display-ului OLED prin I2C 
 +* recepționarea comenzilor prin UART 
 +* actualizarea stării sistemului
  
-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:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +Comenzile primite ​de la MaaXBoard sunt:
-</​note>​+
  
-===== Jurnal =====+^ Comandă ^ Funcție ^ 
 +| C0 | Oprire / țintă centrată | 
 +| C1 | Rotire stânga | 
 +| C2 | Rotire dreapta | 
 +| C3 | Mod SEARCHING |
  
-<note tip> +În funcție de comanda primită:
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</​note>​+
  
-===== Bibliografie/Resurse ​=====+* servo motorul este mișcat 
 +* display-ul OLED este actualizat 
 +* starea sistemului este modificată 
 + 
 +Display-ul OLED afișează:​ 
 + 
 +* DETECTED -> atunci când există o față detectată 
 +* SEARCHING -> atunci când nu există țintă detectată 
 + 
 +===== Schema bloc ===== 
 + 
 +* Cameră USB -> MaaXBoard i.MX8M 
 +* OpenCV -> Detectare față și tracking 
 +* Algoritm decizie -> Determinare direcție țintă 
 +* UART -> Transmitere comenzi 
 +* Arduino Nano ESP32 -> Control hardware 
 +* PWM -> Control servo motor 
 +* I2C -> Control display OLED 
 +* OLED SSD1306 -> Afișare stare sistem 
 + 
 +===== Arhitectura sistemului ===== 
 + 
 +==== Fluxul complet de funcționare 
 + 
 +1. Camera transmite imagini către MaaXBoard. 
 +2. OpenCV procesează imaginea și detectează fața. 
 +3. Sistemul determină poziția feței în cadru. 
 +4. Se generează o comandă UART. 
 +5. Comanda este transmisă către Arduino Nano ESP32. 
 +6. ESP32 actualizează poziția servo motorului. 
 +7. ESP32 actualizează mesajul de pe display-ul OLED. 
 + 
 +Acest proces rulează continuu în timp real. 
 + 
 +===== Implementare hardware ===== 
 + 
 +==== Stadiul actual al implementării hardware 
 + 
 +În momentul actual au fost implementate și validate: 
 + 
 +* comunicația UART între MaaXBoard și ESP32 
 +* controlul servo motorului folosind PWM 
 +* comunicația I2C cu display-ul OLED SSD1306 
 +* detectarea fețelor folosind OpenCV 
 +* transmiterea comenzilor de tracking în timp real 
 + 
 +Sistemul funcționează complet end-to-end:​ 
 + 
 +* detectare față 
 +* transmitere comandă 
 +* mișcare servo 
 +* actualizare display 
 + 
 +===== Componente hardware ===== 
 + 
 +^ Componentă ^ Rol în proiect ^ 
 +| Cameră USB | Captură imagine pentru tracking | 
 +| Avnet MaaXBoard i.MX8M | Procesare video și rulare OpenCV | 
 +| Arduino Nano ESP32 | Control hardware și comunicare | 
 +| Servo motor | Mișcarea turetei | 
 +| Display OLED SSD1306 I2C | Afișarea stării sistemului | 
 +| Breadboard | Realizarea conexiunilor | 
 +| Fire Dupont | Conexiuni electrice | 
 +| Alimentare USB | Alimentarea sistemului | 
 +| Convertor UART | Debugging și testare comunicație | 
 + 
 +===== Conexiuni hardware ===== 
 + 
 +==== UART MaaXBoard -> ESP32 
 + 
 +^ MaaXBoard ^ ESP32 ^ Funcție ^ 
 +| UART2_TX | RX0 | Transmitere comenzi | 
 +| GND | GND | Referință comună | 
 + 
 +Protocolul UART utilizează:​ 
 + 
 +* baudrate: 9600 
 +* comenzi text de forma C0/C1/C2/C3 
 + 
 +==== Servo motor 
 + 
 +^ Servo ^ ESP32 ^ 
 +| Signal | GPIO9 | 
 +| VCC | Alimentare externă | 
 +| GND | GND comun | 
 + 
 +Servo motorul este controlat folosind PWM hardware la 50Hz. 
 + 
 +==== Display OLED SSD1306 
 + 
 +^ OLED ^ ESP32 ^ 
 +| SDA | A4 | 
 +| SCK/SCL | A5 | 
 +| VCC | 3.3V | 
 +| GND | GND | 
 + 
 +Display-ul utilizează protocolul I2C și a fost detectat la adresa 0x3C. 
 + 
 +===== Functionalități utilizate din laborator ===== 
 + 
 +==== PWM 
 + 
 +PWM-ul hardware este utilizat pentru controlul servo motorului. 
 + 
 +Avantaje: 
 + 
 +* control precis al poziției 
 +* funcționare fluidă 
 +* utilizare eficientă a hardware-ului 
 + 
 +==== UART 
 + 
 +UART este utilizat pentru comunicația dintre MaaXBoard și ESP32. 
 + 
 +Avantaje: 
 + 
 +* implementare simplă 
 +* comunicație robustă 
 +* latență redusă 
 + 
 +==== I2C 
 + 
 +I2C este utilizat pentru controlul display-ului OLED SSD1306. 
 + 
 +Avantaje: 
 + 
 +* număr redus de fire 
 +* integrare simplă 
 +* compatibilitate ridicată 
 + 
 +==== Timere hardware 
 + 
 +Timerele hardware sunt utilizate pentru: 
 + 
 +* generarea semnalului PWM 
 +* actualizarea periodică a servo motorului 
 +* sincronizarea task-urilor FreeRTOS 
 + 
 +===== Implementare software ===== 
 + 
 +==== Stadiul actual al implementării software 
 + 
 +Au fost implementate:​ 
 + 
 +* captură video OpenCV 
 +* detectare fețe Haar Cascade 
 +* tracking în timp real 
 +* generare comenzi UART 
 +* parser UART pe ESP32 
 +* control servo PWM 
 +* control OLED SSD1306 
 +* task-uri FreeRTOS pentru paralelizare 
 + 
 +===== Biblioteci utilizate ===== 
 + 
 +^ Bibliotecă ^ Rol ^ 
 +| OpenCV | Detectare și procesare imagine | 
 +| pyserial | Comunicație UART pe Linux | 
 +| ESP-IDF | Programare low-level ESP32 | 
 +| driver/​uart.h | Control UART hardware | 
 +| driver/​ledc.h | PWM hardware | 
 +| driver/​i2c.h | Comunicație I2C | 
 +| FreeRTOS | Task scheduling | 
 + 
 +===== Motivarea alegerii tehnologiilor ===== 
 + 
 +==== OpenCV 
 + 
 +OpenCV oferă: 
 + 
 +* algoritmi optimizați 
 +* detectare rapidă 
 +* compatibilitate Linux embedded 
 +* integrare simplă cu Python 
 + 
 +==== ESP-IDF 
 + 
 +ESP-IDF permite: 
 + 
 +* acces direct la periferice hardware 
 +* control low-level 
 +* performanță ridicată 
 +* utilizarea driverelor hardware oficiale 
 + 
 +==== UART 
 + 
 +UART a fost ales deoarece: 
 + 
 +* este simplu de implementat 
 +* este robust 
 +* necesită puține resurse hardware 
 +* oferă latență mică 
 + 
 +===== Optimizări realizate ===== 
 + 
 +Pentru creșterea performanței au fost realizate următoarele optimizări:​ 
 + 
 +* reducerea rezoluției imaginii pentru creșterea FPS-ului 
 +* transmiterea comenzilor sub formă compactă 
 +* utilizarea task-urilor separate pentru UART și servo 
 +* utilizarea PWM hardware în loc de software PWM 
 +* utilizarea comunicației I2C hardware 
 +* reducerea latenței UART prin scăderea baudrate-ului și stabilizarea comunicației 
 + 
 +===== Validare și testare ===== 
 + 
 +Sistemul a fost validat prin: 
 + 
 +* testarea comunicației UART 
 +* testarea PWM pentru servo 
 +* scanarea magistralei I2C 
 +* detectarea display-ului la adresa 0x3C 
 +* validarea tracking-ului facial 
 +* testarea mișcării turetei în timp real 
 + 
 +Au fost validate: 
 + 
 +* funcționarea comunicației dintre module 
 +* afișarea mesajelor pe OLED 
 +* reacția servo motorului la poziția feței 
 +* funcționarea în timp real a sistemului 
 + 
 +===== Calibrare ===== 
 + 
 +Calibrarea sistemului a fost realizată prin: 
 + 
 +* ajustarea dead-zone-ului pentru tracking 
 +* reglarea vitezei servo motorului 
 +* ajustarea parametrilor Haar Cascade 
 +* configurarea rezoluției optime pentru cameră 
 +* ajustarea frecvenței comenzilor UART 
 + 
 +Scopul calibrării a fost obținerea unei mișcări stabile și reducerea oscilațiilor sistemului. 
 + 
 +===== Structura software ===== 
 + 
 +Software-ul este împărțit în: 
 + 
 +==== MaaXBoard Linux 
 + 
 +* captură video 
 +* detectare fețe 
 +* logică tracking 
 +* generare comenzi UART 
 + 
 +==== ESP32 
 + 
 +* task UART 
 +* task servo 
 +* control OLED 
 +* PWM hardware 
 +* I2C hardware 
 + 
 +Componentele comunică folosind un protocol UART simplu bazat pe comenzi text. 
 + 
 +===== Demonstrarea funcționalității ===== 
 + 
 +Pentru demonstrarea proiectului vor fi prezentate:​ 
 + 
 +* detectarea unei persoane în timp real 
 +* rotirea turetei după poziția țintei 
 +* afișarea stării pe display-ul OLED 
 +* transmiterea comenzilor UART 
 +* funcționarea sistemului embedded complet 
 + 
 +Vor fi atașate: 
 + 
 +* imagini cu conexiunile hardware 
 +* capturi din timpul funcționării 
 +* demonstrație video a proiectului 
 + 
 +===== Concluzii ​=====
  
-<​note>​ +Tracker Turret demonstrează integrarea ​cu succes a:
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</​note>​+
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​+* computer vision 
 +* embedded Linux 
 +* control hardware low-level 
 +* comunicații seriale 
 +* protocoale hardware 
 +* sisteme real-time
  
 +Proiectul reprezintă o combinație practică între software și hardware și evidențiază utilizarea conceptelor studiate în laborator într-un sistem complet funcțional.
  
pm/prj2026/atoader/mircea.braguta.1778358443.txt.gz · Last modified: 2026/05/09 23:27 by mircea.braguta
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0