This is an old revision of the document!
Retro arcade games console - Rusu Bogdan, 332CA
Introducere
Proiectul meu consta in realizarea unei console de jocuri arcade retro (Tetris, Pacman si altele) din dorinta de a face un proiect pe care sa il pot folosi si dupa PM.
Consola va fi encapsulata intr-o carcasa printata 3d si va avea un ecran color pe care se desfasoara jocurile, incluzand un meniu de selectie. Pe langa acestea, vor fi amplasate butoane pentru controlul in cadrul jocurilor, pentru controlul sunetului sau a statusul consolei (on, sound, sleep).
Ceea ce doresc sa realizez este si functionalitatea de power management a consolei pentru conservarea energiei cand nu se joaca nimeni pe ea.
Ideea a pornit mai mult din dorinta de a face ceva fun si interactiv si sa invat mai mult despre cum se poate construi un proiect practic pana la stadiul de a fi chiar utilizabil.
Pentru salvarea high scores sau a nivelurilor la care jucatorul a ajuns voi folosi un card micro sd conectat la placuta care sa memoreze aceste date.
Descriere generală
Placuta de ESP32 va actiona drept 'creierul' consolei de joc. De la acesta se vor trimite comenzile de desenare prin SPI catre ecran, se vor salva si respectiv retrage datele despre highscores si nivelurile la care a ajuns jucatorul si va interpreta comenzile de la butoane prin intreruperi. De asemenea prin timerele interne ale placutei se va monitoriza perioada de inactivitate pentru a trece consola intr-un sistem de low power pentru conservarea bateriei.
Hardware Design
Placa de dezvoltare ESP32
Este “creierul” consolei: un microcontroller dual-core Tensilica LX6 la 240
MHz, cu 520 KB SRAM și Wi-Fi/Bluetooth integrate. Primește alimentare prin pinul VIN (5 V) sau prin USB, iar regulatorul onboard îi trimite stabil 3,3 V la nucleu. Toate perifericele (SPI, ADC, GPIO, PWM, Deep-Sleep) sunt gestionate de ESP32.
TFT 2.2″ ILI9341 cu microSD
Un display color 320×240 px care comunică prin SPI. Pe aceeași magistrală împarte datele între ecran și cardul microSD, având două CS-uri separate. Backlight-ul are un pin marcat “BL” cu “PWM SAFE” – silkscreen-ul indică faptul că placa conține intern tranzistor și rezistență de limitare, astfel încât poți aplica direct un semnal PWM din ESP32 pentru reglaj de luminozitate.
| Modul Pin | ESP32 Pin | Protocolă | Funcție |
| VCC | 3V3 | Power | Alimentare 3.3 V |
| GND | GND | Power | Masă comună |
| SCK | GPIO18 | SPI_CLK | Ceas SPI |
| MISO | GPIO19 | SPI_MISO | Date SPI din SD |
| MOSI | GPIO23 | SPI_MOSI | Date SPI către TFT/SD |
| CS | GPIO5 | SPI_CS | Chip-select pentru TFT |
| DC | GPIO2 | GPIO/SPI | Data/Command TFT |
| RST | GPIO16 | GPIO | Reset hardware TFT |
| SDCS | GPIO4 | SPI_CS | Chip-select pentru microSD |
| BL | GPIO15 | PWM | Reglaj backlight (PWM SAFE) |
Card microSD
Se introduce direct în slotul modulului TFT. Servește la stocarea high-score-urilor, configurațiilor și eventual a altor asset-uri (hărţi de nivel, fonturi). Accesul se face cu biblioteca FatFS prin
API-ul SD.begin(SD_CS) și operaţiuni standard SD.open()
Butoane (9×, INPUT_PULLUP + întreruperi)
| Funcție | GPIO Pin | Config | Interrupție |
| D-pad Sus | GPIO32 | INPUT_PULLUP | FALLING (apăsare) |
| D-pad Jos | GPIO33 | INPUT_PULLUP | FALLING (apăsare) |
| D-pad Stânga | GPIO25 | INPUT_PULLUP | FALLING (apăsare) |
| D-pad Dreapta | GPIO26 | INPUT_PULLUP | FALLING (apăsare) |
| Buton A | GPIO27 | INPUT_PULLUP | FALLING (apăsare) |
| Buton B | GPIO14 | INPUT_PULLUP | FALLING (apăsare) |
| Start | GPIO12 | INPUT_PULLUP | FALLING (apăsare) |
| Select | GPIO13 | INPUT_PULLUP | FALLING (apăsare) |
| Power | GPIO34 | INPUT_PULLUP + WAKE | FALLING (deep-sleep wake) |
Monitorizare nivel baterie
Două rezistoare (100kΩ/100 kΩ) formează un divizor care aduce maxim 4,2 V de la BAT+ la ~2,1 V, sigur pentru ADC-ul ESP32. Se conecteaza punctul de măsură la GPIO35 (ADC1_CH7) cu atenuare de 11 dB și măsori nivelul bateriei în cod, transformând valoarea ADC invers la tensiunea reală a pachetului.
| Divizor node | ESP32 Pin | Protocolă | Descriere |
| Între R1 și R2 | GPIO35 | ADC1_CH7 (ADC_11db) | Măsurare tensiune baterie (factor 2×) |
Alimentare și încărcare baterie
Două celule Li-Ion Samsung 25R (3,7 V nominal, 2 500 mAh fiecare) montate paralel într-un holder “go-bare”. În paralel obţii ~5 000 mAh și tensiune constantă de 3,7 V, cu curent disponibil de zeci de amperi pentru perioade scurte.
Încărcător CC/CV pentru o singură celulă Li-Ion, alimentat la 5 V (micro-USB sau boost). Conține circuit de protecție la supraîncărcare, scurt-circuit și sub-tensiune. Pinii B+/B– se conectează la baterii, iar OUT+/OUT– livrează tensiunea protejată către consolă.
Lista de piese:
Aici puneţi tot ce ţine de hardware design:
listă de piese
-
diagrame de semnal
rezultatele simulării
Software Design
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
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ă

.
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.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF