Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformatorā: 6 soļi (ar attēliem)
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformatorā: 6 soļi (ar attēliem)
Anonim
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer
Atskaņojiet dziesmas (MP3), izmantojot Arduino, izmantojot PWM skaļrunī vai Flyback Transformer

Sveiki puiši, Šī ir mana pirmā pamācība, es ceru, ka jums patiks !!

Būtībā šajā projektā esmu izmantojis sērijveida saziņu starp savu Arduino un klēpjdatoru, lai pārsūtītu mūzikas datus no klēpjdatora uz Arduino. Un izmantojot Arduino TIMERS, lai atskaņotu datus kā PWM signālu.

Es gribēju to pieminēt, šis projekts nav paredzēts iesācējiem !!!.

Patiesībā šis projekts bija viens no garākajiem projektiem, jo mums ir jādara daudzas lietas, lai tas darbotos.

UZMANĪBU

Esmu padarījis šīs instrukcijas otro daļu pamācāmu, kas ir daudz vienkāršāk un prasa minimālas problēmas

Saite uz otro daļu (vieglākā).

1. darbība: lietas, kas mums nepieciešamas šim projektam (prasības)

1. Arduino dēlis (mēs varam izmantot jebkuru dēli (328, 2560), ti, Mega, Uno, Mini utt., Bet ar īpašām dažādām tapām)

2. PC vai klēpjdators ar Linux (esmu izmantojis Fedora 29) vai Live USB ar Linux

3. Maizes dēlis vai perfboard

4. Vadu savienošana

5. TC4420 (Mosfet draiveris vai tamlīdzīgi)

6. Barošanas Mosfet (N vai P kanāls, lūdzu, vadu pēc tam) (esmu izmantojis N-kanālu)

7. Skaļrunis vai Flyback transformators (Jā, jūs to izlasījāt pareizi!)

8. Piemērots barošanas avots (0-12V) (esmu izmantojis savu ATX barošanas avotu)

9. siltuma izlietne (esmu izglābis no sava vecā datora)

10. Dators ar Windows un pildspalva.

Lai uzzinātu detalizētu katra komponenta un šī projekta darbību, lūdzu, izlasiet nākamo soli.

Esmu padarījis šīs instrukcijas otro daļu pamācāmu, kas ir daudz vieglāk un prasa minimālas problēmas. Saite uz otro daļu (vieglākā).

2. darbība. Izpratne par darba principu

Ahhh !! Garākā daļa no pamācības, lasot un rakstot šo sadaļu, ir gan garlaicīgi.

Pirmkārt, mums ir jāsaņem pārskats par to, kā šī lieta faktiski darbojas.

mēs šeit darām to, ka, pirmkārt, mēs pārveidojam savu MP3 dziesmu WAV failā un šo failu C galvenes failā, izmantojot saitē esošo programmatūru. Šis C kods faktiski satur 8 bitu (kāpēc 8 bitu ?? lasiet tālāk) datu paraugus, kas mums jāspēlē, izmantojot mūsu Arduino ar fiksētu ātrumu vai ātrumu, kas norādīts saskaņā ar mūsu paraugu ņemšanas ātrumu.

Audio signāla teorija.

Tiem, kas nezina, kas ir izlases ātrums vai bitu pārraides ātrums:-

Izlases ātrums tiek definēts kā paraugu skaits, mēs spēlējam sekundē (parasti mēra Hz vai KHz).

Lai uzzinātu vairāk detalizēti: -Noklikšķiniet šeit

Standarta paraugu ņemšanas ātrumi ir 44100 Hz (labākā kvalitāte), 32000 Hz, 22050 Hz utt

tas nozīmē, ka sekundē tiek izmantoti 44100 paraugi, lai attiecīgi radītu vilni.

ti, katrs paraugs ir jāspēlē ar noteiktu intervālu 1/44100 = 22,67 uS.

Tad nāk audio signāla bitu dziļums, kas parasti ir mērs tam, cik precīzi skaņa tiek attēlota digitālajā audio. Jo lielāks bitu dziļums, jo precīzāka digitālā skaņa.

Bet ar Arduino vai jebkuru citu mikrokontrolleri ar 16Mhz pulksteni ļauj mums izmantot tikai līdz 8 bitiem. Es paskaidrošu, kāpēc.

328p datu lapas 102. lappusē ir formula:- Datu lapa

Es neiedziļināšos sīkumos, kāpēc es izmantoju šo formulu.

signāla biežums = pulksteņa signāls / N x (1+TOP)

Pulksteņa signāls = 16Mhz (Arduino tāfele)

N = prescaler (1 ir mūsu projekta vērtība)

TOP = vērtība no 0 līdz 2^16 (16 bitu taimera skaitītājam) (255 = 2^8 (8 bitu) mūsu projektam)

mēs iegūstam signāla frekvences vērtību = 62,5 kHz

Tas nozīmē, ka nesēja viļņu frekvence ir atkarīga no bitu dziļuma.

