Sisällysluettelo:

Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa: 6 vaihetta (kuvien kanssa)
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa: 6 vaihetta (kuvien kanssa)

Video: Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa: 6 vaihetta (kuvien kanssa)

Video: Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa: 6 vaihetta (kuvien kanssa)
Video: HARRY POTTER GAME FROM SCRATCH 2024, Marraskuu
Anonim
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa
Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa

Hei kaverit, Tämä on ensimmäinen ohjeeni, toivottavasti pidät siitä !!

Pohjimmiltaan tässä projektissa olen käyttänyt Arduinon ja kannettavan tietokoneen välistä sarjaliikennettä musiikkitietojen siirtämiseksi kannettavalta tietokoneeltani Arduinolle. Ja käyttämällä Arduino AJASTIMIA datan toistamiseen PWM -signaalina.

Halusin mainita, että tämä projekti ei ole aloittelijoille !!!.

Itse asiassa tämä projekti oli yksi pisimmistä projekteista, koska meidän on tehtävä monia asioita, jotta se toimisi.

HUOMIO

Olen tehnyt tämän opastettavan toisen osan, joka on paljon helpompi ja vaatii mahdollisimman vähän ongelmia

Linkki toiseen osaan (helpoin).

Vaihe 1: Tähän projektiin tarvittavat asiat (vaatimukset)

1. Arduino Board (voimme käyttää mitä tahansa levyä (328, 2560) eli Mega, Uno, Mini jne., Mutta tietyillä eri nastoilla)

2. PC tai kannettava tietokone, jossa on Linux (olen käyttänyt Fedora 29: tä) tai Live USB Linuxin kanssa

3. Leipälauta tai Perfboard

4. Johtojen yhdistäminen

5. TC4420 (Mosfet -ohjain tai vastaava)

6. Virta Mosfet (N- tai P-kanava, johda sitten vastaavasti) (olen käyttänyt N-kanavaa)

7. Kaiutin tai Flyback -muuntaja (Kyllä, luit oikein!)

8. Sopiva virtalähde (0-12V) (olen käyttänyt omaa ATX-virtalähdettä)

9. Jäähdytyselementti (olen pelastanut vanhan tietokoneeni)

10. PC, jossa on Windows ja kynä -asema.

Jos haluat tietää kunkin komponentin ja tämän projektin yksityiskohtaisen toiminnan, lue seuraava vaihe.

Olen tehnyt tämän opastettavan toisen osan, joka on paljon helpompaa ja vaatii minimaalisia ongelmia työskennellä. Linkki toiseen osaan (helpoin).

Vaihe 2: Toimintaperiaatteen ymmärtäminen

Ahhh !! pisin osa opastettavaa, tämän osan lukeminen ja kirjoittaminen on sekä tylsää.

Ensinnäkin meidän on saatava yleiskatsaus siitä, miten tämä asia todella toimii.

me teemme täällä sitä, että ensin muunnamme MP3 -kappaleemme WAV -tiedostoksi ja tämän tiedoston C -otsikkotiedostoksi käyttämällä linkissä olevaa ohjelmistoa. Tämä C-koodi sisältää itse asiassa 8-bittisiä (miksi 8-bittisiä ?? lue lisää) datanäytteitä, jotka meidän on pelattava käyttämällä Arduinoa kiinteällä nopeudella tai nopeudella, joka määritetään näytteenottotaajuutemme mukaisesti.

Äänisignaalin teoria.

Niille, jotka eivät tiedä mitä näytteenottotaajuus tai bittinopeus on:-

Näytteenottotaajuus määritellään näytteiden lukumääräksi, toistamme sekunnissa (yleensä Hz tai KHz).

Lisätietoja yksityiskohtaisesti:-Napsauta tätä

Tavalliset näytteenottotaajuudet ovat 44100 Hz (paras laatu), 32000 Hz, 22050 Hz jne

mikä tarkoittaa, että 44100 näytettä käytetään sekunnissa aallon tuottamiseksi vastaavasti.

Toisin sanoen jokainen näyte on toistettava kiinteällä aikavälillä 1/44100 = 22,67 uS.

Sitten tulee audiosignaalin bittisyvyys, joka on yleensä mitta siitä, kuinka tarkasti ääni esitetään digitaalisessa äänessä. Mitä suurempi bittisyvyys, sitä tarkempi digitaalinen ääni.

Mutta Arduinolla tai millä tahansa muulla 16 Mhz: n kellolla varustetulla mikro-ohjaimella voimme käyttää meitä vain 8-bittisenä. Selitän miksi.

Sivulla nro 102 on kaava 328p: n tietolomakkeessa:- Datasheet

En mene yksityiskohtiin, miksi käytän tätä kaavaa.

signaalin taajuus = Kellosignaali / N x (1+TOP)

Kellosignaali = 16Mhz (Arduino -kortti)

N = esiasetin (1 on arvo projektillemme)

