centro estadual de educação tecnológica paula souza ... 41ª excute/eletrônica... · projeto do...

31
6 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 Centro Estadual de Educação Tecnológica Paula Souza GOVERNO DO ESTADO DE SÃO PAULO Etec “JORGE STREET”

Upload: lycong

Post on 08-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

6

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

Centro Estadual de Educação Tecnológica Paula Souza

GOVERNO DO ESTADO DE SÃO PAULO

Etec “JORGE STREET”

7

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

8

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

9

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

10

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

11

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.

12

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.

13

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:

14

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:

15

Figura 3 – Pinagem do arduíno

Circuito eletrônico

Figura 4 – circuito do Arduíno

16

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.

17

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.

18

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.

19

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.

20

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.

21

Figura 9 - Pinagem HM2007p

22

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

23

2.2 - Fluxograma

Figura 11 - fluxograma

24

2.3 - Croqui

Figura 12 - croqui

25

2.4 - Cronograma

Figura 13 – cronograma

26

3 – Desenvolvimento do projeto

3.1 – hardware

Circuíto elétrico

27

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.

28

3.2 – Produto final

29

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

30

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.

31

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.

32

Apendice A:

Programação do microcontrolador

33

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 ligado = 6;

int sinal = 7;

int modulo = 5 ;

int sala = 8;

int quarto = 9;

int cozinha = 10;

int suite = 11;

int banho = 12;

int vmodulo = 0;

int vsala = 0;

int vquarto = 0;

int vcozinha = 0;

int vsinal = 0;

int vmenos =0;

int vmais =0;

int valor =0;

#define sa (0)

#define qu (1)

#define co (2)

#define ap (3)

#define me (4)

#define ma (5)

#define mo (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 ");

34

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){

35

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{

36

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);

}