Obsah:

Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore: 6 krokov (s obrázkami)
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore: 6 krokov (s obrázkami)

Video: Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore: 6 krokov (s obrázkami)

Video: Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore: 6 krokov (s obrázkami)
Video: Девочка — шашлычок ► 1 Прохождение Silent Hill Origins (PS2) 2024, Júl
Anonim
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore
Prehrávajte piesne (MP3) s Arduino pomocou PWM na reproduktore alebo Flyback transformátore

Ahojte chlapi, Toto je môj prvý návod, dúfam, že sa vám bude páčiť !!

V zásade som v tomto projekte použil sériovú komunikáciu medzi mojím Arduinom a mojím prenosným počítačom na prenos hudobných údajov z môjho prenosného počítača do Arduina. A pomocou Arduino TIMERS na prehrávanie údajov ako signálu PWM.

Chcel som to spomenúť, tento projekt nie je pre začiatočníkov !!!.

V skutočnosti bol tento projekt jedným z najdlhších projektov, pretože musíme urobiť veľa vecí, aby fungoval.

POZOR

Urobil som druhú časť tohto návodu, ktorá je oveľa jednoduchšia a vyžaduje minimálne problémy s prácou

Odkaz na druhú časť (najľahšiu).

Krok 1: Veci, ktoré potrebujeme pre tento projekt (požiadavky)

1. Doska Arduino (môžeme použiť akúkoľvek dosku (328, 2560), tj Mega, Uno, Mini atď., Ale s konkrétnymi rôznymi pinmi)

2. PC alebo prenosný počítač s Linuxom (použil som Fedoru 29) alebo Live USB s Linuxom

3. Breadboard alebo Perfboard

4. Pripojovacie vodiče

5. TC4420 (Ovládač Mosfet alebo niečo podobné)

6. Napájajte Mosfet (kanál N alebo P, zapojte ho potom zodpovedajúcim spôsobom) (použil som N-kanál)

7. Reproduktor alebo Flyback transformátor (Áno, čítate dobre !!)

8. Vhodný napájací zdroj (0-12 V) (použil som vlastný napájací zdroj ATX)

9. Chladič (zachránil som zo starého počítača)

10. PC s Windows a mechanikou pera.

Ak chcete poznať podrobné fungovanie každého komponentu a tohto projektu, prečítajte si ďalší krok.

Urobil som druhú časť tohto návodu, ktorá je oveľa jednoduchšia a vyžaduje minimálne problémy s prácou. Odkaz na druhú časť (najľahšiu).

Krok 2: Pochopenie pracovného princípu

Ahhh !! najdlhšia časť inštrukcie, čítanie a písanie tejto časti, sú nudné.

V prvom rade musíme získať prehľad o tom, ako táto vec vlastne funguje.

čo tu robíme, je to, že najskôr pomocou softvéru, ktorý je v odkaze, prevádzame našu skladbu MP3 do súboru WAV a tento súbor do hlavičkového súboru C. Tento kód C v skutočnosti obsahuje 8-bitové (prečo 8-bitové? Čítajte ďalej) ukážky údajov, ktoré musíme hrať pomocou nášho Arduina s pevnou rýchlosťou alebo rýchlosťou, ktorá je špecifikovaná podľa našej vzorkovacej frekvencie.

Teória zvukového signálu.

Pre tých, ktorí nevedia, aká je vzorkovacia rýchlosť alebo bitová rýchlosť:-

Vzorkovacia frekvencia je definovaná ako počet vzoriek, ktoré hráme za sekundu (zvyčajne sa meria v Hz alebo KHz).

Ak sa chcete dozvedieť viac v detaile:-Kliknite sem

Štandardné vzorkovacie frekvencie sú 44 100 Hz (najlepšia kvalita), 32 000 Hz, 2 25050 Hz atď

čo znamená, že sa za sekundu použije 44100 vzoriek na generovanie vlny.

tj. každý Sample sa musí hrať v pevnom intervale 1/44100 = 22,67 uS.

Potom príde bitová hĺbka zvukového signálu, ktorá je zvyčajne mierou toho, ako presne je zvuk reprezentovaný v digitálnom zvuku. Čím vyššia je bitová hĺbka, tým presnejší je digitálny zvuk.

Ale s Arduino alebo iným mikro-radičom s hodinami 16 MHz nám umožňuje používať nás až do 8-bitov. Vysvetlím prečo.

V údajovom hárku 328p je na strane č. 102 vzorec:- technický list

Nebudem rozpisovať, prečo používam tento vzorec.

frekvencia signálu = hodinový signál / N x (1+TOP)

Hodinový signál = 16 MHz (doska Arduino)

N = prescaler (1 je hodnota pre náš projekt)

TOP = hodnota 0 až 2^16 (pre 16-bitové počítadlo časovača) (255 = 2^8 (8-bit) pre náš projekt)

získame hodnotu frekvencie signálu = 62,5 kHz

To znamená, že frekvencia nosnej vlny závisí od bitovej hĺbky.

Predpokladajme, že ak použijeme TOP hodnotu = 2^16 = 65536 (t.j. bitová hĺbka 16-bitová)

potom dostaneme hodnotu frekvencie signálu = 244 Hz (ktorú nemôžeme použiť)

OKK … Takže toľko teórie o fungovaní zvukových signálov stačí, takže späť k projektu.

Kód C vygenerovaný pre skladbu je možné skopírovať do Arduina a je možné ho prehrávať, ale obmedzujeme až 3-sekundové prehrávanie zvuku so vzorkovacou frekvenciou 8 000 Hz. Pretože tento kód C je textový súbor, a preto nie je komprimovaný, skôr je dekomprimovaný. A zaberá to príliš veľa miesta. (napr. súbor kódu C so zvukom 43 s so vzorkami 44, 1 KHz zaberá miesto až 23 MB). A naše Arduino Mega nám dáva priestor asi 256 kB.

Ako teda budeme hrať piesne pomocou Arduina. Nie je to možné. Tento návod je falošný. Nebojte sa čitatelia, Preto musíme na odosielanie zvukových údajov do Arduina používať nejaký druh komunikácie medzi Arduinom pri príliš vysokých rýchlostiach (až 1 Mb/s).

Ale koľko rýchlosti presne potrebujeme, aby sme to urobili ??

Odpoveď je 44 000 bajtov za sekundu, čo znamená rýchlosti viac ako 44 000*8 = 325 000 bitov/s.

Na odoslanie týchto údajov do nášho Arduina potrebujeme ďalšie periférne zariadenie s veľkým úložiskom. A to bude náš počítač s Linuxom (prečo počítač s Linuxom ??? prečítajte si prosím ďalšie informácie o ňom.)

Ahaa … To znamená, že môžeme používať sériovú komunikáciu … Ale počkajte … sériová verzia je možná len pri rýchlostiach až 1 200 200 bitov/s, čo znamená (325 000/115200 = 3), že je trikrát pomalšia, ako sa vyžaduje.

Nie, priatelia, nie je. Použijeme rýchlosť alebo prenosovú rýchlosť 500 000 bitov/s s káblom max. Do 20-30 cm, čo je 1,5-krát rýchlejšie, ako je požadované.

Prečo Linux, nie Windows ???

Potrebujeme teda odoslať vzorky v intervale (tiež špecifikovanom vyššie) 1/44100 = 22,67 uS s naším počítačom.

Ako to teda môžeme naprogramovať tak, aby to robilo ??

Môžeme použiť C ++ na odoslanie dátového bajtu cez Serial v intervale pomocou nejakej funkcie spánku

ako nanospánok, Chrono atď., atď …

pre (int x = 0; x

sendData (x);

nanospánok (22 000); // 22uS

}

ALE NIE, NEFUNGUJE TO VO SYSTÉME WINDOWS, to tiež nefungovalo v systéme Linux (ale našiel som iný spôsob, ktorý môžete vidieť v priloženom kóde.)

Pretože takú granularitu nemôžeme dosiahnuť pomocou okien. Na dosiahnutie takejto granularity potrebujete Linux.

Problémy, ktoré som našiel aj v systéme Linux …

takú zrnitosť môžeme dosiahnuť pomocou Linuxu, ale nenašiel som žiadnu takú funkciu, ktorá by uspala môj program pre 22uS.

Nefungujú ani funkcie ako nanospánok, Chrono nanospánok atď., Atď., Pretože poskytujú spánok iba viac ako 100 us. Ale potreboval som presne, presne 22 uS. Na Googli som preskúmal každú jednu stránku a experimentoval so všetkými možnými funkciami, ktoré sú k dispozícii v C/C ++, ale nič mi nefungovalo. Potom som prišiel s vlastnou funkciou, ktorá mi fungovala ako skutočné kúzlo.

A môj kód teraz poskytuje presný a presný spánok 1uS alebo viac !!!!

Takže sme pokryli náročnú časť a zvyšok je ľahký …

Chceme generovať signál PWM pomocou Arduina so špecifickou frekvenciou aj frekvenciou nosnej vlny. (62,5 kHz (ako je vypočítané vyššie) pre dobrú imunitu signálu).

Na vytvorenie PWM teda musíme použiť takzvané ČASOVAČE Arduina. Mimochodom, nebudem sa tomu veľmi venovať, pretože nájdete mnoho návodov na tému ČASOVAČE, ale ak niektoré nenájdete, potom komentujte nižšie, urobím jeden.

Na záchranu našich pinov Arduino som použil ovládač TC4420 Mosfet, pretože na napájanie MOSFETu niekedy nedokážu dodať toľko prúdu.

To bola teda takmer teória tohto projektu, teraz môžeme vidieť schému zapojenia.

POZOR POZOR POZOR

V skutočnosti bol tento projekt zámerne sťažený (poviem prečo), existuje ďalšia metóda, ktorá v mojej ďalšej inštrukcii nevyžaduje noPC, iba Arduino a reproduktor. Odkaz je tu.

*Hlavným účelom tohto projektu je použiť sériovú komunikáciu a poznať jej silu a naučiť sa, ako môžeme naprogramovať počítač tak, aby vykonával úlohy presne v takých jemných intervaloch.*

Krok 3: Schéma

Schematický
Schematický

Pripojte všetky komponenty podľa schémy. Máte teda dve možnosti:-

1. Pripojte reproduktor (prepojený s 5V)

2. Pripojte transformátor Flyback (spojený s napätím 12 V)

Skúšal som oboje. A obe fungujú celkom dobre.

Zrieknutie sa zodpovednosti:-

*Odporúčam používať transformátor Flyback s opatrnosťou, pretože to môže byť nebezpečné, pretože vytvára vysoké napätie. A nezodpovedám za žiadne škody.*

Krok 4: Preveste súbor MP3 na WAV pomocou Audacity

Konvertujte MP3 na WAV súbor pomocou Audacity
Konvertujte MP3 na WAV súbor pomocou Audacity
Konvertujte MP3 na WAV súbor pomocou Audacity
Konvertujte MP3 na WAV súbor pomocou Audacity
Konvertujte MP3 na WAV súbor pomocou Audacity
Konvertujte MP3 na WAV súbor pomocou Audacity

V prvom rade si teda stiahnite softvér

1. Audacity, vyhľadávanie a sťahovanie z Google

2. Ak chcete previesť súbor WAV na kód C, stiahnite si okennú aplikáciu s názvom WAVToCode

Z tohto odkazu sa môžete naučiť používať softvér WAVToCode a stiahnuť si ho z tohto odkazu.

Poskytnem tiež podrobné kroky na používanie oboch softvérov.

Pozrite si fotografie spojené s týmto návodom.

V tomto kroku prevedieme MP3 do formátu Wav. (Postupujte podľa fotografií, projektová frekvencia musí byť 44 100 Hz)

V ďalšom kroku konvertujeme súbor wav na kód C.

Krok 5: WAV na C-kód

WAV na C-kód
WAV na C-kód
WAV na C-kód
WAV na C-kód
WAV na C-kód
WAV na C-kód

Postupujte podľa fotografií.

Pozrite sa na posledné dva obrázky, zmeny musia byť presne rovnaké. Veľké písmená by mali byť veľké a malé písmená by mali byť malé. Alebo počas kompilácie dôjde k chybe syntaxe.

(Môžete vidieť, že 1 minúta a 41 s zabrala 23 MB priestoru.)

Zmeňte názov a dĺžku skladby s názvom a dĺžkou skladby.

A uložte súbor C kódu.

Urobte to so všetkými skladbami, ktoré chcete hrať s Arduinom

Krok 6: Vytvorte konečný súbor a spustite Linux

Vytvorte konečný súbor a spustite Linux
Vytvorte konečný súbor a spustite Linux
Vytvorte konečný súbor a spustite Linux
Vytvorte konečný súbor a spustite Linux
Vytvorte konečný súbor a spustite Linux
Vytvorte konečný súbor a spustite Linux

Pridajte všetky svoje prevedené skladby do súboru uvedeného v tomto odkaze.

A riaďte sa obrázkami.

Nahrajte kód do Arduina, ktorý som pripojil.

Pamätajte si názvy súborov C Code (napr. Životný štýl, dolár, oblečenie), pretože do nášho kódu musíme uvádzať presne tie isté názvy s rozlišovaním malých a veľkých písmen.

Nakoniec spustite Fedora Live USB alebo iný a nainštalujte kompilátor gcc a potom podľa pokynov na kompiláciu z priečinka program skompilujte a spustite.

Nakoniec si budete môcť vypočuť piesne z reproduktorov alebo Flyback.

Ďakujeme, že ste si prečítali tento návod, a ak sa vám páči, komentujte.

POZOR Urobil som druhú časť tohto návodu, ktorá je oveľa jednoduchšia a vyžaduje minimálne problémy s prácou. Odkaz na druhú časť (najľahšiu)

Odporúča: