This is an old revision of the document!
Cu totii ne-am plictisit de jucariile clasice care sunt mereu vesele si care inspira un aer pozitiv. Eu o sa fac o jucarie pasiva-agresiva care va impartasi ura si glume, o jucarie mai amuzanta care nu este detinata copiilor, va fi fioroasa cu ochii rosii si o voce agresiva, dar sub o cochilie safe de baby yoda.
Jucăria este compusă dintr-un modul principal cu microcontroler, senzori de mișcare, boxa portabila, LED-uri rosii.
Jucaria va avea un corp de baby yoda in care voi pune piese hardware ca sa devina “inteligenta”. Aceasta are 2 butoane pe brate ca sa poti interactiona cu ea, dar nu doar atat, si un accelerometru (WOW), astfel sa-si dea seama daca o zgudui prea tare sau daca o arunci in sus. Foloseste o tehnologie wireless foarte avansata numita Bluetooth ca sa se conecteze la (TOATE) boxele portabile pornite in jur si sa-si faca glasul auzit (E si o unealta de terorism din acest motiv). Are mai multe interactiuni gata de folosit de catre useri, este rezistenta, lipita si rezista la cazaturi (si la copii de 3 ani, am testat).
Toate modulele comunică cu microcontrolerul (ESP32 sau similar). Codul rulează local, cu opțională conectare la internet pentru generarea de replici.
Poza prototip 1:
Poza prototip 2:
Poza dupa lipit complet:
Librării folosite:
SPI.h, SD.h – pentru accesul la cardul SD (Lab 4, 5)
BluetoothA2DPSource.h – transmitere audio prin Bluetooth (extensie)
Wire.h, Adafruit_Sensor.h, Adafruit_ADXL345_U.h – accelerometru (Lab 2)
math.h, Arduino.h
Surse 3rd-party:
Adafruit_ADXL345_U – comunicație I2C cu senzorul de mișcare
BluetoothA2DPSource – streaming audio Bluetooth
Funcționalități implementate:
Inițializare SD card (Lab 4, 5)
Redare fișiere WAV prin Bluetooth A2DP
PWM: luminozitate LED în funcție de sunet (Lab 1)
Control butoane cu debounce (Lab 1)
Joc de memorie cu LED-uri (Lab 6)
Detectare shake (Lab 2)
LED breathing în idle (Lab 1)
Double-tap pentru inițiere joc (Lab 1)
Feedback audio+LED pe niveluri (Lab 6)
Algoritmi și structuri:
Debounce cu variabile temporale
Generare secvențe random cu random() (Lab 1)
Comparare input utilizator cu secvență memorată
Calcul accelerație totală: sqrt(x^2 + y^2 + z^2)
PWM control cu ledcWrite() și ledcAttach() (ESP32)
Callback audio pentru Bluetooth
Funcții implementate (Etapa 3):
get_audio_data() – trimite audio prin Bluetooth
playFile() – redare fișier WAV de pe SD
startMemoryGame(), showSequence(), handleMemoryGame(), gameOver(), gameWin() – logica jocului
setup() – inițializare SD, senzor, LED-uri, Serial
loop() – breathing, butoane, joc, shake
Laboratoare folosite:
Lab 0 – Arduino IDE
Lab 1 – PWM, debounce
Lab 2 – accelerometru
Lab 3 – modularizare cod
Lab 4 – SD card
Lab 5 – audio WAV
Lab 6 – joc cu LED-uri
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.