Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2026:tarik_ilhan.omer:andrei.balica [2026/05/05 12:09]
andrei.balica
pm:prj2026:tarik_ilhan.omer:andrei.balica [2026/05/05 12:31] (current)
andrei.balica [Descriere generala]
Line 1: Line 1:
-====== Consola Retro Modulara ======+====== Consola Retro Modulara ​(GameBoy Clone) ​======
  
 ===== Introducere ===== ===== Introducere =====
-Acest proiect consta in realizarea unei console de jocuri retro, construita "from scratch"​ pe un breadboard in jurul unui microcontroler ATmega328P standalone. 
  
-  ​* **Ce face:** Consola ruleaza jocuri (precum Snake) incarcate dinamic de pe carduri MicroSD, ​care functioneaza ca niste "casete" fizice ​interschimbabile+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. 
-  * **Scopul lui:​** ​Invatarea lucrului cu memoria sistemului ​(implementarea unui SD Bootloader custom) si comunicarea cu periferice externe pe protocoale diferite ​(SPI, I2C), avand resurse hardware limitate+ 
-  * **Ideea de la care am pornit:​** ​Dorinta ​de a construi o consola modulara la care schimbarea jocului sa se faca fizic, prin card, fara reprogramare din laptop. +  ​* **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. 
-  * **De ce este util:​** ​Reprezinta ​un exercitiu ​practic ​excelent de arhitectura ​sistemelor embedded ​si gestiune eficienta ​memoriei.+ 
 +  * **Scopul lui:​** ​Depasirea limitarilor hardware ale arhitecturii Harvard ​(separarea memoriei de date de cea de program) de pe ATmega328P, prin implementarea unui SD Bootloader custom ​care permite auto-reprogramarea ​(self-programmingmicrocontrolerului pe loc. 
 + 
 +  * **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 ​memoriei flash, protocolului SPI si sistemelor de fisiere (FAT32) la nivel bare-metal. Pentru ceilalti, poate servi ca platforma educationala de dezvoltare ​jocurilor embedded cu resurse extrem de limitate.
  
 ===== Descriere generala ===== ===== Descriere generala =====
-Arhitectura se bazeaza pe o unitate centrala minimala, ​extinsa ​prin periferice de intrare, iesire si memorie.+ 
 +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:​** **Module si interactiune:​**
-  - **Unitatea de procesare:​** Microcontrolerul ATmega328P. Coordoneaza sistemul si, la pornire, executa bootloader-ul. 
-  - **Sistemul de memorie (SPI):** Modulul MicroSD comunica pe magistrala SPI. Bootloader-ul cauta jocul pe card si il incarca in memoria Flash interna, apoi ii cedeaza controlul. 
-  - **Sistemul grafic (I2C):** Un ecran OLED afiseaza grafica jocului, comunicand eficient prin doar doi pini (SDA, SCL). 
-  - **Interfata de control (Digital IO):** Un modul de navigare 5D (joystick digital) sau un set de butoane configurate ca D-Pad, citite ca intrari digitale. 
-  - **Modulul de alimentare:​** O sursa externa (ex. baterie 9V) cuplata la un regulator de tensiune (5V) pentru a alimenta stabil intregul circuit. 
  
-{{:​pm:​prj2026:​tarik_ilhan.omer:​andreibalica:​schema_bloc.png?600|Schema Bloc a Consolei}}+  - **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. 
 + 
 +{{:​pm:​prj2026:​tarik_ilhan.omer:​schema_bloc_consola_retro.png?600|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
-Design-ul fizic este conceput ​sa fie compact, ​implementat ​pe un breadboard.+ 
 +Design-ul fizic a fost conceput ​pentru a fi cat mai compact ​si stabilfolosind fire rigide ​pe breadboard ​pentru a minimiza "​padurea"​ de cabluri si a oferi un aspect curat.
  
 **Lista de piese:** **Lista de piese:**
-  ​* Microcontroler ATmega328P (standalone+ 
-  * Cristal oscilator de 16 MHz si condensatori ​ceramici +  ​1 x Microcontroler ​Microchip ​ATmega328P-PU (fara placa Arduino
-  * Regulator de tensiune ​5V (tip L7805si condensatori de filtrare +  * 1 x Cristal oscilator de 16 MHz si 2 x Condensatori ​ceramici ​de 22pF 
-  * Display OLED (comunicare ​I2C) +  * 1 x Regulator de tensiune ​L7805CV + Condensatori filtrare ​(10uF / 100uF
-  * Modul cititor MicroSD Card (comunicare ​SPI) +  * 1 x Display OLED 0.96" ​(sau 1.3"​) ​I2C (Driver SSD1306/​SH1106
-  * Modul navigare ​5D (joystick digitalsau butoane tactile +  * 1 x Modul cititor MicroSD Card (Interfata ​SPI) 
-  * Breadboard ​si fire de conexiune +  * 1 x Joystick ​5D (5-directional navigation switch
-  * Sursa de alimentare (Baterie ​9V)+  * 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 ===== ===== Software Design =====
-Dezvoltarea software este impartita in doua componente principalebootloader-ul si aplicatia ​(jocul).+ 
 +Dezvoltarea software este impartita in doua mari categoriiBootloader-ul de sistem (care gestioneaza memoria) ​si Engine-ul jocurilor ​(firmware-ul efectiv).
  
   * **Mediu de dezvoltare:​** PlatformIO.   * **Mediu de dezvoltare:​** PlatformIO.
-  ​* **Bootloader-ul:​** ​Codul care ruleaza la reset. Initializeaza cardul ​SD, citeste fisierul executabil al jocului ​si il scrie in memoria program a microcontrolerului,​ permitand auto-reprogramarea+ 
-  * **Logica jocului:** Foloseste un sistem ​clasic ​de tip "Game Loop"Citeste intrarile de la butoane, actualizeaza starea jocului si redeseneaza ecranul OLED. Datorita memoriei ​RAM mici microcontrolerului, randarea ​graficii va fi optimizata ​pentru a consuma cat mai putine resurse.+  * **Librarii:​** Se vor folosi biblioteci adecvate pentru ecranul OLED si pentru citirea sistemului de fisiere FAT de pe cardul SD. 
 + 
 +  ​* **Bootloader-ul ​(Miezul proiectului):** Se foloseste o varianta derivata din 2000-Lines-of-Code ​SD Bootloader (sau zbm-h/​sd-bootloader). Acesta ocupa primii octeti din Flash si implementeaza direct functiile SPM (Store Program Memory) ale AVR-ului. 
 + 
 +  * **Logica jocului ​(Ex: Snake):** Foloseste un sistem de tip Game Loop (Update & Draw)Memoria ​RAM de doar 2KB ATmega328P limiteaza buffer-ul graficmotiv pentru care randarea ​se face prin paginare sau direct pe componente bloc (8x8 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 ===== ===== Rezultate Obtinute =====
 +
 (Sectiunea va fi completata pe masura ce avanseaza asamblarea componentelor si primele teste pe breadboard.) (Sectiunea va fi completata pe masura ce avanseaza asamblarea componentelor si primele teste pe breadboard.)
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 (Sectiunea va fi completata la finalizarea proiectului.) (Sectiunea va fi completata la finalizarea proiectului.)
  
 ===== Download ===== ===== Download =====
 +
 (Aici va fi adaugata arhiva cu fisierele sursa dupa finalizare.) (Aici va fi adaugata arhiva cu fisierele sursa dupa finalizare.)
  
 ===== Jurnal ===== ===== Jurnal =====
 +
   * **Saptamana 1:** Achizitionarea pieselor hardware. Planificarea pinilor. Realizarea montajului de baza (circuitul de alimentare pe breadboard si testarea functionarii cipului ATmega328P "in gol").   * **Saptamana 1:** Achizitionarea pieselor hardware. Planificarea pinilor. Realizarea montajului de baza (circuitul de alimentare pe breadboard si testarea functionarii cipului ATmega328P "in gol").
-  ​* **Urmeaza:​** Conectarea ecranului OLED si implementarea butoanelor de control pentru a testa partea vizuala a proiectului.+ 
 +  ​* **Urmeaza:​** Conectarea ecranului OLED si implementarea ​joystick-ului si butoanelor de control pentru a testa partea vizuala a proiectului.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +
   * Datasheet-ul pentru ATmega328P.   * Datasheet-ul pentru ATmega328P.
   * Documentatia modulelor OLED si SD Card.   * Documentatia modulelor OLED si SD Card.
   * Resursele si laboratoarele din cadrul materiei de Proiectare cu Microprocesoare (I2C, SPI).   * Resursele si laboratoarele din cadrul materiei de Proiectare cu Microprocesoare (I2C, SPI).
 +
 +<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2026/tarik_ilhan.omer/andrei.balica.1777972187.txt.gz · Last modified: 2026/05/05 12:09 by andrei.balica
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