Como utilizar o módulo de reconhecimento de voz SPCE061A com o Arduíno
Bruno Stabile
[email protected]
Pontifícia Universidade Católica de São Paulo Faculdade de Ciências Exatas e Tecnologia Engenheria Elétrica Capítulos
1. Introdução 2. Configuração do Sistema 3. Comunicação Serial com o módulo 4. Integração ao Arduíno Introdução Este documento propõe explicitar como programar o módulo de reconhecimento de voz produzido pela ELECHOUSE que possui o microcontrolador SPCE061A produzido pela SUNPLUS. O modulo é capacitado à realizar a gravação de 15 padrões diferentes, sendo estes
padrões de comandos de voz, frequências pré definidas ou também como variações de sinais elétricos, entretanto aqui iremos apenas demonstrar como ativar e desativar um LED, sendo que isto já retrata a base de conhecimento mínima necessária para realizar outras operações como ligar um motor. Configuração do Sistema O módulo foi utilizado em dois sistemas operacionais, Windows XP Professional e Windows 7 Professional, ambos não apresentaram problemas de compatibilidade. O kit comercializado pela ELECHOUSE[1] , inclui o modulo de reconhecimento de voz, cabos para ligação no Arduíno e o microfone para realizar a gravação dos comandos. Porém, para gravar os comandos no microcontrolador do modulo, necessitamos de um conversor USB TTL que irá interpretar os comandos enviados para o microcontrolador. Este conversor TTL[2] poderá ser encontrado na mesma loja que o módulo de reconhecimento de voz. Outrora, pode mos utilizar qualquer conversor TTL que possua interface de comunicação USB ou Serial. Entretanto, caso utilizar o conversor comercializado pela ELECHOUSE, é necessário instalar os drivers que irão reconhecer o dispositivo em nosso sistema, e disponível no link abaixo: Drivers do ConversorUSB-TTL[3] Após realizar o download, certifique-se que o conversor esteja desconectado do computador, assim abra a pasta "PL2303_Prolificá_DriverInstaller_v1_7_0", caso o arquivo estiver compactado com extensões .zip ou .7z descompacte-o para que não ocorram erros na instalação, e execute o arquivo "PL2303_Prolific_DriverInstaller_v1.7.0.exe". Concluída a instalação introduza o conversor em uma das portas USB e espere o termino de configuração do dispositivo. Devemos também verificar em qual porta “COM” do sistema o conversor está instalado, sendo que esta verificação deverá ser feita pelo “Gerenciador de Dispositivos” do Windows, sendo que este pode ser acessado pelo comando “devmgmt.msc “ introduzido no “Executar” que é localizado no “Menu Iniciar”. Com o gerenciador aberto, expandir a opção COM/LPT e verificar o dispositivo assim como na figura 1.
Figura 1: Gerenciador de Dispositivos – Portas COM Para verificar se a instalação foi concluída, utilize o arquivo "PL2303CheckChipVersion.exe" localizado na mesma pasta de instalação, sendo que este deverá exibir a versão instalada assim como na figura 2.
Figura 2: Verificação da instalação do Conversor TTL Com o conversor já configurado com o sistema operacional, conecte o módulo de voz ao conversor TTL seguindo o esquema de ligação da figura 3.
figura 3 : Esquema de ligação do módulo com o conversor Comunicação Serial com o módulo Aqui podemos utilizar qualquer software que envie comandos pela porta Serial de comunicação do computador, assim como o HyperTerminal. Os comandos de configuração do módulo serão enviados a partir do software AccessPort[4] neste tutorial, sendo que estes comandos são pré definidos pelo fabricante do microcontrolador. Os comandos poderão ser encontrados no manual elaborado pela ELECHOUSE[5]. Após realizar o download do AccessPort execute-o pelo arquivo “AccessPort.exe”, e lembre-se que este provavelmente também estará compactado, assim deve mos configurar a comunicação com o módulo em “tools>configuration”, ou então pressionando a tecla “F2”, abaixo estão as configurações necessárias:
COM”x”*
Baud rate: 9600
Parity bit: None
Data bit: 8
Stop bit: 1
Send format: Hex
Receive format: Char
* O “x” representa a porta conectada ao conversor verificada no gerenciador de dispositivos
Com as corretas configurações pressione “CTRL+P” e certifique-se o envio de comandos Hexadecimais pressionando “Hex” na parte de envio de comandos “Send->”. Inicialmente enviaremos o comando “AA 11” que representa ao microcontrolador a ação de gravar o primeiro grupo de comandos, sendo que é possível gravar até 3 grupos de comandos com 5 tipos diferentes em cada. Alguns feedbacks serão enviados para o AccessPort para o orientar o programador qual a instrução interpretada, veja na figura 4.
Figura 4: Comunicando com o módulo de voz A completa gravação de um comando é representada como “Finish one”, sendo que ao finalizar a gravação dos 5 comandos do grupo a mensagem “Group1 finished” é exibida . Após finalizada a gravação do primeiro grupo de instruções devemos enviar o comando “AA 21” que representa ao microcontrolador a ação de importar os comandos gravados no grupo 1 e iniciar o reconhecimento destes comandos. Integração ao Arduíno Com a programação do módulo c oncluída podemos iniciar a montagem do circuito junto ao Arduíno conforme a figura 6.
Figura 6 : Esquema de ligação do módulo de voz com o Arduíno Abaixo o código para programação do Arduíno com alguns comentários.
int led = 13; //ligar led no pino 13 byte com = 0; //comandos recebidos pelo modulo de voz void setup() { Serial.begin(9600); //definicao do led 13 como saída pinMode(led, OUTPUT);
delay(2000); //Comandos de configuracao do modulo de voz Serial.write(0xAA); Serial.write(0x37); delay(1000); //Comandos de configuracao do modulo de voz Serial.write(0xAA); Serial.write(0x22); //Pre definicao do estado do led 13 digitalWrite(led,HIGH); } void loop() // funcao de recorrencia { while(Serial.available()) { com = Serial.read(); switch(com) { //A cada comando reconhecido pelo módulo o Arduino irá piscar o LED 13 case 0x21: digitalWrite(led,LOW); delay(250); digitalWrite(led,HIGH); break; case 0x22: digitalWrite(led,LOW); delay(250); digitalWrite(led,HIGH);
break; case 0x23: digitalWrite(led,LOW); delay(250); digitalWrite(led,HIGH); break; case 0x24: digitalWrite(led,LOW); digitalWrite(led,HIGH); break; case 0x25: digitalWrite(led,LOW); delay(250); digitalWrite(led,HIGH); break; } } } Após a compilação do programa acima e feito o upload para a placa do Arduíno, pressione o botão “reset” do Arduíno e o sistema já poderá ser utilizado para acionar o LED 13. Links [1]
kit comercializado pela ELECHOUSE
http://www.elechouse.com/elechouse/index.php?main_page=product_info&cPath=168_170&product s_id=2151 [2]
conversor TTL
http://www.elechouse.com/elechouse/index.php?main_page=product_info... [3]
Drivers do ConversorUSB-TTL
http://www.elechouse.com/elechouse/index.php?main_page=product_info... [4]
software AccessPort
http://www.sudt.com/en/ap/download.htm [5]
manual elaborado pela ELECHOUSE
http://www.elechouse.com/elechouse/images/product/Voice%20Recogniti...