Proiectul are ca scop realizarea unui music player ce reda continutul fisierelor mp3 si afiseaza versurile melodiilor pe ecran, folosind un microcontroller cu o arhitectura pe 8 biti, ATmega16, un card MMC/SD ca suport de stocare a fisierelor redate si a fisierelor ce contin versurile, un ecran LCD pentru display-ul versurilor. Ideea a aparut in urma parcurgerii laboratorului 4 ( SPI, FAT Filesystem, Player Audio) deoarece redarea sunetelor si a versurilor unor melodii mi se pare o functionalitate utila a microcontroller - ului. Proiectul imbina mai multe moduri de preluare a informatiei (de pe card SD sau la apasarea de butoane ) cu un afisaj pe LCD. Dispozitivul are un cost redus de implementare, dar este vizibil mai mare decat dispozitivele cu functionalitati asemanatoare de pe piata.
Fisierele audio folosite sunt de tip mp3, iar pentru fiecare fisier audio se pastreaza si un fisier in format LRC ( vor exista melodie. mp3 si melodie.lrc asociat ). LRC este un format de fisier care realizeaza sincronizarea unei melodii cu versurile acesteia. Exemplu :
Citirea acestora se va face octet cu octet (tinandu-se cont de formatul acestor fisiere). In cadrul implementarii, dispozitivul va citi fisierele audio si LRC de pe un card SD si il va reda.
Componentele pe care le voi folosi in acest proiect sunt:
Perifericele care vor conectate sunt: 2 butoane, afisaj LCD, slot SD / MMC, card SD / MMC.
Schema bloc a proiectului este urmatoarea:
Pentru citirea / afisarea continutului fisierelor se folosesc biblioteci specifice pentru lucrul cu cardul de memorie cat si pentru afisajul pe LCD. Fisierele sunt citite din cardul de memorie si stocate intr-un buffer, apoi vor fi trimise unui convertor digital analogic. Pentru lucru cu aceste dispozitive se vor folosi bibliotecile (AVRlib) existente, programele in sine fiind scris in limbajul C.
1. Interfatare cu LCD
Afisajul LCD este utilizat pentru a afisa versuri din fisierele LRC de pe cardul de memorie. Pentru usurinta implementarii se considera ca melodiile sunt ascultate in intregime, neexistand buton pentru optiunea forward. LCD-ul este conectat pe portul A, interfatarea va fi facuta folosind functiile din laboratorul 1, cele mai relevante fiind :
2. Interfatare butoane
Butoanele sunt folosite pentru a porni / opri playerul. Pentru interfatare voi folosi portul C ca port de intrare.
La apasarea acestui buton este redata melodia curenta si afisate versurile acesteia. Trecerea la melodia urmatoare se face la terminarea melodiei actuale.
La apasarea acestui buton se va opri melodia curenta. Se va retine numele acesteia pentru ca un urma reapasarii butonului PLAY sa se reia.
3. Interfatare MMC/SD
Proiectul este implementat pentru a citi date de pe un card de tip SD. Fisierele audio si fisierele LRC asociate sunt citite secvential in ordinea in care ele apar pe cardul de memorie. Cand se detecteaza un nou card SD programul citeste directorul si asteapta ca un buton sa fie apasat. Pentru interfatarea acestuia se folosesc functiile din laboratorul 4 – SPI. Se initializeaza comunicarea cu cardul, dupa care se asteapta apasarea unuia din butoane. Se va folosi un timer, iar intervalul de timp masurat este egal cu diferenta dintre doua momente de timp consecutive obtinute dintr-o linie a fisierului LRC.
4. Interfatare decodificator VS1002
Deoarece ecodificarea unui fisier MP3 este peste putintele unui AVR avem nevoie de un circuit decoder extern, VS1002. Comunicarea cu decodificatorul VS1002 se va face tot prin interfata SPI, slave-ul este selectat de microcontroller direct prin intermediul semnalului SS, pentru fiecare slave fiind nevoie de inca un fir de selectie.
Iesirea audio va consta dintr-un set de casti conectate la restul proiectului. Intreruperile generate de un timer duc la citirea datelor dintr-un buffer si trimiterea acestora catre convertorul digital analogic.
Resursa utila la care voi aduce modificari ulterioare :
Ca resurse au fost folosite: