Differences

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

Link to this comparison view

pm:prj2026:cezar.zlatea:marius.gaibu [2026/05/09 12:21]
marius.gaibu [Introducere]
pm:prj2026:cezar.zlatea:marius.gaibu [2026/05/15 20:34] (current)
marius.gaibu [Hardware Design]
Line 8: Line 8:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +Arhitectura ​proiectului ​este structurată în patru mari blocuri funcționale (Alimentare,​ Input, Procesare și Output), ​care interacționează constant pentru a oferi o experiență de joc fluidă. 
-O schemă bloc cu toate modulele ​proiectului ​vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului ​în care interacţionează.+
  
-Exemplu ​de schemă blochttp://​www.robs-projects.com/​mp3proj/​newplayer.html +**Descrierea modulelor și a modului ​de interacțiune:**
-</​note>​+
  
 +  * **Alimentare USB 5V:** Reprezintă sursa de energie a întregului sistem. Tensiunea este preluată direct din portul USB (prin placa ATmega328P) și este distribuită către microcontroler și restul perifericelor de pe breadboard, asigurând funcționarea continuă.
 +  * **Blocul de Input (Butoane D-Pad):** Este format din 5 butoane tactile configurate direcțional (Sus, Jos, Stânga, Dreapta, Select). Microcontrolerul interoghează constant starea acestor pini digitali (citire pini) pentru a capta intențiile jucătorului,​ cum ar fi navigarea cursorului pe tablă și selectarea pieselor de șah.
 +  * **Blocul de Procesare (Microcontroler ATmega328P):​** Reprezintă „creierul” consolei. La nivel software, acesta rulează întreaga logică a jocului: stochează matricea tablei de șah, validează mutările conform regulilor, gestionează rândul fiecărui jucător și declanșează evenimente (șah, șah-mat). El preia datele din Input, calculează noua stare a jocului și comandă perifericele din Output.
 +  * **Blocul de Output:** Este responsabil pentru feedback-ul vizual și auditiv oferit utilizatorului:​
 +    * **Convertor Nivel Logic & Ecran TFT 2.8 inch:** Microcontrolerul trimite date grafice (coordonate,​ culori, imagini cu piese) folosind protocolul SPI la o tensiune de 5V. Deoarece ecranul funcționează strict la 3.3V, convertorul de nivel logic acționează ca o punte de siguranță,​ scăzând tensiunea semnalelor SPI fără a pierde viteza de transmisie a datelor.
 +    * **Buzzer Pasiv:** Comunică cu microcontrolerul prin intermediul timerelor hardware. Primește semnale PWM (Pulse Width Modulation) de diferite frecvențe pentru a genera sunete specifice la navigare, erori (mutări invalide) sau victorii.
 +    * **LED RGB:** Este controlat direct prin pinii digitali de ieșire (I/O). Software-ul schimbă starea acestor pini pentru a modifica culoarea LED-ului, oferind o indicație vizuală rapidă (de exemplu, roșu pentru Player 1 și albastru pentru Player 2).
 +
 +{{:​pm:​prj2026:​cezar.zlatea:​diagrama_block_marius_gaibu.png?​600|Schema bloc a proiectului Console Chess}}
 ===== Hardware Design ===== ===== Hardware Design =====
  
-<note tip> +**Stadiul actual al implementării (Milestone 2):** Hardware-ul a fost asamblat cu succes pe breadboard. Microcontrolerul ATmega328P comunică corect cu ecranul TFT, generând imaginea tablei de șah. Divizorul de tensiune implementat manual protejează ecranul, iar perifericele de feedback (LED RGB, Buzzer) sunt integrate și gata de utilizare. Din cauza constrângerilor de spațiu fizic de pe breadboard (datorate rezistențelor),​ numărul de butoane pentru D-Pad a fost redus de la 5 la 4. 
-Aici puneţtot ce ţine de hardware design: + 
-  * listă de piese +^ Nume Componentă ^ Cantitate ^ 
-  scheme electrice ​(se pot lua şi de pe Internet şdin datasheet-urie.ghttp://www.captain.at/​electronic-atmega16-mmc-schematic.png) +| Placă de dezvoltare ATmega328P Xplained Mini |  1| 
-  * diagrame ​de semnal ​ +| Ecran afișaj TFT LCD 2.8''​ (Interfață SPI) |  1| 
-  * rezultatele simulării +| Breadboard 830 puncte |  1| 
-</​note>​+| Butoane tactile (Microîntrerupătoare 6x6x6 mm) pentru D-Pad |  4| 
 +| Modul Buzzer Pasiv (suport semnal PWM) |  1| 
 +| LED RGB (pentru indicarea turei jucătorilor) |  1| 
 +| Rezistențe (1k Ohm, 2k Ohm, 220 Ohm) pt. divizor tensiune șLED |  Set| 
 +| Set fire de conexiune Dupont (Tată-Tată și Tată-Mamă de 20 cm) |  1| 
 +| Cablu USB (pentru alimentare și programare) |  1| 
 + 
 +**Maparea Pinilor și Justificarea Alegerii Lor:** 
 + 
 +^ Componentă ^ Pin ATmega328P ^ Rol și Justificare ^ 
 +| **TFT - MOSI** | PB3 (Digital 11) | Linia de date SPI. Folosit pinul hardware SPI pentru viteză maximă de desenare. | 
 +**TFT - SCK** | PB5 (Digital 13) | Linia de ceas SPI. Folosit pinul hardware SPI. | 
 +| **TFT - CS** | PB2 (Digital 10) | Chip Select. Semnalizează ecranului când să asculte magistrala SPI. | 
 +| **TFT - DC** | PB1 (Digital 9) | Data/​Command. Diferențiază între datele pentru culori școmenzile de configurare. | 
 +| **TFT RST** | PB0 (Digital 8) | Hardware Reset pentru controlerul ecranului. | 
 +| **LED RGB - Roșu** | PD5 (Digital 5) | Pin cu suport PWM. Permite reglarea intensității sau folosirea ca pin digital simplu. | 
 +| **LED RGB - Albastru** | PD6 (Digital 6) | Pin cu suport PWMfolosit pentru a indica rândul celui de-al doilea jucător
 +| **Buzzer Pasiv** | PD3 (Digital 3) | Pin cu suport PWM (Timer hardware), necesar pentru a genera tonuri de diferite frecvențe
 +| **Butoane D-Pad** | PC0-PC3 (Analog A0-A3) | Deoarece pinii digitali sunt ocupați de SPI și PWM, am folosit pinii analogici configurați ca intrări digitale (I/O)
 + 
 +**Schema Electrică (Simulare vsRealitate):​** 
 + 
 +{{:​pm:​prj2026:​cezar.zlatea:​screenshot_2026-05-15_140135.png?800|Schema electrica simulata in Wokwi}} 
 + 
 +Schema de mai sus a fost primul meu pas, realizat în mediul Wokwi pentru a valida logica conexiunilor. Totuși, trecerea de la simulator la breadboard-ul real a venit cu provocări practice pe care a trebuit să le rezolv: 
 + 
 +  * **Microcontrolerul:​** Deși în simulare apare un Arduino Uno clasic (din lipsa altor modele în simulator), fizic folosesc placa ATmega328P Xplained Mini. Din fericire, arhitectura cipului este aceeași, deci logica pinilor s-a potrivit perfect. 
 +  * **Problema Nivelului Logic (Protejarea Ecranului):​** Aceasta a fost cea mai mare diferență față ​de simulare. În Wokwi, ecranul acceptă semnale de 5V direct din microcontroler,​ dar în realitate, ecranul meu funcționează strict cu logică de 3.3V. Dacă aș fi conectat pinii de date (MOSI, SCK, CS, DC, RST) direct la 5V, aș fi prăjit controlerul ecranului. Pentru că nu am folosit un modul dedicat de tip Level Shifter, a trebuit să implementez manual **divizori de tensiune** pentru fiecare fir de date.  
 +  * **Cum funcționează divizorul:​** Am folosit o rețea de rezistențe. Din pinul plăcii pleacă o rezistență de **1k Ohm** (R1), urmată de o intersecție (nod) din care pleacă firul spre ecran, iar mai departe o rezistență de **2k Ohm** (R2) duce la masă (GND). Aplicând formula divizorului de tensiune ($V_{out} = V_{in} \times \frac{R_2}{R_1 + R_2}$), am obținut $5V \times \frac{2}{3} \approx 3.33V$. Așa am asigurat o tensiune sigură pentru ecran, menținând viteza SPI. 
 +  * **Compromisul Butoanelor:​** În planul din simulare aveam 5 butoane. Când am transpus asta pe breadboard, construcția celor 5 divizori de tensiune (implicând 10 rezistențe și multe punți la GND) a ocupat foarte mult spațiu fizic. Pentru a păstra cablajul ordonat și a evita scurtcircuitele,​ am decis să scot butonul de "​Select"​ și să păstrez un D-Pad curat cu doar 4 direcții. 
 + 
 +**Rezultatul Hardware:​** 
 + 
 +{{:​pm:​prj2026:​cezar.zlatea:​whatsapp_image_2026-05-15_at_20.11.02.jpeg?​800|Asamblarea fizica a proiectului pe breadboard}}
  
 +Imaginea de mai sus arată montajul final pe breadboard și confirmă că totul funcționează cum trebuie pentru acest milestone:
 +  * **Ecranul merge perfect:** Se vede clar tabla de șah afișată pe ecran. Asta înseamnă că divizorii de tensiune făcuți din rezistențe funcționează bine, iar datele trimise de placă ajung corect și rapid la ecran fără să se piardă pe drum.
 +  * **LED-ul RGB reacționează:​** În poză se vede LED-ul aprins pe roșu. Asta îmi confirmă că pot folosi pinii digitali ca să arăt vizual starea jocului (de exemplu, când este rândul jucătorului cu piesele negre).
 +  * **Organizarea firelor:** Chiar dacă par foarte multe conexiuni, am încercat să le grupez logic: butoanele sunt în partea stângă, placa de control este sus, iar divizorii de tensiune și ecranul sunt așezate în partea dreaptă.
 ===== Software Design ===== ===== Software Design =====
  
pm/prj2026/cezar.zlatea/marius.gaibu.1778318490.txt.gz · Last modified: 2026/05/09 12:21 by marius.gaibu
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