Taula de continguts:

Arduino es converteix en Talking Tom: 6 passos
Arduino es converteix en Talking Tom: 6 passos

Vídeo: Arduino es converteix en Talking Tom: 6 passos

Vídeo: Arduino es converteix en Talking Tom: 6 passos
Vídeo: 20 Amazing Robot Animals That Will Blow Your Mind 2024, De novembre
Anonim
Arduino es converteix en Talking Tom
Arduino es converteix en Talking Tom
Arduino es converteix en Talking Tom
Arduino es converteix en Talking Tom

Un dels meus records més antics d’utilitzar un telèfon intel·ligent era jugar al joc “Talking Tom”. El joc era força senzill. Hi ha un gat, anomenat Tom, que pot parlar, en certa manera. Al joc, Tom escoltava qualsevol entrada a través del micròfon del telèfon i després repetia tot el que sentia. Per tant, tot el que digui a Tom, només repetiria el mateix amb la seva pròpia veu aguda.

Tot i que sembli senzill, tot aquest procediment requereix molts passos complexos, com ara el mostreig de l’entrada analògica del micròfon en forma digital, la manipulació de l’àudio per donar a Tom la seva veu única i després reconstruir el senyal de tots aquests valors digitals per reproduir-lo a través de l’altaveu.. Tots aquests passos complexos, però el telèfon intel·ligent els manejava com un encant fins i tot de 9 a 10 anys enrere.

L’interessant seria veure si es pot fer el mateix amb una placa Arduino basada en microcontroladors. Per tant, en aquest instructiu us mostraré com podeu fer un projecte Talking Tom senzill com un Arduino i una altra electrònica econòmica.

Aquest instructiu es va escriure en col·laboració amb Hatchnhack Makerspace a Delhi

NOTA: Aquesta instrucció és la primera versió del projecte que completa la funció "Talking" de Talking Tom, on l'arduino podrà repetir el que li digueu. La part que canvia la veu es cobrirà en la futura versió, tot i que, a causa de la menor resolució d'Arduino a l'ADC integrat, l'àudio gravat ja sona una mica diferent: P (Això es pot notar clarament al vídeo del projecte).

Així que Comencem!

Pas 1: materials utilitzats

Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats
Materials utilitzats

Maquinari:

  • Un Arduino UNO
  • Mòdul de micròfon MAX4466 amb guany ajustable
  • Mòdul lector de targetes SD basat en SPI
  • targeta SD
  • Amplificador d'àudio com altaveu de PC, mòdul d'amplificador PAM8403, etc.
  • Altaveus per a la connexió a l'amplificador
  • Jack d'àudio femení
  • 1 x 1k ohm resistència
  • 2 x 10k ohm resistència
  • 1 x condensador 10uF
  • 2 x polsador
  • Filferros de pont

Programari:

  • IDE Arduino
  • Audacity (opcional)
  • Biblioteca TMRpcm i SD per a Arduino

Pas 2: Visió general bàsica del projecte

El projecte té principalment 2 característiques:

  • Pot reproduir un àudio triat a l’atzar d’un conjunt de fitxers d’àudio preinstal·lats a la targeta SD per a efectes de so, etc.
  • Pot gravar l'entrada de so des del micròfon i reproduir-lo tan aviat com s'aturi la gravació. Això permet que l'arduino repeteixi tot el que ha sentit a través del micròfon.

La interfície d'usuari del projecte consisteix principalment en 2 botons que corresponen a una de les funcions anteriors.

La biblioteca TMRpcm gestiona la tasca principal de gravació i reproducció dels fitxers d’àudio de la targeta SD

La gravació d'àudio fa servir el mòdul de micròfon MAX4466, l'ADC intern d'arduino i la biblioteca TMRpcm per provar l'àudio i després emmagatzemar-lo temporalment a la targeta SD com a fitxer ".wav" per reproduir-lo. Els fitxers d'àudio ".wav" utilitzen PCM (Pulse Code Modulation) per emmagatzemar les dades d'àudio en format digital perquè es puguin reproduir fàcilment. En general, és millor utilitzar un ADC extern per a projectes basats en àudio, ja que la resolució de l'ADC d'Arduino no és tan alta, però funciona per a aquest projecte.

La reproducció dels fitxers d'àudio (preinstal·lats i gravats) també es fa amb l'ajut de la biblioteca TMRpcm que emet l'àudio com a senyal PWM des d'un pin de l'arduino habilitat per PWM. A continuació, aquest senyal s’alimenta en un filtre RC per obtenir senyal analògic que després s’introdueix en un amplificador per reproduir l’àudio a través d’un altaveu. Per a aquesta part també podeu utilitzar un DAC extern ja que arduino no en té internament. L’ús d’un DAC pot ser una opció millor, ja que milloraria significativament la qualitat de l’àudio.

La comunicació entre el mòdul de la targeta SD i l'arduino es realitza mitjançant SPI (Interfície perifèrica en sèrie). El codi fa ús de la biblioteca SD & SPI per accedir fàcilment al contingut de la targeta SD.

