hm2007

Transcrição

hm2007
Centro Estadual de Educação Tecnológica Paula Souza
GOVERNO DO ESTADO DE SÃO PAULO
Etec “JORGE STREET”
PROJETO DO TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM
ELETRÔNICA
AUTOMAÇÃO RESIDENCIAL USANDO MICROCONTROLADOR E
MÓDULO DE RECONHECIMENTO DE VOZ
Francisco Marcelo Alves Borges
Fabio Stankevicius
Fernando Alves de Souza
Denis Soares Alves
Professor Orientador:
Salomão Chouri Jr.
São Caetano do Sul / SP
2015
6
AUTOMAÇÃO RESIDENCIAL USANDO MICROCONTROLADOR E
MÓDULO DE RECONHECIMENTO DE VOZ
Projeto do trabalho de Conclusão
de Curso apresentado como prérequisito para obtenção do Diploma
de Técnico em eletrônica.
São Caetano do Sul / SP
2015
7
RESUMO
A realidade de sistemas automatizados é cada vez mais aparente na vida
moderna. Casas e prédios já contam com sistemas integrados de controle que
possibilitam a realização de inúmeras atividades com facilidade e, em alguns
casos, sem haver a necessidade de presença física. Sistemas automatizados têm
o custo muito elevado e poucas pessoas têm acesso. Sendo assim, o presente
trabalho tem como justificativa pesquisar, implementar e simular uma solução de
baixo custo utilizando microcontroladores e módulos de reconhecimento de voz
que foi alcançado com êxito.
Palavras-chave: reconhecimento de voz, automação residencial e Arduíno
8
LISTA DE FIGURAS
Figura 1 – Pinagem do microcontrolador ..............................................................13
Figura 2 – entradas e saídas do arduíno ...............................................................14
Figura 3 – Pinagem do arduíno .............................................................................15
Figura 4 – circuito do Arduíno ...............................................................................15
Figura 5 – partes do arduíno .................................................................................16
Figura 6 – Comunicação serial com arduíno .........................................................17
Figura 7 - Forma de onda para "um.wav" .............................................................18
Figura 8 - Forma de onda para "dois.wav" ............................................................18
Figura 9 - Pinagem HM2007p ..............................................................................21
Figura 10 – Diagrama de blocos ...........................................................................22
Figura 11 - fluxograma ..........................................................................................23
Figura 12 - croqui ..................................................................................................24
Figura 13 - cronograma .........................................................................................25
9
Sumário
INTRODUÇÃO ......................................................................................................11
CAPÍTULO 1– FUNDAMENTAÇÃO TEÓRICA .....................................................13
1.1 – Microcontrolador .............................................................................................. 13
1.2 - Modulo de reconhecimento de voz ................................................................... 16
1.2.1 PRINCÍPIO BÁSICO DO RECONHECIMENTO DE VOZ .....................17
1.2.2 O CI DE RECONHECIMENTO DE VOZ ..............................................19
1.2.3 DESCRIÇÃO GERAL DA PLACA DE RECONHECIMENTO DE VOZ..20
2- PLANEJAMENTO .............................................................................................22
2.1 - Diagrama de blocos .......................................................................................... 22
2.2 - Fluxograma ....................................................................................................... 23
2.3 - Croqui................................................................................................................ 24
2.4 - Cronograma ...................................................................................................... 25
3 – DESENVOLVIMENTO DO PROJETO ............................................................26
3.1 – hardware .......................................................................................................... 26
3.2 – Software ........................................................................................................... 27
3.2 – Produto final ..................................................................................................... 28
3.3 - Previsão de custos ............................................................................................ 29
CONCLUSÃO........................................................................................................30
IMPLEMENTAÇÕES FUTURAS ...........................................................................31
APENDICE A:........................................................................................................32
PROGRAMAÇÃO DO MICROCONTROLADOR...................................................33
10
Introdução
O projeto foi o escolhido de uma lista com várias outra ideias do grupo, foi feita
uma votação entre os integrantes do grupo e os projetos mais votados foram:
Drone, substituição da bengala comum por uma eletrônica para deficientes visuais
e a automatização residencial. Depois da votação separamos os mais votados, e
escolhemos em uma reunião o projeto da automatização residencial porque seria
o mais viável e o que tinha tecnologias que queríamos pesquisar mais para
compreender melhor.
Este projeto tem como objetivo apresentar, simular e implementar uma solução de
automação residencial de pequeno e médio porte. Para tanto, serão utilizadas
tecnologias simples, procurando obter um resultado final de baixo custo e ótimo
funcionamento, e diminuir os requisitos de conhecimentos necessários ao usuário
operante do sistema. O controle poderá ser feito através de um comando de voz,
por exemplo, “luz quarto” a lâmpada do quarto se acenderá, e com o mesmo
comando poderá desligar a lâmpada. Esse comando de voz será reconhecido
pelo módulo de comando de voz, e que este será ligado ao microcontrolador, que
fará o controle de como e o que será acionado.
Este projeto vai atuar direto na automatização de residências, podendo ser
utilizado também em outras áreas como comércios, empresas e áreas comuns de
condomínios.
O setor de automatização residencial está em grande crescimento, pois os
proprietários/moradores estão se tornando mais e mais conscientes dos
benefícios da Automação Residencial.
Estes benefícios geram demanda enquanto suprem razões para que os
construtores incluam a automação residencial em suas novas construções e ao
mesmo tempo ainda ofereçam serviços da readequação para residências já
existentes.
11
Alguns dos benefícios, aqueles que podem imediatamente ser apropriados pelo
proprietário/morador são os seguintes:
Economia de energia
Economia de tempo e esforço
Segurança
Conforto
Acessibilidade
Este projeto segue uma linha de pesquisa bibliográfica baseada em
consultas a livros e sites da internet. Com base nessas pesquisas, o projeto tem
finalidade aplicada, ou seja, aplicação prática e experimental de seu objeto de
estudo.
A primeira etapa do projeto é o desenvolvimento da programação do
arduíno, através do software arduino-1.6.0.
A etapa seguinte constitui-se na construção do aparelho que vai conter os
hardwares todos utilizados e suas respectivas conexões de comunicações
externas.
12
CAPÍTULO 1– Fundamentação Teórica
1.1 – Microcontrolador
O microcontrolador é um dispositivo de fácil utilização, baixo custo e pode ser
utilizado em uma variedade imensa de aplicações. Trata-se de um “single chip
microcomputer”, ou seja, microcomputador em um único chip pois possui
internamente um microprocessador, memória de programa, memória de dados e
entradas e saídas. Esse microprocessador possui 28 pinos, sendo que 23 desses
podem ser utilizados como I/O . A imagem abaixo exibe a sua pinagem:
Figura 1 – Pinagem do microcontrolador
A placa Arduino UNO possui pinos de entrada e saídas digitais, assim como pinos
de entradas e saídas analógicas, abaixo é exibido a pinagem conhecida como o
padrão Arduino:
13
Figura 2 – entradas e saídas do arduíno
Conforme exibido na figura, a placa Arduino UNO possui 14 pinos que podem ser
usados como entrada ou saída digitias. Estes Pinos operam em 5 V, onde cada
pino pode fornecer ou receber uma corrente máxima de 40 mA. Cada pino possui
resistor de pull-up interno que pode ser habilitado por software. Alguns desse
pinos possuem funções especiais:
PWM : 3,5,6,9,10 e 11 podem ser usados como saídas PWM de 8 bits através da
função analogWrite();
Comunicação serial: 0 e 1 podem ser utilizados para comunicação serial. Deve-se
observar que estes pinos são ligados ao microcontrolador responsável pela
comunicação USB com o PC;
Interrupção externa: 2 e 3 . Estes pinos podem ser configurados para gera uma
interrupção externa, através da função attachInterrupt().
Para interface com o mundo analógico, a placa Arduino UNO possui 6 entradas,
onde cada uma tem a resolução de 10 bits. Por padrão a referencia do conversor
AD está ligada internamente a a 5V, ou seja, quando a entrada estiver com 5V o
valor da conversão analógica digital será 1023. O valor da referência pode ser
mudado através do pino AREF. A figura a seguir exibe a relação entre os pinos do
microcontrolador ATMEL ATMEGA328 e a pinagem do Arduino UNO:
14
Figura 3 – Pinagem do arduíno
Circuito eletrônico
Figura 4 – circuito do Arduíno
15
Figura 5 – partes do arduíno
1.2 - Modulo de reconhecimento de voz
O módulo VR3 (Voice Recognition V3) é uma versão compacta para
reconhecimento de voz. Este produto suporta até 80 comandos, sendo 7
funcionando simultaneamente. Além disso, qualquer som pode ser utilizado como
comando de voz.
16
Para conectar o VR3 no Arduino usamos o circuito abaixo:
Figura 6 – Comunicação serial com arduíno
1.2.1 PRINCÍPIO BÁSICO DO RECONHECIMENTO DE VOZ
O conceito fundamental aqui é que um som emitido pode ser convertido
em impulsos elétricos com o uso de um microfone, e estes impulsos podem ser
processados em sistemas digitais, como um computador, um microcontrolador.
Na forma digital, podem ser armazenados em memórias digitais. Veja abaixo
como ficaram armazenados em arquivos de computador os vocábulos "um" e
"dois". Os oscilogramas mostrados foram obtidos do programa "Wave Studio", da
Creative Labs Inc.
17
Comando: Som
Comando: Forma de Onda
Ouça "um"
(3594 bytes)
Figura 7 - Forma de onda para "um.wav"
Ouça "dois"
(3.287 bytes)
Figura 8 - Forma de onda para "dois.wav"
A diferença que você vê entre as formas de onda também pode ser detectada por
sistemas digitais através de um processamento das mesmas. Sistemas
denominados DSP's ("Processadores de Sinais Digitais") são especializados
neste tipo de tarefa, mas microprocessadores ou microcontroladores também
podem ser utilizados.
18
Um sistema simples de reconhecimento de voz recebe durante um
treinamento um conjunto de comandos (na forma de palavras ou expressões) e
os armazena. Posteriormente, em modo de recohecimento, sons serão recebidos
e comparados com os padrões de comando programados. Onde houver alguma
semelhança razoável, um comando é obedecido.
O reconhecimento de voz é dito "dependente do usuário" quando exige
uma semalhança bastante grande entre os padrões emitido e gravado para cada
comando, de modo que só deve reconhecer comandos de quem o treinou. Um
sistema independente do usuário é mais complexo, pois analisa e detecta
padrões de comando de modo a reconhecê-los, não importando quem os emitiu.
1.2.2 O CI DE RECONHECIMENTO DE VOZ
O HM2007 é um circuito integrado que já tem algum tempo de projeto. Sua
aplicação em sistemas comandados por voz é descrita em algumas páginas
interessantes da internet.
No CEFET/SC, foi utilizado na segunda versão da
Cadeira de Rodas Comandada por Voz.
O HM2007 é dependente de usuário, já inclue em sua construção o
sistema de áudio, com entrada para microfone.
A capacidade do sistema é para até 40 comandos de voz, de duração 0,96s,
ou até 20 comandos de 1,92s, com padrões armazenados em um ci auxiliar de
memória, de organização 8x x 8 bits. Esquemas de ampliação desta memória,
para um aumento do número de comandos, poderiam ser utilizados.
19
O ci pode ser controlado de duas formas:
no "modo manual", o treinamento dos comandos é feito com o auxílio de um
pequeno teclado numérico externo ou
no "modo CPU", o chip é comandado por um microcontrolador, que pode acionar
o processo de treinamento dos comandos e configurar outras opções de
funcionamento do sistema.
1.2.3 DESCRIÇÃO GERAL DA PLACA DE RECONHECIMENTO DE VOZ
O CI HM2007 é o centro do sistema, e se conecta a uma memória de 8k x 8,
uma entrada de microcofone, e a um latch de saída, implementado com um
74LS373. Este CI armazena o último comando reconhecido ou treinado, ou ainda
códigos de erro do sistema.
Para uso com um dos kits centrais, a alimentação do módulo é feita através
dos pinos "Vcc" e "GND" do conector de saída de comando. Opcionalmente, um
regulador pode ser montado na placa, provendo uma fonte de alimentação que
permite o uso da placa com outros sistemas, que podem mesmo ser alimentados
por ela. A bateria que provê armazenamento dos padrões de voz quando a placa
é desconectada da alimentação externa é composta por duas pilhas de 1,5V.
Para uso com kits de microcontrolador, um "jumper" permite o controle da
saída "tri-state" do latch de comandos, de modo que a placa pode ser utilizada
como uma porta de entrada em um sistema de decodificação de endereçamento.
Para experimentação, pode ser utilizada em conjunto com um módulo de teclado
para treinamento dos comandos e um algum sistema que utilize os comandos
reconhecidos.
Um outro recurso disponível na placa é um "jumper" para seleção do modo
de controle (manual ou CPU). No modo CPU o conector de teclado se torna a
entrada de interface para microcontrolador.
20
Figura 9 - Pinagem HM2007p
21
2- Planejamento
Para implementar o projeto foi realizado um planejamento do mesmo,
elaborando-se um diagrama de blocos para estruturar o hardware, um fluxograma
para estruturar o software, e um croqui para estruturar o projeto.
2.1 - Diagrama de blocos
Figura 10 – Diagrama de blocos
22
2.2 - Fluxograma
Figura 11 - fluxograma
23
2.3 - Croqui
Figura 12 - croqui
24
2.4 - Cronograma
Figura 13 – cronograma
25
3 – Desenvolvimento do projeto
3.1 – hardware
Circuíto elétrico
26
3.2 – Software
O software foi desenvolvido na plataforma Arduíno que utiliza uma linguagem bem
parecida com linguagen C.
A listagem completa encontra-se no apêndice A.
27
3.2 – Produto final
28
3.3 - Previsão de custos
 Uno R3 (ARDUINO)
