Tabla de contenido:

Arduino se convierte en Talking Tom: 6 pasos
Arduino se convierte en Talking Tom: 6 pasos

Video: Arduino se convierte en Talking Tom: 6 pasos

Video: Arduino se convierte en Talking Tom: 6 pasos
Video: I made a CSGO C4 prop IRL 2024, Mes de julio
Anonim
Arduino se convierte en Talking Tom
Arduino se convierte en Talking Tom
Arduino se convierte en Talking Tom
Arduino se convierte en Talking Tom

Uno de mis recuerdos más antiguos de usar un teléfono inteligente fue jugar al juego 'Talking Tom'. El juego fue bastante simple. Hay un gato, llamado Tom, que puede hablar, más o menos. En el juego, Tom escuchaba cualquier entrada a través del micrófono del teléfono y luego repetía lo que escuchaba. Entonces, lo que sea que le diga a Tom, simplemente repetiría lo mismo con su propia voz estridente.

Si bien suena simple, todo este procedimiento requiere muchos pasos complejos como muestrear la entrada analógica del micrófono en forma digital, manipular el audio para darle a Tom su voz única y luego reconstruir la señal a partir de todos esos valores digitales para reproducirla a través del altavoz.. Todos estos pasos complejos, ¡pero el teléfono inteligente lo manejó como un encanto incluso hace 9 o 10 años!

Lo interesante sería ver si se puede hacer lo mismo con una placa Arduino barata basada en microcontroladores. Entonces, en este instructivo, mostraré cómo puede hacer un proyecto simple como Talking Tom desde un Arduino y algunos otros dispositivos electrónicos económicos.

Este instructivo fue escrito en colaboración con Hatchnhack Makerspace en Delhi.

NOTA: Este instructivo es la primera versión del proyecto que completa la función 'Hablar' de Talking Tom, donde el arduino podrá repetir lo que le digas. La parte de cambio de voz se cubrirá en la versión futura, aunque, debido a la menor resolución del ADC integrado de Arduino, el audio grabado ya suena un poco diferente: P (Esto se puede notar claramente en el video del proyecto).

¡Así que comencemos!

Paso 1: Materiales utilizados

Materiales usados
Materiales usados
Materiales usados
Materiales usados
Materiales usados
Materiales usados

Hardware:

  • Un Arduino UNO
  • Módulo de micrófono MAX4466 con ganancia ajustable
  • Módulo lector de tarjetas SD basado en SPI
  • tarjeta SD
  • Amplificador de audio como altavoz de PC, módulo amplificador PAM8403, etc.
  • Altavoces para conectar al amplificador
  • Conector de audio hembra
  • 1 x resistencia de 1k ohmios
  • Resistencia de 2 x 10k ohmios
  • Condensador 1 x 10uF
  • 2 x pulsador
  • Cables de puente

Software:

  • IDE de Arduino
  • Audacity (opcional)
  • TMRpcm y biblioteca SD para Arduino

Paso 2: Descripción básica del proyecto

El proyecto tiene principalmente 2 características:

  • Puede reproducir un audio elegido al azar de un conjunto de archivos de audio preinstalados en la tarjeta SD para efectos de sonido, etc.
  • Puede grabar la entrada de sonido del micrófono y luego reproducirla tan pronto como se detenga la grabación. Esto permite que el arduino repita todo lo que escuchó a través del micrófono.

La interfaz de usuario del proyecto consta principalmente de 2 pulsadores, cada uno de los cuales corresponde a una de las funciones anteriores.

El principal trabajo duro de grabar y reproducir los archivos de audio de la tarjeta SD lo realiza la biblioteca TMRpcm

La grabación de audio hace uso del módulo de micrófono MAX4466, el ADC interno de arduino y la biblioteca TMRpcm para muestrear el audio y luego almacenarlo temporalmente en la tarjeta SD como archivo '.wav' para su reproducción. Los archivos de audio '.wav' utilizan PCM (Modulación de código de pulso) para almacenar los datos de audio en formato digital para que puedan volver a reproducirse fácilmente. Generalmente, es mejor usar un ADC externo para proyectos basados en audio ya que la resolución del ADC de Arduino no es tan alta pero funciona para este proyecto.

La reproducción de los archivos de audio (preinstalados y grabados) también se realiza con la ayuda de la biblioteca TMRpcm que emite el audio como una señal PWM desde un pin habilitado para PWM del arduino. Esta señal luego se alimenta a un filtro RC para obtener una señal analógica que luego se alimenta a un amplificador para reproducir el audio a través de un altavoz. Para esta parte, también puede usar un DAC externo ya que arduino no tiene uno internamente. El uso de un DAC podría ser una mejor opción, ya que mejoraría significativamente la calidad del audio.

La comunicación entre el módulo de la tarjeta SD y arduino se realiza a través de SPI (Interfaz periférica serial). El código hace uso de la biblioteca SD & SPI para acceder fácilmente al contenido de la tarjeta SD.

Paso 3: Prepare la tarjeta SD y conecte el módulo de la tarjeta SD

Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
Prepare la tarjeta SD y conecte el módulo de la tarjeta SD
  • Primero debe formatear como la tarjeta SD con un sistema de archivos FAT16 o FAT32 (puede usar su teléfono inteligente para formatear la tarjeta SD).
  • Ahora preinstale algunos archivos de audio.wav en la tarjeta SD. Puede generar archivos.wav con Audacity (consulte las instrucciones a continuación). Recuerde nombrar los archivos como audio_1.wav, audio_2.wav, audio_3.wav y así sucesivamente.

El módulo de la tarjeta SD usa SPI para comunicar los datos con el arduino. Por lo tanto, se conecta solo a aquellos pines que tienen SPI habilitado. Estas conexiones son las siguientes:

  • Vcc - 5v
  • GND - GND
  • MOSI (Master Out Slave In) - pin 11
  • MISO (Master In Slave Out) - pin 12
  • CLK (Reloj) - pin 13
  • SS / CS (Selección de esclavo / Selección de chip) - pin 10

Generando un archivo '.wav' con el software Audacity:

  • Abra el archivo de audio que desea convertir a.wav en Audacity.
  • Haga clic en el nombre del archivo y luego seleccione 'Dividir estéreo a mono'. Esta opción divide el audio estéreo en dos canales mono. Ahora puede cerrar uno de los canales.
  • Cambie el valor de 'Tasa de proyecto' en la parte inferior a 16000 Hz. Este valor corresponde a la frecuencia máxima de muestreo del ADC interno de arduino.
  • Ahora vaya a Archivo-> Exportar / Exportar como WAV.
  • Elija la ubicación y el nombre apropiados del archivo. Desde el menú de codificación, seleccione 'PCM de 8 bits sin firmar' ya que estamos usando el formato PCM para almacenar el audio en formato digital.

Paso 4: conecte la salida de audio y el micrófono

Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono
Conecte la salida de audio y el micrófono

Conexión del micrófono:

  • Vcc - 3,3 V
  • GND - GND
  • SALIDA - Pin A0

NOTA:

  • Intente conectar el micrófono directamente al arduino en lugar de usar una placa de pruebas, ya que podría inducir un ruido innecesario en la señal de entrada.
  • Asegúrese de soldar limpiamente los conectores del módulo del micrófono, ya que las juntas de soldadura defectuosas también producen ruido.
  • Este módulo de micrófono tiene una ganancia ajustable que se puede controlar con la ayuda de una olla en la parte trasera del tablero. Le sugiero que mantenga la ganancia algo baja, ya que entonces no amplificará mucho el ruido mientras pueda hablar manteniéndolo cerca de su boca, lo que dará como resultado una salida más limpia.

Conexión de la salida de audio:

  • Coloque el capacitor de 10 uF y la resistencia de 1k ohmios en serie en la placa con el positivo del capacitor conectado a la resistencia. Estos juntos forman un filtro RC que convierte la salida PWM en una señal analógica que se puede alimentar al amplificador.
  • Conecte el pin 9 de Arduino al otro extremo de la resistencia.
  • El terminal negativo del condensador se conecta al canal izquierdo y derecho del conector de audio hembra.
  • GND del conector de audio se conecta a GND.
  • El conector de audio está conectado al amplificador con un cable auxiliar. En mi caso utilicé el sistema de altavoces de mi PC.

NOTA:

El uso de PWM como salida de audio puede no ser la mejor opción, ya que un DAC externo proporcionaría una resolución y calidad mucho mejores. Además, el condensador y la resistencia en el filtro RC pueden inducir ruido no deseado. Pero aún así, el resultado fue bastante decente para este proyecto

Paso 5: Conecte los botones

Conecte los botones
Conecte los botones
Conecte los botones
Conecte los botones
Conecte los botones
Conecte los botones

El proyecto utiliza botones pulsadores como interfaz de usuario. Ambos realizan funciones diferentes y se usan de manera diferente pero tienen el mismo cableado. Su conexión es la siguiente:

  • Coloque los botones en la placa de pruebas.
  • Conecte un terminal de uno de los botones al pin 2 del arduino con una resistencia de extracción de 10k ohmios. El otro terminal del botón se conecta a 5v. Entonces, cuando se presiona el botón, el pin 2 se pone ALTO y podemos detectar eso en el código.
  • El otro botón se conecta de la misma manera con el pin 3 de arduino en lugar de 2.

El botón conectado al pin 2 reproduce un archivo de audio aleatorio del conjunto de archivos de audio preinstalados en la tarjeta SD cuando se presiona una vez.

El botón conectado al pin 3 es para la grabación. Tienes que mantener pulsado este botón para la grabación. El arduino comienza a grabar tan pronto como se presiona este botón y detiene la grabación cuando se suelta este botón. Después de detener la grabación, inmediatamente reproduce esa grabación.

Paso 6: Cargue el código

Sube el código
Sube el código
Sube el código
Sube el código
Sube el código
Sube el código

Antes de cargar el código, asegúrese de haber instalado todas las bibliotecas necesarias como TMRpcm, SD, etc.

También puede abrir Serial Monitor después de cargar el código para obtener una retroalimentación de lo que está haciendo el arduino.

Actualmente, el código no está manipulando el audio grabado para que suene diferente, pero planeo incluir esta función en la próxima versión, donde es posible que pueda configurar la frecuencia de salida de la señal de audio con la ayuda de pot y obtener diferentes tipos de sonidos..

¡¡Y ya está !!

Recomendado: