Differences

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

Link to this comparison view

pm:prj2025:iotelea:albert.antonescu [2025/05/30 08:34]
albert.antonescu [Schemată electrică generală]
pm:prj2025:iotelea:albert.antonescu [2025/05/30 14:05] (current)
albert.antonescu [Concluzii]
Line 81: Line 81:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-==== Listă componente utilizate ====+==== Listă componente utilizate====
  
 **Microcontroler:​** Arduino UNO R3\\ **Microcontroler:​** Arduino UNO R3\\
Line 92: Line 92:
 **Alte piese:** Breadboard, fire jumper, rezistențe 10kΩ, sursă externă 5V/2A\\ **Alte piese:** Breadboard, fire jumper, rezistențe 10kΩ, sursă externă 5V/2A\\
  
-===== Hardware Design ===== 
  
 ==== Schemată electrică generală ==== ==== Schemată electrică generală ====
  
-{{:​pm:​prj2025:​iotelea:​autoturret-schemabloc.png?​300&​right | Schema electrică – Auto-Turret}}+{{:​pm:​prj2025:​iotelea:​autoturret-schema-finala.png?​300&​right | Schema electrică – Auto-Turret}}
 \\ \\
-\\ + 
-\\ +**Diagrame semnal:**\\
-=== Diagrame semnal ===+
  
   * Semnal PWM generat de funcția `servo.writeMicroseconds()` pentru Pan/​Tilt/​Fire.\\   * Semnal PWM generat de funcția `servo.writeMicroseconds()` pentru Pan/​Tilt/​Fire.\\
Line 106: Line 104:
   * Citire ADC de la joystick (valorile analogice pe A4 și A5).\\   * Citire ADC de la joystick (valorile analogice pe A4 și A5).\\
  
-=== Simulare și testare ​===+**Simulare și testare**\\
  
   * Fiecare componentă a fost testată individual înainte de integrare.\\   * Fiecare componentă a fost testată individual înainte de integrare.\\
Line 112: Line 110:
   * S-au utilizat **delay-uri controlate** pentru sincronizarea trăgaciului și LED/​buzzer.\\   * S-au utilizat **delay-uri controlate** pentru sincronizarea trăgaciului și LED/​buzzer.\\
  
-==== Diagrame semnal ==== 
- 
-• Semnal PWM generat de funcția `servo.writeMicroseconds()` pentru Pan/​Tilt/​Fire.\\ 
-• Semnal digital ON/OFF pentru LED-uri și buzzer.\\ 
-• Citire ADC de la joystick (valorile analogice pe A4 și A5).\\ 
  
 ==== Simulare și testare ==== ==== Simulare și testare ====
Line 125: Line 118:
 ===== Software Design ===== ===== Software Design =====
  
 +=== Mediu de dezvoltare ===
  
