Ali želite svojemu projektu z AVR mikrokontrolerjem dati možnost reprodukcije posnetih zvokov, pesmi, govora različnih sporočil, izgovarjanja izmerjenih vrednosti nekih veličine (npr. temperature, vlage, napetosti), trenutnega vremena, datuma… , to se na enostaven način lahko naredi s pomočjo poceni DF player mini modula.
Pri tem je lahko kvaliteta zvoka izrazito visoka. V tem članku je opisan način uporabe DF player mini modula z Bascom-AVR programsko podporo.
Avtor: Mladen Čempuh
E-pošta: cempuh.mladen@gmail.com
2021-301-43
Opis DF player mini modula
DF player mini modul je poceni tovarniško vezje malih dimenzij, ki ima skupno 16 priključkov rasporejenih v dve vrsti z razmakom med vrstami 700 mils (17,78 mm). Na sebi ima utor za TF kartico (micro SD card). Lahko deluje z micro SD karticami maksimalne kapacitete 32 GB, ki so lahko formatirane v FAT16 ali FAT32 formatu. Z DF player modulom lahko rokujete tudi s pomočjo tipk, brez mikrokontrolerja, vendar v tem projektu ga uporabljamo izključno v kombinaciji z mikrokontrolerjem. Modul ima na sebi mono avdio ojačevalnik moči do 3 W pri impedanci zvočnika 8 Ω. Dela pri napetostih od 3,2 V do 5 V. Optimalni razpon napajalne napetosti je 4,2 do 4,3 V. V kolikor se mikrokontroler napaja z napetostjo 5 V je priporočljivo med napajanjem in VCC (pin 1) na DF player modulu vgraditi diodo kot npr. 1N4004. Vir, iz katerega se napajata mikrokontroler in DF player modul mora biti dimenzioniran za tokove vsaj 800 mA.
Ta vsebina je samo za naročnike
V kolikor mikrokontroler dela na napetosti 3,3 V, je diodo potrebno odstraniti iz napajalnega voda, zaradi izboljšanja glasnosti se lahko zmanjša impedanca zvočnika na 6 Ω. Če se uporabi zvočnik z impedanco 4 Ω je z ukazom za glasnost DF playerja potrebno zmanjšati postavljeno glasnost, da ne bi preobremenili modula. Na DF player se lahko priključi tudi USB ključek, vendar tega v tem projektu ne uporabimo.
DF Player ima tudi stereo izhode za slušalke ali zunanji ojačevalnik. To sta priključka DAC_R (pin 4) za desni in DAC_L (pin 5) za levi kanal (v tem primeru je vse dodatne posnetke potrebno posneti v stereo načinu snemanja). Mikrokontroler komunicira z DF player modulom preko RS232 TTL komunikacije s hitrostjo 9600 bit/s, 8 bitov, brez paritete in z enim stop bitom. V našem primeru je RS232 TTL komunikacija enosmerna oziroma mikrokontroler preko izhodnega priključka TX pošilja ukaze in podatke DF player modulu na njegov vhodni RX (pin 2) preko upora 1 kΩ. Upor služi za odstranjanje signala šuma (bruma), ki bi lahko prišel iz mikrokontrolerja. V verziji 1.1 programske podpore za komunikacijo se uporabi softverski UART, zato se za TX izhod lahko izbere kateri koli izhodni priključek mikrokontrolerja. V verzijah 1.2 in 2 se za serijsko komunikacijo uporabi hardverski UART (ima ga ATmega serija) in takrat je TX izhod hardversko določen (port PD1).
Mikrokontroler spremlja stanje izhoda BUSY (pin 16) na DF player modulu preko po želji izabranega vhodnega priključka (ta priključek ima v programu ime Busy). Dokler traja reprodukcija izbrane vsebine z micro SD kartice, je DF player modul zaseden in Busy je v stanju logične ničle, po zaključku reprodukcije preide v stanje logične enice.
Zvočnik naj ima priporočeno impedanco 8 Ω in moči minimalno 3 W. Veže se na priključka SPK1 (pin 6) in SPK2 (pin 8) DF player modula. Zaradi boljše kvalitete zvoka in večje glasnosti priporočam, da zvočnik vgradite v leseno ali plastično škatlico oziroma na zvočnik s prednje strani montirate na cilindrično plastično ali kartonsko cev dolžine do 10 cm in malo večjega premera od zunanjega premera membrane zvočnika.
Funkcije posameznih priključkov DF player modula in shema povezovanje sta prikazana na slikah 2 in 3.
MP3 zapisi
DF player omogoča reprodukcijo mp3 ali wav zapisov. V moji programski podpori je podprta reprodukcija izključno mp3 zapisa. Zapisi na micro SD kartici morajo biti nameščeni v mapi z imenom MP3, ki se nahaja v Root direktoriju SD kartice. V MP3 direktorij se lahko namesti največ 9999 mp3 zapisov. Imena zapisov se pričnejo s štiri številčno številko od 0001 do 9999, za katero opcijsko lahko brez razmika sledi tekstovno ime (maksimalna dolžina imena je do 32 znakov). Končnica imena je .mp3. Nekatera imena so že vnaprej definirana in se jih ne sme brisati iz MP3 direktorija micro SD kartice. Če želimo posneti lastne tekste, lahko te prej definirane mp3 zapise zamenjamo z novim, vendar mora njihovo ime ostati isto. To so imena zapisov, ki se uporabljajo za izgovorjavo številk, temperature, časa, datuma, meseca, leta in dneva v tednu (glej dokument “MP3 direktorij popis” v direktoriju Dodatna dokumentacija-Prilog). Z naše spletne strani lahko prenesete 6 že pripravljenih MP3 direktorijev (dva za angleščino, tri za hrvaščino in enega za slovenščino). Na internetu ni brezplačnega kvalitetnega Text to Speech programa za hrvaški in slovenski jezik, zato sem za ustvarjanje govornih mp3 datotek v hrvaščini in slovenščini uporabil možnost Text to Speech programa za poljski jezik in s tipkanjem besedila poskušal doseči čim boljšo izgovorjavo v želenem jeziku. Žal pa je ostal naglas poljskega jezika. To sem delal z uporabo Text to Speech aplikacije TTSMP3.com, ki se najde na povezavi https://ttsmp3.com, opcijo Polish/Ewa za ženski glas in opcijo Polish/Jan za moški glas.
Za izgovor številk ne vpisujte številk, ampak besede, kakor se številke izgovorijo. Pri tem je včasih zaradi boljše podobnosti z želenim jezikom potrebno namesto črke z vstaviti s ali ss ali pa besede razstaviti na segmente itd. V kolikor želite dodati nekatere svoje mp3 zapise govornih sporočil, zaradi iste barve glasu predlagam, da uporabite iste govornike z navedene povezave. Dnevna omejitev text to speech pretvorbe z navedene povezave je do 3000 karakterjev. Če želite sami snemati mp3 zapise v slovenskem jeziku, uporabite opisani postopek!
Za izgovor v angleškem jeziku je priložen direktorij British English AmyMP3 za ženski glas in US English MatthewMP3 za moški glas. Zapisi mp3 govornih sporočil so ustvarjeni s pomočjo Text to Speech programa Voicemaker, ki ga najdete na povezavi https://voicemaker.in. Za ženski glas je uporabljena opcija jezika British English, glas je Amy, za moški glas je opcija jezika US English, glas Matthew. Na Voicemaker povezavi ni dnevne omejitve števila karakterjev, je pa potrebno napraviti brezplačno registracijo z vpisom email naslova in lastnega gesla. Kreirani mp3 zapisi za Amy in Matthew govor so napravljeni z naslednjimi predpostavkami: Voice volume = 0 dB, Voice speed = 0% in Voice pitch= 0 %. Navedeni program podpira tudi izgovor poljskega jezika z glasovi Ewa in Jan in se lahko uporabi tudi
S pomočjo Google prevajalnika na mobitelu in mikrofona priključenega na PC sem s programom Audacity posnel in obdelal potrebne mp3 datoteke za izgovor za hrvaški jezik, direktorij Croatian Google SpeakMP3. Pri tem sem iz vsakega posnetka odstranil šum, odstranil dele ki ne vsebujejo govornega ali tonskega zapisa, posnetek sem obdelal z Low pass filtrom, zmanjšal tempo za -15%, posnetek obdelal z opcijo Bass and Treble in amplitudo posnetka normaliziral na -5 do -6.5 dB. V direktoriju Dodatna dokumentacija-Priloga se nahaja pdf dokument “Uputa za snimanje i obradu mp3 zapisa za DF Player programom Audacity”. V tem dokumentu je opisan celoten postopek snemanja in obdelave posnetkov z Audacity programom. Ta postopek sem uporabil pri izdelavi mp3 posnetka za direktorij Croatian Google SpeakMP3.
Za izgovor v slovenskem jeziku je priložen direktorij Slovenian EvaMP3, ustvarjen tudi z uporabo Text to Speech aplikacije TTSMP3.com, opcijo Polish/Ewa za ženski glas.
Odvisno od tega, ali želimo govor v angleškem, hrvaškem ali v slovenskem jeziku, in ali želimo moški ali ženski glas, svoj MP3 direktorij ali enega od ponujenih MP3 direktorijev, kopiramo v Root direktorij micro SD kartice. V primeru, da nastane problem v reprodukciji posameznih mp3 zapisov, npr. v izgovorjavi številk, je potrebno napraviti Quick formatiranje SD kartice v FAT formatu in ponovno na prazno SD kartico kopirati izbrani MP3 direktorij. Če želimo z mikrofonom posneti lastne mp3 datoteke npr. zaradi kvalitetnejše izgovorjave v slovenskem jeziku predlagam, da uporabite brezplačen Audacity program v verziji 2.3.2. ali novejši za Windows operacijski sistem. Jaz sem uporabil verzijo 2.3.2. za Windows 7 (za Windows 10 se lahko uporabi tudi nova verzija 3.0.0.). Program se lahko instalira z internetne strani:
https://www.audacityteam.org/download/legacy-windows/
Program snema zvoke z mikrofona povezanega na MIC vhod PC-ja (izberite Mono recording). Izberite frekvenco vzorčenja 44100Hz, ter 24 ali 32 bitno resolucijo (namesti se v meniju Edit/Preference/Quality). Real time Conversion postavite na Medium Quality, High-quality Conversion pa na Best Quality. V Edit/Preference/Interface lahko namesto ukazov programa v angleščini izberite izpis ukazov v jeziku, ki ustreza. Po snemanju govora s programom Audacity je potrebno avdio posnetek tudi obdelati. Najprej iz posnetka odstranite šum; to se dela tako, da se označi del posnetka, v katerem se nahaja samo šum, nato se z Effect/Noise reduction in klikom na Get Noise Profile programu potrdi, da je označeni del šum. Nato označimo cel mp3 zapis u ukazom Select/All, in odstranimo šum iz posnetka z Effect/Noise reduction. Kliknemo na Preview da preverimo odstranitev šuma in, če je vse v redu, potrdimo z OK. Predlagani parametri za redukcijo šuma so: Noise reduction (dB) 16, Sensitivity 6 in Frequency smooting 3. Po želji lahko cel posnetek še obdelamo tudi s pomočjo nizko-propustnega filtra (izberite Effect/Low Pass Filter).
Če želimo spremembo hitrosti govora in tudi spremembo tona, bomo posnetek obdelali z Effect/Change Speed; če želimo isti ton, ali upočasniti ali pa mogoče pohitriti govor, bomo uporabili Effect/Change Tempo; če želimo z isto hitrostjo govora spremeniti ton, bomo uporabili Effect/Change Pitch. Če želimo posnetek vrniti na predhodno stanje, uporabimo Edit/Undo. Sledi normalizacija amplitude (glasnosti) na npr. -3 do -8 dB, in iz posnetka je potrebno odstraniti tudi dele posnetka, katere ne želimo shraniti (te dele označimo in nato uporabimo Edit/Cut), ter z opcijo Export/Export as MP3 shranimo posnetek kot mp3 datoteko na PC v delovni direktorij MP3, skladno s pravili o imenu mp3 datoteke. Program Audacity ima tudi Help s precej podrobnimi navodili za uporabo.
Če se naknadno dodajo nove mp3 datoteke, jih je potrebno najprej dodati v MP3 direktorij na PC-ju in jih ponovno kopirati v novi dopolnjeni MP3 direktorij s PC-ja na SD kartico, s katere smo predhodni MP3 direktorij zbrisali s pomočjo Delete ali s Quick formatiranjem. To je nujno zaradi FAT formata, ker naknadno dodajanje posameznih mp3 datotek neposredno na SD kartico lahko pokvari vrstni red mp3 datotek.
Shema krmilnega vezja
Za preizkušanje dela programske podpore sem uporabil krmilno vezje z ATmega328P mikrokontrolerjem, katerega shema je prikazana na sliki 4. Vezje je projektirano tako, da se na njemu lahko odvijajo vse opisane verzije programa. Alternativno se lahko uporabi tudi Arduino modul in druga vezja bazirana na ATmega mikrokontrolerjih. Uporabni so tudi mikrokontrolerji kot ATtiny 44, 45, 84 in 85, če imajo dovolj programskega spomina in dovolj prostih priključkov za konkreten primer uporabe. Če uporabljate ATtiny mikrokontroler, uporabite verzijo 1.1 programske podpore za DF player, ki uporabi softverski UART. Kljub temu imejte v mislih to, da so vsi priloženi programi predvideni za uporabo Atmega328P, ki deluje s taktom frekvence 16 MHz (opcijsko lahko tudi 8 MHz).
Testno vezje se napaja z enosmernim virom napajanja 9 V, ki zmore krmiliti vsaj 1 A toka. Na napetostni stabilizator 7805 je potrebno postaviti manjše hladilno telo. Mikrokontroler ATmega8/8A/328P lahko deluje z notranjim internim oscilatorjem frekvence 8 MHz ali z zunanjim oscilatorjem, katerega frekvenca je določena s kvarčnim kristalom.
Verzije 1.1 in 1.2 za delo z DF playerjem ne uporabljata Timer0 niti kateri koli drugi timer mikrokontrolerja, Zato lahko na splošno lahko delujejo s katerim koli delovnim taktom do maksimalno dovoljenega. V nekaterih Demo primerih v teh verzijah uporabi Timer0 prekinitvena rutina za invertiranje izhoda PD5 vsako sekundo, in tudi v takšnih primerih naj bo delovni takt 16 ali 8 MHz, da bi uporabljena prekinitvena rutina časovno delala pravilno. Ker verzija 2 za delo DF playerja uporabi Timer0 prekinitveno rutino, so dovoljeni delovni takti 16 ali 8 MHz.
DF player modul se priključi na priključke VCC, Busy, TX in GND. Uporabi se dvovrstični 1602 ali štirivrstični 2004 LCD, pri katerem se kontrast nastavlja s trimer potenciometrom R2. Vgrajena je tudi tipka za Reset. S spremembo stanja na izhodu PB.3 se vklopi ali izklopi osvetlitev ozadja LCD-ja, če je prekinjen kratkostičnik J3; če je J3 postavljen, je osvetlitev ozadja stalno vključena.
V kolikor vas med ISP programiranjem moti utripanje osvetlitve ozadja LCD-ja, za čas programiranja namestite kratkostičnik J3.
Priključka PC0 in PC1 sta prosta za uporabo kot analogni/digitalni vhodi ali digitalni izhodi.
LED-ica z oznako LED služi za test dela mikrokontrolerja. V verziji 1.1, ki deluje s softverskim UART-om, kratkostičnik J1 veže vhod PD1 in tipko KEY1, kratkostičnik J2 izhod PB0 in linijo TX. V verzijah 1.2 in 2, ki delata s hardverskim UART-om, kratkostičnik J1 veže vhod PB0 in tipko KEY1, kratkostičnik J2 pa izhod PD1 in linijo TX.
Krmilno vezje ima 5 tipk (KEY0 do KEY4), katerih funkcija je navedena na začetku vsakega priloženega Demo primera.
Za uporabo so prosti priključki PD5, PD6 in PD7, ki so v programu postavljeni kot izhodi. Če se uporabi DS3231 RTC modul (Demo primeri z dodatkom RTC v imenu) takrat se priključki PD6 in PD7 uporabijo za I2C komunikacijo s tem modulom, tako da je SDA=PD6 in SCL=PD7. Iste priključke uporabljajo tudi Demo primeri programov, ki namesto 4 bitnega paralelnega LCD-ja uporabljajo I2C LCD modul s čipom PCF8574T ali PCF8574AT. Pin PD5 je prost za uporabo (v nekaterih primerih se njegovo stanje menja vsako sekundo).
V verziji 1.1 programske podpore, ki uporablja softverski UART izhod TX lahko izberemo po želji nek priključek mikrokontrolerja. Izbor priključka za TX v programu mikrokontrolerja se naredi na sledeči način:
Open "comb.0:9600,8,n,1" For Output As #1
Tukaj je za TX izbran PB0 z opcijami baud rate 9600, 8 bits, no parity, 1 stop bit. Če se uporabi verzija s hardverskim UART-om (DF player Ver1.2 ali 2), takrat je TX vedno PD1, kar je določeno z internim hardverom mikrokontrolerja.
Izbira Busy vhoda se v programu postavi na sledeči način:
Busy Alias PINB.1 Config Busy = Input
V primeru, da je za Busy izbran priključek PB1; po potrebi lahko izberemo tudi drugi prost priključek mikrokontrolerja.
Zaključek 1. dela
Ko smo se spoznali z DF player modulom in njegovimi možnostmi, se bomo pozabavali z ustrezno programsko podporo: za naslednje nadaljevanje sem pripravil podroben opis uporabe ukazov DF player knjižnice in opis priloženih Demo primerov programov, ki so napisani v Bascom-AVR programskem jeziku.
https://svet-el.si
Mladen Cempuh_DF player_1