This shows you the differences between two versions of the page.
|
pm:prj2026:cezar.zlatea:marius.gaibu [2026/05/15 20:28] marius.gaibu [Hardware Design] |
pm:prj2026:cezar.zlatea:marius.gaibu [2026/05/15 20:34] (current) marius.gaibu [Hardware Design] |
||
|---|---|---|---|
| Line 51: | Line 51: | ||
| **Schema Electrică (Simulare vs. Realitate):** | **Schema Electrică (Simulare vs. Realitate):** | ||
| - | {{:pm:prj2026:cezar.zlatea:screenshot_2026-05-15_140135.png?200|}} | + | {{:pm:prj2026:cezar.zlatea:screenshot_2026-05-15_140135.png?800|Schema electrica simulata in Wokwi}} |
| - | Schema electrică atașată mai sus a fost realizată și simulată inițial în mediul Wokwi. Este important de precizat câteva diferențe fundamentale între simulare și implementarea fizică: | + | 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:** Simularea folosește un Arduino Uno standard, în timp ce implementarea fizică utilizează placa ATmega328P Xplained Mini. Arhitectura pinilor este identică, codul fiind 100% compatibil. | + | |
| - | * **Nivelul Logic (Foarte Important):** În Wokwi, ecranul TFT acceptă semnale logice de 5V direct de la microcontroler. În realitate, ecranul fizic suportă strict semnale de 3.3V pe liniile de date (MOSI, SCK, CS, DC, RST). Din acest motiv, în implementarea fizică, firele nu merg direct din placă în ecran, ci trec printr-o rețea de **divizori de tensiune** formați din rezistențe (1k Ohm și 2k Ohm) care coboară nivelul semnalului logic de la 5V la ~3.3V, protejând astfel ecranul de supratensiune. | + | |
| - | * **Butoanele:** În schemă figurează 5 butoane. În montajul fizic, din cauza limitărilor de spațiu pe breadboard cauzate de aglomerarea rezistențelor pentru divizorul de tensiune, am redus interfața la 4 butoane (navigare direcțională). | + | |
| - | **Implementarea Fizică (Dovada Funcționalității):** | + | * **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. | ||
| - | {{:pm:prj2026:cezar.zlatea:whatsapp_image_2026-05-15_at_20.11.02.jpeg?200|}} | + | **Rezultatul Hardware:** |
| - | Imaginea de mai sus demonstrează asamblarea completă și funcționalitatea ansamblului hardware pentru Milestone 2: | + | {{:pm:prj2026:cezar.zlatea:whatsapp_image_2026-05-15_at_20.11.02.jpeg?800|Asamblarea fizica a proiectului pe breadboard}} |
| - | * **Comunicarea SPI:** Ecranul afișează corect tabla de șah (renderizare pixel-perfect cu măști de biți din memoria Flash), ceea ce dovedește că protocolul SPI hardware operează la viteză optimă și că divizorii de tensiune (vizibili pe breadboard) adaptează corect nivelul logic la 3.3V. | + | |
| - | * **Feedback Vizual:** LED-ul RGB integrat pe breadboard este aprins (culoarea roșie), demonstrând controlul corect al pinilor I/O auxiliari pentru indicarea stării jocului. | + | 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 ===== | ||