Sommario:

Arduino diventa Talking Tom: 6 passaggi
Arduino diventa Talking Tom: 6 passaggi

Video: Arduino diventa Talking Tom: 6 passaggi

Video: Arduino diventa Talking Tom: 6 passaggi
Video: Arduino становится Говорящим Томом 2024, Novembre
Anonim
Arduino diventa Talking Tom
Arduino diventa Talking Tom
Arduino diventa Talking Tom
Arduino diventa Talking Tom

Uno dei miei ricordi più antichi sull'utilizzo di uno smartphone è stato il gioco "Talking Tom". Il gioco era piuttosto semplice. C'è un gatto, di nome Tom, che può parlare, in qualche modo. Nel gioco, Tom ascoltava qualsiasi input attraverso il microfono del telefono e poi ripeteva tutto ciò che sentiva. Quindi, qualunque cosa dicesse a Tom, avrebbe semplicemente ripetuto la stessa cosa con la sua voce stridula.

Anche se sembra semplice, l'intera procedura richiede molti passaggi complessi come il campionamento dell'ingresso analogico del microfono in forma digitale, la manipolazione dell'audio per dare a Tom la sua voce unica e quindi la ricostruzione del segnale da tutti quei valori digitali per riprodurlo attraverso l'altoparlante. Tutti questi passaggi complessi, ma lo smartphone li ha gestiti come un incantesimo anche da 9 a 10 anni fa!

La cosa interessante sarebbe vedere se lo stesso può essere fatto con una scheda Arduino basata su un microcontrollore economico. Quindi, in questo tutorial mostrerò come puoi realizzare un semplice progetto simile a Talking Tom da un Arduino e da altri dispositivi elettronici poco costosi.

Questo tutorial è stato scritto in collaborazione con Hatchnhack Makerspace a Delhi

NOTA: questa istruzione è la prima versione del progetto che completa la funzione "Parlare" di Talking Tom in cui l'arduino sarà in grado di ripetere tutto ciò che gli dici. La parte relativa al cambio di voce sarà trattata nella versione futura, anche se, a causa della minore risoluzione dell'ADC integrato di Arduino, l'audio registrato suona già un po' diverso:P (questo può essere notato chiaramente nel video del progetto).

Quindi iniziamo!

Passaggio 1: materiali utilizzati

Materiali usati
Materiali usati
Materiali usati
Materiali usati
Materiali usati
Materiali usati

Hardware:

  • Un Arduino UNO
  • Modulo microfono MAX4466 con guadagno regolabile
  • Modulo lettore di schede SD basato su SPI
  • scheda SD
  • Amplificatore audio come altoparlante per PC, modulo amplificatore PAM8403, ecc.
  • Altoparlanti per il collegamento all'amplificatore
  • Jack audio femmina
  • 1 x 1k ohm resistore
  • Resistore 2 x 10k ohm
  • 1 x condensatore da 10uF
  • 2 x pulsante
  • Cavi per ponticelli

Software:

  • Arduino IDE
  • Audacia (opzionale)
  • Libreria TMRpcm e SD per Arduino

Passaggio 2: una panoramica di base del progetto

Il progetto ha principalmente 2 caratteristiche:

  • Può riprodurre un audio scelto casualmente da una serie di file audio preinstallati nella scheda SD per effetti sonori, ecc.
  • Può registrare l'ingresso audio dal microfono e quindi riprodurlo non appena la registrazione si interrompe. Ciò consente all'arduino di ripetere tutto ciò che ha sentito attraverso il microfono.

L'Interfaccia Utente del progetto è costituita principalmente da 2 pulsanti ognuno dei quali corrisponde ad una delle suddette funzionalità.

Il lavoro principale di registrazione e riproduzione dei file audio dalla scheda SD è gestito dalla libreria TMRpcm

La registrazione audio utilizza il modulo microfono MAX4466, l'ADC interno di Arduino e la libreria TMRpcm per campionare l'audio e quindi memorizzarlo temporaneamente nella scheda SD come file ".wav" per la riproduzione. I file audio '.wav' utilizzano PCM (Pulse Code Modulation) per memorizzare i dati audio in formato digitale in modo che possano essere facilmente riprodotti. In generale, è meglio usare un ADC esterno per progetti basati su audio poiché la risoluzione dell'ADC di Arduino non è così alta ma funziona per questo progetto.

La riproduzione dei file audio (preinstallati e registrati) viene eseguita anche con l'aiuto della libreria TMRpcm che emette l'audio come segnale PWM da un pin abilitato PWM dell'arduino. Questo segnale viene quindi immesso in un filtro RC per ottenere un segnale analogico che viene quindi immesso in un amplificatore per riprodurre l'audio tramite un altoparlante. Per questa parte potresti anche usare un DAC esterno poiché arduino non ne ha uno interno. L'utilizzo di un DAC potrebbe essere un'opzione migliore in quanto migliorerebbe significativamente la qualità audio.

La comunicazione tra il modulo della scheda SD e arduino avviene tramite SPI (interfaccia periferica seriale). Il codice utilizza la libreria SD & SPI per accedere facilmente ai contenuti della scheda SD.