Pieņemsim, ja mēs izmantojam TOP vērtību = 2^16 = 65536 (ti, bitu dziļums 16 bitu)

tad mēs iegūstam signāla frekvences vērtību = 244 Hz (ko mēs nevaram izmantot)

Labi… Tātad pietiek ar šo teoriju par to, kā darbojas audio signāli, tāpēc atgriežamies pie projekta.

Dziesmai ģenerēto C kodu var kopēt Arduino un atskaņot, taču audio atskaņošana ir ierobežota līdz 3 sekundēm ar paraugu ņemšanas frekvenci 8000 Hz. Tā kā šis C kods ir teksta fails un līdz ar to nav saspiests, bet drīzāk izspiests. Un tas aizņem pārāk daudz vietas. (piemēram, C koda fails ar 43 sekunžu audio ar 44, 1 KHz paraugiem aizņem vietu līdz 23 MB). Un mūsu Arduino Mega dod mums vietu aptuveni 256 Kb.

Tātad, kā mēs atskaņosim dziesmas, izmantojot Arduino. Tas nav iespējams. Šī pamācība ir viltota. Neuztraucieties lasītāji, Tāpēc mums ir jāizmanto sava veida saziņa starp Arduino tik lielā ātrumā (līdz 1 Mb/s), lai nosūtītu audio datus uz Arduino.

Bet cik liels ātrums mums ir vajadzīgs, lai to izdarītu ??

Atbilde ir 44000 baiti sekundē, kas nozīmē ātrumu vairāk nekā 44000*8 = 325 000 bitu/s.

Mums ir nepieciešama cita perifērija ar lielu krātuvi, lai šos datus nosūtītu mūsu Arduino. Un tas būs mūsu dators ar Linux (kāpēc dators ar Linux ??? lūdzu, izlasiet tālāk, lai uzzinātu vairāk par to.)

Ahaa… Tas nozīmē, ka mēs varam izmantot seriālo komunikāciju… Bet pagaidiet… sērijveida ir iespējams tikai ar ātrumu līdz 115200 bitiem/s, kas nozīmē (325000/115200 = 3), ka tas ir trīs reizes lēnāks nekā nepieciešams.

Nē, mani draugi, tā nav. Mēs izmantosim ātrumu vai bodu ātrumu 500 000 bitu/s ar kabeli līdz 20-30 cm maks., Kas ir 1,5 reizes ātrāk nekā nepieciešams.

Kāpēc Linux, nevis Windows ???

Tātad, mums ir jānosūta paraugi ar intervālu (arī norādīts iepriekš) 1/44100 = 22,67 uS ar datoru.

Tātad, kā mēs varam to ieprogrammēt?

Mēs varam izmantot C ++, lai ar intervālu nosūtītu datu baitu, izmantojot Serial, izmantojot kādu miega funkciju

piemēram, nanosleep, Chrono utt., utt.

par (int x = 0; x

sendData (x);

nanosleep (22000); // 22uS

}

BET NEKAS NEDARBOJA LOGOS arī šādā veidā nedarbojās operētājsistēmā Linux (bet es atradu citu veidu, ko varat redzēt manā pievienotajā kodā.)

Tā kā mēs nevaram panākt šādu precizitāti, izmantojot logus. Lai sasniegtu šādu precizitāti, jums ir nepieciešams Linux.

Problēmas, kuras atradu pat ar Linux …

mēs varam panākt šādu detalizāciju, izmantojot Linux, bet es neatradu šādu funkciju, lai ieslēgtu savu programmu 22uS.

Funkcijas, piemēram, nanosleep, Chrono nanosleep utt., Utt., Arī nedarbojas, jo nodrošina miegu tikai vairāk nekā 100 US. Bet man vajadzēja tieši, precīzi 22 ASV. Esmu izpētījis katru Google lapu un eksperimentējis ar visām iespējamām funkcijām, kas ir pieejamas C/C ++, bet nekas man nedarbojās. Tad es izdomāju savu funkciju, kas man noderēja kā īsts šarms.

Un mans kods tagad nodrošina precīzu, precīzu miegu 1uS vai vairāk !!!

Tātad mēs esam pārvarējuši sarežģīto daļu, un pārējais ir viegli…

Un mēs vēlamies ģenerēt PWM signālu, izmantojot Arduino ar noteiktu frekvenci, kā arī nesēja viļņu frekvenci. (62,5 KHz (kā aprēķināts iepriekš), lai nodrošinātu labu signāla imunitāti).

Tātad, lai izveidotu PWM, mums jāizmanto tā saucamie Arduino taimeri. Starp citu, es par to sīkāk neiedziļināšos, jo jūs atradīsiet daudz pamācību par TIMERU tēmu, bet, ja neatradīsiet dažas, tad komentējiet zemāk, es uztaisīšu vienu.

Es esmu izmantojis TC4420 Mosfet draiveri, lai glābtu mūsu Arduino tapas, jo tie nevar piegādāt tik daudz strāvas, lai dažreiz vadītu MOSFET.

