Código de búsqueda

Código Arduino y vídeo: Grabadora de voz Arduino ISD1820

Código Arduino y vídeo: Grabadora de voz Arduino ISD1820

El ISD1820 es un módulo grabador de voz sencillo que te permite grabar y reproducir audio usando un Arduino. En este tutorial, aprenderás cómo configurar el ISD1820 con un Arduino para grabar hasta 20 segundos de sonido y reproducirlo bajo demanda. Este proyecto es perfecto para principiantes que desean explorar el procesamiento de audio con Arduino.

isd1820 voice recording module

A lo largo de este tutorial, encontrarás identificadores clave que se usan en el código, comoREC,PLAY_E, yPLAY_L. Estos identificadores corresponden a los pines utilizados para las funciones de grabación y reproducción. Además, los fragmentos de código proporcionados ayudarán a aclarar la lógica de programación detrás de este proyecto. Para una explicación más detallada, asegúrate de ver el video (a 00:00).

Hardware explicado

El componente principal de este proyecto es el módulo grabador de voz ISD1820, que puede grabar audio durante hasta 20 segundos. Cuenta con varios pines para controlar las funciones de grabación, reproducción y paso de audio. El módulo funciona con una tensión de alimentación de 3 V a 4,5 V, lo que lo hace compatible con la mayoría de las placas Arduino.

Además del módulo ISD1820, necesitarás una placa Arduino, un altavoz y un micrófono. El Arduino controlará las funciones de grabación y reproducción a través de pines digitales. El funcionamiento del módulo es sencillo: graba audio cuando el pin de grabación se pone en nivel alto y reproduce audio cuando se activan los pines de reproducción.

Detalles de la ficha técnica

FabricanteISD1820
Número de piezaISD1820
Voltaje lógico/E/S3.3 V típ.
Tensión de alimentación3.0 V a 4.5 V
Corriente en reposo0,5 µA típico.
Corriente de funcionamiento30 mA máx.
Tiempo de grabación20 s máx.
Tiempo de reproducción20 s máx.
PaqueteDIP de 8 pines

  • Asegúrese de que la tensión de alimentación esté entre 3.0 V y 4.5 V para evitar dañar el módulo.
  • Use resistencias para adaptar la señal de 5V del Arduino al nivel lógico de 3.3V para una conexión segura.
  • Supervise el consumo de corriente; el módulo puede consumir hasta 30 mA durante el funcionamiento.
  • Conecte un altavoz de baja potencia (0.5 W) a la salida de audio para la reproducción.
  • El módulo admite varias duraciones de grabación; ajuste el tiempo según sus necesidades.

Instrucciones de cableado

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder

Para cablear el ISD1820 a tu Arduino, comienza conectando los pines del módulo.VCCconecta el pin a la salida de 3.3V del Arduino. A continuación, conecta elGNDpin del módulo a uno de los pines de tierra del Arduino. Para los pines de control, conecte los pines del móduloRECpin al pin 2 del Arduino,PLAY_Eal pin 3,PLAY_Lal pin 4, yFTal pin 5.

Dado que el Arduino funciona a 5V, necesitará usar un divisor de tensión para conectar de forma segura los pines de control. Por ejemplo, conecte una resistencia de 5 kΩ desde el pin del Arduino hasta el pin de control del módulo, y luego conecte una resistencia de 3.3 kΩ desde el pin de control del módulo a tierra. Repita este proceso para cualquier pin de control adicional para asegurarse de que reciban los niveles de voltaje correctos.

Ejemplos de código y guía paso a paso

El siguiente fragmento de código define los pines utilizados para la grabación y la reproducción. Esto le permite hacer referencia fácilmente a estos pines en su código en lugar de usar valores fijos.

#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 is used for playback-edge trigger
#define PLAY_L 4 // pin 4 is used for playback

En la función setup, inicializamos los pines como salidas. Esto garantiza que el Arduino pueda controlar el módulo ISD1820 de manera efectiva.

void setup() 
{
  pinMode(REC, OUTPUT); // set the REC pin as output
  pinMode(PLAY_L, OUTPUT); // set the PLAY_L pin as output
  pinMode(PLAY_E, OUTPUT); // set the PLAY_E pin as output
}

El bucle principal comprueba la entrada del usuario desde el monitor serie. Dependiendo del carácter recibido, activará las acciones correspondientes, como grabar o reproducir audio.

void loop() {
  while (Serial.available() > 0) {
    char inChar = (char)Serial.read();
    if (inChar == 'p' || inChar == 'P') {
      digitalWrite(PLAY_E, HIGH); // Start playback
      delay(50);
      digitalWrite(PLAY_E, LOW); // Stop playback
    }
}

Esta estructura condicional permite un control flexible del ISD1820 basado en la entrada del usuario, facilitando grabar y reproducir audio según sea necesario. Para más detalles, el código completo se encuentra debajo del artículo.

Demostración / Qué esperar

Una vez que todo esté configurado y el código esté subido, deberías poder grabar audio enviando elrcomando a través del monitor serie y reproducción usando elpcomando. El comportamiento esperado incluye una respuesta en el monitor serial que indique cuándo comienza y termina la grabación, así como cuándo inicia y finaliza la reproducción. Ten en cuenta el tiempo establecido en el código; por ejemplo, la grabación está configurada por 3 segundos y la reproducción por 5 segundos (en el video a 05:00).

Imágenes

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
72-This is the Arduino code and video: ISD1820 Arduino Voice Recorder
Idioma: C++
/*
 * ISD1820 Arduino Voice Recorder
 * to record and playback sound using Arduino and ISD1820 Sound Recorder

 * Watch the video https://youtu.be/IfK8z_o5vbk
 * get this code from https://robojax.com
 * Get this code and other Arduino codes from Robojax.com/RJT58
 
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place. 

/*
 * ISD1820 Arduino Voice Recorder
 * Code Written by Ahmad Shamshiri for Robojax.com
 * on Jan 04, 2018 at 08:57, in Ajax, Ontario, Canada
  * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.
 */
#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 , P-E is used for playback-edge trigger
// when PLAY_E goes HIGH, playback STARTS and continues
// ISD1820 Arduino Voice Recorder for Robojax.com 

#define PLAY_L 4 // pin 4 , P-Lis used for playback  
// when PLAY_L is HIGH, it will playback. As soon as it goes LOW, playback STOPS
// So you have to keep it HIGH to keep playing


#define FT 5 // pin 5 is used for feed through
// if the SPI (speaker) pin is used to send audio to another device, 
// set FT to high and any audio from the microphone will pass through the SPI connector
// and will NOT record

#define playTime 5000 // playback time 5 seconds
#define recordTime 3000 // recording time 3 seconds
#define playLTime 900 // press and release playback time 0.9 seconds

void setup() 
{
  // ISD1820 Arduino Voice Recorder for Robojax.com 
  pinMode(REC,OUTPUT);// set the REC pin as output
  pinMode(PLAY_L,OUTPUT);// set the PLAY_L pin as output
  pinMode(PLAY_E,OUTPUT);// set the PLAY_e pin as output
  pinMode(FT,OUTPUT);// set the FT pin as output  
  Serial.begin(9600);// set up Serial monitor   
}

void loop() {
  // ISD1820 Arduino Voice Recorder for Robojax.com 
    while (Serial.available() > 0) {
          char inChar = (char)Serial.read();
            if(inChar =='p' || inChar =='P'){
            digitalWrite(PLAY_E, HIGH);
            delay(50);
            digitalWrite(PLAY_E, LOW);  
              Serial.println("Playback Started");  
            delay(playTime);
            
              Serial.println("Playback Ended");
            break; 
            }// if          
            else if(inChar =='r' || inChar =='R'){
              digitalWrite(REC, HIGH);
              Serial.println("Recording started");
              delay(recordTime);
              digitalWrite(REC, LOW);
              Serial.println("Recording Stopped ");              
            } 
            else if(inChar =='l' || inChar =='L'){
            digitalWrite(PLAY_L, HIGH); 
              Serial.println("Playback L Started");  
            delay(playLTime);
            digitalWrite(PLAY_L, LOW);
              Serial.println("Playback L Ended");            
            }             
    // ISD1820 Arduino Voice Recorder for Robojax.com         
      Serial.println("**** Serial Monitor Exited");      
    }// wihile
Serial.println("**** Enter r to record, p to play");

  delay(500);
}

Cosas que podrías necesitar

Recursos y referencias

Aún no hay recursos.

Archivos📁

Archivo de Fritzing