This shows you the differences between two versions of the page.
pm:prj2025:iotelea:albert.antonescu [2025/05/30 14:01] albert.antonescu [Software Design] |
pm:prj2025:iotelea:albert.antonescu [2025/05/30 14:05] (current) albert.antonescu [Concluzii] |
||
---|---|---|---|
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 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 ===== |