-<note tip> +  ​**PlatformIO + Visual ​Studio ​Code** – pentru codul C++ pe Arduino UNO.\\ 
-Descrierea codului aplicaţiei (firmware):​ +  * **Python 3.10** – pentru scriptul de detecție și control al sistemului.\\ 
-  ​mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  * Testare interactivă cu **Serial Monitor** ș**fereastră OpenCV**.
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţsă le implementaţi +
-  ​(etapa 3) surse şi funcţii implementate +
-</​note>​+
  
 +=== Librării și surse externe ===
 +
 +  * **Servo.h** – pentru controlul servomotoarelor.\\
 +  * **OpenCV** – pentru procesare imagine și detecție de forme.\\
 +  * **PySerial** – pentru comunicare UART între PC și Arduino.\\
 +  * **Numpy** – pentru calcule vectoriale și distanțe.\\
 +
 +=== Structura codului ===
 +
 +==== Pe Arduino (firmware) ====
 +
 +  * Implementare completă cu **scriere bare-metal** pentru: digitalRead,​ digitalWrite,​ analogRead.\\
 +  * Control **PWM** pentru cele 3 servomotoare:​ Pan, Tilt, Fire.\\
 +  * Control LED RGB + buzzer pentru feedback în timp real.\\
 +  * Trimitere și recepționare comenzi prin **UART Serial**.\\
 +  * Implementare logica modurilor: `FREE`, `SCAN`, `LOCK`, `FIRE_WARN`,​ `MANUAL`.\\
 +
 +==== Pe PC (Python + OpenCV) ====
 +
 +  * Inițializare cameră și captură video în timp real.\\
 +  * Detecție țintă: **HoughCircles** pentru identificarea unui cerc roșu (țintă).\\
 +  * Detecție punct laser: bazat pe intensitatea canalului roșu.\\
 +  * Aliniere dinamică a servomotoarelor în funcție de pozițiile detectate.\\
 +  * Activare secvență de tragere când ținta este aliniată.\\
 +  * Control complet al modurilor și resetare din tastatură sau buton.\\
 +
 +=== Funcții cheie implementate ===
 +
 +**Pe Arduino:**
 +
 +  * `pinModeBare()`,​ `digitalWriteBare()`,​ `analogReadBare()` – acces direct la registre.\\
 +  * `beep(freq, durată)` – feedback sonor fără tone().\\
 +  * `setRGB()` – stare vizuală în funcție de mod.\\
 +  * `loop()` – gestionează comenzi seriale + logica modului activ.\\
 +
 +**Pe PC (Python):**
 +
 +  * `detect_target()` – caută cercuri și validează poziția.\\
 +  * `detect_laser()` – localizează punctul roșu intens.\\
 +  * `run_exploration_mode()` – mișcare servo stânga-dreapta și scanare automată.\\
 +  * `send(cmd)` – trimite comenzile UART către Arduino cu întârziere minimă controlată.\\
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +{{:​pm:​prj2025:​iotelea:​autoturret-final-poza.jpg?​200&​right | Imagine cu proiectul real – Auto-Turret activ}} 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+\\ 
-</note>+ 
 +**Performanță:**\\ 
 +  * Detecție fiabilă a țintei (cerc) și a laserului cu OpenCV.\\ 
 +  * Mișcare fluidă a servomotoarelor pentru urmărire pe două axe (pan/tilt).\\ 
 +  * Activare precisă a trăgaciului când ținta este centrată.\\ 
 +  * Moduri de operare complet funcționale:​ FREE, SCAN, LOCK, FIRE_WARN, MANUAL.\\ 
 +  * Feedback vizual și sonor prin LED RGB și buzzer.\\ 
 + 
 +**Demonstrație video:​**\\ 
 +▶️ [[https://​youtu.be/​r3NM0cNHf28|Vizualizează un Demo]] 
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Proiectul **Sistem Automat de Țintire** a reușit să combine eficient hardware-ul de tip embedded cu procesarea vizuală de pe PC. Am integrat cu succes controlul prin UART, logica de moduri, interfață vizuală (LED RGB), feedback acustic (buzzer), control manual (joystick) și funcționalitate completă de tragere automată.
  
-<note warning>​ +Pe lângă valoarea educativă și tehnică, proiectul a fost și o provocare practică în a integra mai multe conceptePWMUARTADCprotocoale ​de comunicație șprelucrare imagine în timp real.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurseschemeetc. Un fişier READMEun ChangeLog, un script ​de compilare şcopiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-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**. +📌 **Notă importantă:** Aproximativ ​**jumătate din problemele întâlnite** în faza de prototipare s-au rezolvat rapid cu ajutorul ​**benzii adezive**. Fixările provizorii au devenit permanente, iar improvizația a făcut parte din procesul creativ. 😄
-</​note>​+
  
-===== Jurnal ​=====+===== Download ​=====
  
-<note tip> +**📦 Arhivă completă proiect:** 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect ​progresul proiectului. +{{:​pm:​prj2025:​iotelea:​Auto-Turret-System.zip | descarcă Auto-Turret-System.zip}}
-</​note>​+
  
 +**🔗 Repository GitHub:**
 +[[https://​github.com/​AlbertArt10/​Auto-Turret-System|github.com/​AntonescuAlbert/​AutoTurret-PM2025]]
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +=== Resurse Software ​=== 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** ​şi **Resurse Hardware**. +  ​[[https://​docs.opencv.org/​|OpenCV Documentation]] 
-</note>+  ​[[https://​www.arduino.cc/​reference/​en/​|Arduino Reference]] 
 +  ​[[https://​pyserial.readthedocs.io/​|PySerial Documentation]] 
 + 
 +=== Resurse Hardware ​=== 
 +  ​[[https://​datasheetspdf.com/​pdf-file/​847115/​TowerPro/​SG90/​1|Datasheet SG90 Servomotor]] 
 +  ​[[https://​www.handsontec.com/​dataspecs/​motor/​MG996R%20Servo.pdf|Datasheet MG996R Servomotor]] 
 +  * [[https://​components101.com/​modules/​ps2-joystick-module|Joystick PS2 Module Pinout]] 
 +  * [[https://​components101.com/​buzzer-pinout-working-applications|Buzzer pasiv – circuit și funcționare]]
  
-<​html><​a class="media mediafile mf_pdf"​ href="?do=export_pdf">​Export to PDF</​a></​html>​+=== Alte === 
 +  * Video tutoriale Arduino + OpenCV de pe YouTube 
 +  * Exemple de cod din laboratoarele PM
  
-}} 
pm/prj2025/iotelea/albert.antonescu.1748583250.txt.gz · Last modified: 2025/05/30 08:34 by albert.antonescu
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