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:

  • Adafruit_ADXL345_U – comunicare I2C cu senzorul de mișcare
  • BluetoothA2DPSource – streaming audio A2DP

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

pm/prj2025/rnedelcu/george.bruma.1748428817.txt.gz · Last modified: 2025/05/28 13:40 by george.bruma
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