Pas 3: prepareu la targeta SD i connecteu el mòdul de la targeta SD

Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
Prepareu la targeta SD i connecteu el mòdul de la targeta SD
  • Primer heu de formatar la targeta SD amb un sistema de fitxers FAT16 o FAT32 (Podeu utilitzar el telèfon intel·ligent per formatar la targeta SD).
  • Ara preinstal·leu alguns fitxers d'àudio.wav a la targeta SD. Podeu generar fitxers.wav amb Audacity (vegeu les instruccions següents). Recordeu el nom dels fitxers com a audio_1.wav, audio_2.wav, audio_3.wav, etc.

El mòdul de la targeta SD utilitza SPI per comunicar les dades amb l’arduino. Per tant, només es connecta als pins que tenen SPI activat. Aquestes connexions són les següents:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In): pin 11
  • MISO (Master In Slave Out): pin 12
  • CLK (rellotge): pin 13
  • SS / CS (Selecció esclau / Selecció xip): pin 10

Generació del fitxer ".wav" amb el programari Audacity:

  • Obriu el fitxer d'àudio que voleu convertir a.wav a Audacity.
  • Feu clic al nom del fitxer i seleccioneu "Dividiu estèreo a mono". Aquesta opció divideix l'àudio estèreo en dos canals mono. Ara podeu tancar un canal.
  • Canvieu el valor de "Taxa de projecte" a la part inferior a 16000 Hz. Aquest valor correspon a la freqüència màxima de mostreig de l'ADC intern d'arduino.
  • Ara he arribat a Fitxer-> Exporta / Exporta com a WAV.
  • Trieu la ubicació i el nom adequats del fitxer. Al menú de codificació, seleccioneu "PCM de 8 bits sense signar", ja que utilitzem el format PCM per emmagatzemar l'àudio en format digital.

Pas 4: connecteu la sortida d'àudio i el micròfon

Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon
Connecteu la sortida d'àudio i el micròfon

Connexió del micròfon:

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

NOTA:

  • Proveu de connectar el micròfon directament a l’arduino en lloc d’utilitzar una placa de control, ja que pot induir sorolls innecessaris al senyal d’entrada.
  • Assegureu-vos de soldar netament les capçaleres del mòdul del micròfon, ja que les juntes de soldadura incorrectes també produeixen soroll.
  • Aquest mòdul de micròfon té un guany ajustable que es pot controlar amb l'ajut d'un test a la part posterior del tauler. Us suggeriria que mantingueu el guany una mica baix, ja que llavors no amplificarà molt el soroll mentre es pugui parlar mantenint-lo a prop de la boca, donant com a resultat una sortida més neta.

Connexió de la sortida d'àudio:

  • Col·loqueu el condensador de 10 uF i la resistència d’1k ohm en sèrie a la placa de control amb el positiu del condensador connectat a la resistència. Aquests junts formen un filtre RC que converteix la sortida PWM en senyal analògica que es pot alimentar a l'amplificador.
  • Connecteu el pin 9 d'Arduino a l'altre extrem de la resistència.
  • El terminal negatiu del condensador es connecta al canal esquerre i dret de la presa d’àudio femenina.
  • El GND del connector d'àudio es connecta al GND.
  • La presa d’àudio es connecta a l’amplificador mitjançant un cable auxiliar. En el meu cas, he utilitzat el sistema de parlants del meu PC.

NOTA:

Pot ser que l’ús de PWM com a sortida d’àudio no sigui la millor opció, ja que un DAC extern proporcionaria una resolució i una qualitat molt millors. A més, el condensador i la resistència del filtre RC poden induir sorolls no desitjats. Però tot i així, la producció va ser bastant decent per a aquest projecte

Pas 5: connecteu els botons

Connecteu els botons
Connecteu els botons
Connecteu els botons
Connecteu els botons
Connecteu els botons
Connecteu els botons

El projecte s’utilitza per prémer botons com a interfície d’usuari. Tots dos fan funcions diferents i s’utilitzen de manera diferent, però tenen el mateix cablejat. La seva connexió és la següent:

  • Col·loqueu els botons a la pissarra.
  • Connecteu un terminal d’un dels botons al pin 2 de l’arduino amb una resistència de 10k ohm. L'altre terminal del botó es connecta a 5v. Per tant, quan es prem el botó, el pin 2 es posa ALT i ho podem detectar al codi.
  • L'altre botó es connecta de la mateixa manera amb el pin 3 d'Arduino en lloc de 2.

El botó connectat al pin 2 reprodueix un fitxer d'àudio aleatori del conjunt de fitxers d'àudio preinstal·lats a la targeta SD quan es prem una vegada.

El botó connectat al pin 3 és per a la gravació. Heu de mantenir premut aquest botó per a la gravació. L’arduino comença a gravar tan bon punt es prem aquest botó i atura la gravació quan es deixa anar aquest botó. Després d’aturar la gravació, torna a reproduir-la immediatament.

Pas 6: pengeu el codi

Pengeu el codi
Pengeu el codi
Pengeu el codi
Pengeu el codi
Pengeu el codi
Pengeu el codi

Abans de penjar el codi, assegureu-vos que heu instal·lat totes les biblioteques necessàries com TMRpcm, SD, etc.

També podeu obrir el monitor de sèrie després de penjar el codi per obtenir informació sobre el que està fent l'arduino.

Actualment, el codi no manipula l'àudio enregistrat per fer-lo sonar diferent, però tinc previst incloure aquesta característica a la següent versió, on podríeu configurar la freqüència de sortida del senyal d'àudio amb l'ajuda de pot i obtenir diferents tipus de sons..

I ja està fet !!

Recomanat: