Përmbajtje:

Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer: 6 hapa (me fotografi)
Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer: 6 hapa (me fotografi)

Video: Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer: 6 hapa (me fotografi)

Video: Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer: 6 hapa (me fotografi)
Video: REAL RACING 3 LEAD FOOT EDITION 2024, Korrik
Anonim
Luaj këngë (MP3) me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) Me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer
Luaj këngë (MP3) me Arduino duke përdorur PWM në altoparlant ose Flyback Transformer

Ç'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

Skematike
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

Shndërroni MP3 në skedar WAV duke përdorur Audacity
Shndërroni MP3 në skedar WAV duke përdorur Audacity
Shndërroni MP3 në skedar WAV duke përdorur Audacity
Shndërroni MP3 në skedar WAV duke përdorur Audacity
Shndërroni MP3 në skedar WAV duke përdorur Audacity
Shndërroni MP3 në skedar 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

WAV në C-Code
WAV në C-Code
WAV në C-Code
WAV në C-Code
WAV në C-Code
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

Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
Krijoni një skedar përfundimtar dhe ndizni Linux -in tuaj
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: