Sisällysluettelo:
- Vaihe 1: Tähän projektiin tarvittavat asiat (vaatimukset)
- Vaihe 2: Toimintaperiaatteen ymmärtäminen
- Vaihe 3: Kaavio
- Vaihe 4: Muunna MP3 WAV -tiedostoksi Audacityn avulla
- Vaihe 5: WAV C-koodiin
- Vaihe 6: Tee lopullinen tiedosto ja käynnistä Linux
Video: Toista kappaleita (MP3) Arduinolla PWM: n avulla kaiuttimessa tai Flyback -muuntajassa: 6 vaihetta (kuvien kanssa)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:02
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
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
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
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
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:
Toista video ESP32: 10 vaihetta (kuvien kanssa)
Toista videota ESP32: lla: Tämä opas näyttää jotain videon ja äänen toistamisesta ESP32: lla
Toista CD -levyjä ilman CD -soitinta, tekoälyn ja YouTuben avulla: 10 vaihetta (kuvien kanssa)
Toista CD -levyjä ilman CD -soitinta, tekoälyn ja YouTuben avulla: Haluatko toistaa CD -levyjä, mutta sinulla ei ole enää CD -soitinta? Eikö sinulla ollut aikaa kopioida CD -levyjäsi? Kopioitu ne, mutta tiedostot eivät ole käytettävissä tarvittaessa? Ei hätää. Anna tekoälyn (AI) tunnistaa CD -levysi ja YouTube toistaa sen! Kirjoitin Android -sovelluksen
Toista Bluetooth Sonosissa Raspberry Pi: n avulla: 25 vaihetta
Bluetoothin toistaminen Sonosilla Raspberry Pi: n avulla: Kirjoitin aiemmin ohjeen, jossa kuvataan, kuinka aux- tai analoginen linjatulo lisätään Sonosiin Raspberry Pi: n avulla. Lukija kysyi, olisiko mahdollista suoratoistaa Bluetooth -ääntä puhelimesta Sonosiin. Tämä on helppo tehdä bluetooth -sovittimen avulla
Toista kappaleita askelmoottorilla !!: 11 vaihetta (kuvilla)
Toista kappaleita askelmoottorilla !!: Tässä projektissa suunnitellaan yksinkertainen dynaaminen käyttöliittymä, joka mahdollistaa vuorovaikutuksen askelmoottorin kanssa kahdella eri tavalla. Ensimmäinen käyttöliittymä ohjaa askelmoottorin suuntaa ja nopeutta yksinkertainen käyttöliittymä, joka
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): 11 vaihetta (kuvien kanssa)
Kuvien tekeminen saumattomiksi vain vaaka- tai pystysuunnassa ("The GIMP"): Jos yrität "Tee saumaton" -laajennusta GIMP: ssä, se tekee kuvasta saumattoman sekä vaaka- että pystysuunnassa samanaikaisesti. Se ei salli sinun tehdä siitä saumatonta vain yhdessä ulottuvuudessa. Tämä ohje auttaa sinua saamaan kuvan