Nešto kao “zvučni displej”

Primer kako Arduino kroz modul DFPlayer Mini (i zvučnik) na srpskom jeziku izgovara brojeve u rasponu -3999,9…3999,9. To je baš toliko jer su upotrebljeni zvučni zapisi iz projekta “Instrument koji govori” (“Talking multimeter 2.0”). Modul bi mogao reprodukovati i bilo kakve druge zvučne zapise, ali ove sam već imao spremne, a i zanimalo me kako će se DFPlayer Mini snaći s vrlo kratkim zapisima i minimalnim pauzama između njih.

Modul DFPlayer malih je dimenzija (oko 20×20 mm), ima konektor za microSD karticu, i košta samo oko 150 dinara (iz Kine). Može reprodukovati formate .mp3 i 16-bitni .wav. Kod konkretnog primerka glavni čip je GD3200D. Ima razlika u radu zavisno od tipa/oznake glavnog čipa. (Vidi dalje tekst i priložene linkove.) Modul ima audio-pojačavač i izlaz za zvučnik.

.

DFPLayer Mini napaja se s 4,2 V tipično, ima interni regulator, a njegovi I/O pinovi predviđeni su za napone do oko 3 V, ne više. Za pouzdan rad modula s Arduinom na 5V – potrebno je nekakvo pretvaranje nivoa (‘level shifting’), ali ni to nije komplikovano. Tehnički list za sličan glavni čip (vidi link pri dnu teksta) kaže da mu je dovoljan otpornik od 1k u vodu RX, ali ne znamo da li je to primenjivo na sve čipove-klonove, pogotovo dugoročno. Ipak bi bezbednije bilo koristiti Arduino na 3,3 V. Valja imati u vidu da DFPlayer Mini sadrži čitač kartice, audio-pojačavač itd, pa mu treba obezbediti izvor od makar 100-200 mA.

Za ovu kratku probu korišćen je Arduino Nano na 5V. Zvučnik je povezan na DFPlayer Mini, na pinove SPK_1 i SPK_2. Arduino Nano upravlja modulom kroz svoj softverski UART (pinovi 8 i 9), da bi hardverski ostao slobodan za komunikaciju između Arduina i računara. DFPLayer Mini napajan je iz posebnog izvora 4,4 V.
Pre izgovaranja, broj se zaokružuje na jednu decimalu, a potom se određuju reči-zapisi koji će biti reprodukovani u nizu, tako da zajedno predstavljaju zadati broj na prirodnom (srpskom) jeziku.

Ovo s brojevima primenjivo je u raznim mernim uređajima, da glasom saopštava rezultate merenja. To je i efektno, i može biti vrlo praktično. Reči koje označavaju cifre/brojeve snimljene su u zasebne .mp3 fajlove na microSD kartici u modulu, obavezno u folderu “MP3”, a on u korenom folderu kartice. Izgovaranje višecifrenih brojeva nije trivijalno, jer mora pratiti sintaksu konkretnog prirodnog jezika. Ako nekome treba širi opseg brojeva, više od jedne decimale ili izgovaranje naziva cifara pojedinačno, izgovaranje drugih reči i fraza itd – neka menja program i pravi svoje zapise po želji.  

Proradilo je lako: veze, kartica, parsing brojeva, glas iz zvučnika. Napravljena su dva audio-snimka (vidi linkove). To je sve bilo s modulom na kome je glavni čip GD3200D. Kada je on zamenjen modulom na kome je čip MH2024K-24SS, ispostavilo se da tu pin BUSY radi malo drukčije – i sporije, tako da minimalna pauza između dva reprodukovana zapisa nije mogla biti manja od 850 ms. Ni to nije nikakav problem ako se reprodukuju duži zapisi, ali jeste malo predugo za ovu konkretnu primenu gde se pojedinačne reči moraju lepiti neposredno jedna iza druge.

BROJEVI AUDIO 1 GD3200D

BROJEVI AUDIO 2 GD3200D

/Snimci su napravljeni s običnim mikrofonom ispred zvučnika i programom Audacity. Slušajući sada snimke preko ovih linkova, čini mi se da zbog nečega zvuče kao da je odsečeno po malo (vrlo malo) s početka svake reči, tek primetno. Kao da se nešto dogodilo u procesu snimanja, konverzije u mp3… Uglavnom, ovo u praksi zvuči još malo bolje./

BROJEVI AUDIO MH2024K-24SS

Zaključak: osim tog detalja u vezi s vrlo kratkim zapisima (tj. pauzama) i čipom MH2024K-24SS, čini se da modul, s oba čipa, inače radi korektno s datotekama .mp3 (ne probah .wav). Indikacija glasom ili zvučni efekti mogu se lako dodati bilo kom projektu s Arduinom, a i bez njega, jer modul može raditi i samostalno. Mora se paziti na pravila imenovanja datoteka. Osim primenjene biblioteke, postoje i druge, verovatno valja probati i njih, a s modulom se može komunicirati i direktno, dokumentacija je dostupna.

Kartica je od 128 MB.

PROGRAM ZA ARDUINO

Upotrebljena biblioteka:
https://github.com/DFRobot/DFRobotDFPlayerMini/archive/1.0.3.zip

Folder MP3 sa 42 osnovna zvučna zapisa za izgovor brojeva na srpskom, koji treba staviti na karticu (pošto se raspakuje iz arhive, naravno):
https://app.box.com/s/fdvst74y5y0sj7e2rcdi7kdskbjuzg9v

Dokumentacija, primeri, iskustva:
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299
https://doc.riot-os.org/group__drivers__dfplayer.html
https://meanderingpi.com/dfp-player/
https://garrysblog.com/2022/06/12/mp3-dfplayer-notes-clones-noise-speakers-wrong-file-plays-and-no-library/
http://www.trainelectronics.com/Arduino/MP3Sound/TalkingTemperature/FN-M16P%20Embedded%20MP3%20Audio%20Module%20Datasheet.pdf
https://cdn.hackaday.io/files/936504006721600/YX5200-24SS%C3%8A%C2%B9%C3%93%C3%83%C3%8B%C2%B5%C3%83%C3%B7%C3%8A%C3%A9V1.6.zh-CN.en.pdf

Potencijalno korisna dorada na hardveru DFPlayer Mini:
http://work-now-dammit.blogspot.com/2016/08/dfplayer-mp3-module-power-onoff-clicks.html

Najjednostavniji način primene modula, samostalno

One thought on “Nešto kao “zvučni displej”

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s