Table of Contents

Cosmin-Nicolae PRUNARU (66919) - Spectrum analyzer

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul va folosi analiza Fourier pentru a transforma semnale din domeniul timp in domeniul frecventa.

Scopul proiectului este de a calcula in timp real fluctuatiile in domeniul frecventa ale unor melodii citite de pe un card SD si sa afiseze aceste informatii pe un ecran LCD in timp ce melodia este redata prin intermediul unui difuzor.

Ideea de la care am pornit este un videoclip de pe YouTube ce mi s-a parut interesant: Spectrum analyzer.

Proiectul este util deoarece voi invata cum se construieste o placuta de la 0 si cum sa caut componentele necesare, voi aplica concepte matematice invatate intr-o aplicatie practica si dupa terminarea acestuia voi ramane cu un dispozitiv interesant cu care sa imi ocup timpul =).

Descriere generală

 Schema de functionare

Melodiile vor fi citite de pe cardul SD, apoi vor fi prelucrate in controller pentru a obtine datele in domeniul frecventa, melodia originala va fi redata la speaker iar datele obtinute in urma FFT vor fi afisate pe ecranul LCD.

Ulterior daca totul merge bine ma gandesc sa adaug si o optiune de modificare a volumului folsind Qtouch Sliderul de pe placuta.

Hardware Design

Pe langa piesele de baza ce includ micro controllerul, rezistente, condensatori etc., voi mai avea nevoie de:

Schemele electrice si diagramele de semnal, rezultatele simularii:

 Schema electrica

Software Design

Mediul de dezvoltare a fost Linux, Sublime Editor pentru editare de text si HIDbootloader pentru incarcarea programelor pe placuta.

Librariile folosite sunt impratite in 3 categorii:

  1. pentru citirea datelor de pe cardul SD am folosit “Petit FatFs”
  2. pentru calculul FFT am folosit o librarie disponibila aici
  3. pentru LCD am folosit libraria din laborator

Am pornit de la generarea animatiei pentru LCD si am creat 7 caractere custom reprezentand barele la diverse nivele de umplere, apoi am creat o functie ce imi afiseaza la o coloana data de pe LCD (intre 1 si 16) o valoare data (intre 0 si 16). Am implementat apoi citirea melodiilor in format .wav de pe card si redarea acestora in mod PWM. In final am folosit o librarie scrisa in assembly (necesar pentru rapiditate si pastrarea continuitatii melodiei redate) pentru calculul FFT si afisarea prin intermediul LCD-ului a rezultatelor finale.

Rezultate Obţinute

Am obtinut un Spectrum Analyzer rudimentar, ce poate capta frecvente de pana la 44100 Hz. Rata de refresh a ecranului este de 8 ori pe secunda, timp la care se mai adauga un mic delay cauzat de intreruperile necesare calcului FFT si afisarea pe ecran. Valorile obtinute nu se ridica la nivelul unui aparat profesional insa sunt destul de bune pentru a observa schimbarile mari de frecventa.

Concluzii

Ca si concluzii pot spune ca acest proiect m-a purtat prin toate laboratoarele de PM (interfatare LCD, intreruperi de ceas, citire date de pe un card SD etc.), acestea fiind si locul unde am gasit raspunsul la eventualele nelamuriri ce le-am avut. In concluzie a fost un proiect interesant la care mi-a placut sa lucrez (motiv pentru care l-am si ales), iar rezultatul este unul satisfacator comparat cu proiectul de unde m-am inspirat.

Download

Cod sursa

Jurnal

Rezultatul primei etape:

 Placuta done

Hardware done:

 Hardware complet asamblat

LCD FFT animation done:

 Animatia necesara pentru FFT

Bibliografie/Resurse

FFT lib: http://elm-chan.org/works/akilcd/report_e.html