This shows you the differences between two versions of the page.
|
pm:prj2025:iotelea:albert.antonescu [2025/05/30 09:06] albert.antonescu [Bibliografie/Resurse] |
pm:prj2025:iotelea:albert.antonescu [2025/05/30 14:05] (current) albert.antonescu [Concluzii] |
||
|---|---|---|---|
| Line 120: | Line 120: | ||
| === Mediu de dezvoltare === | === Mediu de dezvoltare === | ||
| - | * **PlatformIO + Visual Studio Code** – pentru codul C++ pe Arduino UNO.\ | + | * **PlatformIO + Visual Studio Code** – pentru codul C++ pe Arduino UNO.\\ |
| - | * **Python 3.10** – pentru scriptul de detecție și control al sistemului.\ | + | * **Python 3.10** – pentru scriptul de detecție și control al sistemului.\\ |
| * Testare interactivă cu **Serial Monitor** și **fereastră OpenCV**. | * Testare interactivă cu **Serial Monitor** și **fereastră OpenCV**. | ||
| === Librării și surse externe === | === Librării și surse externe === | ||
| - | * **Servo.h** – pentru controlul servomotoarelor.\ | + | * **Servo.h** – pentru controlul servomotoarelor.\\ |
| - | * **OpenCV** – pentru procesare imagine și detecție de forme.\ | + | * **OpenCV** – pentru procesare imagine și detecție de forme.\\ |
| - | * **PySerial** – pentru comunicare UART între PC și Arduino.\ | + | * **PySerial** – pentru comunicare UART între PC și Arduino.\\ |
| - | * **Numpy** – pentru calcule vectoriale și distanțe.\ | + | * **Numpy** – pentru calcule vectoriale și distanțe.\\ |
| === Structura codului === | === Structura codului === | ||
| Line 135: | Line 135: | ||
| ==== Pe Arduino (firmware) ==== | ==== Pe Arduino (firmware) ==== | ||
| - | * Implementare completă cu **scriere bare-metal** pentru: digitalRead, digitalWrite, analogRead.\ | + | * Implementare completă cu **scriere bare-metal** pentru: digitalRead, digitalWrite, analogRead.\\ |
| - | * Control **PWM** pentru cele 3 servomotoare: Pan, Tilt, Fire.\ | + | * Control **PWM** pentru cele 3 servomotoare: Pan, Tilt, Fire.\\ |
| - | * Control LED RGB + buzzer pentru feedback în timp real.\ | + | * Control LED RGB + buzzer pentru feedback în timp real.\\ |
| - | * Trimitere și recepționare comenzi prin **UART Serial**.\ | + | * Trimitere și recepționare comenzi prin **UART Serial**.\\ |
| - | * Implementare logica modurilor: `FREE`, `SCAN`, `LOCK`, `FIRE_WARN`, `MANUAL`.\ | + | * Implementare logica modurilor: `FREE`, `SCAN`, `LOCK`, `FIRE_WARN`, `MANUAL`.\\ |
| ==== Pe PC (Python + OpenCV) ==== | ==== Pe PC (Python + OpenCV) ==== | ||
| - | * Inițializare cameră și captură video în timp real.\ | + | * Inițializare cameră și captură video în timp real.\\ |
| - | * Detecție țintă: **HoughCircles** pentru identificarea unui cerc roșu (țintă).\ | + | * Detecție țintă: **HoughCircles** pentru identificarea unui cerc roșu (țintă).\\ |
| - | * Detecție punct laser: bazat pe intensitatea canalului roșu.\ | + | * Detecție punct laser: bazat pe intensitatea canalului roșu.\\ |
| - | * Aliniere dinamică a servomotoarelor în funcție de pozițiile detectate.\ | + | * Aliniere dinamică a servomotoarelor în funcție de pozițiile detectate.\\ |
| - | * Activare secvență de tragere când ținta este aliniată.\ | + | * Activare secvență de tragere când ținta este aliniată.\\ |
| - | * Control complet al modurilor și resetare din tastatură sau buton.\ | + | * Control complet al modurilor și resetare din tastatură sau buton.\\ |
| === Funcții cheie implementate === | === Funcții cheie implementate === | ||
| Line 154: | Line 154: | ||
| **Pe Arduino:** | **Pe Arduino:** | ||
| - | * `pinModeBare()`, `digitalWriteBare()`, `analogReadBare()` – acces direct la registre.\ | + | * `pinModeBare()`, `digitalWriteBare()`, `analogReadBare()` – acces direct la registre.\\ |
| - | * `beep(freq, durată)` – feedback sonor fără tone().\ | + | * `beep(freq, durată)` – feedback sonor fără tone().\\ |
| - | * `setRGB()` – stare vizuală în funcție de mod.\ | + | * `setRGB()` – stare vizuală în funcție de mod.\\ |
| - | * `loop()` – gestionează comenzi seriale + logica modului activ.\ | + | * `loop()` – gestionează comenzi seriale + logica modului activ.\\ |
| **Pe PC (Python):** | **Pe PC (Python):** | ||
| - | * `detect_target()` – caută cercuri și validează poziția.\ | + | * `detect_target()` – caută cercuri și validează poziția.\\ |
| - | * `detect_laser()` – localizează punctul roșu intens.\ | + | * `detect_laser()` – localizează punctul roșu intens.\\ |
| - | * `run_exploration_mode()` – mișcare servo stânga-dreapta și scanare automată.\ | + | * `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ă.\ | + | * `send(cmd)` – trimite comenzile UART către Arduino cu întârziere minimă controlată.\\ |
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 178: | Line 178: | ||
| **Demonstrație video:**\\ | **Demonstrație video:**\\ | ||
| - | ▶️ [Vizualizează pe YouTube](https://youtu.be/r3NM0cNHf28)\\ | + | ▶️ [[https://youtu.be/r3NM0cNHf28|Vizualizează un Demo]] |
| Line 187: | Line 187: | ||
| Pe lângă valoarea educativă și tehnică, proiectul a fost și o provocare practică în a integra mai multe concepte: PWM, UART, ADC, protocoale de comunicație și prelucrare imagine în timp real. | Pe lângă valoarea educativă și tehnică, proiectul a fost și o provocare practică în a integra mai multe concepte: PWM, UART, ADC, protocoale de comunicație și prelucrare imagine în timp real. | ||
| - | 📌 *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. 😄 | + | 📌 **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. 😄 |
| ===== Download ===== | ===== Download ===== | ||
| - | <note warning> | + | **📦 Arhivă completă proiect:** |
| - | 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ă ;-). | + | {{:pm:prj2025:iotelea:Auto-Turret-System.zip | descarcă Auto-Turret-System.zip}} |
| - | + | ||
| - | 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**. | + | |
| - | </note> | + | |
| - | + | ||
| - | ===== Jurnal ===== | + | |
| - | + | ||
| - | <note tip> | + | |
| - | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | |
| - | </note> | + | |
| + | **🔗 Repository GitHub:** | ||
| + | [[https://github.com/AlbertArt10/Auto-Turret-System|github.com/AntonescuAlbert/AutoTurret-PM2025]] | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||