Kazalo:

Predvajanje pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali povratnem transformatorju: 6 korakov (s slikami)
Predvajanje pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali povratnem transformatorju: 6 korakov (s slikami)

Video: Predvajanje pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali povratnem transformatorju: 6 korakov (s slikami)

Video: Predvajanje pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali povratnem transformatorju: 6 korakov (s slikami)
Video: SMASHY CITY CURES BAD HAIR DAY 2024, Julij
Anonim
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju
Predvajajte pesmi (MP3) z Arduinom z uporabo PWM na zvočniku ali Flyback Transformerju

Zdravo družba, To je moj prvi pouk, upam, da vam bo všeč !!

V bistvu sem v tem projektu uporabil serijsko komunikacijo med svojim Arduinom in prenosnim računalnikom za prenos glasbenih podatkov iz prenosnega računalnika v Arduino. In z uporabo Arduino TIMERS za predvajanje podatkov kot signal PWM.

Želel sem omeniti, da ta projekt ni za začetnike !!!.

Pravzaprav je bil ta projekt eden najdaljših projektov, saj moramo za njegovo delovanje narediti veliko stvari.

POZOR

Drugi del tega navodila sem naredil za lažjega in za delo potrebuje minimalne težave

Povezava do drugega dela (najlažji).

1. korak: Stvari, ki jih potrebujemo za ta projekt (zahteve)

1. Arduino plošča (lahko uporabimo katero koli ploščo (328, 2560), tj. Mega, Uno, Mini itd., Vendar s posebnimi različnimi zatiči)

2. Računalnik ali prenosni računalnik z Linuxom (uporabljal sem Fedoro 29) Ali Live USB z Linuxom

3. Breadboard ali Perfboard

4. Povezovanje žic

5. TC4420 (voznik Mosfet ali kaj podobnega)

6. Napajanje Mosfet (N ali P kanal, prosim ožičite potem) (uporabil sem N-kanal)

7. Zvočnik ali povratni transformator (ja, prav ste prebrali !!)

8. Ustrezen napajalnik (0-12V) (uporabil sem svoj napajalnik ATX)

9. Hladilnik (rešil sem s starega računalnika)

10. Računalnik z operacijskim sistemom Windows in pisalom.

Če želite izvedeti podrobno delovanje vsake komponente in tega projekta, preberite naslednji korak.

Drugi del tega navodila sem naredil za lažjega in za delo potrebuje minimalne težave. Povezava do drugega dela (najlažji).

2. korak: Razumevanje delovnega načela

Ahhh !! najdaljši del poučevanja, branje in pisanje tega oddelka je dolgočasno.

Najprej moramo dobiti pregled, kako ta stvar dejansko deluje.

tukaj delamo najprej to, da našo skladbo MP3 pretvorimo v datoteko WAV in to datoteko v datoteko z glavo C s pomočjo programske opreme, ki je na povezavi. Ta koda C dejansko vsebuje 8-bitne (zakaj 8-bitne ?? branje dalje) vzorce podatkov, ki jih moramo predvajati z uporabo našega Arduina s fiksno hitrostjo ali hitrostjo, ki je določena v skladu z našo hitrostjo vzorčenja.

Teorija zvočnega signala.

Za tiste, ki ne veste, kaj je vzorčenje ali bitna hitrost:-

Hitrost vzorčenja je opredeljena kot število vzorcev, ki jih predvajamo v sekundi (običajno merjeno v Hz ali KHz).

Če želite izvedeti več v Podrobnosti: -Kliknite tukaj

Standardne stopnje vzorčenja so 44100 Hz (najboljša kakovost), 32000 Hz, 22050 Hz itd

kar pomeni, da se 44100 vzorcev v sekundi uporabi za ustvarjanje vala.

tj. Vsak vzorec je treba predvajati v fiksnem intervalu 1/44100 = 22,67 uS.

Nato sledi bitna globina zvočnega signala, ki je običajno merilo, kako natančno je zvok predstavljen v digitalnem zvoku. Višja bitna globina, natančnejši je digitalni zvok.

Toda z Arduinom ali katerim koli drugim mikrokrmilnikom s 16Mhz uro nam omogoča, da uporabljamo le do 8-bitne različice. Razložil bom, zakaj.

Na strani št. 102 v podatkovnem listu 328p obstaja formula:- Podatkovni list

Ne bom se spuščal v podrobnosti, zakaj uporabljam to formulo.

frekvenca signala = signal ure / N x (1+TOP)

Signal ure = 16Mhz (Arduino plošča)

N = predkaler (1 je vrednost za naš projekt)

TOP = vrednost 0 do 2^16 (Za 16-bitni števec časa) (255 = 2^8 (8-bitni) za naš projekt)

dobimo vrednost frekvence signala = 62,5 kHz

To pomeni, da je frekvenca nosilnega vala odvisna od bitne globine.

Recimo, če uporabimo vrednost TOP = 2^16 = 65536 (tj. 16-bitna globina bita)

potem dobimo vrednost frekvence signala = 244 Hz (ki je ne moremo uporabiti)

OKK … Toliko teorije o tem, kako delujejo zvočni signali, je dovolj, zato se vrnimo k projektu.

Kodo C, ustvarjeno za skladbo, bi lahko kopirali v Arduino in jo lahko predvajali, vendar smo omejeni na največ 3-sekundno predvajanje zvoka s frekvenco vzorčenja 8000 Hz. Ker je ta koda C besedilna datoteka in zato ni stisnjena, temveč dekomprimirana. In zavzame preveč prostora. (npr. kodna datoteka C s 43-sekundnim zvokom s 44, 1 KHz vzorci zavzame prostor do 23 MB). In naš Arduino Mega nam daje prostora približno 256 Kb.

Torej, kako bomo predvajali pesmi z uporabo Arduina. Ni mogoče. Ta navodila so ponarejena. Ne skrbite bralcev, Zato moramo za pošiljanje zvočnih podatkov v Arduino uporabiti nekakšno komunikacijo med Arduinom pri tako velikih hitrostih (do 1 Mb/s).

Toda koliko hitrosti točno potrebujemo, da to naredimo ??

Odgovor je 44000 bajtov na sekundo, kar pomeni, da je hitrost večja od 44000*8 = 325 000 bitov/s.

Za pošiljanje teh podatkov v naš Arduino potrebujemo drugo zunanjo napravo z velikim pomnilnikom. In to bo naš osebni računalnik z Linuxom (zakaj računalnik z Linuxom ??? preberite več, če želite izvedeti več o tem.)

Ahaa … To pomeni, da lahko uporabljamo serijsko komunikacijo … Ampak počakajte … serijska izvedba je mogoča le pri hitrostih do 115200 bitov/s, kar pomeni (325000/115200 = 3), da je trikrat počasnejša od zahtevane.

Ne, prijatelji moji, ni. Uporabili bomo hitrost ali hitrost prenosa 500 000 bitov/s s kablom do največ 20-30 cm, kar je 1,5-krat hitreje od zahtevanega.

Zakaj Linux, ne Windows ???

Zato moramo vzorce poslati z intervalom (tudi zgoraj navedenim) 1/44100 = 22,67 uS z računalnikom.

Kako ga torej lahko programiramo ??

C ++ lahko uporabimo za pošiljanje podatkovnega bajta skozi Serial v intervalu z uporabo neke vrste funkcije spanja

kot so nanosleep, Chrono itd itd …

za (int x = 0; x

sendData (x);

nanosleep (22000); // 22uS

}

A NE, NA WINDOWSU NE DELUJE tudi na Linuxu ni delovalo na ta način (vendar sem našel drug način, ki ga vidite v priloženi kodi.)

Ker z okni ne moremo doseči take granulacije. Za doseganje takšne natančnosti potrebujete Linux.

Težave, ki sem jih našel celo z Linuxom …

z Linuxom lahko dosežemo tako natančnost, vendar nisem našel take funkcije, da bi spal svoj program za 22uS.

Funkcije, kot so nanosleep, Chrono nanosleep itd itd., Prav tako ne delujejo, saj zagotavljajo spanje le več kot 100 uS. Potreboval pa sem natančno, natančno 22 uS. Raziskal sem vsako stran v Googlu in preizkusil vse možne funkcije, ki so na voljo v C/C ++, vendar mi nič ni delovalo. Potem sem prišel do svoje funkcije, ki mi je delovala kot pravi čar.

In moja koda zdaj zagotavlja natančno, natančno spanje 1uS ali več !!!!

Tako smo pokrili težki del, ostalo pa je enostavno …

In želimo ustvariti signal PWM z uporabo Arduina s posebno frekvenco tudi frekvenco nosilnega vala (62,5 KHz (kot je izračunano zgoraj) za dobro odpornost signala).

Zato moramo za ustvarjanje PWM uporabiti tako imenovane TIMERje Arduina. Mimogrede, o tem ne bom šel v veliko podrobnosti, ker boste našli veliko vaj na temo TIMERS, če pa jih ne najdete, jih spodaj komentirajte.

