This is an old revision of the document!
FRIENDLY Baby Yoda
Introducere
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.
Prezentarea pe scurt a proiectului vostru:
Jucarie care se conecteaza la orice boxa portabila (Broadcast)
Apesi pe butoane ca sa auzi melodii / audio-uri amuzante
Led-uri care se aprind in functie de intensitate
Joc interactiv de memorie
Joc interactiv de aruncat in sus
Descriere generală
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).
Hardware Design
Toate modulele comunică cu microcontrolerul (ESP32 sau similar). Codul rulează local, cu opțională conectare la internet pentru generarea de replici.
Aici puneţi tot ce ţine de hardware design:
Microcontroler ESP32
2 Led-uri Rosii
Modul Card Sd cu operatii de read si write (Nu mp3)
Modul Accelerometru
2 rezistente de 220 Ohm
Baterie 5v reincarcabila
Cablu Micro Usb → Micro usb
Placa de dezvoltare pentru lipit
Card Micro Sd minim 2GB
Poza prototip 1:
Poza prototip 2:
Poza dupa lipit complet:
Software Design
Descrierea codului aplicației (firmware):
Platformă: Arduino IDE
Librării folosite:
SPI.h, SD.h – acces card SD (Lab 4, Lab 5)
BluetoothA2DPSource.h – streaming audio prin Bluetooth
Wire.h, Adafruit_Sensor.h, Adafruit_ADXL345_U.h – accelerometru ADXL345 (Lab 2)
math.h, Arduino.h
Surse 3rd-party:
Funcționalități:
Inițializare SD card
Redare fișiere WAV prin Bluetooth
LED-uri controlate PWM în funcție de intensitatea sunetului
Butoane cu debounce
Joc de memorie cu LED-uri și butoane
Detectare mișcare (shake) cu accelerometru
LED breathing în stare de idle
Double-tap pentru lansarea jocului
Feedback audio + LED la fiecare nivel
Algoritmi și structuri:
Debounce software cu timere
Generare secvențe aleatoare cu random()
Comparare input utilizator cu secvență memorată
Calcul accelerație totală (sqrt x²+y²+z²)
Control PWM cu ledcWrite și ledcAttach
Callback-uri audio pentru Bluetooth
Funcții implementate (etapa 3):
get_audio_data() – trimite date audio prin Bluetooth
playFile() – redă fișier audio de pe SD
startMemoryGame(), showSequence(), handleMemoryGame(), gameOver(), gameWin()
setup(), loop()
Laboratoare utilizate:
Lab 0: Folosire led-uri, un fel de semafor.
Lab 1: Am folosit PWM și debounce ca sa nu se apese butoanele de prea multe ori
Lab 2: Am folosit timere pentru jocul interactiv de memorie.
Lab 5: Am folosit conceptele din lab 5 despre protocolul SPI si card SD pentru a citi fisiere .wav de pe SD si a le reda prin Bluetooth folosind ESP32.
Lab 6: Am folosit protocolul I2C din lab 6 pentru a citi acceleratia de la senzorul ADXL345 prin comenzi Wire pe ESP32.
Rezultate Obţinute
In final am obtinut o jucarie interactiva, draguta, cu umorul meu. O jucarie cu care ma pot lauda la rude, sa ma joc cand ma plictisesc, sa o folosesc pe post de boxa portabila. Functioneaza, e rigidida, nu se strica usor, reincarcabila si usor sa pun melodii noi.
Concluzii
Well, proiectul a fost un succes. Pot sa afirm ca am invatat o gramada de skill-uri noi, desi ma asteptam sa fie mult mai liniar procesul. Am inceput fara sa stiu cum se foloseste un breadboard, cu un tutorial de 10 minute in care imi explica cum sunt pinii uniti, cum sa nu-ti arzi componentele, cum sa fac un simplu circuit cu un led, cum sa folosesc esp32, cum sa codez in arduino IDE, cum sa lipesc componente, am si cusut, cum ar trebuii sa ai un plan inainte sa actionezi, de asemenea desi nu a ajuns in varianta finala (din fericire) am invatat de Rest Api , comunicare http pentru a obtine date (datorita multor erori cu modulele de card SD 3 module in total si lipsei de memorie pentru esp32 stocam in cloud audio-urile si le extrageam pe bucati , dar asta afecta calitatea). Un succes ingineresc si am obtinut o jucarie interactiva si skill-uri noi.
Download
Aici postez varianta finala si versiunile / variantele de testing, deoarece am avut mult prea multe erori.
Versiune finala:
final_baby_yoda.zip
Versiuni extra:
versiuni_testari.zip
Pentru a executa codul: deschide Arduino IDE, instaleaza toate bibliotecile din include, apoi apasa pe upload si tine apasat cand apare connecting pe butonul de boot pana se scrie in memorie, apoi poti elibera, asteapta 2-3 secunde sa se conecteze la boxa si esti good to go.
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