This is an old revision of the document!


Digital Dice

Author: Voicu Teodora-Andreea, 333CA

Introducere

  • Generează doua număr aleatoare între 1 și 6, le afișează pe un display LCD și redă sunetul de aruncare a zarului.
  • Ofera un exemplu practic de integrare a senzorilor și a modulelor audio/video cu un microcontroller Arduino, într-un proiect interactiv și educațional.
  • Am vrut să creez un zar digital, care folosește un accelerometru pentru detectarea „shake”-ului și un LCD pentru afișarea rezultatului, completat de un efect sonor autentic.
  • Demonstrează concepte de hardware și software embedded, este distractiv și poate fi extins la alte aplicații care folosesc detecția de mișcare și redarea de conținut multimedia.

Descriere Generala

  • Hardware:
    • Arduino Uno – unitatea centrală care primeşte date de la accelerometru, generează numărul şi controlează LCD-ul şi modulul audio.
    • Modul accelerometru – detectează gestul de „shake” pentru a declanşa aruncarea zarului.
    • Display LCD – afișează rezultatul numeric al aruncării zarului.
    • Modul SD card + difuzor – stochează şi redă fişierul audio WAV cu efectul sonor de aruncare a zarului.
    • Breadboard şi cabluri de conexiune – realizează legăturile electrice între toate modulele.
  • Software:
    • Citire accelerometru şi detectare „shake”.
    • Generare numere aleatorii 1–6.
    • Afişare mesaje şi rezultate pe OLED.
    • Iniţializare SD şi redare WAV pe buzzer
  • Interacţiuni:
  1. Dispozitivul e zguduit → accelerometrul detecteaza miscare peste SHAKE_THRESHOLD
  2. Stare SHAKING → afiseaza “Shake!” si porneste redarea DICE.WAV pe buzzer
  3. Dupa SHAKE_TIMEOUT fara miscare → opreste WAV, genereaza doua valori random (1–6) și le afiseaza pe OLED
  4. Dupa RESULT_HOLD → revine la “READY!” și asteapta urmatorul shake
  

Diagramă Arduino UNO + MPU-605

Hardware Design

Lista Componente:

Functional Overview:

  • Când este zguduit accelerometrul LIS2DH12, acesta detectează mișcarea și declanșează Arduino-ul să genereze doua numere aleatoare de la 1 la 6. Aceste numere sunt afisate pe ecranul OLED SSD1306, în timp ce, simultan, Arduino-ul redă un fișier WAV cu sunet de zaruri de pe cardul microSD prin buzzerul pasiv.

Circuit

* OLED SSD1306 (I²C)

  • 3.3 V → VCC

Sursa de alimentare a circuitului intern şi a driver-ului display-ului.

  • GND → GND

Reţeaua de masă comună.

  • A4 → SDA

Linia de date I²C: aici circulă octeţi de la Arduino către pixelii OLED-ului.

  • A5 → SCL

Linia de ceas I²C: sincronizează transferul de date pe SDA.

De ce OLED? – Afișează mesaje şi rezultatul zarurilor într-un format grafic compact, cu consum redus de energie.

* Modul SD-card (SPI)

  • 5 V → VCC

Alimentează convertorul de nivel şi interfaţa SPI.

  • GND → GND

Referinţa de masă pentru comunicaţia SPI.

  • D10 → CS (Chip Select)

Selectează modulul SD pe magistrala SPI (când e LOW, modulul răspunde).

  • D11 → MOSI (Master Out Slave In)

Trimite datele din Arduino spre SD (de exemplu, comenzi de citire).

  • D12 → MISO (Master In Slave Out)

Primeşte datele de la SD spre Arduino (conţinutul fişierului WAV).

  • D13 → SCK (Serial Clock)

Ceasul pentru sincronizarea transferului de biţi MOSI/MISO.

De ce SD-card? – Permite stocarea fişierului WAV de sunet de zaruri, fără să încarce memoria internă a plăcii.

* Buzzer pasiv

  • D6 (PWM) → S

Pinul PWM generează semnalul audio propriu-zis (tonuri variabile conform valorilor citite din WAV).

  • 5 V → +

Redă amplitudinea semnalului PWM către buzzer.

  • GND → –

Întoarcerea curentului şi referinţa de masă.

Ce face PWM? – Pulse Width Modulation modulează lăţimea impulsurilor pentru a crea frecvenţe audio perceptibile ca sunet.

* Modul LIS2DH12 (I²C)

  • 3.3 V → VCC

Alimentează senzorul cu tensiune stabilă de 3.3 V.

  • GND → GND

Stabilirea referinţei zero pentru măsurări.

  • A4 → SDA

Linia de date I²C: transmite valorile brute de acceleraţie.

  • A5 → SCL

Linia de ceas I²C pentru sincronizarea transferului de date.

  • 5 V → SDO/SA0

Configurează adresa I²C la 0x19 (pull-up intern), astfel evitând conflicte pe bus.

  • (neconectat) → CS

CS rămâne HIGH; senzorul rămâne mereu activ pe I²C.

De ce accelerometru LIS2DH12? – Detectează gestul de „shake” cu precizie, fără butoane suplimentare, şi are consum redus.

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

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

Export to PDF

pm/prj2025/vstoica/teodora.voicu0210.1748540549.txt.gz · Last modified: 2025/05/29 20:42 by teodora.voicu0210
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