JOC "MAGIC CAST" - BAGHETĂ MAGICĂ

Introducere

Proiectul presupune realizarea unei “baghete magice” prin intermediul căreia se va putea juca un minigame. Bagheta va:

  • primi date de poziționare în spațiu de la un accelerometru
  • calcula prin anumite formule geometrice matematice și metode de atenuare a zgomotului forma geometrică realizată (ex: cerc, pătrat, zig-zag)
  • va dispune de diferite ”vrăji„ depinzând de forma realizată (exemplu: cerc → apă; pătrat → pământ)
  • va avea efecte tipice vrăjii realizate (led, buzzer)
  • (posibil) va avea output pe monitorul unui laptop unde va rula un cod de minigame în care diferiți monștrii vor fi uciși cu diferite vrăji

Ideea de bază este realizarea unui joc simpu și intuitiv pe care colegii să-l poată juca la târgul de proiecte PM.

Descriere generală

Descrierea Modulelor și a Modului de Interacțiune

Proiectul “Magic Cast” este compus dintr-o serie de module hardware (senzori, actuatori, unitate de procesare) și module software (algoritmi de procesare a semnalului și decizie), care colaborează pentru a transforma mișcarea fizică într-o acțiune virtuală.

1. Module Hardware

  • Sursă de Alimentare (Acumulator 18650 + Modul Boost 5V): Asigură portabilitatea “baghetei”. Modulul de boost ridică tensiunea bateriei Li-Ion la 5V stabili, alimentând direct microcontrolerul și senzorul.
  • Modul Input Senzorial (MPU6050 - Accelerometru & Giroscop): Este responsabil cu captarea datelor de mișcare pe 6 axe (accelerație și rotație) în spațiul 3D.
  • Buton “Trăgaci” (Push-button): Un element de control conectat la un pin digital (GPIO) cu rezistență de pull-up internă. Acționează ca un semnal de declanșare (trigger) pentru a delimita momentul în care utilizatorul desenează forma în aer.
  • Unitatea Centrală (Microcontroler ATmega328P - Xplained Mini): Reprezintă creierul hardware al proiectului. Acesta interoghează senzorii, execută algoritmul software și comandă perifericele de ieșire.
  • Module de Feedback Local (Buzzer Pasiv & LED RGB): Oferă confirmare senzorială utilizatorului. Buzzerul generează feedback audio (frecvențe specifice fiecărei vrăji prin semnale PWM), iar LED-ul RGB își schimbă culoarea în funcție de elementul vrăjii invocate (ex: albastru pentru apă, roșu pentru foc).
  • Interfața cu Jocul (Laptop / Monitor): Rulează aplicația/jocul final care primește comenzile și afișează efectele vizuale (ex: distrugerea monștrilor).

2. Module Software (Logica internă pe ATmega328P)

  • Modulul de Filtrare Zgomot: Preia datele brute de la senzorul MPU6050, care conțin adesea “zgomot” cauzat de tremurul mâinii. Folosește un filtru matematic (ex: filtru trece-jos sau filtru complementar) pentru a netezi valorile înainte de analiză.
  • Modulul de Detecție Traseu (Segmentare): Acest modul software se activează doar când starea butonului hardware trece în LOW (apăsat). Înregistrează coordonatele mișcării succesive într-un buffer (vector de date) pentru a forma un traseu continuu.
  • Modulul de Identificare Vrajă (Pattern Matching): Procesează traseul finalizat (după eliberarea butonului). Analizează variațiile geometrice din buffer și, printr-un algoritm de recunoaștere a formelor (ex: calcularea schimbărilor de direcție sau distanțe minime), asociază traseul cu un anumit gest prestabilit (Cerc, Pătrat, Zig-Zag).

3. Modul de interacțiune a modulelor (Fluxul datelor) Sistemul funcționează pe baza unui flux continuu de tipul Input → Procesare → Output:

  • Inițierea acțiunii: Microcontrolerul așteaptă o acțiune pe pinul GPIO al Butonului Trăgaci. Când utilizatorul apasă butonul și mișcă bagheta, sistemul intră în starea de achiziție.
  • Achiziția datelor: Prin intermediul magistralei I2C (pinii SDA și SCL), ATmega328P citește în mod repetat datele senzorului MPU6050 la o frecvență fixă.
  • Procesarea (Software): Datele citite trec secvențial prin Modulul de Filtrare, sunt stocate de Modulul de Detecție a Traseului, iar la eliberarea butonului, Modulul de Identificare analizează traseul și returnează un cod specific vrăjii (ex: VRAJA_CERC).
  • Generarea Output-ului: Odată ce vraja a fost identificată, microcontrolerul ia trei acțiuni simultane:
    • Trimite semnale PWM modificate către Buzzer pentru a genera sunetul specific.
    • Modifică starea pinilor PWM/GPIO legați la LED-ul RGB pentru a afișa culoarea vrăjii.
    • Transmite un șir de caractere (ex: “CAST:WATER\n”) prin protocolul UART (Serial) către Laptop, declanșând acțiunea în jocul video.

Hardware Design

Lista de piese (Bill of Materials - BOM)

  • Microcontroler: Placă de dezvoltare ATmega328P Xplained Mini (creierul proiectului).
  • Senzor Mișcare: Modul GY-521 (IC original MPU-6050) – Accelerometru și giroscop pe 3 axe (comunicație I2C).
  • Alimentare: Carcasă Powerbank USB 5V pentru acumulatori 18650 – Va oferi tensiune stabilă de 5V și portabilitate pentru baghetă.
  • Buton Control: Buton Push 6x6x6 mm – Folosit ca ”trăgaci” pentru a iniția citirea gestului.
  • Feedback Audio: Buzzer pasiv (difuzor intern de placă de bază PC) – Pentru redarea efectelor sonore specifice fiecărei vrăji.
  • Feedback Vizual: * 1x LED RGB 10mm (catod comun) – Va lumina în culoarea specifică vrăjii (ex: roșu=foc, albastru=apă).
  • * LED-uri opționale pentru status (Bicolor, Galben 3mm, Verde 5mm) – Pentru a semnaliza starea baghetei (ex: galben pentru ”mod înregistrare”, verde pentru ”gata de utilizare”).
  • Unordered List ItemSuport Fizic: Placă PCB prototipare dublă față, 4x6cm, FR4.

1. Diagrama de semnal I2C (Comunicația cu senzorul MPU-6050) Comunicația este inițiată printr-o condiție de START pe linia de date (SDA), urmată de transmiterea adresei senzorului și a bitului de Read/Write. Sincronizarea este menținută de semnalul de ceas (SCL) generat de microcontroler. Fiecare pachet de date este validat de un bit de confirmare (ACK).

2. Diagrama de semnal CTC / Timer (Controlul Buzzerului Pasiv) Pentru a crea efectele sonore specifice fiecărei vrăji (frecvențe diferite), se utilizează Timer/Counter-ul intern al microcontrolerului în modul CTC (Clear Timer on Compare Match). Conform diagramei, timerul (TCNTn) se incrementează sincron cu ceasul (divizat prin prescaler) până când atinge valoarea maximă definită în registrul de comparație (OCRnx). În acel moment (TOP), timerul se resetează la zero și flag-ul de Output Compare (OCFnx) este setat. Poate fi controlat software exact prin modificarea valorii TOP, dictând astfel nota muzicală redată de buzzer.

Aici puneţi tot ce ţine de hardware design:

Software Design

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

Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.

Bibliografie/Resurse

Resurse Hardware:

Resurse Software:

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

Export to PDF

pm/prj2026/florin.stancu/ioana_ligia.popescu.txt · Last modified: 2026/05/13 12:35 by ioana_ligia.popescu
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