Passaggio 3: preparare la scheda SD e collegare il modulo della scheda SD

Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
Prepara la scheda SD e collega il modulo della scheda SD
  • Per prima cosa devi formattare come scheda SD con un file system FAT16 o FAT32 (puoi usare il tuo smartphone per formattare la scheda SD).
  • Ora preinstalla alcuni file audio.wav nella scheda SD. Puoi generare file.wav con Audacity (vedi le istruzioni sotto). Ricorda di nominare i file come audio_1.wav, audio_2.wav, audio_3.wav e così via.

Il modulo della scheda SD utilizza SPI per comunicare i dati con arduino. Pertanto, si collega solo a quei pin che hanno SPI abilitato. Questi collegamenti sono i seguenti:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In) - pin 11
  • MISO (Master In Slave Out) - pin 12
  • CLK (Orologio) - pin 13
  • SS/CS (Slave Select/Chip Select) - pin 10

Generazione del file '.wav' con il software Audacity:

  • Apri il file audio che desideri convertire in.wav in Audacity.
  • Fare clic sul nome del file e quindi selezionare "Dividi stereo in mono". Questa opzione divide l'audio stereo in due canali mono. Ora puoi chiudere uno dei canali.
  • Cambia il valore "Velocità progetto" in basso a 16000 Hz. Questo valore corrisponde alla frequenza di campionamento massima dell'ADC interno di Arduino.
  • Ora vai su File-> Esporta/Esporta come WAV.
  • Scegli la posizione e il nome appropriati del file. Dal menu di codifica selezionare "PCM a 8 bit non firmato" poiché stiamo utilizzando il formato PCM per memorizzare l'audio in formato digitale.

Passaggio 4: collegare l'uscita audio e il microfono

Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono
Collega l'uscita audio e il microfono

Collegamento del microfono:

  • Vcc - 3.3v
  • GND - GND
  • OUT - pin A0

NOTA:

  • Prova a collegare il microfono direttamente all'arduino invece di utilizzare una breadboard in quanto potrebbe indurre rumore non necessario nel segnale di ingresso.
  • Assicurati di saldare in modo pulito le intestazioni sul modulo del microfono poiché anche i giunti di saldatura difettosi producono rumore.
  • Questo modulo microfono ha un guadagno regolabile che può essere controllato con l'aiuto di un potenziometro nella parte posteriore della scheda. Ti suggerirei di mantenere il guadagno un po' basso in quanto non amplificherà molto il rumore mentre potresti parlare tenendolo vicino alla bocca con conseguente uscita più pulita.

Collegamento dell'uscita audio:

  • Posizionare il condensatore da 10 uF e il resistore da 1k ohm in serie sulla breadboard con il positivo del condensatore collegato al resistore. Questi insieme formano un filtro RC che converte l'uscita PWM in segnale analogico che può essere inviato all'amplificatore.
  • Collega il pin 9 di Arduino all'altra estremità del resistore.
  • Il terminale negativo del condensatore viene collegato al canale sinistro e destro del jack audio femmina.
  • GND del jack Audio viene collegato a GND.
  • Il jack audio è collegato all'amplificatore con un cavo Aux. Nel mio caso ho usato il sistema di altoparlanti del mio PC.

NOTA:

L'utilizzo di PWM come uscita audio potrebbe non essere l'opzione migliore in quanto un DAC esterno fornirebbe una risoluzione e una qualità molto migliori. Inoltre, il condensatore e il resistore nel filtro RC possono indurre rumore indesiderato. Ma comunque l'output è stato abbastanza decente per questo progetto

Passaggio 5: collegare i pulsanti

Collegare i pulsanti
Collegare i pulsanti
Collegare i pulsanti
Collegare i pulsanti
Collegare i pulsanti
Collegare i pulsanti

Il progetto utilizza i pulsanti come interfaccia utente. Entrambi svolgono funzioni diverse e sono utilizzati in modo diverso ma hanno lo stesso cablaggio. La loro connessione è la seguente:

  • Posiziona i pulsanti sulla breadboard.
  • Collega un terminale di uno dei pulsanti al pin 2 dell'arduino con un resistore pull down da 10k ohm. L'altro terminale del pulsante viene collegato a 5v. Quindi, quando viene premuto il pulsante, il pin 2 diventa ALTO e possiamo rilevarlo nel codice.
  • L'altro pulsante viene collegato allo stesso modo con il pin 3 di arduino anziché 2.

Il pulsante collegato al pin 2 riproduce un file audio casuale dal set di file audio preinstallati sulla scheda SD quando viene premuto una volta.

Il pulsante collegato al pin 3 è per la registrazione. Devi tenere premuto questo pulsante per la registrazione. L'arduino avvia la registrazione non appena viene premuto questo pulsante e interrompe la registrazione quando viene rilasciato questo pulsante. Dopo aver interrotto la registrazione, riproduce immediatamente quella registrazione.

Passaggio 6: carica il codice

Carica il codice
Carica il codice
Carica il codice
Carica il codice
Carica il codice
Carica il codice

Prima di caricare il codice, assicurati di aver installato tutte le librerie richieste come TMRpcm, SD ecc.

Puoi anche aprire il monitor seriale dopo aver caricato il codice per ottenere un feedback su ciò che sta facendo l'arduino.

Attualmente il codice non sta manipolando l'audio registrato per farlo sembrare diverso, ma ho intenzione di includere questa funzione nella prossima versione in cui potresti essere in grado di impostare la frequenza di uscita del segnale audio con l'aiuto di pot e ottenere diversi tipi di suoni.

E hai finito!!

Consigliato: