This shows you the differences between two versions of the page.
| — |
pm:prj2026:jan.vaduva:paul_george.solot [2026/05/02 21:32] (current) paul_george.solot created |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Final Countdown ====== | ||
| + | ===== Introducere ===== | ||
| + | |||
| + | Final Countdown e un proiect individual care combină embedded cu o aplicație mobilă. E un joc bomb-defusal, inspirat de Keep Talking and Nobody Explodes, construit pe un ESP32-S3 și câteva module hardware montate într-o carcasă. | ||
| + | |||
| + | Dispozitivul pornește o rundă când scanezi un tag RFID, după care trebuie să rezolvi trei lucruri fizice: introduci un cod pe keypad, reglezi un potențiometru la o valoare cerută și ții dispozitivul stabil, altfel modulul de mișcare penalizează orice bruscare. Telefonul se conectează prin BLE la ESP32 și afișează starea jocului și hint-urile. În paralel, trebuie să ții un deget pe senzorul cardiac. Dacă pulsul este ridicat, primești timp suplimentar. | ||
| + | |||
| + | Am vrut un joc interactiv care să aibă atât parte fizică, cât și o interfață comod de utilizat pe telefon. Direcția asta mi s-a părut bună pentru că forțează proiectul să treacă prin mai multe zone: integrare hardware, firmware modular, comunicație BLE și o aplicație mobilă care chiar folosește datele de pe ESP32. | ||
| + | |||
| + | Elementul nou este integrarea reală între dispozitivul fizic și telefon, cu o logică de joc care știe să gestioneze defecțiuni hardware și să funcționeze chiar și cu module lipsă. | ||
| + | |||
| + | ===== Descriere generală ===== | ||
| + | |||
| + | Proiectul are două părți: dispozitivul embedded și aplicația de pe telefon. | ||
| + | |||
| + | Partea embedded e construită pe un ''ESP32-S3 DevKitC-1 WROOM-1''. Placa citește modulele, rulează logica jocului, controlează ieșirile locale și expune un serviciu BLE. Intrările vin de la ''RC522 RFID'', ''keypad-ul 4x4'' prin ''PCF8574'', ''MPU6050'' (mișcare) și un ''potențiometru'' (modul de reglaj). Feedback-ul local: un ''OLED'', un ''buzzer'', un ''LED RGB'' și trei LED-uri simple pentru strike-uri. | ||
| + | |||
| + | Aplicația de telefon e făcută în ''Expo / React Native''. Caută dispozitivul prin BLE, se conectează la serviciul ESP32, citește starea jocului și o afișează mai lizibil decât pe ecranul local. | ||
| + | |||
| + | |||
| + | ---- | ||
| + | {{ :pm:prj2026:jan.vaduva:block_diagram_final_countdown.png?700 |}} | ||
| + | |||
| + | Cum interacționează modulele: | ||
| + | |||
| + | * ''RFID'' — armează jocul și confirmă finalul rundei | ||
| + | * ''keypad-ul'' — introducerea codului | ||
| + | * ''potențiometrul'' — modulul de tuning | ||
| + | * ''MPU6050'' — detectează mișcările bruște și verifică stabilitatea | ||
| + | * ''OLED-ul'' — feedback local rapid | ||
| + | * ''buzzer-ul'' — semnalează timpul rămas și stările importante | ||
| + | * ''LED-ul RGB'' și cele trei LED-uri simple — indicații vizuale | ||
| + | * ''telefonul'' — afișează starea jocului și hint-urile prin BLE | ||
| + | |||
| + | ===== Hardware Design ===== | ||
| + | |||
| + | ^ Componentă ^ Rol ^ | ||
| + | | ''ESP32-S3 DevKitC-1'' | Microcontroler principal | | ||
| + | | ''RC522 RFID'' | Armare și confirmare finală a rundei | | ||
| + | | ''4x4 matrix keypad'' | Introducerea codului | | ||
| + | | ''PCF8574'' | Extindere I/O pentru keypad | | ||
| + | | ''MPU6050'' | Detectarea mișcării și a stabilității | | ||
| + | | ''WH148 potentiometer'' | Modul de tuning | | ||
| + | | ''OLED SSD1306'' | Afișaj local | | ||
| + | | ''Passive buzzer'' | Semnalizare sonoră | | ||
| + | | ''RGB LED'' | Indicator de stare generală | | ||
| + | | ''3 simple LEDs'' | Indicatori pentru strike-uri | | ||
| + | | ''BLE smartphone'' | Aplicație mobilă companion | | ||
| + | | ''Whiteboard, wires, connectors, USB power'' | Interconectare și alimentare | | ||
| + | |||
| + | ===== Software Design ===== | ||
| + | |||
| + | Firmware-ul e scris în ''ESP-IDF''. Aplicația mobilă companion comunică prin BLE cu dispozitivul și afișează starea jocului și hint-urile, ca utilizatorul să urmărească mai ușor runda. | ||
| + | |||
| + | ===== Rezultate Obținute ===== | ||
| + | |||
| + | În momentul ăsta proiectul are o bază funcțională: firmware modular pentru ESP32, aplicație mobilă cu BLE și documentație pentru wiring și API. Logica jocului e definită, structura sistemului e stabilă, se poate demonstra și extinde. | ||
| + | |||
| + | Mai am de făcut integrarea finală pe varianta fizică definitivă, testarea completă pe hardware și finisarea prezentării stărilor jocului. | ||
| + | |||
| + | ===== Concluzii ===== | ||
| + | |||
| + | ===== Cod sursă și alte resurse pe GitLab ===== | ||
| + | |||
| + | Proiecul este pe [[https://gitlab.cs.pub.ro/paul_george.solot/final_countdown|Gitlab]] | ||
| + | |||
| + | ===== Jurnal ===== | ||
| + | |||
| + | * 5 aprilie 2026 — am dat comandă pentru componente | ||
| + | * 2 mai 2026 — am încercat primul prototip. Senzorul cardiac era scurtcircuitat, așa că l-am eliminat din proiect. | ||
| + | |||
| + | ===== Bibliografie / Resurse ===== | ||
| + | |||
| + | Resurse folosite: | ||
| + | |||
| + | * documentația oficială ''ESP-IDF'' | ||
| + | * datasheet-ul și documentația ''ESP32-S3'' | ||
| + | * datasheet-ul ''RC522 / MFRC522'' | ||
| + | * datasheet-ul ''MPU6050'' | ||
| + | * datasheet-ul ''PCF8574'' | ||
| + | * documentația ''SSD1306 / SSD1315'' | ||
| + | * documentația ''Expo'' și ''React Native'' | ||
| + | * documentația bibliotecii BLE din aplicația mobilă | ||
| + | * fișierele de schemă și diagramele făcute pe parcurs | ||