Sisukord:
- Samm: asjad, mida me selle projekti jaoks vajame (nõuded)
- 2. samm: tööpõhimõtte mõistmine
- 3. samm: skemaatiline
- Samm: teisendage MP3 Audacity abil WAV -failiks
- Samm 5: WAV C-koodi
- Samm: tehke lõplik fail ja käivitage oma Linux
Video: Laulude esitamine (MP3) Arduino abil PWM -i kasutamine kõlaris või tagasitransformaatoris: 6 sammu (piltidega)
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:48
Tere kutid, See on minu esimene juhendatav, loodan, et teile meeldib see !!
Põhimõtteliselt olen selles projektis kasutanud oma Arduino ja sülearvuti vahelist jadaühendust, et edastada muusikaandmeid sülearvutist Arduinole. Ja kasutades Arduino TIMERS -i andmete esitamiseks PWM -signaalina.
Tahtsin seda mainida, see projekt ei ole algajatele !!!.
Tegelikult oli see projekt üks pikimaid projekte, sest selle toimimiseks peame tegema palju asju.
TÄHELEPANU
Olen teinud selle juhendi teise osa juhendatavaks, mis on palju lihtsam ja vajab töötamiseks minimaalseid probleeme
Link teisele osale (lihtsaim).
Samm: asjad, mida me selle projekti jaoks vajame (nõuded)
1. Arduino juhatus (saame kasutada mis tahes tahvlit (328, 2560), st Mega, Uno, Mini jne, kuid konkreetsete erinevate tihvtidega)
2. Arvuti või sülearvuti Linuxiga (olen kasutanud Fedora 29) või Live USB koos Linuxiga
3. Leivalaud või Perfboard
4. Juhtmete ühendamine
5. TC4420 (Mosfeti draiver või midagi sellist)
6. Toide Mosfet (N või P kanal, palun juhe siis vastavalt) (olen kasutanud N-kanalit)
7. Kõlar või Flyback -trafo (jah, lugesite õigesti!)
8. Sobiv toiteallikas (0-12V) (olen kasutanud oma ATX toiteallikat)
9. Jahutusradiaator (olen päästnud oma vanast arvutist)
10. PC Windowsi ja pliiatsiga.
Iga komponendi ja selle projekti üksikasjaliku töö tundmiseks lugege palun järgmist sammu.
Olen teinud selle juhendi teise osa juhendatavaks, mis on palju lihtsam ja vajab töötamiseks minimaalseid probleeme. Link teisele osale (lihtsaim).
2. samm: tööpõhimõtte mõistmine
Ahhh !! selle juhendi pikim osa, selle osa lugemine ja kirjutamine on igav.
Kõigepealt peame saama ülevaate, kuidas see asi tegelikult töötab.
See, mida me siin teeme, on see, et kõigepealt muudame oma MP3 -loo WAV -failiks ja selle faili C -päisefailiks, kasutades lingil olevat tarkvara. See C-kood sisaldab tegelikult 8-bitiseid (miks 8-bitiseid ?? loe edasi) andmeproove, mida peame mängima, kasutades meie Arduino fikseeritud kiirust või kiirust, mis on määratud vastavalt meie proovivõtukiirusele.
Helisignaali teooria.
Neile, kes ei tea, mis on diskreetimissagedus või bitikiirus:
Proovivõtu sagedus on määratletud kui proovide arv, me mängime sekundi jooksul (tavaliselt mõõdetakse Hz või KHz).
Üksikasjade kohta lisateabe saamiseks klõpsake siin
Tavalised proovivõtukiirused on 44100 Hz (parim kvaliteet), 32000 Hz, 22050 Hz jne
mis tähendab, et laine genereerimiseks kasutatakse sekundis 44100 proovi.
st iga proovi tuleb mängida kindla intervalliga 1/44100 = 22,67 uS.
Seejärel tuleb helisignaali bittide sügavus, mis tavaliselt näitab, kui täpselt heli digitaalses helis esitatakse. Mida suurem on biti sügavus, seda täpsem on digitaalne heli.
Kuid Arduino või mõne muu 16Mhz kellaga mikrokontrolleri abil saame kasutada ainult kuni 8-bitist. Ma selgitan, miks.
328p andmelehe leheküljel nr.102 on valem:- Andmeleht
Ma ei räägi üksikasjalikult, miks ma seda valemit kasutan.
signaali sagedus = kella signaal / N x (1+TOP)
Kella signaal = 16Mhz (Arduino tahvel)
N = eelvalija (1 on meie projekti väärtus)
TOP = väärtus 0 kuni 2^16 (16-bitise taimeriloenduri jaoks) (255 = 2^8 (8-bitine) meie projekti jaoks)
saame signaali sageduse väärtuse = 62,5 kHz
See tähendab, et kandelaine sagedus sõltub bittide sügavusest.
Oletame, et kui kasutame TOP väärtust = 2^16 = 65536 (st 16-bitine bitisügavus)
siis saame signaali sageduse väärtuse = 244 Hz (mida me ei saa kasutada)
OKK … Nii et sellest helisignaalide toimimise teooriast piisab, nii et tagasi projekti juurde.
Laulu jaoks loodud C-koodi saab kopeerida Arduinosse ja seda saab mängida, kuid me oleme piiratud kuni 3-sekundilise heli taasesitusega, mille diskreetimissagedus on 8000 Hz. Kuna see C -kood on tekstifail ja seega mitte tihendatud, vaid pigem lahti pakitud. Ja see võtab liiga palju ruumi. (nt 43-sekundilise heliga C-koodifail 44 ja 1 KHz proovidega võtab ruumi kuni 23 MB). Ja meie Arduino Mega annab meile ruumi umbes 256 Kb.
Niisiis, kuidas me Arduino abil laule mängime. See pole võimalik. See juhend on võlts. Ärge muretsege lugejad, Sellepärast peame heliandmete saatmiseks Arduinole kasutama mingit suhtlust Arduino vahel nii suurtel kiirustel (kuni 1 Mb/s).
Aga kui palju kiirust me täpselt selleks vajame ??
Vastus on 44000 baiti sekundis, mis tähendab kiirust üle 44000*8 = 325 000 bitti sekundis.
Nende andmete meie Arduinole saatmiseks vajame teist suure mäluga välisseadet. Ja see on meie arvuti Linuxiga (miks arvuti Linuxiga ??? lugege selle kohta lisateabe saamiseks edasi.)
Ahaa… See tähendab, et saame kasutada jadakommunikatsiooni … Aga oodake… seeria on võimalik vaid kiirusel kuni 115200 bitti/s, mis tähendab (325000/115200 = 3), et see on kolm korda aeglasem kui vaja.
Ei, mu sõbrad, see pole nii. Kasutame kiirust või Baud-kiirust 500 000 bitti/s koos kaabliga kuni 20-30 cm, mis on 1,5 korda kiirem kui vaja.
Miks Linux, mitte Windows ???
Seega peame oma arvutiga proovid saatma intervalliga (samuti ülalpool) 1/44100 = 22,67 uS.
Niisiis, kuidas me saame seda programmeerida ??
Me võime kasutada C ++, et saata andmebaiti Seriali kaudu teatud aja tagant, kasutades mingisugust unerežiimi
nagu nanosleep, Chrono jne jne.
jaoks (int x = 0; x
sendData (x);
nanosleep (22000); // 22uS
}
AGA MITTE SEE EI TOIMI WINDOWSIS, ei töötanud sel viisil ka Linuxis (kuid leidsin veel ühe viisi, mida näete minu lisatud koodis.)
Kuna me ei saa akende abil sellist detailsust saavutada. Sellise detailsuse saavutamiseks vajate Linuxit.
Probleeme leidsin isegi Linuxiga …
me suudame sellise detailsuse saavutada Linuxi abil, kuid ma ei leidnud sellist funktsiooni, et oma programm 22uS -i jaoks unele panna.
Ka sellised funktsioonid nagu nanosleep, Chrono nanosleep jne jne ei tööta, kuna pakuvad und ainult rohkem kui 100 uS. Aga mul oli vaja täpselt, täpselt 22 uS. Olen uurinud iga Google'i lehte ja katsetanud kõiki võimalikke funktsioone, mis on saadaval C/C ++ -is, kuid miski ei töötanud minu jaoks. Siis mõtlesin välja oma funktsiooni, mis töötas minu jaoks tõelise võlusena.
Ja minu kood pakub nüüd täpset, täpselt 1uS või suuremat und !!!
Nii et oleme katnud raske osa ja ülejäänud on lihtne …
Ja me tahame genereerida PWM -signaali, kasutades Arduino, millel on konkreetne sagedus ja ka kandelaine sagedus. (62,5 KHz (nagu ülal arvutatud) signaali hea immuunsuse tagamiseks).
Niisiis, peame PWM-i loomiseks kasutama Arduino niinimetatud taimerit. Muide, ma ei hakka selle kohta palju üksikasju kirjeldama, sest leiad palju õpetusi taimerite teemal, aga kui sa neid ei leia, siis kommenteeri allpool.
Olen kasutanud TC4420 Mosfeti draiverit, et päästa meie Arduino nööpnõelad, sest need ei suuda MOSFET -i juhtimiseks mõnikord nii palju voolu tarnida.
Niisiis, see oli selle projekti peaaegu teooria, näeme nüüd skeemi.
TÄHELEPANU TÄHELEPANU TÄHELEPANU
Tegelikult tehti see projekt tahtlikult palju keeruliseks (ma ütlen, miks), on veel üks meetod, mis nõuab noPC -d, vaid Arduino ja kõlar minu järgmises juhendis. Link on siin.
*Selle projekti põhieesmärk on kasutada jadakommunikatsiooni ja selle võimsust ning õppida, kuidas me saame oma arvutit programmeerida täpselt selliste intervallidega ülesandeid täitma.*
3. samm: skemaatiline
Ühendage kõik komponendid vastavalt skeemile. Nii et teil on siin kaks võimalust:-
1. Ühendage kõlar (ühendatud 5V)
2. Ühendage Flyback -trafo (ühendatud 12V)
Olen mõlemaid proovinud. Ja mõlemad töötavad päris hästi.
Vastutusest loobumine:-
*Soovitan kasutada Flyback Transformerit ettevaatusabinõuga, kuna see võib olla ohtlik, kuna see tekitab kõrgepingeid. Ja ma ei vastuta kahjude eest.*
Samm: teisendage MP3 Audacity abil WAV -failiks
Niisiis, kõigepealt laadige tarkvara alla
1. Audacity, otsige ja laadige Google'ist alla
2. WAV-faili teisendamiseks C-koodiks laadige alla aknarakendus nimega WAVToCode
Sellelt lingilt saate õppida, kuidas WAVToCode tarkvara kasutada ja sellelt lingilt alla laadida.
Annan ka üksikasjalikud juhised mõlema tarkvara kasutamiseks.
Palun vaadake selle juhendiga lingitud fotosid.
Selles etapis teisendame MP3 Waviks. (Jälgige fotosid, projekti sagedus peab olema 44100 Hz)
Järgmises etapis teisendame wav -faili C -koodiks.
Samm 5: WAV C-koodi
Jälgige fotosid.
Vaadake kahte viimast pilti, muudatused peavad olema täpselt samad, suured tähed peaksid olema suured ja väiketähed väiksemad, vastasel juhul saate kompileerimise ajal süntaksivea.
(Näete, et 1min 41s lugu võttis 23 MB ruumi.)
Muutke laulu nime ja pikkust vastavalt oma laulu nime ja kestusega.
Ja salvestage C -koodi fail.
Tehke seda kõigi lauludega, mida soovite Arduinoga mängida
Samm: tehke lõplik fail ja käivitage oma Linux
Lisage kõik teisendatud lood sellesse linki lisatud faili.
Ja järgige pilte.
Laadige kood Arduinosse, mille olen lisanud.
Pidage meeles C-koodi failinimesid (nt elustiili, dollari, kulumise puhul), sest me peame koodis nimetama täpselt samu nimesid, mis tõstutundlikud on.
Lõpuks käivitage oma Fedora Live USB või muu ja installige gcc kompilaator ning seejärel kasutage kaustast koostamisjuhiseid, kompileerige programm ja käivitage see.
Lõpuks saate kuulata Speaker või Flyback lugusid.
Täname, et lugesite seda juhendit ja kommenteerige, kui see teile meeldib.
TÄHELEPANU on teinud selle juhendi teise osa juhendatavaks, mis on palju lihtsam ja vajab töötamiseks minimaalseid probleeme. Link teisele osale (lihtsaim)
Soovitan:
MP3 -heli esitamine FX -sein: 12 sammu (piltidega)
MP3 -heli esitamine FX -sein: looge lõbus ja interaktiivne helisein, mis esitab MP3 -sid lihtsa puudutusega! Mida teha tühja seinaga? Kas saaksite sinna lisada mõnusaid pilte? Või katta värvika toataimega. Oleme isegi näinud, kuidas mõned inimesed raamatu taha paljaid seinu peidavad
Rääkiv Arduino - MP3 esitamine Arduinoga ilma moodulita - Mp3 -faili esitamine Arduino'st PCM -i abil: 6 sammu
Rääkiv Arduino | MP3 esitamine Arduinoga ilma moodulita | Mp3 -faili esitamine Arduino'st PCM -i abil: Selles juhendis õpime, kuidas mängida MP3 -faili arduino abil ilma helimoodulit kasutamata, siin kasutame Arduino jaoks PCM -i teeki, mis mängib 16 -bitist PCM -i 8 kHz sagedusega, nii et saate seda teha
CD -de esitamine ilma CD -mängijata, AI ja YouTube'i abil: 10 sammu (piltidega)
CD -de esitamine ilma CD -mängijata, AI ja YouTube kasutamine: Kas soovite oma CD -sid esitada, kuid teil pole enam CD -mängijat? Kas teil polnud aega oma CD -sid rippida? Kas kopeerisite need, kuid failid pole vajadusel saadaval? Pole probleemi. Las AI (tehisintellekt) tuvastab teie CD ja YouTube esitab seda! Kirjutasin Androidi rakenduse
Laulude või muu kraami eemaldamine DVD -lt MP3 -na: 4 sammu
Laulude või muu kraami eemaldamine DVD -lt MP3 -na: kui teil on DualDisc, millel on laulud, mida soovite iPodilt kuulata, või tavaline DVD, millel võib olla kommentaarrada, mida soovite kuulata Ipod, lugege ülejäänud osa selle tegemiseks. Vajalikud esemed-arvuti, käed, aju, DVD, iPod
Videote esitamine tagurpidi Quicktime Playeri abil: 5 sammu
Esita videoid tagurpidi, kasutades Quicktime Playerit: see on sajandi avaraim trikk. See juhendab teile lihtsat viisi videote tagurpidi esitamiseks ilma häbiväärseid programme alla laadimata (kui teil pole kiiret aega, vajate seda.) projektiga hakkama, aga mul oli vaja