Za shranjevanje naših Arduino zatičev sem uporabil gonilnik TC4420 Mosfet, ker včasih ne morejo zagotoviti toliko toka za pogon MOSFET -a.

Torej, to je bila skoraj teorija tega projekta, zdaj lahko vidimo diagram vezja.

POZOR POZOR POZOR

Pravzaprav je bil ta projekt namerno otežen (povedal bom, zakaj), obstaja še ena metoda, ki zahteva, da v mojem naslednjem navodilu noPC samo Arduino in zvočnik. Povezava je tukaj.

*Glavni namen tega projekta je uporaba serijske komunikacije in spoznavanje njegove moči ter spoznavanje, kako lahko programiramo naš računalnik za opravljanje nalog ravno v tako majhnih časovnih presledkih.*

3. korak: Shema

Shematično
Shematično

Povežite vse komponente, kot je prikazano na shemi. Tu imate torej dve možnosti:-

1. Priključite zvočnik (povezan s 5V)

2. Priključite povratni transformator (povezan z 12V)

Poskusil sem oboje. In oba delujeta zelo dobro.

Zavrnitev odgovornosti:-

*Priporočam previdnostno uporabo transformatorja, ker je lahko nevaren, ker proizvaja visoke napetosti. Ne bom odgovoren za nobeno škodo.*

4. korak: Pretvorite MP3 v datoteko WAV z Audacity

Pretvorite datoteko MP3 v datoteko WAV z Audacity
Pretvorite datoteko MP3 v datoteko WAV z Audacity
Pretvorite datoteko MP3 v datoteko WAV z Audacity
Pretvorite datoteko MP3 v datoteko WAV z Audacity
Pretvorite datoteko MP3 v datoteko WAV z Audacity
Pretvorite datoteko MP3 v datoteko WAV z Audacity

Torej, najprej prenesite programsko opremo

1. Audacity, iskanje in prenos iz Googla

2. Če želite datoteko WAV pretvoriti v kodo C, prenesite okno z imenom WAVToCode

Na tej povezavi se lahko naučite uporabljati programsko opremo WAVToCode in jo prenesete s te povezave.

Navedel bom tudi podrobne korake, kako uporabljati obe programski opremi.

Oglejte si fotografije, povezane s tem navodilom.

V tem koraku bomo MP3 pretvorili v Wav. (Sledite fotografijam, hitrost projekta mora biti 44100Hz)

V naslednjem koraku bomo datoteko wav pretvorili v kodo C.

5. korak: WAV v C-kodo

WAV v C-kodo
WAV v C-kodo
WAV v C-kodo
WAV v C-kodo
WAV v C-kodo
WAV v C-kodo

Sledite fotografijam.

Oglejte si zadnji sliki, spremembe morajo biti popolnoma enake, velike tiskane črke morajo biti velike in male črke male, ali pa boste med sestavljanjem dobili sintaktično napako.

(Vidite lahko, da je pesem 1min 41s zavzela 23 MB prostora.)

Spremenite ime pesmi in dolžino z imenom oziroma trajanjem pesmi.

In shranite datoteko C Code.

Naredite to za vse pesmi, ki jih želite igrati z Arduinom

6. korak: Ustvarite končno datoteko in zaženite svoj Linux

Naredite končno datoteko in zaženite svoj Linux
Naredite končno datoteko in zaženite svoj Linux
Naredite končno datoteko in zaženite svoj Linux
Naredite končno datoteko in zaženite svoj Linux
Naredite končno datoteko in zaženite svoj Linux
Naredite končno datoteko in zaženite svoj Linux

Dodajte vse pretvorjene pesmi v datoteko na tej povezavi.

In sledite slikam.

Naložite kodo v Arduino, ki sem jo priložil.

Zapomnite si imena datotek C Code (na primer življenjski slog, dolar, obleka), ker moramo v kodi omeniti velika imena z velikimi in malimi črkami.

Na koncu zaženite Fedora Live USB ali drugo in namestite gcc prevajalnik, nato pa z navodili za sestavljanje iz mape prevedite program in ga zaženite.

Na koncu boste lahko poslušali pesmi iz Speaker ali Flyback.

Hvala, ker ste prebrali ta navodila, in če vam je všeč, komentirajte.

ATTENTIONI so naredili drugi del tega navodila, ki je veliko lažji in za delo potrebuje minimalne težave. Povezava do drugega dela (najlažji)

Priporočena: