Cub de led-uri muzical

Realizator: Leu-Dobre Simona 333CB

Email: simona.leu@stud.acs.upb.ro

Introducere

Prezentarea pe scurt a proiectului:

  • care a fost ideea de la care am pornit
  • ce face
  • care este scopul lui
  • de ce ar fi util

Care a fost ideea de la care am pornit?

Am pornit de la diferitele luminițe ambientale și instalații de Crăciun, aducând în plus ideea de redare a muzicii și a jocurilor de lumini într-un obiect compact, care ocupă puțin spațiu.

Ce face?

Cubul de led-uri se va lumina în funcție de muzica redată de pe un card SD. Utilizatorul va putea schimba și pune pe pauză melodiile cu ajutorul unor butoane și va putea vizualiza melodia redata pe ecranul LCD.

Care ar fi scopul?

Principalul scop al proiectului este acela de a ajuta la crearea unui cadru plăcut pe timpul diferitelor activități (job, gaming, studiat, citit, etc.)

De ce ar fi util?

Din ce în ce mai multe persoane care petrec un timp considerabil în fața calculatorului preferă să își creeze un cadru plăcut, relaxant, iar un astfel de cub ar fi o soluție perfectă pentru acest lucru.

Descriere generală

Proiectul presupune realizarea unui cub de led-uri de dimensiune 3x3x3 care se va lumina în funcție de intensitatea muzicii redate de pe un card SD. Pentru redarea muzicii se va folosi un cititor SD și un speaker.

Utilizatorul va putea schimba melodiile și va putea pune pe pauză melodia curentă cu ajutorul unor butoane (înainte, înapoi, pauză/play). Melodia redată va fi afișată pe un ecran LCD.

La început, se va afișa pe ecran un mesaj care va solicita utilizatorului apăsarea unui buton (play) pentru a porni atât cubul cât și muzica. După acest pas, se va incepe redarea muzicii și iluminarea cubului in funcție de intensitatea acesteia.

Schema Bloc a proiectului

Hardware Design

Hardware design:

  • listă de piese
  • scheme electrice
  • diagrame de semnal
  • rezultatele simulării

Listă componente

Scheme electrice

cub_luminat.jpg card_sd_si_display.jpg

CONECTIVITATE - PINI ARDUINO MEGA 2560

Pin 1 - conectat la pinul 4 (RS) de pe display-ul LCD

Pin 2- conectat la pinul 6 (E) de pe display-ul LCD

Pin 4 - conectat la pinul 11 (D4) de pe display-ul LCD

Pin 5 - conectat la pinul 12 (D5) de pe display-ul LCD

Pin 6 - conectat la pinul 13 (D6) de pe display-ul LCD

Pin 7 - conectat la pinul 14 (D7) de pe display-ul LCD

Pinii 1 (VSS), 5(RW) si 16 (K) de pe display-ul LCD sunt conectati la GND.

Pinii 2 (VDD) si 15 (A) de pe display-ul LCD sunt conectati la 5V.

Pinul 3 (V0) al display-ului este conectat la un potentiometru.

Pin 24 - conectat la buton albastru

Pin 26 - conectat la buton galben

Pin 28 - conectat la buton verde

Pin 50 - conectat la pinul MISO al modulului SD reader

Pin 51 - conectat la pinul MOSI al modulului SD reader

Pin 52 - conectat la pinul SCK al modulului SD reader

Pin 53 - conectat la pinul CS al modulului SD reader

Ceilalti pini acestui modul SD reader sunt conectati corespunzator la 5V si GND.

Pin A0 - conectat la pinul de input (IN) al modulului LM386.

Ceilalti pini ai modulului LM386 sunt conectati corespunzator la 5V si GND. La acest modul este conectat speaker-ul (in cele doua borne verzi de pe modul).

Liniile si coloanele cubului de LED-uri sunt conectate astfel la pinii placutei Arduino:

L0 = 23; L1 = 25; L2 = 27;

C0 = 29; C1 = 31; C2 = 33; C3 = 35; C4 = 37; C5 = 39; C6 = 41; C7 = 43; C8 = 45;

Software Design

MEDIUL DE DEZVOLTARE

Pentru realizarea proiectului voi folosi Arduino IDE.

BIBLIOTECI SI SURSE 3rd PARTY

In cadrul implementarii proiectului am avut nevoie de urmatoarele biblioteci Arduino:

* SD.h - pentru folosirea cardului SD (cu modulul SD reader)

* TMRpcm.h - pentru redarea fisierelor audio de pe cardul SD

* LiquidCrystal.h - pentru folosirea LCD-ului

Pentru lucrul cu butoane am folosit Button.h, implementare preluata dintr-una dintre paginile de proiecte (link: https://ocw.cs.pub.ro/courses/pm/prj2021/dbrigalda/jocuri-de-memorie).

IMPLEMENTAREA

Din cauza unor probleme de dimensiune a fisierelor audio, am recurs la impartirea in bucati mai mici a fisierului audio. Un fisier de dimensiune mai mare nu putea fi prelucrat. Astfel ca, pentru o melodie corespund mai multe fisiere de forma a<contor>.wav, pentru urmatoarea corespund fisierele b<contor>.wav, etc. Pentru o afisare placuta pe LCD, am stocat denumirile melodiilor redate (in ordine) intr-un fisier. Astfel, pentru melodia compusa cu litera a se va afisa prima intrare/denumire in fisier, pentru cea cu b se va afisa a doua denumire din fisier, etc.

Trecerea de la o bucata de melodie la alta este insesizabila pentru utilizator (are continuitate) si se realizeaza prin actualizarea contorului in numele fisierului (ex: a1.wav → a2.wav). Trecerea de la o melodie la alta se face, de asemenea, in mod placut, astfel ca se va “incrementa” litera din numele fisierului, iar contorul va fi resetat la 1 (ex: a9.wav → b1.wav) Pentru fiecare trecere de la o bucata la alta se verifica faptul ca exista fisierul cu numele respectiv compus. Daca exista se va reda; daca nu exista inseamna ca melodia a ajuns la final, si se va trece la urmatoarea melodie (urmatoarea litera si contor 1). Daca nu exista un fisier cu acest nume inseamna ca s-au redat toate melodiile incarcate pe cardul SD si se va relua redarea incepand cu a1.wav. Pe display-ul LCD se face afisarea melodiei curent redate, afisarea se face pe randul 2 al LCD-ului (pe randul 1 se afiseaza starea: playing sau paused). Afisarea denumirii se face de la dreapta la stanga, prin mutarea textului cu cate o casuta la un interval de scroll setat.

Pentru o experienta mai placuta am realizat implementarea a 3 butoane utile in folosirea acestui proiect/produs:

1. BACK - acest buton da replay la melodia curenta (se incepe din nou). Acest lucru se realizeaza prin setarea contorului cu care se compune numele la 1, pastrandu-se litera. Se va intra direct in starea playing, chiar daca inainte de apasare proiectul se afla pe pauza (va fi resetat jocul de lumini astfel)

2. PAUSE - acest buton pune pe pauza melodia si jocul de lumini (LED-urile se vor opri exact asa cum erau cand s-a apasat).

3. NEXT - acest buton face trecerea la urmatoarea melodie (daca nu exista o urmatoare melodie, inseamna ca s-au redat toate melodiile incarcate pe cardul SD si se reia redarea de la prima - a1.wav). Trecerea de la bucata curenta de melodie la bucata de inceput a urmatoarei melodii se realizeaza cum am descris mai sus (contorul se reinitializeaza la 1 si se incrementeaza litera din nume). Se actualizeaza si denumirea melodiei afisate pe LCD.

Cubul de LED-uri se lumineaza intr-un mod random, creand astfel jocuri de lumini unice la fiecare redare. Am tinut cont ca acesta sa nu se lumineze chiar de la inceput (nu pana nu incepe melodia). De asemenea, acesta va prelua pauza melodiei (se va opri exact in configuratia din momentul in care s-a apasat butonul pentru pauza). La apasarea butoanelor BACK si PAUSE, chiar daca inaintea apasarii proiectul se afla in pauza, se va trece in playing, iar jocul de lumini al cubului se va reseta (va trece din pause in playing, cu alte valori random pentru jocul de lumini).

Rezultate Obţinute

Rezultatul final: un cub de LED-uri care se lumineaza si reda muzica de pe un card DS prin intermediul unui speaker, afisand starea melodiei (paused / playing) si denumirea acesteia

final-1.jpg final-2.jpg

Un scurt demo se regaseste aici:

Cub de LED-uri muzical - Proiect PM 2024

Concluzii

1. Pentru a putea folosi modulul SD cu Arduino este nevoie ca dimensiunea cardului SD sa nu depaseasca 32GB, pentru a putea fi formatat la FAT32.

2. Fisierele de dimensiune prea mare nu vor putea fi redate (solutie: impartire in mai multe fisiere de dimensiune mai mica).

3. Denumirile prea lungi pentru fisiere nu pot fi gestionate (solutie: deminiri mai scurte).

4. Pentru a putea fi folosit modulul SD intr-un circuit complex (cu mai multe componente) este necesara folosirea pinilor atat de 3.3V, cat si 5V (pentru a putea fi alimentat corespunzator)

Download

Arhiva proiectului se poate descarca de aici:

leu-dobre_simona_333cb_proiect_pm.zip

Jurnal

  • martie 2024: Cumpărare piese de bază/kit-uri de electronică, plăcuță Arduino, diferite module https://cleste.ro/
  • martie-aprilie 2024: Căutare temă proiect
  • 16 aprilie 2024: Discutare și stabilire temă proiect cu asistentul
  • 29 aprilie 2024: Creare pagină wiki și realizare documentație
  • 9 mai 2024: Cumparat piese suplimentare
  • 13 mai 2024: Cumparat speaker
  • 13 -17 mai 2024: Lipit LED-uri si conectat componente
  • 17 mai 2024: Realizat schema electrica a proiecului
  • 19 mai 2024: Comandat foarfeca pentru taiat surplus de sarma cub de LED-uri
  • 19 - 21 mai 2024: Verificare si testare hardware
  • 21 mai 2024: Cumparat un card SD de 16GB (cel pe care il aveam avea o capacitate de 64GB si nu putea fi formatat la FAT32)
  • 22 - 26 mai 2024: Terminat parte software si realizarea aspectului final al hardware-ului
  • 27 mai 2024: Finalizat pagina de ocw, scris README, pus comentarii pe cod, testat proiect , PM FAIR

Bibliografie/Resurse

pm/prj2024/ccontasel/simona.leu.txt · Last modified: 2024/05/27 14:33 by simona.leu
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