Sommario:

Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback: 6 passaggi (con immagini)
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback: 6 passaggi (con immagini)

Video: Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback: 6 passaggi (con immagini)

Video: Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback: 6 passaggi (con immagini)
Video: Generatore di funzioni con Arduino, DAC R-2R e ampli audio 1 Watt • Progetto 1000 2024, Dicembre
Anonim
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback
Riproduci brani (MP3) con Arduino utilizzando PWM su altoparlante o trasformatore flyback

Ciao ragazzi, Questo è il mio primo tutorial, spero che ti piaccia!!

Fondamentalmente, in questo progetto ho usato la comunicazione seriale tra il mio Arduino e il mio laptop, per trasmettere dati musicali dal mio laptop all'Arduino. E usando i TIMER di Arduino per riprodurre i dati come segnale PWM.

Volevo dire che questo progetto non è per principianti!!!.

In realtà, questo progetto è stato uno dei più lunghi, perché dobbiamo fare molte cose per farlo funzionare.

ATTENZIONE

Ho reso la seconda parte di questo istruibile, che è molto più semplice e richiede problemi minimi per funzionare

Link alla seconda parte (la più semplice).

Passaggio 1: cose di cui abbiamo bisogno per questo progetto (requisiti)

1. Scheda Arduino (possiamo usare qualsiasi scheda (328, 2560) cioè Mega, Uno, Mini, ecc. Ma con pin diversi specifici)

2. PC o laptop con Linux (ho usato Fedora 29) o Live USB con Linux

3. Tagliere o Perfboard

4. Cavi di collegamento

5. TC4420 (driver Mosfet o qualcosa del genere)

6. Power Mosfet (canale N o P, collegare quindi di conseguenza) (ho usato il canale N)

7. Altoparlante o trasformatore flyback (sì, hai letto bene!!)

8. Alimentatore adatto (0-12V) (ho usato il mio alimentatore ATX)

9. Dissipatore di calore (l'ho recuperato dal mio vecchio PC)

10. PC con Windows e pen drive.

Per conoscere il funzionamento dettagliato di ogni componente e questo progetto si prega di leggere il passaggio successivo.

Ho reso la seconda parte di questo istruibile, che è molto più semplice e richiede problemi minimi per funzionare. Link alla seconda parte (la più semplice).

Passaggio 2: comprensione del principio di funzionamento

Ahhh!! la parte più lunga di un istruibile, leggere e scrivere questa sezione è sia noioso.

Prima di tutto, abbiamo bisogno di avere una panoramica su come funziona effettivamente questa cosa.

quello che stiamo facendo qui è che per prima cosa stiamo convertendo la nostra canzone MP3 in un file WAV e questo file in un file di intestazione C utilizzando il software, che si trova nel collegamento. Questo codice C contiene in realtà campioni di dati a 8 bit (perché 8 bit? leggi oltre) che dobbiamo riprodurre usando il nostro Arduino a una velocità o velocità fissa, che è specificata in base alla nostra frequenza di campionamento.

Teoria di un segnale audio.

Per coloro che non sanno cosa sia il Sampling Rate o Bit Rate:-

La frequenza di campionamento è definita come il numero di campioni che stiamo suonando in un secondo (di solito misurato in Hz o KHz).

Per saperne di più in dettaglio:-Clicca qui

Le frequenze di campionamento standard sono 44100 Hz (qualità migliore), 32000 Hz, 22050 Hz, ecc

il che significa che 44100 campioni vengono utilizzati in un secondo per generare un'onda di conseguenza.

vale a dire che ogni campione deve essere riprodotto a un intervallo fisso di 1/44100=22,67 uS.

Poi viene la profondità di bit di un segnale audio, che di solito è una misura della precisione con cui un suono è rappresentato nell'audio digitale. Maggiore è la profondità di bit, più accurato è il suono digitale.

Ma con Arduino o qualsiasi altro Microcontrollore con clock a 16Mhz ci permette di usarci solo fino a 8-bit. Lo spiegherò perché.

C'è una formula a pagina n.102 nel datasheet di 328p:- Datasheet

Non entrerò nei dettagli, perché sto usando questa formula.

frequenza del segnale = segnale di clock / N x (1+TOP)

Segnale di clock = 16 Mhz (scheda Arduino)

N=prescaler (1 è il valore per il nostro progetto)

TOP=valore da 0 a 2^16 (per contatore timer a 16 bit) (255=2^8 (8 bit) per il nostro progetto)

otteniamo il valore della frequenza di Segnale = 62,5 kHz

Ciò significa che la frequenza dell'onda portante dipende dalla profondità di bit.

Supponiamo, se usiamo il valore TOP = 2^16=65536 (cioè la profondità di bit di 16 bit)

quindi otteniamo il valore della frequenza di Segnale = 244 Hz (che non possiamo usare)

OKK… Quindi questa teoria su come funzionano i segnali audio è sufficiente, quindi torniamo al progetto.

Il codice C generato per una canzone può essere copiato in Arduino e può essere riprodotto, ma siamo limitati a una riproduzione audio di 3 secondi con una frequenza di campionamento di 8000 Hz. Perché questo codice C è un file di testo e quindi non compresso, piuttosto decompresso. E ci vuole troppo spazio. (ad esempio, un file di codice C con audio di 43 secondi con campioni da 44, 1 KHz occupa spazio fino a 23 MB). E il nostro Arduino Mega ci offre uno spazio di circa 256 Kb.

Quindi, come suoneremo le canzoni usando Arduino. Non è possibile. Questo Instructable è falso. Non preoccupatevi lettori, Ecco perché abbiamo bisogno di utilizzare un qualche tipo di comunicazione tra Arduino a velocità così elevate (fino a 1 Mb/s) per inviare dati audio ad Arduino.

Ma quanta velocità ci serve esattamente per fare questo??

La risposta è 44000 byte al secondo, il che significa velocità superiori a 44000*8=325.000 bit/s.

Abbiamo bisogno di un'altra periferica con un grande spazio di archiviazione per inviare questi dati al nostro Arduino. E quello sarà il nostro PC con Linux (perché PC con Linux??? leggi oltre per saperne di più.)

Ahaa…Questo significa che possiamo usare la comunicazione seriale…Ma aspetta…la seriale è possibile solo a velocità fino a 115200 Bit/s, il che significa (325000/115200=3) che è tre volte più lenta del necessario.

No, amici miei, non lo è. Useremo una velocità o Baud Rate di 500.000 bit/s con un cavo fino a 20-30 cm max., che è 1,5 volte più veloce di quanto richiesto.

Perché Linux, non Windows???

Quindi, abbiamo bisogno di inviare campioni ad un intervallo (anche specificato sopra) di 1/44100=22,67 uS con il nostro PC.

Quindi come possiamo programmarlo per farlo??

Possiamo usare C++ per inviare un byte di dati tramite Serial a intervalli utilizzando una sorta di funzione di sospensione

come nanosonno, Chrono, ecc, ecc….

for(int x=0;x

inviaDati(x);

nanosonno(22000); // 22uS

}

MA NO NON FUNZIONA SU WINDOWS anche non funzionava in questo modo su Linux (ma ho trovato un altro modo che puoi vedere nel mio codice allegato.)

Perché non possiamo ottenere tale granularità utilizzando Windows. Hai bisogno di Linux per raggiungere tale granularità.

Problemi che ho riscontrato anche con Linux…

possiamo ottenere tale granularità usando Linux, ma non ho trovato tale funzione per dormire il mio programma per 22uS.

Anche funzioni come nanosleep, Chrono nanosleep, ecc, ecc. non funzionano, in quanto forniscono un sonno solo superiore a 100 uS. Ma mi servivano esattamente, precisamente 22 us. Ho ricercato ogni singola pagina su google e sperimentato tutte le possibili funzioni disponibili in C/C++ ma niente ha funzionato per me. Poi ho inventato la mia funzione, che ha funzionato per me come un vero fascino.

E il mio codice ora fornisce un sonno esatto e preciso di 1uS o superiore !!!

Quindi abbiamo coperto la parte difficile e il resto è facile…

E vogliamo generare un segnale PWM usando Arduino con una frequenza specifica anche frequenza dell'onda portante. (62,5 KHz (come calcolato sopra) per una buona immunità del segnale).

Quindi, abbiamo bisogno di usare i cosiddetti TIMER di Arduino per creare PWM. A proposito, non entrerò in molti dettagli su questo, perché troverai molti tutorial sull'argomento dei TIMER, ma se non ne trovi alcuni, commenta qui sotto, ne farò uno.

Ho usato un driver Mosfet TC4420, per salvare i nostri pin Arduino, perché a volte non possono fornire così tanta corrente per pilotare un MOSFET.

Quindi, questa era quasi la teoria di questo progetto, ora possiamo vedere lo schema del circuito.

ATTENZIONE ATTENZIONE ATTENZIONE

In realtà, questo progetto è stato reso molto difficile intenzionalmente (dirò perché), c'è un altro metodo che non richiede PC solo Arduino e speaker nel mio nextinstructable. Link è qui.

*Lo scopo principale di questo progetto è utilizzare la comunicazione seriale, conoscerne la potenza e imparare come programmare il nostro PC per eseguire attività con precisione a intervalli così precisi.*

Passaggio 3: schematico

Schema
Schema

Collegare tutti i componenti come mostrato nello schema. Quindi hai qui due opzioni: -

1. Collegare un altoparlante (collegato con 5V)

2. Collegare un trasformatore flyback (collegato a 12V)

Ho provato entrambi. Ed entrambi funzionano abbastanza bene.

Disclaimer:-

* Raccomando di usare il trasformatore flyback con precauzione in quanto può essere pericoloso perché produce alte tensioni. E non sarò responsabile di alcun danno.*

Passaggio 4: convertire MP3 in file WAV utilizzando Audacity

Converti MP3 in file WAV usando Audacity
Converti MP3 in file WAV usando Audacity
Converti MP3 in file WAV usando Audacity
Converti MP3 in file WAV usando Audacity
Converti MP3 in file WAV usando Audacity
Converti MP3 in file WAV usando Audacity

Quindi, prima di tutto, scarica il software

1. Audacity, cerca e scarica da Google

2. Per convertire il file WAV in codice C, scaricare un'applicazione finestra, denominata WAVToCode

Puoi imparare come usare il software WAVToCode da questo link e scaricarlo da questo link.

Fornirò anche passaggi dettagliati su come utilizzare entrambi i software.

Si prega di vedere le foto collegate a questo istruibile.

In questo passaggio, convertiremo MP3 in Wav. (Segui le foto, la frequenza del progetto deve essere 44100Hz)

Nel passaggio successivo, convertiremo un file wav in codice C.

Passaggio 5: da WAV a codice C

Da WAV a codice C
Da WAV a codice C
Da WAV a codice C
Da WAV a codice C
Da WAV a codice C
Da WAV a codice C

Segui le foto.

Guarda le ultime due immagini, le modifiche devono essere esattamente le stesse, le lettere maiuscole dovrebbero essere maiuscole e le minuscole dovrebbero essere inferiori, oppure otterrai un errore di sintassi durante la compilazione.

(Puoi vedere che la canzone di 1 minuto e 41 secondi ha occupato 23 MB di spazio.)

Cambia il nome e la durata della canzone rispettivamente con il nome e la durata della tua canzone.

E salva il file del codice C.

Fallo per tutte le canzoni che vuoi suonare con Arduino

Passaggio 6: crea un file finale e accendi il tuo Linux

Crea un file finale e accendi il tuo Linux
Crea un file finale e accendi il tuo Linux
Crea un file finale e accendi il tuo Linux
Crea un file finale e accendi il tuo Linux
Crea un file finale e accendi il tuo Linux
Crea un file finale e accendi il tuo Linux

Aggiungi tutte le tue canzoni convertite nel file fornito in questo link.

E segui le immagini.

Carica il codice in Arduino, che ho allegato.

Ricorda i nomi dei file del codice C. (ad esempio lifestyle, dollar, wear), perché dobbiamo menzionare esattamente gli stessi nomi nel nostro codice con la distinzione tra maiuscole e minuscole.

Alla fine accendi la tua Fedora Live USB o altro e installa il compilatore gcc e poi usando le istruzioni di compilazione dalla cartella compila il programma ed eseguilo.

Alla fine, sarai in grado di ascoltare le canzoni da Speaker o Flyback.

Grazie per aver letto questo tutorial e per favore commenta se ti piace.

ATTENTIONI hanno reso la seconda parte di questo istruttivo, che è molto più semplice e richiede il minimo disturbo per funzionare. Link alla seconda parte (la più semplice)

Consigliato: