Obsah:

Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru: 6 kroků (s obrázky)
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru: 6 kroků (s obrázky)

Video: Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru: 6 kroků (s obrázky)

Video: Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru: 6 kroků (s obrázky)
Video: Jak vydělat 90,00 $ denně s nulovými penězi na začátku (Vydělávejte peníze online 2020)... 2024, Červenec
Anonim
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru
Přehrávejte skladby (MP3) pomocí Arduina pomocí PWM na reproduktoru nebo Flyback transformátoru

Nazdar hoši, Toto je můj první návod, doufám, že se vám bude líbit !!

V zásadě jsem v tomto projektu použil sériovou komunikaci mezi mým Arduinem a mým notebookem k přenosu hudebních dat z mého notebooku do Arduina. A pomocí časovačů Arduino TIMERS přehrávat data jako signál PWM.

Chtěl jsem to zmínit, tento projekt není pro začátečníky !!!.

Ve skutečnosti byl tento projekt jedním z nejdelších projektů, protože musíme udělat mnoho věcí, aby fungoval.

POZORNOST

Udělal jsem druhou část tohoto návodu, která je mnohem jednodušší a vyžaduje minimální potíže s prací

Odkaz na druhou část (nejjednodušší).

Krok 1: Věci, které pro tento projekt potřebujeme (požadavky)

1. Deska Arduino (můžeme použít libovolnou desku (328, 2560), tj. Mega, Uno, Mini atd., Ale s konkrétními různými piny)

2. PC nebo notebook s Linuxem (použil jsem Fedoru 29) Nebo Live USB s Linuxem

3. Breadboard nebo Perfboard

4. Připojení vodičů

5. TC4420 (ovladač Mosfet nebo něco takového)

6. Napájení Mosfet (kanál N nebo P, zapojte prosím potom odpovídajícím způsobem) (použil jsem N-kanál)

7. Reproduktor nebo Flyback transformátor (Ano, čtete správně !!)

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

9. Chladič (zachránil jsem ze starého PC)

10. PC s Windows a perem.

Chcete -li znát podrobné fungování každé komponenty a tohoto projektu, přečtěte si prosím další krok.

Udělal jsem druhou část tohoto instruktážního programu, která je mnohem jednodušší a vyžaduje minimální potíže s prací. Odkaz na druhou část (nejjednodušší).

Krok 2: Pochopení pracovního principu

Ahhh !! nejdelší část instruktážního čtení a psaní této části je nudná.

Nejprve musíme získat přehled, jak tato věc ve skutečnosti funguje.

Co zde děláme, je to, že nejprve převádíme naši skladbu MP3 do souboru WAV a tento soubor do hlavičkového souboru C pomocí softwaru, který je v odkazu. Tento kód C ve skutečnosti obsahuje 8bitové (proč 8bitové? Čtěte dále) datové vzorky, které potřebujeme hrát pomocí našeho Arduina s pevnou rychlostí nebo rychlostí, která je specifikována podle naší vzorkovací frekvence.

Teorie zvukového signálu.

Pro ty, kteří nevědí, jaká je vzorkovací nebo bitová rychlost:-

Vzorkovací frekvence je definována jako počet samplů, které hrajeme za sekundu (obvykle se měří v Hz nebo KHz).

Chcete-li vědět více v detailu: -Klikněte sem

Standardní vzorkovací frekvence jsou 44 100 Hz (nejlepší kvalita), 32 000 Hz, 2 25050 Hz atd

což znamená, že 44100 vzorků je použito za sekundu k odpovídajícímu generování vlny.

tj. Každý Sample je nutné hrát v pevném intervalu 1/44100 = 22,67 uS.

Poté přichází bitová hloubka zvukového signálu, která je obvykle měřítkem toho, jak přesně je zvuk v digitálním zvuku zastoupen. Čím vyšší je bitová hloubka, tím přesnější je digitální zvuk.

Ale s Arduinem nebo jakýmkoli jiným mikrořadičem s hodinami 16 MHz nám umožňuje používat nás až do 8 bitů. Vysvětlím proč.

Na listu č. 102 v datovém listu 328p je vzorec:- Datový list

Nebudu zacházet do podrobností, proč tento vzorec používám.

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

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

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

TOP = hodnota 0 až 2^16 (pro 16bitový čítač časovače) (255 = 2^8 (8bitový) pro náš projekt)

dostaneme hodnotu frekvence Signálu = 62,5 kHz

To znamená, že nosná vlnová frekvence je závislá na bitové hloubce.

Předpokládejme, že pokud použijeme hodnotu TOP = 2^16 = 65536 (tj. Bitová hloubka 16 bitů)

pak dostaneme hodnotu frekvence signálu = 244 Hz (kterou nemůžeme použít)

OKK … Takže tolik teorie o tom, jak fungují zvukové signály, stačí, takže zpět k projektu.

Kód C vygenerovaný pro skladbu lze zkopírovat do Arduina a lze jej přehrát, ale omezujeme až 3sekundové přehrávání zvuku se vzorkovací frekvencí 8 000 Hz. Protože tento kód C je textový soubor, a proto není komprimován, je spíše dekomprimován. A zabírá příliš mnoho místa. (např. soubor kódu C se zvukem 43 s se vzorky 44, 1 KHz zabírá místo až 23 MB). A naše Arduino Mega nám dává prostor asi 256 kB.

Jak tedy budeme hrát písně pomocí Arduina. Není to možné. Tento Instructable je falešný. Nebojte se čtenáři, Proto potřebujeme k odesílání audio dat do Arduina použít nějaký druh komunikace mezi Arduinem při vysokých rychlostech (až 1 Mb/s).

Ale kolik rychlosti přesně potřebujeme, abychom to udělali?

Odpověď je 44 000 bajtů za sekundu, což znamená rychlosti vyšší než 44 000*8 = 325 000 bitů/s.

K odeslání těchto dat do našeho Arduina potřebujeme další periferní zařízení s velkým úložištěm. A to bude náš počítač s Linuxem (proč PC s Linuxem ??? přečtěte si prosím další informace o něm.)

Ahaa … To znamená, že můžeme používat sériovou komunikaci … Ale počkejte … seriál je možný jen při rychlostech až 115200 bitů/s, což znamená (325000/115200 = 3), což znamená, že je třikrát pomalejší, než je požadováno.

Ne, přátelé, není. Použijeme rychlost nebo přenosovou rychlost 500 000 bitů/s s kabelem max. Do 20-30 cm, což je 1,5krát rychlejší, než je požadováno.

Proč Linux, ne Windows ???

Potřebujeme tedy odeslat vzorky v intervalu (také specifikovaném výše) 1/44100 = 22,67 uS pomocí našeho počítače.

Jak to tedy můžeme naprogramovat?

Můžeme použít C ++ k odeslání datového bajtu přes Serial v intervalu pomocí nějaké funkce spánku

jako nanospánek, Chrono atd. atd …

pro (int x = 0; x

sendData (x);

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

}

ALE ŽÁDNÝ TO NEFUNGUJE NA WINDOWS také nefungoval tímto způsobem na Linuxu (ale našel jsem jiný způsob, který můžete vidět v mém připojeném kódu.)

Protože takovéto zrnitosti nemůžeme dosáhnout pomocí oken. K dosažení takové granularity potřebujete Linux.

Problémy, které jsem našel i v Linuxu…

můžeme dosáhnout takové zrnitosti pomocí Linuxu, ale nenašel jsem žádnou takovou funkci, která by spala můj program pro 22uS.

Funkce jako nanospánek, Chrono nanospánek atd. Atd. Také nefungují, protože poskytují spánek více než 100 uS. Ale potřeboval jsem přesně, přesně 22 uS. Zkoumal jsem každou stránku na Googlu a experimentoval se všemi možnými funkcemi, které jsou k dispozici v C/C ++, ale nic mi nefungovalo. Pak jsem přišel s vlastní funkcí, která pro mě fungovala jako opravdové kouzlo.

A můj kód nyní poskytuje přesný, přesný spánek 1uS nebo vyšší !!!

Takže jsme pokryli obtížnou část a zbytek je snadný …

A chceme generovat PWM signál pomocí Arduina se specifickou frekvencí také nosnou vlnovou frekvencí. (62,5KHz (jak je vypočítáno výše) pro dobrou imunitu signálu).

K vytvoření PWM tedy musíme použít takzvané ČASOVAČE Arduina. Mimochodem, nebudu se o tom příliš rozepisovat, protože najdete mnoho návodů na téma ČASOVAČE, ale pokud nějaké nenajdete, pak komentujte níže, jeden vyrobím.

Použil jsem ovladač TC4420 Mosfet, abych zachránil naše piny Arduino, protože nemohou někdy dodávat tolik proudu, aby někdy řídili MOSFET.

To byla tedy téměř teorie tohoto projektu, nyní můžeme vidět schéma zapojení.

POZOR POZOR POZOR

Ve skutečnosti byl tento projekt záměrně hodně obtížný (řeknu proč), existuje další metoda, která vyžaduje noPC pouze Arduino a reproduktor v mém nextinstructable. Link je zde.

*Hlavním účelem tohoto projektu je použít sériovou komunikaci a vědět, jaká je její síla, a naučit se, jak můžeme naprogramovat počítač tak, aby prováděl úkoly přesně v tak jemných intervalech.*

Krok 3: Schéma

Schéma
Schéma

Připojte všechny součásti podle schématu. Máte tedy dvě možnosti:-

1. Připojte reproduktor (připojený k 5V)

2. Připojte Flyback transformátor (připojený k 12V)

Zkoušel jsem obojí. A obojí funguje docela dobře.

Prohlášení:-

*Doporučuji používat Flyback Transformer s opatrností, protože to může být nebezpečné, protože vytváří vysoké napětí. A nebudu odpovídat za žádné škody.*

Krok 4: Převeďte soubor MP3 na WAV pomocí Audacity

Převeďte soubor MP3 na WAV pomocí Audacity
Převeďte soubor MP3 na WAV pomocí Audacity
Převeďte MP3 na WAV soubor pomocí Audacity
Převeďte MP3 na WAV soubor pomocí Audacity
Převeďte MP3 na WAV soubor pomocí Audacity
Převeďte MP3 na WAV soubor pomocí Audacity

Nejprve si tedy stáhněte software

1. Audacity, vyhledávání a stahování z Google

2. Chcete-li převést soubor WAV na kód C, stáhněte si okenní aplikaci s názvem WAVToCode

Na tomto odkazu se můžete naučit používat software WAVToCode a stáhnout jej z tohoto odkazu.

Také uvedu podrobné kroky, jak používat oba software.

Podívejte se na fotografie spojené s tímto návodem.

V tomto kroku převedeme MP3 na Wav. (Postupujte podle fotografií, rychlost projektu musí být 44 100 Hz)

V dalším kroku převedeme soubor wav na kód C.

Krok 5: WAV do C-kódu

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 podle fotografií.

Podívejte se na poslední dva obrázky, změny musí být přesně stejné, velká písmena by měla být velká a malá písmena by měla být menší, Nebo se vám při kompilaci zobrazí chyba syntaxe.

(Vidíte, že 1 minuta a 41 s skladba zabrala 23 MB prostoru.)

Změňte název a délku skladby podle názvu a délky skladby.

A uložte soubor C Code.

Udělejte to u všech skladeb, které chcete hrát s Arduinem

Krok 6: Vytvořte konečný soubor a spusťte svůj Linux

Vytvořte konečný soubor a spusťte svůj Linux
Vytvořte konečný soubor a spusťte svůj Linux
Vytvořte konečný soubor a spusťte svůj Linux
Vytvořte konečný soubor a spusťte svůj Linux
Vytvořte konečný soubor a spusťte svůj Linux
Vytvořte konečný soubor a spusťte svůj Linux

Přidejte všechny převedené skladby do souboru uvedeného v tomto odkazu.

A sledujte obrázky.

Nahrajte kód do Arduina, který jsem připojil.

Pamatujte si názvy souborů C Code (např. Životní styl, dolar, oblečení), protože do našeho kódu musíme uvádět přesně stejná jména s rozlišováním velkých a malých písmen.

Nakonec spusťte Fedora Live USB nebo jiný a nainstalujte kompilátor gcc a poté pomocí kompilačních pokynů ze složky zkompilujte program a spusťte jej.

Nakonec si budete moci poslechnout skladby z reproduktorů nebo Flyback.

Děkujeme, že jste si tento návod přečetli, a pokud se vám líbí, napište do komentáře.

POZOR Udělal jsem druhou část tohoto návodu, která je mnohem jednodušší a vyžaduje minimální potíže s prací. Odkaz na druhou část (nejjednodušší)

Doporučuje: