Përmbajtje:
- Hapi 1: Gjërat që na duhen për këtë projekt (Kërkesat)
- Hapi 2: Kuptimi i Parimit të Punës
- Hapi 3: Skematike
- Hapi 4: Konvertoni skedarin MP3 në WAV duke përdorur Audacity
- Hapi 5: WAV në C-Code
- Hapi 6: Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Video: Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer: 6 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:20
Ç'kemi djema, Ky është udhëzimi im i parë, shpresoj se do t'ju pëlqejë !!
Në thelb, në këtë projekt unë kam përdorur Komunikimin Serial midis Arduino dhe laptopit tim, për të transmetuar të dhëna muzikore nga laptopi im në Arduino. Dhe duke përdorur Arduino TIMERS për të luajtur të dhënat si një sinjal PWM.
Doja të përmendja se, ky projekt nuk është për Fillestarët !!!.
Në fakt, ky projekt ishte një nga projektet më të gjatë, sepse ne duhet të bëjmë shumë gjëra për ta bërë atë të funksionojë.
KUJDES
Unë e kam bërë pjesën e dytë të këtij udhëzimi, e cila është shumë më e lehtë dhe kërkon probleme minimale për të punuar
Lidhja me Pjesën e Dytë (pjesa më e lehtë).
Hapi 1: Gjërat që na duhen për këtë projekt (Kërkesat)
1. Bordi Arduino (ne mund të përdorim çdo bord (328, 2560) dmth Mega, Uno, Mini, etj, por me kunja të veçantë të ndryshëm)
2. PC ose Laptop me Linux (kam përdorur Fedora 29) Ose Live USB me Linux
3. Breadboard ose Perfboard
4. Lidhja e telave
5. TC4420 (Shoferi Mosfet ose diçka e tillë)
6. Power Mosfet (kanali N ose P, ju lutemi lidhni në përputhje me rrethanat) (Unë kam përdorur kanalin N)
7. Speaker ose Flyback Transformer (Po e lexuat mirë !!)
8. Furnizimi me energji i përshtatshëm (0-12V) (kam përdorur furnizimin tim me energji ATX)
9. Lavaman i nxehtësisë (kam shpëtuar nga kompjuteri im i vjetër)
10. PC me Windows dhe stilolaps.
Për të ditur punën e detajuar të secilit komponent dhe këtij projekti ju lutemi lexoni hapin tjetër.
Unë e kam bërë pjesën e dytë të këtij udhëzimi, e cila është shumë më e lehtë dhe kërkon probleme minimale për të punuar. Lidhu me Pjesën e Dytë (ajo më e lehtë).
Hapi 2: Kuptimi i Parimit të Punës
Ahhh !! pjesa më e gjatë e një mësimi, leximi dhe shkrimi i këtij seksioni është i mërzitshëm.
Para së gjithash, ne duhet të marrim një përmbledhje, se si funksionon kjo gjë në të vërtetë.
ajo që ne po bëjmë këtu është se së pari, ne po e konvertojmë këngën tonë MP3 në një Skedar WAV dhe këtë skedar në një skedar me kokë C duke përdorur softuerin, i cili është në lidhje. Ky kod C në të vërtetë përmban mostra të të dhënave 8-bit (pse 8-bit ?? lexoni më tej) që na duhen të luajmë duke përdorur Arduino-n tonë me një normë ose shpejtësi fikse, e cila specifikohet sipas Shkallës sonë të Kampionimit.
Teoria e një sinjali audio.
Për ata që nuk e dinë se çfarë është Shkalla e Mostrimit ose Bit Rate:-
Shkalla e Mostrimit përcaktohet si numri i Mostrave, ne po luajmë në një sekondë (zakonisht matet në Hz ose KHz).
Për të ditur më shumë në detaje: -Kliko Këtu
Tarifat Standarde të Mostrimit janë 44100 Hz (cilësia më e mirë), 32000 Hz, 22050 Hz, etj
që do të thotë se 44100 Mostra përdoren në sekondë për të gjeneruar një valë në përputhje me rrethanat.
dmth Çdo Mostër kërkohet të luhet në një interval fiks prej 1/44100 = 22.67 US.
Pastaj vjen thellësia e bitit të një sinjali audio, i cili zakonisht është një masë se sa saktësisht një zë përfaqësohet në audio dixhitale. Sa më e lartë të jetë thellësia e bitit, aq më i saktë është tingulli dixhital.
Por me Arduino ose ndonjë mikrokontrollues tjetër me orë 16Mhz na lejon të përdorim vetëm deri në 8-bit. Unë do ta shpjegoj pse.
Ekziston një formulë në faqen nr.102 në fletën e të dhënave të 328p:- Fleta e të dhënave
Nuk do të hyj në detaje, pse po e përdor këtë formulë.
frekuenca e sinjalit = Sinjali i orës / N x (1+TOP)
Sinjali i orës = 16 Mhz (bordi Arduino)
N = prescaler (1 është vlerë për projektin tonë)
TOP = vlera 0 deri 2^16 (Për njehsorin e kohëmatësit 16-bit) (255 = 2^8 (8-bit) për projektin tonë)
marrim vlerën e frekuencës së Sinjalit = 62.5 kHz
Kjo do të thotë se frekuenca e valës bartëse varet nga Thellësia e Bit -it.
Supozoni, nëse përdorim vlerën TOP = 2^16 = 65536 (dmth. Thellësia e bitit 16-bit)
atëherë marrim vlerën e frekuencës së Sinjalit = 244 Hz (që nuk mund ta përdorim)
OK … Pra, kjo teori e madhe e funksionimit të sinjaleve audio është e mjaftueshme, kështu që kthehuni te Projekti.
Kodi C i gjeneruar për një këngë mund të kopjohet në Arduino dhe mund të luhet, por ne jemi të kufizuar deri në 3 sekonda luajtje audio me një normë kampionimi prej 8000 Hz. Sepse ky kod C është një skedar teksti dhe kështu nuk është i ngjeshur, por i dekompresuar. Dhe merr shumë hapësirë. (p.sh. skedari i kodit C me audio 43 sekonda me mostra 44, 1 KHz merr hapësirë deri në 23 MB). Dhe Arduino Mega jonë na jep një hapësirë prej rreth 256 Kb.
Pra, si do të luajmë këngë duke përdorur Arduino. Nuk eshte e mundur. Ky udhëzues është i rremë. Mos u shqetësoni lexues, Kjo është arsyeja pse ne duhet të përdorim një lloj komunikimi midis Arduino me shpejtësi kaq të mëdha (deri në 1 Mb/s) për të dërguar të dhëna audio në Arduino.
Por Sa shpejtësi saktësisht na duhet, për ta bërë këtë ??
Përgjigja është 44000 byte për sek, që do të thotë shpejtësi më shumë se 44000*8 = 325, 000 Bits/s.
Ne kemi nevojë për një periferik tjetër me ruajtje të madhe për t'i dërguar këto të dhëna në Arduino -n tonë. Dhe ky do të jetë kompjuteri ynë me Linux (pse PC me Linux ??? ju lutemi lexoni më tej për të ditur më shumë rreth tij.)
Ahaa … Kjo do të thotë që ne mund të përdorim Komunikimin Serial … Por prisni … seriali është i mundur me shpejtësi të shpejta deri në 115200 Bits/s që do të thotë (325000/115200 = 3) se, është tre herë më i ngadalshëm seç kërkohet.
Jo, miqtë e mi, nuk është kështu. Ne do të përdorim shpejtësinë ose Baud Rate prej 500, 000 Bits/s shpejtësi me një kabllo deri në 20-30 cm max., Që është 1.5 herë më e shpejtë se sa kërkohet.
Pse Linux, jo Windows ???
Pra, ne duhet të dërgojmë mostra në një interval (specifikuar gjithashtu më lart) prej 1/44100 = 22.67 uS me kompjuterin tonë.
Pra, si mund ta programojmë për ta bërë këtë ??
Ne mund të përdorim C ++ për të dërguar një bajt të dhënash përmes Serial në një interval duke përdorur një lloj funksioni të gjumit
si nanosleep, Chrono, etj, etj….
për (int x = 0; x
sendData (x);
nanosleep (22000); // 22uS
}
POR JO NUK PUNON ME WINDOWS gjithashtu nuk funksionoi në këtë mënyrë në Linux (por gjeta një mënyrë tjetër që mund ta shihni në Kodin tim të bashkangjitur.)
Sepse ne nuk mund të arrijmë një hollësi të tillë duke përdorur dritare. Ju keni nevojë për Linux për të arritur një hollësi të tillë.
Probleme që gjeta edhe me Linux…
ne mund të arrijmë një hollësi të tillë duke përdorur Linux, por nuk gjeta asnjë funksion të tillë për të fjetur programin tim për 22uS.
Funksione të tilla si nanosleep, Chrono nanosleep, etj, etj. Gjithashtu nuk funksionojnë, pasi ato sigurojnë një gjumë vetëm më shumë se 100 uS. Por më duhej saktësisht, saktësisht 22 dollarë amerikanë. Unë kam hulumtuar çdo faqe të vetme në google dhe kam eksperimentuar me të gjitha funksionet e mundshme që janë në dispozicion në C/C ++ por asgjë nuk funksionoi për mua. Pastaj kam dalë me funksionin tim, që më ka punuar si një bukuri e vërtetë.
Dhe kodi im tani siguron një gjumë të saktë, të saktë prej 1uS ose më lart !!!!
Pra, ne kemi mbuluar pjesën e vështirë dhe pjesa tjetër është e lehtë …
Dhe ne duam të gjenerojmë një sinjal PWM duke përdorur Arduino me një frekuencë specifike gjithashtu frekuencë valore bartëse. (62.5KHz (siç llogaritet më lart) për imunitet të mirë të Sinjalit).
Pra, Ne duhet të përdorim të ashtuquajturit TIMERS të Arduino për të krijuar PWM. Nga rruga, unë nuk do të hyj në shumë detaje për këtë, sepse do të gjeni shumë mësime mbi temën e KOHMARRS, por nëse nuk gjeni disa, atëherë komentoni më poshtë do të bëj një.
Unë kam përdorur një shofer Mosfet TC4420, për të ruajtur kunjat tanë Arduino, sepse ato nuk mund të japin aq shumë rrymë për të drejtuar ndonjëherë një MOSFET.
Pra, kjo ishte pothuajse teoria e këtij projekti, tani mund të shohim diagramin e qarkut.
KUJDES KUJDES KUJDES
Në fakt, ky projekt u bë shumë i vështirë me qëllim (do të them pse), ekziston një metodë tjetër që kërkon noPC vetëm Arduino dhe altoparlant në udhëzuesin tim të ardhshëm. Lidhja është këtu.
*Qëllimi kryesor i këtij projekti është përdorimi i Komunikimit Serial dhe njohja e fuqisë së tij dhe të mësojmë se si mund ta programojmë kompjuterin tonë për të kryer detyra pikërisht në intervale kaq të mira.*
Hapi 3: Skematike
Lidhni të gjithë Komponentët siç tregohet në skemë. Kështu që ju keni këtu dy mundësi:-
1. Lidhni një altoparlant (i lidhur me 5V)
2. Lidhni një transformator Flyback (i lidhur me 12V)
I kam provuar të dyja. Dhe të dy punojnë mjaft mirë.
Përgjegjësia:-
*Unë rekomandoj përdorimin e Flyback Transformer me Masa Paraprake pasi mund të jetë i rrezikshëm sepse prodhon Tensione të Larta. Dhe nuk do të jem përgjegjës për asnjë dëm.*
Hapi 4: Konvertoni skedarin MP3 në WAV duke përdorur Audacity
Pra, Para së gjithash, shkarkoni programin
1. Guximi, kërkoni dhe shkarkoni nga Google
2. Për të kthyer skedarin WAV në C-Code, shkarkoni një aplikacion të dritares, të quajtur si WAVToCode
Ju mund të mësoni se si të përdorni softuerin WAVToCode nga kjo lidhje dhe ta shkarkoni nga kjo lidhje.
Unë gjithashtu do të jap hapa të hollësishëm se si të përdorim të dy programet.
Ju lutemi Shihni fotot e lidhura me këtë udhëzues.
Në këtë hap, ne do të konvertojmë MP3 në Wav. (Ndiqni fotot, norma e projektit duhet të jetë 44100Hz)
Në hapin tjetër, ne do të konvertojmë një skedar wav në C Code.
Hapi 5: WAV në C-Code
Ndiqni fotot.
Shihni dy fotografitë e fundit, ndryshimet duhet të jenë saktësisht të njëjta, Shkronjat e mëdha duhet të jenë të mëdha dhe të vogla duhet të jenë më të vogla, Ose do të merrni gabim sintaksor gjatë përpilimit.
(Ju mund të shihni që kënga 1min 41 -të zuri 23mb hapësirë.)
Ndryshoni emrin dhe gjatësinë e këngës përkatësisht me emrin dhe kohëzgjatjen e këngës tuaj.
Dhe ruani skedarin C Code.
Bëjeni këtë për të gjitha Këngët që dëshironi të luani me Arduino
Hapi 6: Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Shtoni të gjitha këngët tuaja të konvertuara në Skedar të dhënë në këtë lidhje.
Dhe ndiqni fotot.
Ngarko kodin në Arduino, të cilin e kam bashkangjitur.
Mos harroni emrat e skedarëve të Kodit C.
Në fund ndizni Fedora Live USB ose ndonjë tjetër dhe instaloni përpiluesin gcc dhe më pas duke përdorur udhëzimet e përpilimit nga dosja përpiloni programin dhe drejtojeni atë.
Në fund, do të keni mundësi të dëgjoni këngë nga Speaker ose Flyback.
Faleminderit që lexuat këtë udhëzues dhe ju lutemi komentoni nëse ju pëlqen.
KUJDES Unë e kam bërë pjesën e dytë të kësaj të udhëzueshme, e cila është shumë më e lehtë dhe kërkon probleme minimale për të punuar. Lidhja me Pjesën e Dytë (më e lehtë)
Recommended:
Telekomanda me valë duke përdorur modulin NRF24L01 2.4Ghz me Arduino - Nrf24l01 Marrës transmetues 4 kanal / 6 kanal për kuadopter - Rc Helikopter - Rc Plane Duke përdorur Arduino: 5 hapa (me fotografi)
Telekomanda me valë duke përdorur modulin NRF24L01 2.4Ghz me Arduino | Nrf24l01 Marrës transmetues 4 kanal / 6 kanal për kuadopter | Rc Helikopter | Rc Plane Duke përdorur Arduino: Për të drejtuar një makinë RC | Kuadikopter | Dron | RC aeroplan | Varka RC, ne gjithmonë kemi nevojë për një marrës dhe transmetues, supozoni për RC QUADCOPTER kemi nevojë për një transmetues dhe marrës me 6 kanale dhe ai lloj TX dhe RX është shumë i kushtueshëm, kështu që ne do të bëjmë një në pajisjen tonë
Luaj këngë me Arduino duke përdorur ADC në PWM në Flyback Transformer ose Altoparlant: 4 hapa
Luaj këngë me Arduino duke përdorur ADC në PWM në Flyback Transformer ose Altoparlant: Përshëndetje djema, kjo është pjesa e dytë e një tjetër udhëzimi tim (që ishte shumë e vështirë), në thelb, në këtë projekt, unë kam përdorur ADC dhe KOHMERIT në Arduino tim për të shndërroni sinjalin audio në një sinjal PWM. Kjo është shumë më e lehtë sesa udhëzimi im i mëparshëm
Luaj CD pa CD Player, duke përdorur AI dhe YouTube: 10 hapa (me fotografi)
Luaj CD pa CD Player, duke përdorur AI dhe YouTube: Dëshironi të luani CD -të tuaj por nuk keni më CD player? Nuk keni pasur kohë për të shqyer CD -të tuaja? I grisi ato, por skedarët nuk janë të disponueshëm kur është e nevojshme? Nuk ka problem. Lëreni AI (inteligjencën artificiale) të identifikojë CD -në tuaj dhe YouTube ta luajë atë! Unë shkrova një aplikacion Android që bën
Luaj këngë duke përdorur Stepper Motor !!: 11 hapa (me fotografi)
Luaj këngë duke përdorur Stepper Motor !!: Ky projekt ka të bëjë me hartimin e një ndërfaqeje të thjeshtë dinamike, e cila do të lejojë ndërveprimin me një motor stepper në dy mënyra të ndryshme. Ndërfaqja e parë do të kontrollojë drejtimin dhe shpejtësinë e motorit stepper përmes përdorimit të një GUI e thjeshtë, e cila h
Si të hiqni këngë ose gjëra të tjera nga një DVD si MP3: 4 hapa
Si të hiqni këngë ose gjëra të tjera nga një DVD si MP3: Nëse keni një DualDisc me këngë në të që dëshironi të dëgjoni në një Ipod, ose një DVD normal me ndoshta një këngë komentuese që dëshironi të dëgjoni një Ipod, lexoni pjesën tjetër të kësaj për ta bërë atë. Artikujt e nevojshëm-Kompjuter, duar, tru, DVD, Ipod