Sommario:
- Passaggio 1: materiali utilizzati
- Passaggio 2: una panoramica di base del progetto
- Passaggio 3: preparare la scheda SD e collegare il modulo della scheda SD
- Passaggio 4: collegare l'uscita audio e il microfono
- Passaggio 5: collegare i pulsanti
- Passaggio 6: carica il codice
Video: Arduino diventa Talking Tom: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
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
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
- 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
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
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
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:
Giocattoli che si adattano all'interruttore: il drago ambulante che respira l'acqua diventa accessibile!: 7 passaggi (con immagini)
Giocattoli adattati all'interruttore: il drago ambulante che respira nell'acqua reso accessibile!: L'adattamento del giocattolo apre nuove strade e soluzioni personalizzate per consentire ai bambini con capacità motorie limitate o disabilità dello sviluppo di interagire con i giocattoli in modo indipendente. In molti casi, i bambini che richiedono i giocattoli adattati non sono in grado di int
Il router diventa un videoregistratore per telecamere IP: 3 passaggi
Il router diventa videoregistratore per telecamere IP: alcuni router hanno una potente CPU e una porta USB su una scheda e possono essere utilizzati come videoregistratori oltre alle funzioni di routing, per raccogliere e distribuire video e audio dalle telecamere IP che trasmettono solo H264/265 RTSP (come la maggior parte dei moderni hi
Switch Adatta un giocattolo: il treno WolVol diventa accessibile a Switch!: 7 passaggi
Switch Adapt a Toy: WolVol Train Made Switch Accessible!: L'adattamento del giocattolo apre nuove strade e soluzioni personalizzate per consentire ai bambini con capacità motorie limitate o disabilità dello sviluppo di interagire con i giocattoli in modo indipendente. In molti casi, i bambini che richiedono i giocattoli adattati non sono in grado di int
Il telecomando della TV diventa un telecomando RF -- Tutorial NRF24L01+: 5 passaggi (con immagini)
Il telecomando della TV diventa un telecomando RF || Tutorial NRF24L01+: in questo progetto ti mostrerò come ho utilizzato il popolare IC RF nRF24L01+ per regolare la luminosità di una striscia LED in modalità wireless tramite tre inutili pulsanti di un telecomando TV. Iniziamo
Anello LED Android "Detroit: Diventa umano": 5 passaggi
Anello LED Android "Detroit: Diventa umano": Ciao! Andrò all'Anime Expo questo fine settimana e volevo fare il cosplay di un Android dal mio gioco preferito del momento, Detroit: Become Human. È uno dei cosplay più semplici da realizzare… o almeno così pensavo. Vedi, armeggio con cose qua e là, ma quando