Tātad, tā bija gandrīz šī projekta teorija, tagad mēs varam redzēt shēmas shēmu.

UZMANĪBU UZMANĪBU UZMANĪBU

Patiesībā šis projekts tika apzināti padarīts daudz grūtāks (es pateikšu, kāpēc), ir vēl viena metode, kas prasa noPC tikai Arduino un skaļruni manā nākamajā instrukcijā. Saite ir šeit.

*Šī projekta galvenais mērķis ir izmantot seriālo komunikāciju un zināt tā spēku, kā arī iemācīties, kā mēs varam ieprogrammēt savu datoru, lai tas veiktu uzdevumus precīzi tik īsos intervālos.*

3. darbība. Shēma

Shematisks
Shematisks

Pievienojiet visus komponentus, kā parādīts shēmā. Tātad jums ir divas iespējas:-

1. Pievienojiet skaļruni (savienots ar 5V)

2. Pievienojiet Flyback transformatoru (savienots ar 12V)

Esmu izmēģinājis abus. Un abi strādā diezgan labi.

Atruna:-

*Es iesaku izmantot Flyback transformatoru ar piesardzību, jo tas var būt bīstami, jo tas rada augstu spriegumu. Un es neesmu atbildīgs par jebkādiem zaudējumiem.*

4. darbība: konvertējiet MP3 uz WAV failu, izmantojot Audacity

Konvertējiet MP3 uz WAV failu, izmantojot Audacity
Konvertējiet MP3 uz WAV failu, izmantojot Audacity
Konvertējiet MP3 uz WAV failu, izmantojot Audacity
Konvertējiet MP3 uz WAV failu, izmantojot Audacity
Konvertējiet MP3 uz WAV failu, izmantojot Audacity
Konvertējiet MP3 uz WAV failu, izmantojot Audacity

Tātad, vispirms lejupielādējiet programmatūru

1. Audacity, meklējiet un lejupielādējiet no Google

2. Lai konvertētu WAV failu uz C-kodu, lejupielādējiet loga lietojumprogrammu ar nosaukumu WAVToCode

Jūs varat uzzināt, kā lietot WAVToCode programmatūru, no šīs saites un lejupielādēt to no šīs saites.

Es arī sniegšu detalizētus norādījumus par abas programmatūras izmantošanu.

Lūdzu, skatiet ar šo pamācību saistītos fotoattēlus.

Šajā solī mēs konvertēsim MP3 uz Wav. (Sekojiet fotoattēliem, projekta frekvencei jābūt 44100 Hz)

Nākamajā solī mēs konvertēsim wav failu uz C kodu.

5. solis: WAV uz C-kodu

WAV uz C-kodu
WAV uz C-kodu
WAV uz C-kodu
WAV uz C-kodu
WAV uz C-kodu
WAV uz C-kodu

Sekojiet fotogrāfijām.

Skatiet pēdējos divus attēlus, izmaiņām jābūt precīzi vienādām, lielajiem burtiem jābūt lielajiem, bet mazajiem - vai kompilēšanas laikā tiks parādīta sintakses kļūda.

(Jūs varat redzēt, ka 1 minūtes 41 sekundes dziesma aizņēma 23 MB vietas.)

Mainiet dziesmas nosaukumu un garumu attiecīgi ar dziesmas nosaukumu un ilgumu.

Un saglabājiet C koda failu.

Dariet to visām dziesmām, kuras vēlaties atskaņot ar Arduino

6. darbība: izveidojiet galīgo failu un aktivizējiet savu Linux

Izveidojiet galīgo failu un aktivizējiet savu Linux
Izveidojiet galīgo failu un aktivizējiet savu Linux
Izveidojiet galīgo failu un aktivizējiet savu Linux
Izveidojiet galīgo failu un aktivizējiet savu Linux
Izveidojiet galīgo failu un aktivizējiet savu Linux
Izveidojiet galīgo failu un aktivizējiet savu Linux

Pievienojiet visas konvertētās dziesmas failā, kas norādīts šajā saitē.

Un sekojiet attēliem.

Augšupielādējiet kodu Arduino, ko esmu pievienojis.

Atcerieties C koda failu nosaukumus. (Piemēram, dzīvesveids, dolārs, valkāšana), jo mums kodā ir jānorāda tieši tādi paši vārdi, reģistrjutīgi.

Beigās aktivizējiet savu Fedora Live USB vai citu un instalējiet gcc kompilatoru un pēc tam, izmantojot apkopošanas norādījumus no mapes, apkopojiet programmu un palaidiet to.

Galu galā jūs varēsit klausīties Speaker vai Flyback dziesmas.

Paldies, ka izlasījāt šo pamācību, un, ja jums patīk, lūdzu, komentējiet.

UZMANĪBU esmu padarījis šīs pamācības otro daļu pamācāmu, kas ir daudz vienkāršāk un prasa minimālas problēmas. Saite uz otro daļu (vieglākā)

Ieteicams: