This is an old revision of the document!
Lista de piese (Bill of Materials):
* Placă ESP32-CAM (cu cameră OV2640): Microcontroller-ul central care gestionează logica jocului, face pozele și comunică prin Wi-Fi cu scriptul Python pentru procesarea imaginilor. * Servomotor SG90: Acționează mecanic paharul pentru a amesteca zarurile fizice prin mișcări scurte și agresive la comanda microcontroller-ului. * Ecran LCD 2004 (sau 1602) cu modul I2C: Afișează meniurile, rândul jucătorilor, instrucțiunile defilante, punctajul și mesajul cu câștigătorul jocului. * 2 x Module Programator FTDI (CP2102/CH340):
* Butoane tactile: 2 bucăți ce permit Jucătorului 1 și Jucătorului 2 să aleagă modul de joc și să declanșeze “aruncarea” cu zarul. * Rezistoare 10kΩ: 2 bucăți folosite ca rezistențe de pull-down pentru butoane, prevenind declanșările false cauzate de zgomotul electromagnetic. * Breadboard: Placa de bază utilizată pentru rutarea separată a celor două surse de alimentare și conectarea tuturor firelor. * Set fire Dupont: Mamă-Mamă, Tată-Tată, Tată-Mamă, utilizate pentru realizarea tuturor conexiunilor electrice. * Pahar de plastic mic + 2 zaruri: Ansamblul mecanic fizic în care se desfășoară jocul.
Conexiunile hardware ale proiectului sunt următoarele:
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Programator FTDI 1 (Logică) | 5V / VCC | Bara 5V #1 (roșie - circuit logic) breadboard |
| Programator FTDI 1 (Logică) | GND | Bara GND (albastră - comună) breadboard |
| Programator FTDI 1 (Logică) | TX | U0R (RX) microcontroller |
| Programator FTDI 1 (Logică) | RX | U0T (TX) microcontroller |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Programator FTDI 2 (Putere Motor) | 5V / VCC | Bara 5V #2 (separată!) breadboard |
| Programator FTDI 2 (Putere Motor) | GND | Bara GND (albastră - comună) breadboard |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| ESP32-CAM | 5V | Bara 5V #1 (circuit logic) breadboard |
| ESP32-CAM | GND | Bara GND (albastră - comună) breadboard |
| ESP32-CAM | 3.3V | Bara 3.3V breadboard (pentru alimentarea butoanelor) |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Buton Jucator 1 | Pin alimentare | 3.3V breadboard |
| Buton Jucator 1 | Pin semnal (diagonala) | IO2 microcontroller |
| Buton Jucator 2 | Pin alimentare | 3.3V breadboard |
| Buton Jucator 2 | Pin semnal (diagonala) | IO12 microcontroller |
| Rezistoare 10kΩ | Capat 1 | Pin semnal buton (IO2, respectiv IO12) |
| Rezistoare 10kΩ | Capat 2 | Bara GND (albastră - comună) breadboard |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Ecran LCD I2C | GND | Bara GND (albastră - comună) breadboard |
| Ecran LCD I2C | VCC | Bara 5V #1 (circuit logic) breadboard |
| Ecran LCD I2C | SDA | IO15 microcontroller (Pin remapat) |
| Ecran LCD I2C | SCL | IO14 microcontroller (Pin remapat) |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Servomotor SG90 | GND (Fir Maro/Negru) | Bara GND (albastră - comună) breadboard |
| Servomotor SG90 | VCC (Fir Roșu/Mijlociu) | Bara 5V #2 (circuit putere - Programator 2) |
| Servomotor SG90 | Semnal (Fir Portocaliu) | IO13 microcontroller |
| Componenta | Pin componenta | Conectare |
|---|---|---|
| Camera OV2640 | Panglica FPC (24 pini) | Conector FPC dedicat pe placa ESP32-CAM |
Deoarece placa ESP32-CAM nu dispune de o mufă USB integrată pentru alimentare și programare, s-a optat inițial pentru utilizarea unui modul FTDI. Totuși, dinamica proiectului a impus o regândire a distribuției de curent. Servomotorul SG90, configurat să execute mișcări violente și bruște de 160 de grade pentru a amesteca eficient zarurile în paharul de plastic, generează vârfuri masive de consum de curent (aprox. 1 Amper la fiecare inversare de sens).
Pentru a preveni fenomenul de “brownout” (resetarea plăcii din cauza lipsei de curent), arhitectura breadboard-ului a fost împărțită într-un sistem hibrid cu două circuite de 5V izolate, susținute de două porturi USB distincte, dar având masa (GND) comună: - Circuitul Logic (Programatorul 1): Alimentează microcontroller-ul ESP32-CAM, senzorul camerei și lumina de fundal a ecranului LCD. - Circuitul de Forță (Programatorul 2): Este dedicat exclusiv alimentării servomotorului SG90. - Șina de 3.3V: Este alimentată de la ieșirea stabilizată a plăcii ESP32-CAM și este folosită exclusiv pentru logica butoanelor.
Butoanele tactile sunt configurate hardware în modul Pull-down, folosind rezistoare externe de 10kΩ conectate între pinii de semnal și masă (GND). Astfel, în stare de repaus, microcontroller-ul citește un semnal stabil de LOW (0V), iar la apăsarea butonului circuitul se închide pe diagonală, trimițând un semnal de HIGH (3.3V) către pinii IO2 și IO12.
Pentru afișajul interfeței utilizatorului și a meniurilor, a fost integrat un Ecran LCD cu modul I2C (PCF8574). Deoarece pinii I2C standard ai ESP32 (21 și 22) sunt rezervați intern de modulul camerei, comunicarea I2C a fost remapată software către pinii liberi IO14 (SCL) și IO15 (SDA).
Mecanismul de amestecare a zarurilor este acționat de servomotorul SG90, controlat prin semnal PWM pe pinul IO13. Paharul de plastic este atașat mecanic de brațul motorului. Modulul camerei OV2640 este conectat direct pe placa de dezvoltare prin interfața sa dedicată (FPC) și este orientat către interiorul bazei mecanismului, fiind responsabil de capturarea imaginilor cu zarurile stabilizate după încheierea cursei servomotorului. Imaginile sunt ulterior transmise prin Wi-Fi către un script extern Python care folosește algoritmi de Computer Vision pentru calcularea punctajului obținut de fiecare jucător.
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.