This is an old revision of the document!


Portal Turret

Introducere

Proiectul constă într-o turelă asemănătoare celor din jocul Portal, care țintește un laser către un obiect aflat în mișcare și simulează descărcarea unei arme folosind efecte sonore și lumini.

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.

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.

Descriere generală

Componentele principale ale proiectului sunt vizibile în schema bloc de mai sus.

Proiectul conține două microprocesoare ce comunică prin protocolul SLIP, implementat peste UART.

Arduino Uno R3 comandă prin PWM două servomotoare și o diodă laser pentru țintire și LED-uri RGB. În plus, citește valoarea unui potențiometru prin ADC pentru a seta volumul sunetelor.

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

Piesele folosite în proiect:

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

Sistemul software urmează un automat finit de stări reprezentat în diagrama de mai jos:

Cele două microprocesoare care implementează acest automat au responsabilități diferite și comunică folosind protocolul point-to-point SLIP peste UART.

Rezultate Obţinute

Concluzii

Download

Jurnal

Diagrama Gantt curentă:

Checkpoint – 9 mai 2026

De când am stabilit tema proiectului și până la acest checkpoint am atins următoarele obiective:

  • Am procurat toate piesele necesare și am asamblat platforma de pan + tilt.
  • Am implementat comunicarea full-duplex prin mesaje între cele două microprocesoare.
  • Am implementat o formă preliminară de motion detection pe ESP32-CAM.
  • Am integrat controlul servomotoarelor de pe Arduino cu notificările de mișcare de la ESP32-CAM.

Bibliografie/Resurse

pm/prj2026/alexandru.jipa2803/cosmin_stefan.popa.1778362408.txt.gz · Last modified: 2026/05/10 00:33 by cosmin_stefan.popa
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