InicioTarjetas de DesarrolloArduino¿Cómo usar el grabador de voz I2C DFR0699?

¿Cómo usar el grabador de voz I2C DFR0699?

El grabador de voz I2C DFR0699 puede realizar grabación y reproducción de audio por medio de audífonos o bocinas que sean integradas al modulo. A continuación te mostraremos como usarlo para que lo puedas integrar en tus proyectos.

Introducción

Este grabador de voz I2C DFR0699 pertenece a la familia de DF Robot y se puede usar de dos formas:

    1. Directamente, sin programar solamente alimentándolo con un voltaje entre 3.3V a 5V y siguiendo las instrucciones de grabado, reproducción y eliminación de audio.

    2.Controlando el módulo por medio de una tarjeta de desarrollo (Arduino,ESP32) y programando en IDE Arduino, micro:biT o mPyton.

Mi Primera Grabación en el grabador de voz I2C DFR0699

Para ello requeriremos solamente alimentar nuestro módulo de DF Robot a un voltaje de 3.3V/ 5V, por el momento SCL y SDA no los conectaremos a ninguna tarjeta de desarrollo.

Ahora por medio del Switch Toggle , podremos acceder a los modos para poder realizar la grabación , reproducción o eliminación de audio.

Modo Grabación

  1. Mueva el interruptor hacia arriba y hacia abajo para seleccionar el número que puede almacenar la grabación. Para el número sin registro, el LED no se enciende.
  2. Mantenga presionado el interruptor de palanca, cuando el LED se vuelve rojo, comienza la grabación.
  3. El número x10 que se muestra en el tubo digital indica el tiempo de grabación restante disponible. Si muestra 8, significa que puede grabar durante unos 80 segundos. Cualquier operación del interruptor de palanca detendrá la grabación

Reproducción de Audio

  1. Mueva el interruptor hacia arriba y hacia abajo para seleccionar el número con grabación.
  2. Para el número con una grabación, el LED se muestra amarillo.
  3. Presione brevemente el interruptor de palanca, el LED se volverá verde y comenzará a reproducir. Cualquier operación del interruptor de palanca en este punto, detendrá la grabación.

Eliminación de Audio

  • Mueva el interruptor hacia arriba y hacia abajo para seleccionar el número con grabación
  • El número con una grabación, el LED es amarillo
  • Mantenga presionado el interruptor de palanca, la luz LED parpadea en rojo rápidamente, comience a eliminar
  • Después de que el LED parpadee, la eliminación está completa y el número actual se puede volver a grabar

Uso mediante I2C

Para este caso mostraremos como grabar y reproducir audio mediante el protocoló I2C; para esto el módulo será implementando el módulo en un sistema sencillo de control de temperatura; el sistema permitirá la grabación de un mensaje personalizado el cual será reproducido cuando la temperatura exceda un límite preestablecido, sirviendo como alerta.

Materiales

Para esta practica necesitaremos:

Conexiones

Como aclaración hay que recordar que el módulo no reproducirá audio por si solo; para esto requiere de ser conectado a un altavoz mediante su conector PH2.0

Código

Para nuestro programa haremos uso de una librería especifica para el manejo del modulo DRF0699, esta librería se llama “DFRobot_VoiceRecoder” y puedes descargarla directamente del administrador de librerías del Arduino IDE.

//Este ejemplo funciona como un sistema simple de alerta, el cual activara una alarma cuando la temperatura detectada por el sensor 
//DHT haya sido excedida
//El circuito nos permite grabar un mensaje personalizado de alerta y este será reproducido cuando se huaya excedido al temperatura preestablecida

#include "DFRobot_VoiceRecorder.h" //Incluimos la libreria del modulo de grabacion de voz 
#include <DHT.h>           //Incluimos la librería del sensor de temperatura DHT

#define DHTTYPE  11   //Definimos el modelo del sensor DHT22
#define DHTPIN    4     //Se define el pin D4 del ESP32 para conectar el sensor DHT22

#define VOICE_ADDRESS  0x30      // Direccion I2C por defecto del modulo de grabacion de audio
DFRobot_VoiceRecorder_I2C voicerecorder(&Wire, VOICE_ADDRESS);

DHT dht(DHTPIN, DHTTYPE); 

int izquierdo = 3;    //Pines para la conexion de los pulsadores de grabacion del mensaje de alerta
int derecho = 2;       
int confirmacion = 0;
int grabacion = 0; 
void setup() {

  Serial.begin(115200);
  pinMode(grabacion,INPUT);
  pinMode(confirmacion,INPUT);
  dht.begin(); 

  while(voicerecorder.begin() != 0) {   //Inicializamos la comunicaion I2C con el modulo de audio 
    Serial.println("i2c device number error!");
    delay(1000);
  } 
  Serial.println("i2c connect success!");
  Serial.println("Si desea grabar un nuevo mensaje de alerta presione el boton izquierdo"); //Esta seccion permite grabar el mensaje de alerta
  delay(4000);
  confirmacion = digitalRead(izquierdo);
  if (confirmacion == HIGH){
      Serial.println("Presione el boton derecho para grabar su mensaje de alerta");
      delay(4000);
      grabacion = digitalRead(derecho);
        if (grabacion == HIGH){
          Serial.println("Borrando Voz 0");   
          voicerecorder.setVoiceNumber(VOICE_NUMBER_0); //Colocaremos el mensaje de alerta en el registro 0

          Serial.println("Voz borrada");
          voicerecorder.deleteVoice();   //Borramos el audio que estaba almacenado en el registro 0

          for (int8_t n = 3; n > 0; n--)  //EsperaMos 3 segundos antes de grabar 
          {
            Serial.println(n);
            delay(1000);
          }

          Serial.println("Grabacion iniciada");
          voicerecorder.recordvoiceStart(); //Iniciamos la grabacion, hable cerca del microfono del modulo

          for (int8_t n = 10; n > 0; n--)   //Grabamos un mensaje de maximo 10 segundos
          {
            Serial.println(n);
            delay(1000);
          }

          voicerecorder.recordVoiceEnd();  //Finalizamos la grabacion 
          Serial.println("Grabacion finalizada");
        }
  }
}
  

void loop() {
  float t = dht.readTemperature(); //Se lee la temperatura y se asigna el valor a "h"
  if (t > 20){   //En caso de exceder una temperatura limite el mensaje de alerta sera reproducido
      uint8_t voiceNum = 0;
      voicerecorder.setVoiceNumber(voiceNum); 
      voicerecorder.playVoiceStart();
  }
  Serial.println(t); //imprimimos el valor de la temperatura
  delay (2000);
}

En el siguiente video podremos observar el funcionamiento del circuito.

Conclusiones

En esta práctica exploramos el funcionamiento del módulo grabador de voz DFR0699 tanto en su forma más básica realizando una grabación manual, como mediante la comunicación I2C. Para el ultimo caso esta fue aplicada mediante la implementación del módulo en un sistema de alerta de temperatura. Esto nos permitió ver las posibilidades en cuanto a aplicaciones de este módulo.

Para aprender más

Si quieres aprender mas sobre como utilizar la gamma de sensores DHT que fueron usados también en esta practica dale un vistazo a estos otros proyectos en nuestro blog.

TUTORIALES RELACIONADOS