TOP = arvo 0-2^16 (16-bittiselle ajastinlaskurille) (255 = 2^8 (8-bittinen) projektillemme)

saamme signaalin taajuuden arvon = 62,5 kHz

Tämä tarkoittaa, että kantoaallon taajuus riippuu bittisyvyydestä.

Oletetaan, että jos käytämme TOP-arvoa = 2^16 = 65536 (eli 16-bittinen bittisyvyys)

sitten saamme signaalin taajuuden arvon = 244 Hz (jota emme voi käyttää)

OKK… Joten tämä paljon teoriaa siitä, miten audiosignaalit toimivat, riittää, joten palataan projektiin.

Kappaleelle luotu C-koodi voidaan kopioida Arduinoon ja sitä voidaan toistaa, mutta äänentoisto on rajoitettu enintään 3 sekunnin näytteenottotaajuudella 8000 Hz. Koska tämä C -koodi on tekstitiedosto, joten sitä ei ole pakattu, vaan pikemminkin purettu. Ja se vie liikaa tilaa. (esim. C-kooditiedosto, jossa on 43 sekunnin ääni 44 ja 1 KHz: n näytteillä, vie tilaa jopa 23 Mt.) Ja Arduino Mega antaa meille tilaa noin 256 kt.

Joten kuinka soitamme kappaleita Arduinolla. Se ei ole mahdollista. Tämä Instructable on väärennös. Älä huoli lukijat, Siksi meidän on käytettävä jonkinlaista viestintää Arduinon välillä niin suurilla nopeuksilla (jopa 1 Mb/s) äänidatan lähettämiseksi Arduinolle.

Mutta kuinka paljon nopeutta tarkalleen tarvitsemme tehdäksemme tämän ??

Vastaus on 44000 tavua sekunnissa, mikä tarkoittaa nopeutta yli 44000*8 = 325 000 bittiä/s.

Tarvitsemme toisen oheislaitteen, jossa on suuri tallennustila, jotta voimme lähettää nämä tiedot Arduinollemme. Ja se on meidän tietokoneemme Linuxilla (miksi PC Linuxilla? Lue lisää saadaksesi lisätietoja siitä.)

Ahaa… Tämä tarkoittaa, että voimme käyttää sarjaliikennettä… Mutta odota… sarja on mahdollista vain nopeudella 115200 bittiä/s, mikä tarkoittaa (325000/115200 = 3), että se on kolme kertaa vaadittua hitaampi.

Ei, ystäväni, ei ole. Käytämme nopeutta tai Baud-nopeutta 500 000 bittiä sekunnissa enintään 20-30 cm: n kaapelilla, joka on 1,5 kertaa vaadittua nopeampi.

Miksi Linux, ei Windows ???

Joten meidän on lähetettävä näytteitä (myös edellä määritelty) välin 1/44100 = 22,67 uS kanssa tietokoneemme kanssa.

Joten miten voimme ohjelmoida sen tekemään niin ??

Voimme käyttää C ++: ta lähettääksesi datatavun Serialin väliajoin käyttämällä jonkinlaista unitoimintoa

kuten nukkuu, Chrono jne. jne.

for (int x = 0; x

sendData (x);

nanosleep (22000); // 22uS

}

MUTTA EI SE EI TOIMI WINDOWSISSA, ei myöskään toiminut tällä tavalla Linuxissa (mutta löysin toisen tavan, jonka näet liitteenä olevasta koodista.)

Koska emme voi saavuttaa tällaista rakeisuutta ikkunoiden avulla. Tarvitset Linuxin tällaisen yksityiskohtaisuuden saavuttamiseksi.

Ongelmia, joita löysin jopa Linuxissa …

voimme saavuttaa tällaisen rakeisuuden Linuxilla, mutta en löytänyt sellaista toimintoa nukkumaan ohjelmastani 22 uS.

Toiminnot, kuten nanosleep, Chrono nanosleep jne Mutta tarvitsin täsmälleen, tarkalleen 22 uS. Olen tutkinut jokaista sivua Googlessa ja kokeillut kaikkia mahdollisia toimintoja, jotka ovat käytettävissä C/C ++: ssa, mutta mikään ei toiminut minulle. Sitten keksin oman tehtäväni, joka toimi minulle todellisena viehätyksenä.

Ja koodini tarjoaa nyt tarkan, tarkan unen 1uS tai enemmän !!!

Joten olemme käsitelleet vaikean osan ja loppu on helppoa…

Ja haluamme luoda PWM -signaalin käyttämällä Arduinoa, jolla on tietty taajuus ja kantoaallon taajuus. (62,5 KHz (laskettu edellä) signaalin hyvän immuniteetin varmistamiseksi).

Joten meidän on käytettävä PWM: n luomiseen niin kutsuttuja Arduinon ajastimia. Muuten, en mene siihen paljon yksityiskohtia, koska löydät monia opetusohjelmia ajastimista, mutta jos et löydä niitä, kommentoi alla.

Olen käyttänyt TC4420 Mosfet -ohjainta pelastaaksemme Arduino -nastamme, koska ne eivät pysty toimittamaan niin paljon virtaa MOSFETin ajamiseen joskus.

Joten se oli melkein tämän projektin teoria, voimme nyt nähdä piirikaavion.

HUOMIO HUOMIO HUOMIO

Itse asiassa tämä projekti tehtiin tahallisesti paljon vaikeaksi (kerron miksi), on toinen menetelmä, joka vaatii noPC: n vain Arduinon ja kaiuttimen seuraavassa ohjeessa. Linkki on täällä.

*Tämän projektin päätarkoitus on käyttää sarjaliikennettä ja tietää sen teho ja oppia, kuinka voimme ohjelmoida tietokoneemme suorittamaan tehtäviä tarkasti niin pienin väliajoin.*

Vaihe 3: Kaavio

Kaavamainen
Kaavamainen

Liitä kaikki komponentit kaavion mukaisesti. Tässä on siis kaksi vaihtoehtoa:-

1. Liitä kaiutin (kytketty 5 V: lla)

2. Liitä Flyback -muuntaja (kytketty 12 V: lla)

Olen kokeillut molempia. Ja molemmat toimivat aika hyvin.

Vastuuvapauslauseke:-

*Suosittelen Flyback -muuntajan käyttöä varotoimella, koska se voi olla vaarallista, koska se tuottaa korkeita jännitteitä. Ja en ole vastuussa mistään vahingoista.*

Vaihe 4: Muunna MP3 WAV -tiedostoksi Audacityn avulla

Muunna MP3 WAV -tiedostoksi Audacityn avulla
Muunna MP3 WAV -tiedostoksi Audacityn avulla
Muunna MP3 WAV -tiedostoksi Audacityn avulla
Muunna MP3 WAV -tiedostoksi Audacityn avulla
Muunna MP3 WAV -tiedostoksi Audacityn avulla
Muunna MP3 WAV -tiedostoksi Audacityn avulla

Joten, ensinnäkin, lataa ohjelmisto

1. Audacity, etsi ja lataa Googlesta

2. Jos haluat muuntaa WAV-tiedoston C-koodiksi, lataa ikkunasovellus nimeltä WAVToCode

Voit oppia käyttämään WAVToCode -ohjelmistoa tästä linkistä ja ladata sen tästä linkistä.

Annan myös yksityiskohtaisia ohjeita molempien ohjelmistojen käytöstä.

Katso tähän ohjeeseen liittyvät valokuvat.

Tässä vaiheessa muunnamme MP3: n Wav -muotoon. (Seuraa valokuvia, projektinopeuden on oltava 44100 Hz)

Seuraavassa vaiheessa muunnamme wav -tiedoston C -koodiksi.

Vaihe 5: WAV C-koodiin

WAV-C-koodi
WAV-C-koodi
WAV-C-koodi
WAV-C-koodi
WAV-C-koodi
WAV-C-koodi

Seuraa valokuvia.

Katso kaksi viimeistä kuvaa, muutosten on oltava täsmälleen samat, isojen kirjainten tulee olla isoja ja pieniä pieniä, tai saat syntaksivirheen kääntämisen aikana.

(Voit nähdä, että 1 min 41 sekunnin kappale vei 23 megatavua tilaa.)

Muuta kappaleen nimi ja pituus kappaleen nimen ja keston mukaan.

Ja tallenna C -kooditiedosto.

Tee tämä kaikille kappaleille, jotka haluat soittaa Arduinolla

Vaihe 6: Tee lopullinen tiedosto ja käynnistä Linux

Tee lopullinen tiedosto ja käynnistä Linux
Tee lopullinen tiedosto ja käynnistä Linux
Tee lopullinen tiedosto ja käynnistä Linux
Tee lopullinen tiedosto ja käynnistä Linux
Tee lopullinen tiedosto ja käynnistä Linux
Tee lopullinen tiedosto ja käynnistä Linux

Lisää kaikki muunnetut kappaleet tämän linkin sisältämään tiedostoon.

Ja seuraa kuvia.

Lataa koodi Arduinoon, jonka olen liittänyt.

Muista C-koodin tiedostonimet. (Esim. Lifestyle, dollar, weare), koska meidän on mainittava koodissamme täsmälleen samat nimet kirjainkoolla.

Lopuksi käynnistä Fedora Live USB tai muu ja asenna gcc -kääntäjä ja käytä sitten kansion kääntämisohjeita, käännä ohjelma ja suorita se.

Lopulta voit kuunnella kappaleita Speakerilta tai Flybackilta.

Kiitos, että luit tämän ohjeen, ja kommentoi, jos pidät siitä.

HUOMIO Olen tehnyt tämän opastettavan toisen osan, joka on paljon helpompi ja vaatii mahdollisimman vähän ongelmia. Linkki toiseen osaan (helpoin)

Suositeltava: