This is an old revision of the document!


Impostor Detector

Mogodeanu Claudiu 331CC

Introducere

O reinterpretare a minigame-ului “Start Reactor” din popularul joc AmongUs (video).

  • Jucatorul va avea de replicat cateva secvente succesive in care se aprind niste led-uri dintr-o matrice, cu dificultate reglabila si dinamica.
  • Jocul se va activa daca o persoana este detectata in proximitate.
  • In functie de rezultatul actiunilor, se porneste o alarma sau jucatorul primeste un premiu, aflat intr-o cutie initial inchisa.

Descriere generală

Ordinea etapelor in care functioneaza jocul este urmatoarea:

  1. Prin intermediul senzorului de distanta se detecteaza daca un User este in apropiere, caz in care se incepe jocul propriu-zis. Cat timp jocul este jucat, senzorul este dezactivat.
  2. Se genereaza o secventa aleatoare in care se aprind cateva LED-uri de pe matrice. (se poate repeta acest pas de maximum 5 ori)
  3. User-ul interactioneaza cu matricea de butoane si incearca sa reproduca secventa aparuta anterior:
    1. Daca greseste: se incheie jocul si se trimite un semnal la buzzer pentru a anunta ca s-a gasit Impostorul.
    2. Daca secventa este corecta: se reia pasul 2, doar ca secventele vor fi mai lungi.
  4. Secventele au fost completate cu succes, deci Arduino actioneaza servomotorul, care deschide cutia cu premiu.
  • In timp ce este randul user-ului, acesta poate decide sa scada sau sa creasca dificultatea pentru rundele urmatoare, apasand pe cele 2 butoane aditionale, care trimit semnal microcontroller-ului.
  • Pe timpul jocului, pe un ecran LCD apare constant statusul jocului.

SCHEMA BLOC:

Hardware Design

LISTA DE PIESE SI SCOPUL LOR:

  • Arduino Uno MEGA328P → microcontroller-ul care este centrul proiectului
  • Matrice de butoane 4×4 → user-ul apasa pe butoane pentru a replica secventa
  • Matrice de LED-uri WS2812 → se aprind secvente de led-uri, urmarite de user
  • Modul LCD 1602 → afiseaza statusul jocului
  • Buzzer Pasiv → emite o alarma atunci cand se greseste secventa
  • Butoane aditionale → se poate schimba frecventa cu care se aprind led-urile
  • Senzor Ultrasonic de Distanță HC-SR04 → daca cineva este aproape, se porneste jocul
  • Micro Servomotor SG90 → cand se castiga jocul, se deschide o cutie


SCHEMA HARDWARE
Mediu de dezvoltare: Fusion 360


ALEGEREA PINILOR

  • Modulul LCD este conectat prin I2C ⇒ am folosit pinii de date si clk ai arduino Uno, acestia fiind A4 si A5.
  • Butoanele de dificultate folosesc intreruperi externe (pentru a putea avea efect in timpul altor actiuni), iar pe Uno acestea exista pe pinii D2 si D3.
  • Servomotorul se foloseste de PWM incorporat, dar trebuie sa fie conectat pe un pin care accespta PWM. Am ales D10.
  • Restul componentelor au nevoie de semnale digitale, am incercat sa le grupez pe cat posibil.
  • Pinii pentru traseele de putere (GND si 5V) sunt toti uniti intre ei si folosesc doar cate un pin de la microcontroller.


FORMA INITIALA SI DOVADA FUNCTIONARII PARTIALE

hardware1_cm.jpeg

  • Am testat individual fiecare componenta (dupa ce am dus toate firele), mai am de realizat software-ul complet
  • Componentele sunt lipite/insurubate pe o placa de plexiglas pentru a le da o forma compacta
  • Nu m-am ocupat complet de cable management si design pentru background-ul placii, promit ca o sa arate mai bine de atat firele
  • De asemenea, inca nu este atasat servomotorul la cutie

Software Design

Mediu de dezvoltare: VSCode cu PlatformIO, limbajul C/C++

Biblioteci externe folosite:

Proiectul propriu-zis: github link

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

Rezultate Obţinute

Care au fost rezultatele obţinute în urma realizării proiectului vostru.

Concluzii

Download

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.

Jurnal

  • 25.04 - Comandat piese
  • 28.04 - Creat pagina ocw initiala
  • 02.05 - Done Milestone 1 (Documentatie)
  • 05.05 - Initiat jurnal
  • 12.05 - Unit fire si lipire initiala (hardware initial)
  • 15.05 - Realizat documentatie hardware

Bibliografie/Resurse

Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.

Export to PDF

pm/prj2024/fgul/claudiu.mogodeanu.1716152458.txt.gz · Last modified: 2024/05/20 00:00 by claudiu.mogodeanu
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