![]() |
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.
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.
- /*
- * Exemplo de uso do Módulo Gravador de Voz com ISD1820
- */
- // Conexões
- const int pinPlay = 2;
- const int pinRec = 3;
- const int pinTrigger = 4;
- const int pinEcho = 5;
- // Iniciação
- void setup() {
- // Inicia o sentido dos pinos
- pinMode (pinPlay, OUTPUT);
- pinMode (pinRec, OUTPUT);
- pinMode (pinTrigger, OUTPUT);
- pinMode (pinEcho, INPUT);
- // Inicia o estado dos pinos
- digitalWrite (pinPlay, LOW);
- digitalWrite (pinRec, LOW);
- digitalWrite (pinTrigger, LOW);
- // Faz uma gravação de 5 segundos
- digitalWrite (pinRec, HIGH);
- delay (5000);
- digitalWrite (pinRec, LOW);
- }
- // Loop principal
- void loop() {
- // Verifica se tem algo próximo
- digitalWrite (pinTrigger, HIGH);
- delayMicroseconds (20);
- digitalWrite (pinTrigger, LOW);
- long tEcho = pulseIn (pinEcho, HIGH, 38000L);
- if (tEcho < 2900L) {
- // Toca a gravação
- digitalWrite (pinPlay, HIGH);
- delay (10);
- digitalWrite (pinPlay, LOW);
- // Aguarda acabar
- delay(5000);
- }
- // Dar um tempo entre as leituras
- delay (500);
- }
Nenhum comentário:
Postar um comentário