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:
Platformă: * Arduino IDE
Librării folosite: * SPI.h, SD.h – pentru accesul la cardul SD (Lab 4, Lab 5) * BluetoothA2DPSource.h – pentru transmiterea audio prin Bluetooth (extensie față de laboratoare) * Wire.h, Adafruit_Sensor.h, Adafruit_ADXL345_U.h – pentru accelerometrul ADXL345 (Lab 2) * math.h, Arduino.h
Surse 3rd-party folosite: * Adafruit_ADXL345_U – pentru comunicarea I2C cu senzorul de mișcare * BluetoothA2DPSource – pentru streaming audio prin Bluetooth
Funcționalități implementate: * Inițializare card SD * Citirea fișierelor WAV și redarea lor prin Bluetooth A2DP * Mapping intensitate sunet → luminozitate LED cu PWM * Control butoane cu debounce * Joc de memorie cu LED-uri și butoane * Detectare mișcare (shake) cu ADXL345 * LED breathing în idle * Detecție double-tap pentru pornirea jocului * Feedback audio și LED pe niveluri
Algoritmi și structuri implementate: * Debounce software cu variabile temporale pentru butoane * Generare secvențe pseudo-aleatoare cu random() * Comparare input utilizator cu secvența memorată * Calcul vector accelerație totală: sqrt(x^2 + y^2 + z^2) * Control PWM pe ESP32 cu ledcWrite(), ledcAttach() * Callback pentru streaming audio Bluetooth
Etapa 3 – Funcții implementate: * get_audio_data() – trimite datele audio către Bluetooth * playFile() – redă fișierul audio de pe card * startMemoryGame(), showSequence(), handleMemoryGame(), gameOver(), gameWin() – logica jocului * setup() – inițializare: SD, senzor, PWM, serial, random seed * loop() – bucla principală: breathing, input, shake, joc
Laboratoare utilizate: * Lab 0: configurare Arduino IDE * Lab 1: PWM, LED-uri, debounce butoane, breathing * Lab 2: comunicare I2C, ADXL345 * Lab 3: organizare cod și funcții * Lab 4: inițializare card SD * Lab 5: citire și redare fișiere WAV * Lab 6: joc de memorie cu LED-uri și butoane
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.