terça-feira, agosto 25, 2020

Módulo Gravador de Voz Usando o ISD1820

Vamos hoje dar uma olhada rápida neste módulo de gravação de voz que você encontra nos botecos que vendem módulos "para Arduino".

O módulo ligado a um Arduino para acionamento comandado por um sensor ultrassônico

O ISD1820 é um integrado capaz de gravar uma mensagem de voz de até 20 segundos na sua memória interna e reproduzi-la. Ele requer poucos componentes externos (resistores e capacitores) para conectar um microfone e um alto-falante. O módulo que vamos ver se baseia no circuito exemplo contido no datasheet (não achei o datasheet específico do ISD1820, mas tudo indica que é um exemplar da série ISD1800, descrita neste documento, com memória para até 20 segundos).

Por falar nestes "até 20 segundos"... O tempo máximo de gravação depende da taxa de amostragem, que é controlada por um resistor (R2 no módulo). O módulo vem com um resistor de 100K, o que limita o tempo em 10 segundos:


Vamos examinar primeiro a operação do módulo isolado. Para isto basta colocar uma alimentação de 3,0 a 5,0V entre os pinos VCC e GND do conector de pinos. A operação é feita através de 3 botões:
  • REC: a gravação começa quando você aperta este botão e dura até você soltar o botão ou acabar a memória.
  • PLAYE: aperte e solte este botão para reproduzir a mensagem gravada. O "E" é de "edge" (borda): a reprodução é disparada pela mudança de nível baixo para alto em um pino do ISD1820.
  • PLAYL: aperte e mantenha pressionado para reproduzir a mensagem gravada. O "L" é de "level" (nível): a reprodução é feita enquanto é mantido o nível alto em um pino do ISD1820.
Estes três sinais estão também disponíveis no conector de pinos (com os nomes REC, P-E e P-L), juntamente com um sinal FT que, quando em nível alto, transforma o ISD1820 num amplificador, reproduzindo diretamente no alto falante o sinal do microfone.

Um LED fica aceso enquanto está sendo feita a gravação e pisca rapidamente quando a reprodução é concluída.
 
Ao lado do conector de pinos tem dois jumpers:
  • FT: fixa o sinal FT (transformando o gravador em um amplificador do microfone)
  • P-E: conecta o sinal P-E ao sinal do LED, fazendo com que a gravação seja reproduzida continuamente. 

Vamos fazer uma brincadeira simples com um Arduino, ligado ao módulo ISD1920 e um sensor ultrassônico HC-SR04:


O programa abaixo dispara uma gravação de 5 segundos quando o Arduino é ressetado; depois disso a mensagem será tocada quando o sensor ultrassônico detectar que tem um obstáculo a menos de 0,5 metro.
  1. /* 
  2.  * Exemplo de uso do Módulo Gravador de Voz com ISD1820 
  3.  */  
  4.   
  5. // Conexões  
  6. const int pinPlay = 2;  
  7. const int pinRec = 3;  
  8. const int pinTrigger = 4;    
  9. const int pinEcho = 5;  
  10.   
  11. // Iniciação  
  12. void setup() {  
  13.   // Inicia o sentido dos pinos  
  14.   pinMode (pinPlay, OUTPUT);  
  15.   pinMode (pinRec, OUTPUT);  
  16.   pinMode (pinTrigger, OUTPUT);  
  17.   pinMode (pinEcho, INPUT);  
  18.     
  19.   // Inicia o estado dos pinos  
  20.   digitalWrite (pinPlay, LOW);  
  21.   digitalWrite (pinRec, LOW);  
  22.   digitalWrite (pinTrigger, LOW);  
  23.   
  24.   // Faz uma gravação de 5 segundos  
  25.   digitalWrite (pinRec, HIGH);  
  26.   delay (5000);  
  27.   digitalWrite (pinRec, LOW);  
  28. }  
  29.   
  30. // Loop principal  
  31. void loop() {  
  32.   // Verifica se tem algo próximo  
  33.   digitalWrite (pinTrigger, HIGH);    
  34.   delayMicroseconds (20);    
  35.   digitalWrite (pinTrigger, LOW);    
  36.   long tEcho = pulseIn (pinEcho, HIGH, 38000L);    
  37.   if (tEcho < 2900L) {    
  38.     // Toca a gravação  
  39.     digitalWrite (pinPlay, HIGH);  
  40.     delay (10);  
  41.     digitalWrite (pinPlay, LOW);  
  42.     // Aguarda acabar  
  43.     delay(5000);  
  44.   }  
  45.   // Dar um tempo entre as leituras  
  46.   delay (500);  
  47. }  
Embora interessante, este módulo não é muito versátil. O uso típico com microcontolador seria para emitir uma mensagem pré gravada quando um certa condição por detectada. Uma alternativa mais versátil (mas mais cara e sem capacidade de gravação) é usar um módulo MP3 (como este ou este).

Nenhum comentário: