Acest proiect reprezinta dezvoltarea unui sistem ce incorporeaza un Audio Spectrum Analyzer si un Music Player. Astfel, acesta va citi fisiere in format wav de pe un SD card si va reda audio, printr-un un difuzor, continutul acestora. Deasemenea, concomitent cu redarea sunetelor are loc afisarea printr-o matrice de LED-uri a intensitatii semnalului de intrare versus frecventa.
In urma cautarilor asupra unui proiect interesant, am dat peste descrierea unui proiect asemanator, http://www.instructables.com/id/AVR-acoustic-spectrum-analyzer/?ALLSTEPS , care a reprezentat mai departe, principala sursa de inspiratie. Cu toate acestea, implementarea mea este mult diferita, pornind de la piesele folosite, pana la codul ce reda functionalitatea sistemului.
Am considerat ca acesta este un proiect util, pentru dezvoltarea personala, deoarece acesta implementeaza multiple tipare didactice in dezvoltarea embedded. Astfel, sistemul incorporeaza o parte de citire, analiza si transformare a unor date de pe fisiere stocate pe un card SD, redare a noilor informatii in mod audio printr-un difuzor si vizual printr-o matrice de LED-uri si o parte de constructie armonioasa din punct de vedere electronic a resurselor hardware necesare pentru realizarea functionalitatilor mai devreme enumerate.
Schema bloc:
Mod de interactionare:
Sistemul presupune interactiunea cu un user, care are la dispozitie 3 butoane pentru comunicarea cu acesta.
- butonul START/STOP activeaza modul de redare a melodiei curente (la deschiderea aparatului se poate reda prima din lista de fisiere *.wav ordonate alfanumeric pe card-ul SD prezent) daca acesta se afla in starea “off” si intrerupe redarea acesteia daca se afla in starea “on”;
- butonul NEXT conduce la trecerea la urmatatorul fisier de pe card (daca inainte de apasarea butonului, melodia curenta se afla in starea “on”, dupa, se va incepe automat redarea urmatoarei melodii, altfel - starea “off” - fiind nevoie de apasare butonului START/STOP) cu exceptia cazului in care melodia curenta este ultima din lista caz in care butonul nu are nicio functionalitate;
- butonul PREV conduce la un comportament similar cu cel al butonului NEXT, cu deosebirea se trece la melodia precedenta, cu precizarea ca melodia curenta sa fie diferita de cea cu indexul 1 (prima melodie).
In momentul in care o melodie se afla in starea “on” va fi redata audio prin difuzor, numele ei va fi afisat pe LCD si dupa, ritmul acesteia va putea fi vizualizat de asemeanea prin intermediul LCD-ului.
Lista de piese:
Nume | Nr. buc. | Preț unitar | Cost total | Obs. |
---|---|---|---|---|
220µF 25V | 1 | 0.3 | 0.3 | http://www.syscomelco.ro/ProdusDetaliu.asp?ID=8469 |
100nF 63V | 2 | 0.35 | 0.7 | http://www.syscomelco.ro/ProdusDetaliu.asp?ID=289 |
47nF 50V | 1 | 0.3 | 0.3 | http://www.syscomelco.ro/ProdusDetaliu.asp?ID=8076 |
3k3 | 3 | 0.7 | 2.1 | http://www.syscomelco.ro/ProdusDetaliu.asp?ID=9601 |
1k6 | 3 | |||
10R | 1 | - | - | de la un monitor |
10K | 1 | - | - | de la un monitor |
LM386 | 1 | 2.5 | 2.5 | http://www.conexelectronic.ro/produs.php?id=48344 |
SACAZ | 1 | 4 | 4 | http://www.conexelectronic.ro/produs.php?id=40470 |
Potentiometru 10k | 1 | 0.6 | 0.6 | http://www.syscomelco.ro/ProdusDetaliu.asp?ID=9167 |
Soclu card SD | 1 | de la un telefon | ||
LCD DEM16101 | 1 | 30.5 | 30.5 |
Componente hardware:
Card SD
Schema electrica similara cu cea din laborator cu mentionarea ca am folosit 2 diode 1N4005L pentru reducearea tensiunii ce intra in SD card la aproximativ 3.6V (5V - 2*0.7V).
Iesire audio
Pentru calitate marita a calitatii sunetelor am folosit un amplificator + filtru in varinata gain 20 din datasheet-ul aferent, volumul putand fi modificat cu un potentiometru.
LCD
Asemenea ca in laborator.
Alocare pini:
Pin | Descriere | Componenta |
---|---|---|
PD5 | AUDIO | Difuzor |
- | - | - |
PD6 | CS | SD Card |
PB5 | MOSI | SD Card |
PB6 | MISO | SD Card |
PB7 | SCK | SD Card |
- | - | - |
PA1 | PREV | Buton |
PA2 | NEXT | Buton |
PA3 | START/STAHP | Buton |
- | - | - |
PC0 | RS | LCD |
PC1 | R/W | LCD |
PC2 | E | LCD |
PC3 | D4 | LCD |
PC4 | D5 | LCD |
PC5 | D6 | LCD |
PC6 | D7 | LCD |
Mediul de dezvoltare:
- SO: Windows 7 Ultimate 64-bit
- Editor: Programmer's Notepad
- Compilator: WinAVR (collection of AVR software pre-compiled for Windows)
- Limbaj de programare: C
Algoritmi si librarii
Incluse in bibliografie si surse.
Surse şi funcţii implementate:
Am pornit dezvoltarea de la laboratorul 4, folosind un api pentru LCD si un sistem de fisiere (Petit FatFs) pentru comunicarea cu SD-card-ul.
Am integrat functionalitatile butoanelor, insa pentru afisarea ritmului unei melodii a trebuit sa aman finalizarea pana la achizitia unui nou lCd, sau construirea unei matrici de led-uri.
Am regretat alegerea proiectul din varii motive (matrice de LED-uri greu de realizat, LCD cu probleme, conglomerat de componente - SD card, LCD, difuzor), asa ca sfatul meu este sa alegeti un proiect care sa va placa mult sa lucrati la el, chiar si sa renuntati la alte teme pentru a va dedica lui. Spun asta deoarece ideea de proiect embedded este unul din putinele proiecte practice cu care te vei intalni, atipica rerereinventarii rotii cu care esti obisnuit in facultate.
Partea cu adevarat importanta a acestui proiect, pentru mine, a fost ca mi-a deschis cateva portite spre ce as putea cerceta mai intens, si anume Robotica si Inteligenta Artificiala.
Data | Observatii |
---|---|
08.05 | Realizat schema pentru card SD |
13.05 | Achizitionat toate compomentele necesare |
14.05 | Realizat schema pentru iesirea la difuzor |
15.05 | Incercare esuata de a conecta LCD-ul |
17.05 | Incercare cu succes de a conecta LCD-ul |
22.05 | LCD-ul afiseaza pixelii doar pe jumatate de ecran |
http://en.wikipedia.org/wiki/Spectrum_analyzer
http://www.instructables.com/id/AVR-acoustic-spectrum-analyzer/?ALLSTEPS
http://www.ti.com/lit/ds/symlink/lm386.pdf
http://display-elektronik.de/DEM16101TGH.pdf
http://cs.curs.pub.ro/wiki/pm/lab/lab4
http://www.dannyg.com/examples/res2/resistor.htm
http://makefurt.googlecode.com/svn/!svn/bc/24/trunk/arduino-libraries/FixFFT/