This shows you the differences between two versions of the page.
|
pm:prj2026:alexandru.jipa2803:eusebiu.burtescu [2026/05/04 18:49] eusebiu.burtescu [Descriere generală] |
pm:prj2026:alexandru.jipa2803:eusebiu.burtescu [2026/05/11 14:25] (current) eusebiu.burtescu |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== TicTacToe++ ====== | ====== TicTacToe++ ====== | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | TicTacToe++ este o consolă de buzunar care mută clasicul joc "X și 0" de pe hârtie pe hardware propriu. Proiectul rezolvă o problemă simplă: dependența de ecrane tactile și software complex, oferind în schimb o experiență tactilă, cu butoane fizice și un sistem care funcționează oriunde, fără internet sau reclame. | ||
| - | Creierul sistemului este un microcontroler care gestionează singur regulile, afișează starea jocului pe un ecran OLED clar și oferă feedback sonor prin buzzer. Este un gadget "open-source" construit de la zero, care pune accent pe portabilitate și pe satisfacția de a te juca pe un dispozitiv asamblat chiar de tine. | + | TicTacToe++ este o consolă handheld care transformă jocul clasic de "X și 0" dintr-o activitate banală pe hârtie într-o experiență electronică interactivă. Dispozitivul utilizează un microcontroler pentru a gestiona logica de joc, afișând grila pe un ecran OLED de înaltă rezoluție și oferind control tactil prin cinci butoane fizice. Față de varianta tradițională, proiectul aduce funcții avansate precum grile variabile (moduri de joc diferite), un sistem de memorare a scorului și feedback sonor polifonic, generat prin melodii 8-bit specifice pentru victorie sau remiză. |
| - | Pe lângă distracție, proiectul este un exemplu practic de electronică aplicată. Demonstrează cum poți folosi componente ieftine și eficiente pentru a crea un sistem de gaming funcțional, fiind ideal pentru oricine vrea să vadă cum codul scris pe calculator prinde viață într-un obiect fizic pe care îl poți ține în mână. | + | Scopul acestui proiect este crearea unui gadget autonom care să ofere divertisment rapid, punând în același timp în valoare puterea sistemelor embedded. Ideea a pornit de la dorința de a digitaliza un joc retro, dar cu un "upgrade" tehnologic semnificativ: înlocuirea creionului cu un algoritm care arbitrează singur meciurile și eliminarea nevoii de ecrane tactile în favoarea butoanelor mecanice. Am vrut să creez ceva ce se simte ca o consolă de jocuri din anii '90, dar care rulează pe un hardware modern și eficient. |
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| - | {{:pm:prj2026:alexandru.jipa2803:graph.png?200|}} | + | |
| + | {{ :pm:prj2026:alexandru.jipa2803:bloctictactoe252.png |}} | ||
| Componentele principale pe care le utilizez în proiect sunt: | Componentele principale pe care le utilizez în proiect sunt: | ||
| Line 14: | Line 14: | ||
| **Microcontroler ATmega328P (Xplained Mini)** | **Microcontroler ATmega328P (Xplained Mini)** | ||
| - | Este unitatea centrală de procesare a consolei, responsabilă pentru rularea logicii jocului și coordonarea tuturor perifericelor. | + | Este unitatea centrală de procesare a consolei, responsabilă pentru rularea logicii jocului și coordonarea tuturor perifericelor. Acesta citește semnalele de la matricea de butoane, procesează mutările jucătorilor și transmite datele vizuale către ecranul TFT prin protocolul SPI, precum și semnalele audio către buzzer. Placa permite programarea facilă prin interfața Micro-USB și oferă stabilitatea necesară pentru gestionarea unei interfețe grafice color. |
| - | Acesta citește semnalele de la butoane, procesează mutările jucătorilor și transmite datele vizuale către ecran și semnalele audio către buzzer. | + | |
| - | Placa permite programarea facilă prin interfața Micro-USB și oferă suficienți pini I/O pentru extinderi ulterioare. | + | |
| - | **Display OLED 0.96 inch** | + | **Display TFT LCD 1.44 inch (Color)** |
| - | Am utilizat un afișaj OLED cu rezoluție de 128x64 pixeli pentru a oferi interfața grafică a jocului TicTacToe++. | + | Am utilizat un afișaj TFT color cu rezoluție de 128x128 pixeli pentru a oferi o interfață grafică modernă jocului TicTacToe++. Acesta comunică cu microcontrolerul prin protocolul SPI (Serial Peripheral Interface), oferind o viteză de refresh superioară. Ecranul este compatibil cu logica de 5V și afișează grila de joc, simbolurile "X" și "0" în culori diferite, cursorul de selecție și animații pentru mesajele de victorie sau remiză. |
| - | Acesta comunică cu microcontrolerul prin protocolul I2C (Inter-Integrated Circuit), utilizând doar doi pini de date (SDA și SCL), ceea ce reduce complexitatea cablajului. | + | |
| - | Ecranul afișează grila de joc, simbolurile "X" și "0", cursorul de selecție și mesajele de stare (victorie, remiză sau rândul jucătorului). | + | |
| **Butoane Push-Button (Input Control)** | **Butoane Push-Button (Input Control)** | ||
| - | Sistemul utilizează un set de 5 butoane tactile pentru controlul interacțiunii: patru butoane pentru navigarea pe grilă (sus, jos, stânga, dreapta) și un buton central pentru confirmarea mutării (Select). | + | Sistemul utilizează un set de 6 butoane tactile configurate pentru un control optim: patru butoane așezate în format "D-Pad" pentru navigarea pe grilă (sus, jos, stânga, dreapta), un buton pentru confirmarea mutării (Select) și un buton pentru funcții suplimentare (Reset). Fiecare buton este configurat folosind rezistențele interne de tip pull-up ale microcontrolerului pentru a asigura citiri digitale stabile și pentru a simplifica circuitul electronic. |
| - | Fiecare buton este configurat folosind rezistențele interne de tip pull-up ale microcontrolerului pentru a asigura citiri digitale stabile și pentru a simplifica circuitul electronic pe breadboard. | + | |
| + | **LED-uri de Semnalizare (5mm)** | ||
| + | |||
| + | Am integrat un set de LED-uri de 5mm (roșii și verzi) pentru a oferi feedback vizual suplimentar în afara ecranului. Acestea sunt utilizate pentru a indica rândul jucătorului curent sau pentru a semnaliza starea de "Game Over". Fiecare LED este conectat în serie cu o rezistență de 220$\Omega$ pentru a limita curentul și a proteja pinii microcontrolerului. | ||
| **Buzzer Pasiv** | **Buzzer Pasiv** | ||
| - | Modulul buzzer pasiv este utilizat pentru a oferi feedback audio în timp real, îmbunătățind experiența de utilizare și accesibilitatea dispozitivului. | + | Modulul buzzer pasiv este utilizat pentru a oferi feedback audio în timp real, îmbunătățind experiența de utilizare. Acesta permite generarea de frecvențe variabile, oferind posibilitatea de a programa sunete distincte pentru navigare, avertizări în cazul mutărilor incorecte și melodii de tip "8-bit" pentru finalul jocului, procesate prin semnale PWM. |
| - | Spre deosebire de un buzzer activ, acesta permite generarea de frecvențe variabile, oferind posibilitatea de a programa sunete distincte pentru mutări valide, avertizări în cazul mutărilor incorecte și melodii scurte de tip "8-bit" pentru finalul jocului. | + | |
| - | Acest feedback auditiv permite utilizatorului să confirme acțiunile fără a fi necesară monitorizarea constantă a ecranului. | + | **Breadboard (1660 puncte) și Fire Jumper (Tată-Tată)** |
| + | |||
| + | Pentru asamblarea prototipului am utilizat un breadboard de dimensiuni mari (1660 puncte), montat pe o bază rigidă, care oferă spațiu generos pentru organizarea celor 4 linii de alimentare și a cablajului complex. Comunicarea fizică între componente se realizează prin fire de conexiune de tip "Tată-Tată", asigurând un sistem modular ce permite depanarea rapidă și o structură solidă a consolei. | ||
| + | |||
| + | **Suport de baterii (6xAA - 9V)** | ||
| + | |||
| + | Asigură alimentarea autonomă a consolei la o tensiune nominală de 9V, utilizând două suporturi de baterii conectate în serie. Această tensiune superioară este necesară pentru a menține luminozitatea constantă a ecranului TFT și pentru a asigura un curent stabil prin pinul VIN al plăcii de dezvoltare, oferind portabilitate și performanță sistemului pe durata utilizării. | ||
| + | ===== Hardware Design ===== | ||
| + | |||
| + | <note tip> | ||
| + | Aici puneţi tot ce ţine de hardware design: | ||
| + | * listă de piese | ||
| + | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | ||
| + | * diagrame de semnal | ||
| + | * rezultatele simulării | ||
| + | </note> | ||
| + | |||
| + | ===== Software Design ===== | ||
| + | |||
| + | |||
| + | <note tip> | ||
| + | Descrierea codului aplicaţiei (firmware): | ||
| + | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | ||
| + | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | ||
| + | * algoritmi şi structuri pe care plănuiţi să le implementaţi | ||
| + | * (etapa 3) surse şi funcţii implementate | ||
| + | </note> | ||
| + | |||
| + | ===== Rezultate Obţinute ===== | ||
| + | |||
| + | <note tip> | ||
| + | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
| + | </note> | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | ===== Download ===== | ||
| + | |||
| + | <note warning> | ||
| + | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
| + | |||
| + | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | ||
| + | </note> | ||
| + | |||
| + | ===== Jurnal ===== | ||
| + | |||
| + | <note tip> | ||
| + | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| + | </note> | ||
| - | **Breadboard și Fire Jumper (Tată-Tată)** | + | ===== Bibliografie/Resurse ===== |
| - | Pentru asamblarea prototipului am utilizat un breadboard de 400 de puncte, care permite conectarea componentelor fără necesitatea lipirii. | + | <note> |
| - | Comunicarea fizică între componente se realizează prin fire de conexiune de tip "Tată-Tată", asigurând un sistem modular ce permite depanarea rapidă și modificarea circuitului în timpul dezvoltării software-ului. | + | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. |
| + | </note> | ||
| - | **Suport de baterii 4xAA** | + | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> |
| - | Asigură alimentarea autonomă a consolei la o tensiune de aproximativ 6V, oferind portabilitate sistemului. | ||
| - | Alimentarea este conectată la pinul VIN al plăcii de dezvoltare, care reglează tensiunea la 5V pentru a proteja microcontrolerul și perifericele conectate. | ||