Za razvoj softvera i njegovo testiranje korišćeni su razvojni sistem EasyPIC5 i modul Smart MP3. Pre početka rada, potrebno je formatirati MMC karticu i na nju snimiti fajl sound1.mp3 (kartica se formatira u FAT16, tj. FAT formatu). Kvalitet reprodukcije zvuka u MP3 formatu zavisi od brzine semplovanja i bitrejt-a. Kao i audio CD, većina MP3 fajlova je semplovana frekvencijom 44.1 kHz. Bitrejt MP3 fajla nam označava koliko je verno kodiran originalni zvuk. Za reprodukciju govora je dovoljno 64 kbit/s dok se za muziku koristi bitrejt 128 kbit/s ili viši. U našem primeru smo koristili muzički fajl sa bitrejtom 128 kbit/s.
Hardver
Zvuk u ovom fajlu je kodiran u MP3 formatu tako da nam je za njegovu reprodukciju potreban MP3 dekoder. U našem primeru, za ovu svrhu se koristi čip VS1011E. Ovo kolo dekoduje MP3 zapis i vrši digitalno-analognu konverziju signala tako da se nakon obrade dobija signal koji se preko malog audio pojačavača može dovesti na zvučnike.
Zbog činjenice da MMC/SD kartice koriste sektore sa 512 bajtova, za kontrolu rada MP3 dekodera je potreban mikrokontroler sa više od 512 bajtova RAM-a. Mi smo izabrali PIC18F4520 koji ima 1536 bajtova RAM memorije.
Softver
Rad programa koji upravlja ovim uređajem može se podeliti u pet koraka:
Korak 1: Inicijalizacija SPI modula mikrokontrolera.
Korak 2: Inicijalizacija Mmc_FAT16 biblioteke kompajleru čime se omogućava čitanje MP3 fajlova sa MMC ili SD kartica.
Korak 3: Čitanje dela fajla.
Korak 4: Slanje podataka u bafer MP3 dekodera.
Korak 5: Ako nije završena reprodukcija kompletnog fajla, vracamo se na korak 3.
Testiranje
Testiranje rada uređaja je bolje početi sa manjim bitrejt faktorom pa ga zatim postepeno povećavati. Naime, bafer MP3 dekodera je veličine 2048 bajtova. Ako taj bafer popunimo delom MP3 fajla bitrejta 128 kbit/s, on će sadržati dva puta više odbiraka zvuka nego kada bismo u njega upisali deo fajla bitrejta 256 kbit/s. Samim tim, zvuk koji je u baferu će se reprodukovati duplo duže kod fajla sa manjim bitrejtom. Ako suviše povećamo bitrejt fajla može se desiti da se zvuk iz bafera reprodukuje pre nego što mikrokontroler stigne da pročita sledeći deo fajla sa kartice i upiše ga u bafer, zbog čega će zvuk biti isprekidan. Ako se to desi, možemo smanjiti bitrejt MP3 fajla koristeći neki od audio editora ili upotrebiti kristal frekvencije više od 8MHz (pogledajte šemu 1).
U svakom slučaju, o ovome ne morate previše brinuti jer je naš program testiran na nekoliko familija mikrokontrolera sa različitim vrednostima kristala i bio je u stanju da reprodukuje MP3 fajlove srednjeg i visokog kvaliteta. Sa druge strane, mali bitrejt znači da bafer dekodera punimo zvukom dužeg trajanja. Može se desiti da dekoder ne reprodukuje zvuk iz bafera pre nego što mi pokušamo da ga ponovo napunimo. Da bismo to izbegli, pri slanju podataka uvek proveravamo da li je dekoder spreman za prijem novih podataka. Stoga u funkcijama za slanje podataka čekamo da data request signal dekodera (DREQ) bude na logičkoj jedinici (1).
Proširenja programa
Kada isprobamo ovaj primer možemo ga proširiti. DREQ signal se može periodično proveravati. Može se dodati rutina za kontrolu jačine zvuka, za kontrolu ugrađenog Bass/Treble enhancer-a itd. MMC biblioteka nam daje mogućnost da odaberemo fajl sa nekim drugim imenom. Na taj način možemo stvoriti bazu MP3 poruka, zvukova ili pesama koje ćemo koristiti u našoj aplikaciji i poslati odgovarajući MP3 fajl dekoderu u zavisnosti od situacije.
Na sledećoj slici je prikazana lista funkcija koje se nalaze u biblioteci Mmc_FAT16. Ova biblioteka je sastavni deo kompajlera mikroC PRO for PIC compiler.
Više informacija o SmartMP3 modulu možete pronaći na ovoj adresi.
Informacije o EasyPIC5 razvojnom sistemu možete naći ovde .
NAPOMENA: Ovaj projekat postoji i varijantama za AVR i dsPIC mikrokontrolere. Više o ovome možete naći ovde.