Hoje vamos aprender a usar o módulo de reprodução e gravação de áudio ISD 1820. O módulo pode ser usado sozinho, por meio de seus push buttons, ou com um MCU de interface(controle via GPIO).
Conheça um pouco mais sobre o módulo e aprenda a incorporá-lo nas suas aplicações.
O módulo de gravação e reprodução de voz é baseada no CI ISD 1820. O módulo oferece capacidade de playback entre 8 e 20 segundos e é facilmente controlado tanto por push-buttons como por um microcontrolador. Isso significa que não necessariamente você precisa ter o Arduino fazendo interface com ele, basta montar o circuito e usar os push-buttons integrados do módulo.
Nesse artigo vamos usar o Arduino, pois o mesmo oferece flexibilidade e a possibilidade de integrar a gravação e reprodução de áudio em um projeto de automação, por exemplo.
O coração do módulo é o CI ISD 1820. Ele é o responsável pelo processo de aquisição de voz e reprodução dos dados gravados na memória. Além do CI, uma rápida inspeção no módulo permite identificar um microfone de eletreto, o terminal de alimentação, os botões de controle, com as funções REC, PLAYE e PLAYL, e também as saídas para o auto-falante, que é o conector branco na extremidade do módulo.
Veja na figura abaixo a localização do microfone, dos terminais de alimentação e do CI ISD 1820:
Para selecionar o tempo de gravação, é necessário ajustar/trocar um resistor externo. A frequência de amostragem também é alterada por meio desse resistor. O tempo de gravação vai de 8 a 20 segundos, e a frequência de amostragem vai de 4 a 12kHz. O resistor default é de 100k. Como você pode conferir na tabela abaixo, isso significa que, por padrão, o módulo reproduz 10 segundos de áudio e possui frequência de amostragem de 6,4kHz.
Resistência Externa | Duração(segundos) | Sample Rate(Hz) | Bandwidht(Hz) |
80 | 8 | 8 | 3,4 |
100 | 10 | 6,4 | 2,6 |
120 | 12 | 5,3 | 2,3 |
160 | 16 | 4 | 1,7 |
200 | 20 | 3,2 | 1,3 |
Os pinos do módulo ISD 1820 são os seguintes:
Vale ressaltar a tensão de alimentação do módulo, que é de 3.3V, e não 5V. Portanto, fique atento para não alimentar o módulo com uma tensão maior do que 3.3V, sob risco de danificá-lo.
O procedimento de gravação/Reprodução manual consiste em 2 passos:
Neste artigo vamos implementar um exemplo para controlar o módulo por meio do arduino. O projeto será o seguinte:
Sempre que um objeto for detectado por um sensor de presença TCRT5000, vamos reproduzir um comando de voz previamente gravado.
Assim, nosso teste consiste em duas etapas: Acionar o botão de REC via Arduino para gravar o comando de voz desejado, e depois entrar num modo de identificação de objetos, no qual sempre que o sensor identificar a presença de um objeto, o módulo ISD 1820 irá reproduzir a gravação.
No módulo, você vai ver uma barra de pinos com 12 pinos, 6 do lado direito e seis do lado esquerdo. A configuração default é deixar os dois jumpers interconectando todos os 4 pinos do meio do lado interno. O significado de cada pino e configuração é mostrado na imagem abaixo:
Detalhe do conector ISD 1820
Quando os jampers estão conectados como em A(configuração P-E), a gravação é reproduzida de forma contínua. Quando está um jumper está conectado em B, não há alterações pois os dois pinos do meio não possuem funções. Quando um jumper está conectando os dois pinos em C, o modo F-T é habilitado.
Materiais necessários para o projeto Gravação e Reprodução de Áudio com Módulo ISD1820
O circuito junto com o TCRT5000 é mostrado abaixo. Nas ligações do módulo, por conveniência, mostramos apenas os pinos usados por nosso software.
Montagem TCRT5000, Arduino e ISD 1820
Para entender como montar o sensor TCRT5000, acesse esse outro post no qual o seu funcionamento é explicado e é feito um exemplo de aplicação.
O software usado é o seguinte:
#define saidaSensor 5 #define led 13 #define ativaPlayL 3 #define ativaREC 4 #define tempoReproducao 10000 int leituraSensor = 0; void setup() { pinMode(saidaSensor,INPUT); pinMode(ativaPlayL,OUTPUT); pinMode(ativaREC,OUTPUT); pinMode(led,OUTPUT);//Pino para ativar o led pinMode(saidaSensor,INPUT);//Pino ler o sinal no coletor do fototransistor Serial.begin(9600);//inicializa a porta serial com baud rate de 9600 MainMenu(); } void loop() { leituraSensor = digitalRead(saidaSensor); if (leituraSensor == 0 ) { digitalWrite(led,HIGH); digitalWrite(ativaPlayL,HIGH); delay(tempoReproducao); digitalWrite(ativaPlayL,LOW); } else digitalWrite(led,LOW); delay(1000); } void MainMenu() { int controlLoop = true; char byteRead; Serial.println("Digita a para gravar ou b para rodar a reproducao"); while(controlLoop) { if (Serial.available()) //verifica se tem dados diponível para leitura { byteRead = Serial.read(); //le bytwe mais recente no buffer da serial Serial.write(byteRead); //reenvia para o computador o dado recebido } if( byteRead == 'a') { Serial.println("Gravação começa no 3"); contador(3); digitalWrite(ativaREC,HIGH); Serial.println("Gravando por 10 segundos!"); contador(10); digitalWrite(ativaREC,LOW); Serial.print("Pronto!"); Serial.println("Digite b para comecar a reproducao"); byteRead = ' '; } if(byteRead == 'b' ) { controlLoop = false; byteRead = ' '; } } } void contador(int quantasVezes) { for(int i=0; i<quantasVezes; i++) { Serial.print(i+1); Serial.println("..."); delay(1000); } }
No programa, foram criadas duas funções auxiliares:
Ao energizar o arduino e com o terminal serial aberto, você verá as mensagens pedindo para gravar um novo áudio ou proceder para a reprodução. Se escolher gravar, você poderá gravar um novo áudio por 10 segundos(tempo padrão). Se escolher proceder para as reproduções, o firmware vai para a função void Loop(). Nesta função o sensor TCRT5000 é lido constantemente. Sempre que um objeto entra no raio de leitura, a saída do sensor muda de estado e é acionado o pino PLAYL do módulo ISD 1820 por 10 segundos.
Dependendo da sua aplicação, você pode fazer pequenos ajustes no código para reproduzir o áudio por um tempo menor ou utilizar outras funcionalidades do módulo ISD 1820.
Lembre-se de conferir o post sobre o sensor reflexivo TCRT5000 e recomendamos também a leitura das referências abaixo, principalmente a número 3, que é um guia do usuário sobre o ISD 1820. No mais, faça as adaptações no código para ajustar às suas necessidades e compartilhe suas dúvidas conosco.
Conheça a Metodologia Eletrogate e ofereça aulas de robótica em sua escola!
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!