Music player

Introducere

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 :

  1. [mm:ss.xx] lyrics line 1
  2. [mm:ss.xx] lyrics line 2
  3. [mm:ss.xx] last lyrics line

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.

Descriere generală

In mare, modulele proiectului ar trebui sa fie urmatoarele :

Hardware Design

  • Comunicarea cu cardul SD se face prin interfata SPI
  • Comunicarea cu decodificatorul VS1002 se va face tot prin interfata SPI
  • Se vor folosi 2 linii de slave select (configuratie 1 Master - 2 * Slave)
  • Se foloseste Petit FAT Filesystem pentru a accesa datele de pe cardul SD

Componentele pe care le voi folosi in acest proiect sunt:

  • microcontroller ATMega16
  • chip pentru decodificarea mp3 (VS1002)
  • interfata seriala RS232

Perifericele care vor conectate sunt: 2 butoane, afisaj LCD, slot SD / MMC, card SD / MMC.

Schema bloc a proiectului este urmatoarea:

Software Design

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 :

  • void LCD_writeInstruction(unsigned char _instruction); Trimite o instructiune catre LCD
  • void LCD_writeData(unsigned char _data); Trimite date catre LCD pentru afisare
  • void LCD_write(unsigned char _byte); trimite un bute catre LCD la modul general (nu conteaza daca e instructiune sau date)
  • void LCD_print(char* _msg); Afiseaza informatia pe LCD
2. Interfatare butoane

Butoanele sunt folosite pentru a porni / opri playerul. Pentru interfatare voi folosi portul C ca port de intrare.

  • PLAY

La apasarea acestui buton este redata melodia curenta si afisate versurile acesteia. Trecerea la melodia urmatoare se face la terminarea melodiei actuale.

  • STOP

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.

Download

Resursa utila la care voi aduce modificari ulterioare :

musicplayer.zip

Bibliografie/Resurse

pm/prj2011/dloghin/music-player.txt · Last modified: 2021/04/14 17:07 (external edit)
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