This is an old revision of the document!
Consola Retro Modulara (GameBoy Clone)
Introducere
Acest proiect consta in realizarea unei console de jocuri retro (asemanatoare clasicului GameBoy), construita “from scratch” pe un breadboard in jurul unui microcontroler ATmega328P standalone.
Ce face: Consola ruleaza jocuri clasice (precum Snake, Pong etc.) care nu sunt stocate in mod permanent in memoria procesorului, ci sunt incarcate dinamic de pe carduri MicroSD, acestea actionand asemenea “casetelor” fizice din anii '90.
Ideea de la care am pornit: Nostalgia consolelor clasice si dorinta de a crea un sistem modular, in care schimbarea jocului sa presupuna o actiune fizica (schimbarea cardului), fara a mai conecta placa la un laptop pentru scriere de cod.
De ce este util: Pentru mine este un exercitiu excelent de intelegere a memoriei flash, protocolului SPI si sistemelor de fisiere (FAT32) la nivel bare-metal. Pentru ceilalti, poate servi ca platforma educationala de dezvoltare a jocurilor embedded cu resurse extrem de limitate.
Descriere generala
Arhitectura sistemului se bazeaza pe o unitate centrala de procesare minimala, a carei functionalitate se extinde prin periferice de intrare (butoane, joystick), iesire (display) si memorie (card SD).
Module si interactiune:
Unitatea de procesare: Microcontrolerul ATmega328P. Acesta orchestreaza intregul sistem. La pornire (reset), executa codul din sectiunea de bootloader.
Sistemul de memorie (SPI): Modulul MicroSD comunica pe magistrala SPI. Bootloader-ul monteaza sistemul FAT, cauta un fisier binar (.HEX sau .BIN) si, daca gaseste o “caseta” noua, scrie continutul in memoria Flash interna a MCU, dupa care cedeaza controlul jocului.
Sistemul grafic (I2C): Un ecran OLED de 0.96 inch (sau 1.3 inch) primeste bufferele de pixeli prin protocolul I2C. Consuma doar doi pini (SDA, SCL) si ofera un contrast perfect pentru jocurile retro pixel-art.
Interfata de control (Digital IO): Un joystick 5D (5-directional navigation switch) pentru navigare, completat de 5 butoane tip push pentru actiuni suplimentare (A, B, Start, Select, Reset). Toate folosesc rezistentele interne de pull-up ale MCU-ului si comuta in LOW la apasare, eliminand nevoia componentelor externe.
Modulul de alimentare: O sursa externa (baterie 9V) este stabilizata la 5V curat de un regulator liniar L7805CV, protejat de condensatori de decuplare, oferind curentul necesar atat cipului, cat si ecranului si modulului SD.
Hardware Design
Design-ul fizic a fost conceput pentru a fi cat mai compact si stabil, folosind fire rigide pe breadboard pentru a minimiza “padurea” de cabluri si a oferi un aspect curat.
Lista de piese:
1 x Microcontroler Microchip ATmega328P-PU (fara placa Arduino)
1 x Cristal oscilator de 16
MHz si 2 x Condensatori ceramici de 22pF
1 x Regulator de tensiune L7805CV + Condensatori filtrare (10uF / 100uF)
1 x Display OLED 0.96” (sau 1.3”) I2C (Driver SSD1306/SH1106)
1 x Modul cititor MicroSD Card (Interfata SPI)
1 x Joystick 5D (5-directional navigation switch)
5 x Micro-switch-uri (Butoane tip push — A, B, Start, Select, Reset)
1 x Breadboard 830 puncte
Fire de conexiune rigide si flexibile
1 x Conector baterie 9V
Software Design
Dezvoltarea software este impartita in doua mari categorii: Bootloader-ul de sistem (care gestioneaza memoria) si Engine-ul jocurilor (firmware-ul efectiv).
Logica jocului (Ex: Snake): Foloseste un sistem de tip Game Loop (Update & Draw). Memoria RAM de doar 2KB a ATmega328P limiteaza buffer-ul grafic, motiv pentru care randarea se face prin paginare sau direct pe componente bloc (8×8 pixeli) pentru a salva memorie. Joystick-ul si butoanele sunt citite pe baza de polling in bucla principala sau prin Pin Change Interrupts.
Rezultate Obtinute
(Sectiunea va fi completata pe masura ce avanseaza asamblarea componentelor si primele teste pe breadboard.)
Concluzii
(Sectiunea va fi completata la finalizarea proiectului.)
Download
(Aici va fi adaugata arhiva cu fisierele sursa dupa finalizare.)
Jurnal
Bibliografie/Resurse
Datasheet-ul pentru ATmega328P.
Documentatia modulelor OLED si SD Card.
Resursele si laboratoarele din cadrul materiei de Proiectare cu Microprocesoare (I2C, SPI).
Export to PDF