This shows you the differences between two versions of the page.
|
pm:prj2026:mihnea.dinica:stelian.pungaru [2026/05/04 20:15] stelian.pungaru created |
pm:prj2026:mihnea.dinica:stelian.pungaru [2026/05/05 11:29] (current) stelian.pungaru [Introducere] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | test | + | ====== Connect 4 Console ====== |
| + | ===== Introducere ===== | ||
| - | 1 | + | Proiectul constă în realizarea unei console hardware independente pe care rulează clasicul joc de societate. |
| + | * **Ce face:** Permite la doi jucători să joace Connect 4 pe un ecran TFT, jocul fiind însoțit de efecte sonore și muzică redate printr-un modul MP3 dedicat, totul fiind alimentat portabil de un acumulator integrat. | ||
| + | * **Scopul lui:** Replicarea fizică a unui joc de strategie cunoscut, combinând o interfață grafică digitală cu feedback audio pentru o experiență interactivă completă. | ||
| + | * **Ideea de la care am pornit:** Mi-am dorit să aduc un joc al copilăriei în format digital, construind o mini-consolă portabilă de tip arcade. Am vrut să explorez modul în care un microcontroller poate gestiona simultan grafică, logică de joc și redare audio. | ||
| + | * **Utilitate:** Este un proiect excelent de divertisment, dar și o dovadă de concept (PoC) pentru integrarea a multiple periferice (display SPI, modul audio UART, management de putere) pe o singură placă de dezvoltare, depășind limitările clasice de curent ale acesteia. | ||
| - | 2 | + | ===== Descriere generală ===== |
| - | 3 | + | Arhitectura proiectului este centrată pe placa Arduino, care acționează ca unitate centrală de procesare. Arduino preia input-ul de la utilizator (butoane/joystick), actualizează logica matricei de joc, trimite comenzi de desenare către ecranul TFT și comenzi de redare audio către modulul DFPlayer Mini. |
| + | |||
| + | Pentru a susține consumul ridicat al ecranului și al difuzorului, sistemul este susținut de un circuit de management al puterii separat (Battery Shield), care preia energia de la acumulatorul Li-Ion și livrează o tensiune stabilă întregului circuit. | ||
| + | |||
| + | **Schema Bloc a interacțiunilor:** | ||
| + | * **Sursa de alimentare (Battery Shield V3):** Oferă 5V constanți și un curent de până la 3A către breadboard. | ||
| + | * **Creierul (Arduino Uno):** Primește 5V de la breadboard și coordonează perifericele. | ||
| + | * **Input (Butoane/Joystick):** Trimite semnale digitale/analogice către pinii Arduino pentru selectarea coloanei. | ||
| + | * **Output Vizual (Display TFT):** Comunică cu Arduino prin protocolul SPI pentru a randa interfața grafică și piesele care cad. | ||
| + | * **Output Audio (DFPlayer Mini + Difuzor 3W):** Comunică cu Arduino via UART (Serial). Citește efectele sonore de pe cardul MicroSD și le amplifică direct în difuzor. | ||
| + | |||
| + | ===== Hardware Design ===== | ||
| + | |||
| + | **Lista de piese:** | ||
| + | * 1 x Placă de dezvoltare (tip Arduino Uno) | ||
| + | * 1 x Display TFT (ex: 2.4" sau 2.8" SPI) | ||
| + | * 1 x Modul audio DFPlayer Mini MP3 | ||
| + | * 1 x Card MicroSD (max 32GB, formatat FAT32) | ||
| + | * 1 x Difuzor Mini (3W, 8 Ohmi) | ||
| + | * 1 x Modul Powerbank (Battery Shield V3 18650, ieșire 5V/3A) | ||
| + | * 1 x Acumulator Li-Ion Samsung 18650 (3.6V, 3450mAh, 8A) | ||
| + | * Butoane push sau 1 x Joystick (pentru control) | ||
| + | * 1 x Breadboard | ||
| + | * Fire de conexiune (Dupont tată-tată, mamă-tată) | ||
| + | * Rezistențe (ex: 1k Ohm pentru TX-ul către DFPlayer, rezistențe de pull-down pentru butoane) | ||
| + | |||
| + | **Design Electric (Scurtă descriere a conexiunilor):** | ||
| + | * **Alimentare:** Pinul de 5V și GND de pe Battery Shield alimentează șinele breadboard-ului. De acolo, se trage curent către pinul 5V de pe Arduino, VCC-ul TFT-ului și VCC-ul DFPlayer-ului. | ||
| + | * **Audio:** Pinul TX (SoftwareSerial) al Arduino-ului se leagă printr-o rezistență de 1k Ohm la pinul RX al DFPlayer-ului pentru a elimina zgomotul de fond. Difuzorul se conectează direct la pinii SPK_1 și SPK_2 ai modulului MP3. | ||
| + | * **Display:** Se conectează pe pinii hardware SPI ai Arduino-ului (MOSI, MISO, SCK) și pinii de control (CS, DC, RST). | ||
| + | |||
| + | ===== Software Design ===== | ||
| + | |||
| + | **Mediu de dezvoltare:** | ||
| + | * Proiectul va fi dezvoltat folosind mediul **Arduino IDE**. | ||
| + | |||
| + | **Librării utilizate:** | ||
| + | * ''SPI.h'' - pentru comunicarea hardware cu display-ul. | ||
| + | * ''Adafruit_GFX.h'' și librăria specifică controllerului ecranului (ex: ''Adafruit_ILI9341.h'') - pentru randarea graficii (cercuri, linii, text). | ||
| + | * ''SoftwareSerial.h'' - pentru a crea un port serial virtual pe alți pini pentru a comunica cu playerul MP3. | ||
| + | * ''DFRobotDFPlayerMini.h'' - pentru controlul simplificat al modulului audio (play, pause, setare volum). | ||
| + | |||
| + | **Logica jocului (Algoritmi):** | ||
| + | * **Matricea de stare:** O matrice de int-uri de `[6][7]` va reprezenta tabla de joc (0 = gol, 1 = jucător 1, 2 = jucător 2). | ||
| + | * **Animația:** Când un jucător alege o coloană, un algoritm va găsi cel mai de jos rând disponibil (`0`) din acea coloană, va schimba starea în matrice și va declanșa o funcție grafică de desenare a unui cerc colorat la coordonatele X/Y corespunzătoare. | ||
| + | * **Efecte Sonore:** În momentul "căderii" piesei, se trimite o comandă serială către DFPlayer pentru a reda "track 1" (sunet de piesă lovind tabla). | ||
| + | * **Algoritmul de Victorie:** După fiecare mutare, o funcție scanează matricea pentru a găsi 4 elemente identice pe orizontală, verticală și diagonale. Dacă se returnează `true`, jocul se oprește, se afișează mesajul de victorie pe TFT și se redă sunetul specific. | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | În urma implementării, a rezultat o consolă independentă, portabilă și stabilă. Principala realizare hardware a fost echilibrarea consumului de curent. Utilizând modulul separat de alimentare (Battery Shield) și setându-l în modul "HOLD", sistemul poate rula concomitent grafică pe TFT și redare audio puternică (difuzor de 3W) fără ca microcontrollerul să sufere căderi de tensiune (brown-out resets). Autonomia estimată cu bateria de 3450mAh este de câteva ore bune de funcționare continuă. | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | Proiectul a demonstrat cât de important este managementul corect al alimentării în sistemele embedded. Cea mai mare provocare nu a fost neapărat logica jocului, ci înțelegerea limitărilor hardware ale plăcii de dezvoltare și depășirea lor (ocolirea regulatorului intern de pe Arduino pentru a susține consumul perifericelor). Combinația de feedback vizual pe TFT și efecte sonore clare pe DFPlayer creează o experiență foarte "polisată" a unui simplu joc de masă. | ||
| + | |||
| + | ===== Download ===== | ||
| + | |||
| + | (link Github) | ||
| + | |||
| + | ===== Jurnal ===== | ||
| + | |||
| + | * **01.05.2026:** Achiziția componentelor și planificarea schemei bloc. | ||
| + | * **04.05.2026:** Introducerea documentatiei sumare (prima versiune) | ||
| + | |||
| + | ===== Bibliografie/Resurse ===== | ||
| + | |||
| + | **Resurse Hardware:** | ||
| + | * Datasheet DFPlayer Mini / Cip Amplificator 8002 | ||
| + | * Specificații tehnice Acumulator 18650 Samsung 35E | ||
| + | * Pinout și specificații Arduino Uno | ||
| + | |||
| + | **Resurse Software:** | ||
| + | * [Github DFRobot] DFPlayer Mini Library | ||
| + | * [Adafruit] GFX Library Reference | ||
| + | * Tutoriale limitări formatare sisteme de fișiere (FAT32 vs exFAT pentru microcontrollere). | ||