R$ 20,90

Modulo de Reconhecimento por Voz:
R$ 50,49

Led’s, Plugues, Resistores:
R$ 25,90

Caixa de acoplamento (INTERFACE):
R$ 15,00
Total (INTERFACE):
R$ 112,29
 Montagem e acabamento da maquete:
R$ 138,77
Total do projeto:
R$ 251,06
29
Conclusão
O projeto proposto teve êxito em apresentar e implementar uma solução de
automação residencial por comando de voz de pequeno e médio porte. O projeto
em si seguiu de acordo com o planejado, não só isso, superou nossas
expectativas. Neste projeto utilizamos tecnologias não tivemos na grade do curso,
assim como o modulo VR3, a programação do Arduino e a do próprio modulo em
si.
Melhoramos nossa capacidade de trabalho em grupo.
30
Implementações futuras
Para possibilitar a aplicação comercial deste produto, as perspectivas de
melhorias são:

O desenvolvimento de novos periféricos de ação baseados na estrutura
disponibilizada. Desta forma será possível controlar outros elementos como
ar condicionado, banheira, microondas entre outros.

Aumentar a capacidade de armazenamento de instruções gravadas.

Melhorar o reconhecimento das vozes gravadas.

Aumentar o número de saídas de controle.

Implementar interfaces de saídas infra vermelho.
31
Apendice A:
Programação do microcontrolador
32
Programação do microcontrolador
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
VR myVR(2,3);
// 2:RX 3:TX, you can choose your favourite pins.
uint8_t records; // save record
uint8_t buf[64];
int
int
int
int
int
int
int
int
ligado = 6;
sinal = 7;
modulo = 5 ;
sala = 8;
quarto = 9;
cozinha = 10;
suite = 11;
banho = 12;
int
int
int
int
int
vmodulo = 0;
vsala = 0;
vquarto = 0;
vcozinha = 0;
vsinal = 0;
int vmenos =0;
int vmais =0;
int valor =0;
#define
#define
#define
#define
#define
#define
#define
sa
qu
co
ap
me
ma
mo
(0)
(1)
(2)
(3)
(4)
(5)
(6)
void printSignature(uint8_t *buf, int len)
{
int i;
for(i=0; i<len; i++){
if(buf[i]>0x19 && buf[i]<0x7F){
Serial.write(buf[i]);
}
else{
Serial.print("[");
Serial.print(buf[i], HEX);
Serial.print("]");
}
}
}
void printVR(uint8_t *buf)
{
Serial.println("VR Index\tGroup\tRecordNum\tSignature");
Serial.print(buf[2], DEC);
Serial.print("\t\t");
if(buf[0] == 0xFF){
Serial.print("NONE");
}
else if(buf[0]&0x80){
Serial.print("UG ");
33
Serial.print(buf[0]&(~0x80), DEC);
}
else{
Serial.print("SG ");
Serial.print(buf[0], DEC);
}
Serial.print("\t");
Serial.print(buf[1], DEC);
Serial.print("\t\t");
if(buf[3]>0){
printSignature(buf+4, buf[3]);
}
else{
Serial.print("NONE");
}
Serial.println("\r\n");
}
void setup()
{
/** initialize */
myVR.begin(9600);
Serial.begin(115200);
Serial.println("Elechouse Voice Recognition V3 Module\r\nControl LED sample");
pinMode(sala, OUTPUT);
pinMode(quarto, OUTPUT);
pinMode(cozinha, OUTPUT);
pinMode(suite, OUTPUT);
pinMode(banho, OUTPUT);
pinMode(sinal, OUTPUT);
pinMode(modulo, OUTPUT);
pinMode(ligado, OUTPUT);
digitalWrite(ligado, HIGH);
digitalWrite(sinal, LOW);
analogWrite(sala,0);
digitalWrite(quarto, LOW);
digitalWrite(cozinha, LOW);
digitalWrite(suite, LOW);
digitalWrite(banho, LOW);
digitalWrite(modulo, LOW);
if(myVR.clear() == 0){
Serial.println("Recognizer cleared.");
}else{
Serial.println("Not find VoiceRecognitionModule.");
Serial.println("Please check connection and restart Arduino.");
while(1);
}
if(myVR.load((uint8_t)sa) >= 0){
Serial.println("sala loaded");
}
if(myVR.load((uint8_t)qu) >= 0){
Serial.println("quarto loaded");
}
if(myVR.load((uint8_t)co) >= 0){
Serial.println("cozinha loaded");
}
if(myVR.load((uint8_t)ap) >= 0){
Serial.println("apagar loaded");
}
if(myVR.load((uint8_t)mo) >= 0){
Serial.println("modulo loaded");
}
if(myVR.load((uint8_t)me) >= 0){
34
Serial.println("menos loaded");
}
if(myVR.load((uint8_t)ma) >= 0){
Serial.println("mais loaded");
}
}
void loop()
{
if(vsinal == 1){
digitalWrite(sinal, HIGH);
delay(50);
digitalWrite(sinal, LOW);
delay(50);
digitalWrite(sinal, HIGH);
delay(50);
digitalWrite(sinal, LOW);
vsinal = 0;
}
int ret;
ret = myVR.recognize(buf, 50);
if(ret>0){
switch(buf[1]){
case sa:
vsinal = 1;
if(vsala == 0 && vmodulo == 1){
analogWrite(sala, 255);
digitalWrite(modulo, LOW);
valor = 255;
vsala = 1;
vmodulo = 0;
}
else{
if(vmodulo == 1){
vsinal = 1;
analogWrite(sala, 0);
digitalWrite(modulo, LOW);
vsala = 0;
valor = 0;
vmodulo = 0;
}
}
break;
case qu:
vsinal = 1;
if(vquarto == 0 && vmodulo == 1){
digitalWrite(quarto, HIGH);
digitalWrite(modulo, LOW);
vquarto = 1;
vmodulo = 0;
}
else{
vsinal = 1;
if(vmodulo == 1){
digitalWrite(quarto,LOW);
digitalWrite(modulo, LOW);
vquarto = 0;
vmodulo = 0;
}
}
break;
case co:
vsinal = 1;
if(vcozinha == 0 && vmodulo == 1){
digitalWrite(cozinha, HIGH);
digitalWrite(modulo, LOW);
vcozinha = 1;
vmodulo = 0;
}
else{
35
vsinal = 1;
if(vmodulo == 1){
digitalWrite(cozinha,LOW);
digitalWrite(modulo, LOW);
vcozinha = 0;
vmodulo = 0;
}
}
break;
case ap:
vsinal = 1;
if(vmodulo == 1){
analogWrite(sala, 0);
digitalWrite(quarto, LOW);
digitalWrite(cozinha, LOW);
digitalWrite(modulo, LOW);
vsala = 0;
vquarto = 0;
vcozinha = 0;
valor = 0;
vmodulo = 0;
}
break;
case mo:
vsinal = 1;
vmodulo = 1;
digitalWrite(modulo, HIGH);
break;
case me:
if(vmodulo == 1 & valor >= 50);
vsinal = 1;
valor = valor - 50;
analogWrite(sala, valor);
vsala = valor;
vmodulo = 0;
break;
case ma:
if(vmodulo == 1 & valor <= 200);
vsinal = 1;
valor = valor + 50;
analogWrite(sala, valor);
vsala = valor;
vmodulo = 0;
break;
default:
Serial.println("Record function undefined");
break;
}
}
printVR(buf);
}
36

Documentos relacionados