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 4×4 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.


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
4×4 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 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
pm/prj2026/jan.vaduva/paul_george.solot.txt · Last modified: 2026/05/02 21:32 by paul_george.solot
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