This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.jipa2803:cosmin_stefan.popa [2026/05/09 19:23] cosmin_stefan.popa [Jurnal] |
pm:prj2026:alexandru.jipa2803:cosmin_stefan.popa [2026/05/10 08:07] (current) cosmin_stefan.popa [Software Design] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| Proiectul fiind destinat exclusiv pentru divertisment, este util în măsura în care creează un efect spectaculos și urmărește cu succes o persoană care trece în fața lui. Pentru mine este util fiindcă reprezintă un prilej de a-mi pune în exercițiu abilități fundamentale de inginer: proiectarea unui sistem complex ce conține module cu interfețe diferite, dezvoltarea componentelor independente și integrarea lor în cadrul sistemului. | Proiectul fiind destinat exclusiv pentru divertisment, este util în măsura în care creează un efect spectaculos și urmărește cu succes o persoană care trece în fața lui. Pentru mine este util fiindcă reprezintă un prilej de a-mi pune în exercițiu abilități fundamentale de inginer: proiectarea unui sistem complex ce conține module cu interfețe diferite, dezvoltarea componentelor independente și integrarea lor în cadrul sistemului. | ||
| + | |||
| + | <note tip>**Ipoteză** | ||
| + | |||
| + | Credem că prelucrarea morfologică a imaginilor va îmbunătăți precizia de detectare a mișcării fiindcă va reduce contribuția zgomotului vizual la diferențele observate între cadre.</note> | ||
| + | |||
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| Line 17: | Line 22: | ||
| ESP32-CAM este o placă de dezvoltare cu un modul de cameră OV2640. ESP32-CAM comandă prin I2S un amplificator care transmite semnalul de output unui difuzor de 4 ohmi. | ESP32-CAM este o placă de dezvoltare cu un modul de cameră OV2640. ESP32-CAM comandă prin I2S un amplificator care transmite semnalul de output unui difuzor de 4 ohmi. | ||
| + | |||
| + | ==== Ținte de performanță ==== | ||
| + | |||
| + | ^ Metrică ^ Țintă ^ Măsurare ^ | ||
| + | | Latența detecției de mișcare | < 200 ms | Timestamp la captura camerei și mișcarea servomotorului | | ||
| + | | Acuratețea urmăririi, la iluminare stabilă | > 80% din timp | Inspecție vizuală directă | | ||
| + | | Consum total de curent | < 1.5 A | Ampermetru în serie pe alimentare | | ||
| + | |||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| Line 23: | Line 36: | ||
| Piesele folosite în proiect: | Piesele folosite în proiect: | ||
| - | * Arduino Uno R3 | ||
| - | * ESP32-CAM | ||
| - | * 2x servomotoare SG90 | ||
| - | * suport pan/tilt | ||
| - | * modul diodă laser | ||
| - | * amplificator I2S MAX98357A | ||
| - | * speaker 4 ohmi | ||
| - | * 4x LED RGB anod comun | ||
| - | * 3x tranzistor 2N2222 | ||
| - | * potențiometru | ||
| - | * adaptor USB-C | ||
| - | * rezistori, fire | ||
| + | ^ Piesă ^ Folosință ^ | ||
| + | | Arduino Uno R3 | Control lumini și servomotoare, citire volum | | ||
| + | | ESP32-CAM | Detecție mișcare, redare sunete | | ||
| + | | 2x servomotoare SG90 | Țintirea laserului | | ||
| + | | platformă pan + tilt | Suport pentru servomotoare | | ||
| + | | modul diodă laser | Feedback vizual pentru urmărire | | ||
| + | | amplificator I2S MAX98357A | Conversie digital-to-analog și amplificare sunet | | ||
| + | | speaker 4 ohmi | Redare sunet | | ||
| + | | 4x LED RGB anod comun | Efecte de lumină | | ||
| + | | 3x tranzistor 2N2222 | Comutare LED-uri | | ||
| + | | potențiometru | Schimbarea volumului | | ||
| + | | adaptor USB-C | Alimentare de la sursă externă | | ||
| + | | rezistori, fire | Conectare pini, divizor de tensiune etc. | | ||
| + | |||
| + | Dintre pinii plăcii Arduino Uno, am folosit **0** și **1** pentru comunicarea prin UART cu ESP32. Divizorul de tensiune este necesar întrucât Arduino furnizează 5V pe pinul TX în timp ce ESP32 folosește logică digitală de 3.3V. Pinii GPIO **3**, **5**, **6**, **11** au fost aleși pentru a comanda dioda laser și LED-urile, iar pinii **9** și **10**, care pot furniza semnal PWM, au fost aleși pentru controlul servomotoarelor. Pinul **A0** servește la citirea valorii potențiometrului. | ||
| + | |||
| + | Pe placa ESP32-CAM am folosit pinii **13**, **14** și **15** pentru comunicare prin I2S cu amplificatorul, respectiv pinii **12** și **16** pentru comunicarea prin UART cu Arduino. | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| + | Sistemul software urmează un automat finit de stări reprezentat în diagrama de mai jos: | ||
| + | |||
| + | {{ :pm:prj2026:alexandru.jipa2803:cosmin_stefan.popa:automat-2.png?350 |}} | ||
| + | |||
| + | Cele două microprocesoare care implementează acest automat au responsabilități diferite și comunică folosind protocolul point-to-point SLIP peste UART. | ||
| + | |||
| + | Subsistemul de pe ESP32-CAM conține două taskuri de FreeRTOS prin intermediul cărora: | ||
| + | * Prelucrează imaginile obținute de la cameră pentru a detecta mișcarea. | ||
| + | * Decide starea sistemului. | ||
| + | * Trimite coordonatele mișcării către Arduino Uno R3. | ||
| + | * Citește instrucțiuni legate de sunet de la Arduino Uno R3. | ||
| + | * Redă prin I2S sunete stocate în memoria flash. | ||
| + | |||
| + | Subsistemul de pe Arduino Uno R3: | ||
| + | * Primește coordonatele mișcării de la ESP32-CAM și ațintește vertiginos laserul spre subiect ;-) folosind servomotoarele. | ||
| + | * Citește volumul de la potențiometru și trimite valoarea către ESP32-CAM. | ||
| + | * Primește acțiuni specifice fiecărei stări (ex. pornire laser, pornire LED-uri etc.). | ||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| Line 47: | Line 82: | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| + | Diagrama Gantt curentă: | ||
| + | {{ :pm:prj2026:alexandru.jipa2803:cosmin_stefan.popa:gantt-mai-9-fix.png?700 |}} | ||
| ==== Checkpoint – 9 mai 2026 ==== | ==== Checkpoint – 9 mai 2026 ==== | ||