SlideShare ist ein Scribd-Unternehmen logo
1 von 101
Downloaden Sie, um offline zu lesen
UNIVERSIDADE DE UBERABA




            VALMIR FERREIRA ROCHA




  AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ,
UTILIZANDO MICROSOFT SPEECH RECOGNITION SDK 5.1




                 UBERLÂNDIA
                    2009
1



            VALMIR FERREIRA ROCHA




  AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ,
UTILIZANDO MICROSOFT SPEECH RECOGNITION SDK 5.1




                       Trabalho apresentado à Universidade de
                       Uberaba, como parte dos requisitos para
                       conclusão de graduação em Sistemas de
                       Informação da Universidade de Uberaba.


                       Orientador: Lilian R. Mendes Paiva. Ms




                 UBERLÂNDIA
                    2009
2




                           VALMIR FERREIRA ROCHA




     AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ, UTILIZANDO
            MICROSOFT SPEECH RECOGNITION SDK 5.1




                                           Trabalho apresentado à Universidade de
                                           Uberaba, como parte dos requisitos para
                                           conclusão de graduação em Sistemas de
                                           Informação da Universidade de Uberaba.


                                           Orientador(a): Lilian R. Mendes Paiva. Ms

                                           Área de concentração: Automação Residencial




Aprovada em: 05 de dezembro de 2009


Banca Examinadora:



                     Prof. Lilian R. Mendes Paiva. Ms – Orientadora
                                 Universidade de Uberaba


                           Maria Fernanda Soares de Almeida
                               Universidade de Uberaba

                       Prof. Carlos Magno Medeiros Queiroz. Ms
                                Universidade de Uberaba


                           Prof. Thiago Bruno Caparelli. Ms
                               Universidade de Uberaba
3




        A toda minha família.
               Aos meus pais.
             À minha Esposa.
A Deus, pela força de sempre.
4



                                  AGRADECIMENTOS




Primeiramente agradeço à Deus por ter me dado força de vontade para nunca desistir apesar
das grandes dificuldades ocorridas.
É com muita satisfação que dedico este trabalho aos meus pais, meus irmãos e a minha esposa
Gercilene Cristina, que sempre apostaram em mim, me deram apoio, carinho e compreensão,
sendo neste longo período as pessoas com quem sempre pude contar.

Ao meu amigo Rhobison Alves, que sempre me ajudou em momentos decisivos ao longo do
curso.

A todos os professores que de alguma forma contribuíram para esta conquista.

Aos verdadeiros amigos, compadres e parceiros que ganhei no decorrer de todo o curso.
5



                                          RESUMO




Atualmente, os sistemas automatizados são largamente utilizados devido à busca pela
qualidade de vida, segurança e controle de equipamentos. A automação surgiu para facilitar e
reduzir trabalhos, tanto empresarias e industriais como domésticos, proporcionando aos
usuários maior comodidade, conforto, praticidade, produtividade e redução de custos. Além
disso, a automatização de tarefas visa possibilitar a inclusão digital dos usuários de
necessidades especiais. Este trabalho apresenta o desenvolvimento de um sistema para
automatização de equipamentos residenciais através do reconhecimento de voz. O sistema
utiliza uma estrutura de hardware próprio responsável por realizar a conexão entre os
equipamentos. O protótipo desenvolvido permite que o monitoramento dos equipamentos seja
realizado em duas plataformas distintas sendo elas: Internet e aplicação desktop. O Microsoft
Speech Recognition (SDK), integrado ao protótipo para execução dos comandos por
reconhecimento de voz, fundamenta-se em agentes inteligentes, que é considerado como uma
entidade que executa um conjunto de operações que lhes foram incumbidas por um usuário ou
outro programa, com algum grau de independência ou autonomia e, executando estas
operações, emprega algum conhecimento dos objetivos ou desejos do usuário (IBM Research,
1998). A comunicação entre o computador pessoal (PC) e o hardware foi realizada através da
porta paralela. Sendo assim, o projeto utiliza tecnologias acessíveis, visando simplicidade e
baixo custo ao simular uma solução de pequeno porte. A criação da interface gráfica prioriza
um ambiente amigável e de simples utilização, já que seu objetivo é permitir que portadores
de necessidades especiais e pessoas sem grandes conhecimentos técnicos possam interagir
facilmente com o protótipo.


Palavras-chave: Agentes inteligentes, automação residencial, Microsoft Speech Recognition,
segurança, baixo custo, porta paralela.
6



                                          ABSTRACT




Currently, the automatized systems are widely used due to the constant search for quality of
life, safety and equipment control. Automation emerged in order to facilitate and reduce work,
company and industry work as well as domestic, offering more comfort, facility and cost
reduction. In addition to this, the automatization of tasks aims at enabling digital inclusion of
disabled users. This work presents the development of a system for automatization of
residential equipment through speech recognition. The system makes use of its own hardware
structure, which is responsible for making the connection among the equipment. The
prototype developed enables that the monitoring of the equipment to be done in two
different platforms, which are: Internet and desktop application. Microsoft Speech
Recognition (SDK), integrated with the prototype for the speech recognition execution, is
fundamented by intelligent agents, which are systems that hold autonomy and fulfill tasks,
which are always attached to an automatic executed action or to a manual outside action to be
executed. The communication between the personal computer (PC) and the hardware was
made possible through the parallel port. This way, the project makes use of accessible
technology, aiming at simplicity and low cost to simulate a smaller dimension solution. The
graphic interface creation prioritizes a simple and user-friendly environment, once its
objective is to allow that disabled people as well as those without much technical knowledge
can interact easily with the prototype.


Key words: intelligent agents, residential automation, Microsoft Speech Recognition, safety,
low cost, parallel port.
7



                                         LISTA DE FIGURAS




FIGURA 1.     ESQUEMA ELÉTRICO GERAL DO CIRCUITO.......................................... 30 
FIGURA 2.     PLACA DO LEDS ........................................................................................... 31 
FIGURA 3.     CIRCUITO DO DRIVER DE ACIONAMENTO ........................................... 32 
FIGURA 4.     CIRCUITO DO BUFFER PARA PROTEÇÃO DA PORTA PARALELA .... 34 
FIGURA 5.     CIRCUITO DA FONTE DE ALIMENTAÇÃO REGULADA (+5V) ............ 34 
FIGURA 6.     DIAGRAMA DAS FASES DO PROCESSO .................................................. 36 
FIGURA 7.     DB25 QUE FICA ATRÁS DO MICRO .......................................................... 39 
FIGURA 8.     CONECTOR MACHO DO CABO PARALELO. ........................................... 39 
FIGURA 9.     FOTO DO CONECTOR DB25 MACHO DO CABO PARALELO ............... 40 
FIGURA 10.       ESQUEMA DE FUNCIONAMENTO DO DB25 NO MODO SPP............ 40 
FIGURA 11.       CONECTOR CENTRONICS 36 PINOS ..................................................... 41 
FIGURA 12.       ESBOÇO DA CONEXÃO DO CONECTOR DB25 ................................... 42 
FIGURA 13.       CASO DE USO PRINCIPAL DO SISTEMA.............................................. 46 
FIGURA 14.       DIAGRAMA DE CLASSE DO MODULO WEB ....................................... 47 
FIGURA 15.       DIAGRAMA DE CLASSE DO MODULO DESKTOP.............................. 48 
FIGURA 16.       DIAGRAMA DA ESTRUTURA DOS APARELHOS ............................... 49 
FIGURA 17.       DIAGRAMA DA ESTRUTURA DOS USUÁRIOS. .................................. 50 
FIGURA 18.       DIAGRAMA ENTIDADE RELACIONAMENTO DO BD ....................... 51 
FIGURA 19.       CÓDIGO FONTE DA HABILITAÇÃO DO COMPONENTE DE VOZ ... 54 
FIGURA 20.       CÓDIGO FONTE DA EXECUÇÃO DOS COMANDOS .......................... 55 
FIGURA 21.       APLICAÇÃO DESKTOP ............................................................................ 58 
FIGURA 22.       CADASTRO DE APARELHOS NA APLICAÇÃO DESKTOP ................ 58 
FIGURA 23.       CADASTRO DE USUÁRIOS UTILIZADOS PARA ACESSO WEB....... 59 
FIGURA 24.       VISÃO GERAL DA ÁREA DE CADASTRAMENTOS............................ 59 
FIGURA 25.       APLICAÇÃO WEB (LOGIN) ..................................................................... 60 
FIGURA 26.       APLICAÇÃO WEB ..................................................................................... 60 
FIGURA 27.       TESTE EM PLACA DE PROTOBOARD................................................... 67 
FIGURA 28.       PROJETO NO COMPUTADOR ................................................................. 68 
FIGURA 29.       ADESIVO PLOTADO SEM MASCARA ................................................... 68 
8



FIGURA 30.       RETIRANDO A MASCARA ...................................................................... 69 
FIGURA 31.       COLANDO A MASCARA NO ADESIVO................................................. 69 
FIGURA 32.       FIXANDO BEM A MASCARA AO ADESIVO ........................................ 70 
FIGURA 33.       RETIRANDO A MASCARA ...................................................................... 70 
FIGURA 34.       COLANDO O ADESIVO NA PCB COM A MÁSCARA .......................... 71 
FIGURA 35.       RETIRANDO EXCESSO DE ADESIVOS ................................................. 71 
FIGURA 36.       VERIFICANDO PROJETO E PLACA ....................................................... 72 
FIGURA 37.       CORROENDO AS PLACAS COM PERCLORETO DE FERRO .............. 72 
FIGURA 38.       LAVANDO AS PLACAS APÓS CORROSÃO .......................................... 73 
FIGURA 39.       CORROSÃO FINALIZADA ....................................................................... 73 
FIGURA 40.       MONTAGEM DOS COMPONENTES ....................................................... 74 
FIGURA 41.       MONTANDO PROJETO ............................................................................. 74 
FIGURA 42.       PROJETO FINALIZADO ............................................................................ 75 
FIGURA 43.       TRANSISTOR BC337. ................................................................................ 75 
RETIRADO DE ROBOTERNETZ (ROBOTERNETZ, 2009). .............................................. 75 
FIGURA 44.       DIODO 1N4148 ........................................................................................... 76 
FIGURA 45.       RESISTOR (MILCOMP PRODUTOS ELETRÔNICOS LTDA., 2009). ... 77 
FIGURA 46.       RELÉ DE 5V ................................................................................................ 77 
FIGURA 47.       LED (DIODO SEMICONDUTOR) ............................................................. 78 
FIGURA 48.       CI 74LS541 .................................................................................................. 78 
9



                                           LISTA DE QUADROS




QUADRO 1 – Endereços da porta paralela .....................................................................   38
QUADRO 2 - Significado de cada pino do conector Centronics 36 pinos......................                      41
QUADRO 3 - Sequência de bytes gerados pela porta paralela .......................................              43
QUADRO 4 - Script para criação da base de dados........................................................        52
10



                                     LISTA DE SIGLAS




API – Application Programming Interface
AR – Automação Residencial.
CI – Circuito Integrado
CPU – Central Processing Unit
DMA – Direct Memory Access
ECP – Enhaced Capabilities Port
EPP – Enhaced Parallel Port
FFT - Fast Fourier Transform
IIS – Internet Information Service
LED – Light-Emitting Diode
PCB - Placa de Circuito Impresso
PCM – Pulse Code Modulation
RF – Reconhecimento da fala
RUP – Rational Unified Process
RV – Reconhecimento de voz
SSP – Standard Parallel Port
TF – Texto para Fala
TTS – Text to Speech
UML – Unified Modeling Language
XML – Extensible Markup Language
DLL - Dynamic-link library
11




                                                       SUMÁRIO

1.          INTRODUÇÃO .................................................................................................. 14 
1.1.        Justificativa ........................................................................................................... 14 
1.2.        Motivação ............................................................................................................. 14 
1.3.        Objetivos............................................................................................................... 15 
1.3.1.      Objetivo geral ....................................................................................................... 15 
1.3.2.      Objetivos específicos ............................................................................................ 15 
1.4.        Estrutura do trabalho ............................................................................................ 16 
2.          FUNDAMENTAÇÃO TEÓRICA ..................................................................... 17 
2.1.        Agentes inteligentes.............................................................................................. 17 
2.2.        Reconhecimento de voz ........................................................................................ 18 
2.2.1.      O que é o reconhecimento de voz? ....................................................................... 18 
2.2.2.      Como funciona?.................................................................................................... 19 
2.2.2.1.    Transformação PCM ............................................................................................ 19 
2.2.2.2.    Padrões acústicos .................................................................................................. 21 
2.2.2.3.    Modelos linguísticos ............................................................................................. 22 
2.3.        Microsoft speech recognition SDK ...................................................................... 23 
2.3.1.      Introdução ............................................................................................................. 23 
2.3.2.      SAPI ..................................................................................................................... 24 
2.3.3.      Gramática ............................................................................................................. 25 
2.3.4.      Regras ................................................................................................................... 26 
2.3.5.      Contexto livre de gramática .................................................................................. 27 
2.4.        Automação residencial (domótica) ....................................................................... 27 
2.4.1.      Objetivos da automação residencial ..................................................................... 27 
3.          HARDWARE ...................................................................................................... 29 
3.1.        Eagle Layout Editor .............................................................................................. 29 
3.2.        Estrutura do Hardware .......................................................................................... 35 
3.3.        Porta paralela ........................................................................................................ 37 
3.3.1.      Introdução ............................................................................................................. 37 
3.3.2.      Modelos de porta paralela .................................................................................... 37 
3.3.3.      Endereços da porta paralela .................................................................................. 38 
3.3.4.      Conector DB25 ..................................................................................................... 38 
3.3.5.      Conector macho Centronics 36 pinos ................................................................... 40 
3.3.6.      Ligando e desligando aparelhos externos através da porta paralela ..................... 42 
4.          DESENVOLVIMENTO DO SOFTWARE ...................................................... 44 
4.1.        Documentação ...................................................................................................... 44 
4.1.2.      UML ..................................................................................................................... 44 
4.1.2.1.    Diagramas de casos de uso ................................................................................... 45 
4.1.2.2.    Diagrama de classes.............................................................................................. 47 
12



4.2.              Metodologias ........................................................................................................ 51 
4.3.              Processo de comunicação entre software e SDK 5.1............................................ 53 
4.4.              Plano de testes ...................................................................................................... 55 
4.5.              Apresentação do software..................................................................................... 56 
4.5.2.            Introdução ............................................................................................................. 56 
4.5.3.            Requisitos funcionais............................................................................................ 57 
4.5.4.            Aplicação desktop ................................................................................................ 57 
4.5.5.            Aplicação web ...................................................................................................... 60 
5.                CONCLUSÃO..................................................................................................... 61 
5.1. Trabalhos futuros .............................................................................................................. 62 
REFERÊNCIAS ..................................................................................................................... 63 
ANEXOS ................................................................................................................................. 66 
APÊNDICE A - DESCREVENDO A CRIAÇÃO DA PLACA DE CIRCUITO
IMPRESSO (PCB).................................................................................................................. 67 
APÊNDICE B - COMPONENTES ELETRÔNICOS UTILIZADOS ............................. 75 
B.1 Transístor BC337 ............................................................................................................... 75 
B.2 Diodo 1N4148.................................................................................................................... 76 
B.3 Resistor .............................................................................................................................. 76 
B.4 Relé de 5V ......................................................................................................................... 77 
B.5 Led Verde / Led Vermelho 3mm ....................................................................................... 77 
B.6 Circuito Integrado 74LS541 .............................................................................................. 78 
APÊNDICE C – CENÁRIOS DOS CASOS DE USO ......................................................... 79 
C.1. UC1 - Cadastrar Aparelho ................................................................................................ 79 
C.2. UC2 - Consultar Aparelho ................................................................................................ 79 
C.3. UC3 - Alterar Aparelho .................................................................................................... 79 
C.4. UC4 - Excluir Aparelho .................................................................................................... 80 
C.5. UC5 - Cadastrar Usuário................................................................................................... 80 
C.6. UC6 - Consultar Usuário .................................................................................................. 81 
C.7. UC7 - Alterar Usuário....................................................................................................... 81 
C.8. UC8 - Excluir Usuário ...................................................................................................... 81 
C.9. UC9 - Validar Comando de Voz....................................................................................... 82 
C.10. UC10 - Ligar Aparelho ................................................................................................... 82 
C.11. UC11 - Desligar Aparelho ............................................................................................. 82 
C.12. UC12 - Aguardar Execução de Comando no Sistema .................................................... 83 
C.13. UC13 - Capturar informações do sistema Local ............................................................. 83 
C.14. UC14 - Validar Identificação .......................................................................................... 83 
APÊNDICE D – PLANO DE TESTES E RELATÓRIOS DE EXECUÇÃO ................... 83 
1.                INTRODUÇÃO .................................................................................................. 87 
1.1.              Finalidade ............................................................................................................. 87 
13



1.2.      Informações Detalhadas ....................................................................................... 87 
1.3.      Escopo .................................................................................................................. 87 
1.4.      Identificação do Projeto ........................................................................................ 87 
2.        REQUISITOS DE TESTE ................................................................................. 88 
2.1.      Teste Funcional .................................................................................................... 88 
2.2.      Teste de Interface do Usuário ............................................................................... 88 
2.3.      Teste de Configuração .......................................................................................... 88 
2.4.      Teste de Instalação ............................................................................................... 89 
3.        ESTRATÉGIA DE TESTE ............................................................................... 89 
3.1.      Tipos de Teste....................................................................................................... 89 
3.1.1.    Teste Funcional .................................................................................................... 89 
3.1.2.    Teste da Interface do Usuário ............................................................................... 90 
3.1.3.    Teste de Configuração .......................................................................................... 90 
3.1.4.    Teste de Instalação ............................................................................................... 91 
3.1.5.    Ferramentas .......................................................................................................... 91 
4.        RECURSOS ........................................................................................................ 92 
4.1.      Papéis .................................................................................................................... 92 
14



   1. INTRODUÇÃO




   1.1.       Justificativa




       A automação está cada dia mais presente em nosso cotidiano, tanto nas residências
quanto nas indústrias e shoppings. Isso se deve à vários fatores, tais como redução do tempo
disponível das pessoas e a constante preocupação das mesmas com a segurança e economia
dos recursos disponíveis. A domótica (automação residencial) tem evoluído a cada dia.
Atualmente, na maioria dos softwares existentes de automação, os usuários possuem
pequenos confortos, como por exemplo, portões eletrônicos, alarmes, luzes com timer, entre
outros. O grande objetivo é a convergência de tecnologias fazendo com que estejam
conectadas entre si, e que os moradores de uma residência automatizada tenham o máximo de
conforto e segurança que a tecnologia possibilitar (AFONSO, 2006).
       O campo de pesquisa relacionado ao reconhecimento de voz é muito grande,
envolvendo várias áreas, tais como jogos, editores de texto, extensão de habilidades para
deficientes físicos, atividades domésticas simples, tais como ligar e desligar aparelhos,
sistemas de reconhecimento de fala para possibilitar diálogos inteligentes com máquinas, uso
em pesquisas médicas sobre a voz e órgãos relacionados a sistemas de segurança.




   1.2.       Motivação




       Após levantamento de informações sobre diversos produtos disponíveis no mercado
envolvendo reconhecimento de voz, tais como o Voice Pilot (MICROSOFT, 2003), da
Microsoft, e o ViaVoice (IBM, 2009) da IBM, pode-se concluir que ainda existe espaço e
necessidade de criação de novos produtos nesta área, pois os já existentes possuem alto custo,
exigem hardware e software compatíveis e fazem com que exista uma constante dependência
de fabricantes externos. O sistema de automação apresentado neste projeto é independente de
especificações de hardware, possibilitando que qualquer computador doméstico simples seja
capaz de executar perfeitamente todo o sistema.
15



       Existe uma ausência de informações mais específicas em produtos para a área de
reconhecimento de voz, principalmente no Brasil, sendo que a maioria das referências
encontradas são provenientes de países da Europa e dos Estados Unidos. Diante destas
informações, este trabalho busca a utilização e integração com o componente Microsoft
Speech Recognition SDK (LONG, 2003), uma biblioteca de recursos disponibilizada
gratuitamente através do site da Microsoft (2009), que tem como objetivo auxiliar no
desenvolvimento de soluções com o reconhecimento de voz. Esta ferramenta foi integrada ao
software de Automação Residencial disponibilizando meios para controlar equipamentos
domésticos através do processamento computadorizado, com baixo custo e grande conforto.
Além disto, o trabalho tem como objetivo a contribuição para o processo de inclusão digital
dos portadores de necessidades especiais.


   1.3.       Objetivos




   1.3.1. Objetivo geral




       Desenvolver um sistema de automação residencial para reconhecimento de voz, com
“comandos únicos” que ativarão determinados pontos de energia conectados a aparelhos
eletroeletrônicos e domésticos, através da porta paralela do computador.




   1.3.2. Objetivos específicos




       Têm-se como objetivos específicos:
           a) Classificar e reconhecer palavras através do componente Microsoft Speech
              Recognition SDK 5.1;
           b) Ligar/Desligar o aparelho doméstico através do reconhecimento de voz;
           c) Possibilitar que os aparelhos da residência sejam controlados (Ligados ou
              Desligados) pelas aplicações desktop ou web;
           d) Permitir que o usuário monitore os estados de todos os aparelhos que estão ao
              seu controle pelas aplicações desktop e web.
16




   1.4.        Estrutura do trabalho




          O Capítulo 2 (dois) apresenta o estado da arte quanto ao funcionamento do
reconhecimento de voz, destacando a complexidade das técnicas e sua evolução. Conceitos
sobre Agentes Inteligentes diante do componente utilizado, reconhecimento da voz e seu
funcionamento. Descreve o Microsoft Speech Recognition, e uma breve descrição sobre
automação residencial e seus objetivos.
          O Capítulo 3 (três) relata toda a modelagem do sistema de automação residencial por
comando de voz, passando pela estrutura do hardware, softwares utilizados na construção do
projeto, componentes eletrônicos utilizados, os casos de uso e os planos de teste.
          O Capítulo 4 (quatro) apresenta o software que foi desenvolvido seguindo os
conhecimentos adquiridos através da pesquisa bibliográfica.
          O Capítulo 5 (cinco) traz a conclusão do trabalho e as propostas futuras para
melhorias do sistema.
17



   2. FUNDAMENTAÇÃO TEÓRICA




   2.1.        Agentes inteligentes




       Basicamente um agente inteligente possui autonomia e executa tarefas, estando
sempre vinculado a uma ação disparada automaticamente ou a uma ação externa manual a ser
executada. A utilização de agentes inteligentes é cada vez mais difundida no meio
computacional, principalmente nas áreas de interfaces, gerenciamento de redes, recuperação
de informação, sistemas distribuídos e automação em geral (BARONE; YEPES, 2002).
       O termo agente inteligente refere-se a todo ente que possui habilidade, capacidade e
permissão para atuar em nome de outro. Em termos usuais, agentes seriam pessoas com um
conhecimento ou recurso mais especializado em uma determinada área, mediante o qual
auxiliariam outros indivíduos em suas tarefas (BARONE; YEPES, 2002).
       Como ainda não é possível ter um consenso exato da definição sobre o termo agente
inteligente, algumas definições mais relevantes são destacadas de acordo com alguns
estudiosos:
       Segundo Wooldridge e Jennings (1994), são sistemas que apresentam um
comportamento que é determinado por um processo de raciocínio baseado na representação
de suas atitudes, tais como crenças, comprometimentos e desejos. Um sistema pode ser visto
como um agente se possuir as seguintes propriedades: autonomia, habilidade social,
reatividade, pró-atividade.
       De acordo com Nwana (1996), agente é um componente de software ou hardware
capaz de atuar para poder executar uma tarefa em nome de um usuário.
       Tem-se ainda a definição de Russel e Norvig (1995), segundo o qual a inteligência
está intrinsecamente relacionada com as ações racionais. Agir racionalmente significa agir de
forma a alcançar as metas definidas por alguém, dadas às crenças deste. Assim, definem de
forma genérica que um agente é algo que percebe seu ambiente por meio de sensores e atua
nesse ambiente por meio de atuadores.
18



   2.2.          Reconhecimento de voz




       Há alguns anos atrás, o reconhecimento de voz era considerado por muitos como
sendo apenas obra de ficção científica. Contudo, desde o final da década de 50, instituições de
pesquisa já estudavam meios de fazer com que a voz fosse processada pelo computador. De
fato, muitas aplicações estão sendo desenvolvidas atualmente no mercado. Um dos exemplos
mais comuns, com os quais a maioria de nós certamente já tivemos contato, é a tecnologia de
chamada por voz, presente em alguns celulares, rádio comunicadores e outros, existentes no
mercado (RABINER; JUANG, 1993).




   2.2.1. O que é o reconhecimento de voz?




       Frequentemente, a expressão “reconhecimento de voz” é utilizada com vários sentidos,
que, na verdade, referem-se a tecnologias distintas. O processamento da voz pode ser aplicado
em quatro áreas principais: comandos por voz, fala natural, síntese de voz e autenticação de
voz. Cada uma destas é descrita a seguir:
   a) O reconhecimento de palavras (utilizado nos comandos de voz) caracteriza-se por
          processar apenas um pequeno trecho de fala, de modo a identificar que tipo de ação o
          sistema deve tomar. Este processamento torna-se simplificado, uma vez que o sistema
          já sabe de antemão quais os comandos disponíveis para o utilizador. Este é o caso de
          centrais de atendimento telefônico, onde o utilizador pode usar a voz em vez de
          pressionar botões (GUILHOTO, 2002).
   b) O reconhecimento de fala natural (ou fala contínua) envolve uma ou mais frases,
          isto é, várias palavras que tenham um sentido semântico. A fala reconhecida é então
          convertida em texto. O tipo de aplicação mais comum para essa tecnologia é o ditado
          de documentos, para uso em processadores de texto, escrita de e-mails, etc.
          (GUILHOTO, 2002).
   c) A síntese de voz é o processo contrário ao do reconhecimento da fala. O sintetizador
          recebe um texto na forma digital e transforma-o em ondas sonoras, ou em outras
          palavras, fazendo uma leitura em voz alta. Um programa de síntese de voz é útil nas
          situações em que o utilizador não pode desviar a atenção para ler algo ou não tem
19



       acesso ao texto escrito, seja porque a informação está distante ou porque o utilizador
       tem alguma deficiência visual (GUILHOTO, 2002).
   d) A autenticação de voz baseia-se, por sua vez, no fato de que a voz é única para cada
       pessoa e pode ser utilizada para identificar alguém. Os sistemas de autenticação
       podem ser aplicados para permitir o acesso de uma pessoa a uma determinada função.
       Um telefone celular com esse recurso de voz, por exemplo, pode ser habilitado para
       que somente seu dono tenha o direito de usá-lo (GUILHOTO, 2002).




   2.2.2. Como funciona?




       O reconhecimento de voz evoluiu bastante ao longo dos últimos anos. Antes, o
reconhecimento processava-se apenas em modo discreto, isto é, o utilizador tinha que fazer
uma pausa entre cada palavra ditada. Atualmente, o utilizador já tem a possibilidade de
efetuar ditados contínuos ao computador. Além disso, o reconhecimento também se tornou
mais inteligente, uma vez que possui um conjunto de regras gramaticais incorporadas
permitindo, assim, uma melhor percepção do que está sendo ditado.
       Diferentes técnicas são utilizadas no processo do reconhecimento da voz humana, que
transforma os sinais de áudio digitais provenientes da placa de som em voz reconhecida. Estes
sinais passam por diversas etapas, ao longo das quais são aplicados métodos matemáticos e
estatísticos junto a sua gramática de forma a tentar compreender o que está a ser ditado
(WIKIPEDIA, 2009e).




   2.2.2.1.    Transformação PCM




       Quando o utilizador fornece um comando de voz pelo microfone, este é transmitido
para a placa de som, sendo o sinal analógico, possivelmente amostrado 16.000 vezes por
segundo. Em seguida, este é digitalizado através de uma técnica chamada Pulse Code
20



Modulation1 (PCM) (WIKIPEDIA, 2009e). Esta forma digital do sinal nada mais é do que
uma stream2 (WIKIPEDIA, 2009e) de amplitudes que representa o sinal analógico. No
entanto, o software de reconhecimento de voz não pode trabalhar diretamente com base nesta
stream, dado que é muito complicado procurar padrões que possam ser relacionadas com a
voz ditada atualmente. É por este motivo que a voz é transformada num conjunto de bandas
de frequência discreta através de uma            técnica chamada Fast Fourier Transform3 (FFT)
(WIKIPEDIA, 2009b). Esta consiste numa amostragem do sinal de áudio em cada centésimo
de segundo no domínio da frequência. Assim, a stream de entrada é agora representada por
um conjunto de bandas de frequência discretas, que podem ser facilmente identificadas pelos
componentes de frequência de um som. A partir destes componentes, é possível aproximar-
nos do que o ouvido humano consegue captar. O passo seguinte envolve o reconhecimento
destas bandas de frequência. Para isso, o software de reconhecimento de voz possui uma base
de dados de milhares de frequências ou “fonemas”. Um fonema é a menor unidade de fala de
um idioma ou dialeto.
        As dicções dos fonemas são diferentes entre si, de tal forma que, ao substituir um
fonema numa palavra, esta passa a ter um significado completamente diferente. Por exemplo,
se substituir o fonema “b” na palavra “bato” pelo fonema “m”, o significado será alterado
para “mato”.
        A base de dados de fonemas é usada para comparar e identificar as bandas de
frequência de áudio que foram amostradas. Se, por exemplo, a frequência de entrada tem um
som igual ao “t”, o software tentará compará-lo com o respectivo fonema na base de dados.
Ao encontrar o fonema correspondente, será atribuído ao sinal de entrada o número
identificador do fonema na base de dados, também chamado de ”feature number”4. Graças às
transformadas de Fourier e à base de dados de fonemas, tornou-se possível passar de um vetor
PCM com 16.000 entradas para um vetor com apenas 100 entradas (por segundo),
transformando o processo de reconhecimento em tempo real.




1
  Representação digital de um sinal analógico, onde a magnitude do sinal é amostrado regularmente em
intervalos uniformes, então quantizados para uma série de símbolos em um valor numérico (geralmente binário)
do código (WIKIPEDIA, 2009e).
2
  Pode ser definido como um fluxo de dados em um sistema computacional. Quando um arquivo é aberto para
edição, todo ele ou parte dele fica na memória, permitindo assim alterações, por isto somente quando ele é
fechado, tem-se a garantia de que nenhum dado se perderá ou será danificado (WIKIPEDIA, 2009f).
3
  É um algoritmo eficiente para calcular a transformada de Fourier discreta e a sua inversa (WIKIPEDIA,
2009g).
4
  Número identificador de cada fonema ditado, na base de dados do componente reconhecedor de voz.
21



   2.2.2.2.   Padrões acústicos




       O comando de voz é composto por diversos padrões acústicos e é justamente com eles
que são formados todos os fonemas para o reconhecimento da voz. Em primeira instância o
processo parece ser simples, a cada banda de frequência seria associado o seu fonema
correspondente, o software, em seguida, juntaria os fonemas em palavras e o computador
passaria a compreender, aparentemente, a voz humana. No entanto, o processo apresenta
maiores complexidades quando visualizado de forma detalhada. Podem existir tantas
variações no som, causadas pelo modo como as palavras são pronunciadas, que é quase
impossível localizar a entrada na base de dados correspondente ao som. Se não bastasse,
pessoas pronunciam a mesma palavra de formas diferentes e, para complicar ainda mais, o
ambiente também adiciona componentes de ruído em situações nas quais o utilizador
encontra-se em ambientes ruidosos. Assim sendo, o reconhecedor de voz pode apresentar
resultados diferentes dependendo da localização do utilizador e da qualidade do microfone
utilizado.
       Além disso, o próprio som de um fonema varia conforme os fonemas que o rodeiam e
o som produzido por um fonema altera-se desde o início da sua pronúncia até o seu fim.
Sendo assim, o software precisa usar técnicas complexas para aproximar o som de entrada e
descobrir quais os fonemas que estão envolvidos. O ruído de fundo e os problemas de
variação são solucionados com recurso de métodos estatísticos, ao permitirmos que um
feature number seja usado por mais do que um fonema.
       Isto apenas é possível porque a duração de um fonema é longa se comparada com a
frequência de amostragem de um centésimo de segundo. Quer dizer que enquanto um fonema
está a ser pronunciado, lhe são atribuídos vários feature numbers. Admitindo que o software
já foi treinado, ou seja, já foram estabelecidas as probabilidades de ocorrência de um
determinado feature number num fonema, resta-nos calcular a probabilidade do conjunto de
feature numbers registrados ser realmente o fonema (GUILHOTO; ROSA, 2001).
22



   2.2.2.3.    Modelos linguísticos




       Consiste em reconhecer palavras, comparando as combinações de fonemas com as
palavras contidas no dicionário utilizado pelo programa. Contudo, isto não é assim tão
simples: o utilizador pode se atrapalhar ao pronunciar uma palavra que não faz parte do
dicionário; o software de reconhecimento de voz pode enganar-se ao reconhecer uma palavra;
ainda não se sabe onde começa uma palavra e acaba a outra; o processamento de voz continua
incomportável no nível de exigências de CPU e de memória. É por isto tudo que se torna
necessário para o reconhecedor de voz restringir as possibilidades do que está a ser ditado,
através do recurso de modelos linguísticos e gramáticas adequadas. Se o sistema for
programado para fazer o reconhecimento de comandos, o modelo linguístico é mais simples
do que se fosse para reconhecimento da linguagem natural. Nesse caso, o dicionário contém
todas as formas possíveis de pronunciar cada comando registrado no sistema. Para a fala
contínua, é preciso que o sistema utilize um dicionário com todas as palavras da língua ou
pelo menos com todas as palavras usadas com maior frequência.
       As condicionantes não ficam por aqui. O dicionário deve também registrar as classes
gramaticais de cada vocábulo. Além disso, é preciso construir um modelo gramatical com as
construções possíveis e a probabilidade de ocorrência de cada tipo de construção. Com a
ajuda destas informações, o software de reconhecimento de voz tem condições para concluir
que as frases “foi à três anos” e “foi a três anos” não estão corretas, mas sim “foi há três
anos”. Mais uma vez, para o caso do ditado discreto (reconhecimento de comandos), as
gramáticas são muito mais simples, uma vez que o sistema sabe com antecedência quais as
palavras que estão à espera. Antes disto, o software deve processar os fonemas para
identificar corretamente o agrupamento de palavras. Os fonemas contidos em “foi há três
anos” sugerem termos como “foia” e “trêzanos”, que não estão no dicionário de vocábulos
conhecidos e, assim, devem ser descartados. Por outro lado, ao ouvir a palavra
“comunicação”, o reconhecedor de voz terá que decidir se ouviu “comunica ação” ou um
único termo. O modelo gramatical vai indicar qual é a construção mais plausível. Os
programas mais recentemente implementados fazem a análise de toda a frase para ampliar a
precisão do reconhecimento tomando, assim, vantagem do fato da linguagem apresentar uma
estrutura. Por exemplo, supondo que o reconhecedor de voz tem dúvidas entre a escolha das
palavras “hora” e “ora”, mas sabe que a palavra anterior é “uma”, então está na possibilidade
de efetuar a escolha certa porque sabe que a sequência “uma hora” faz mais sentido do que a
23



sequência “uma ora”. A técnica que está por detrás disto usa “trigramas”, baseados em
modelos estatísticos, que calculam a probabilidade de uma determinada sequência de palavras
ocorrer. A maioria dos pacotes de reconhecimento da fala vem com dicionários que contêm
cerca de 150 mil palavras do português. Os sistemas na língua inglesa também trabalham com
aproximadamente a mesma quantidade de termos no dicionário (GUILHOTO; ROSA, 2001).
.




    2.3.         Microsoft speech recognition SDK




    2.3.1. Introdução




        A Microsoft está há mais de uma década realizando pesquisas sobre sistemas de
reconhecimento de voz, inspirado a ficção cientifica, e sendo atribuídos a filmes, jogos,
sistemas de automação e vários outros (RABINER; JUANG, 1993).
        O Microsoft Speech SDK (SDK) é um kit de desenvolvimento de software para
construção de agentes de fala e aplicações para o Microsoft Windows. A interface de
programação de aplicações de fala (SAPI (Speech Application Programming Interface))
(MEGATTS, 2009) reduz de forma substancial o código requerido para que se possa utilizar
em um projeto o reconhecimento de voz (para mais informações sobre SAPI, ver seção
dedicada no item 2.3.2). Desta forma tenta-se fazer com que a tecnologia de fala torne-se mais
accessível e robusta para as novas aplicações que irão surgir (MICROSOFT, 2002).
        Este kit de desenvolvimento suporta OLE Automation5 (WIKIPÉDIA, 2009e) o que
permite a portabilidade do kit para as linguagens ou ambientes de programação que possuem
suporte a estas características, como Microsoft Visual Studio, Borland Delphi, C, C++.
Existem dois tipos básicos de máquinas SAPI que são o sistema de Texto para Fala (TF) e o
Reconhecimento de Voz (RV). O sistema de TF sintetiza o texto e arquivos para serem
5
  É um mecanismo para a comunicação entre processos baseado em Component Object Model (COM)
(MICROSOFT, 2002), introduzido pela Microsoft. Ele fornece uma infraestrutura na qual aplicações (chamadas
de controladores de automação) podem acessar e manipular dados compartilhados (chamados objetos de
automação) que são exportados por outras aplicações. Ela é uma evolução à Dynamic Data Exchange (DDE) (é
uma tecnologia para a comunicação entre múltiplas aplicações executadas em Microsoft Windows e OS/2
introduzida pela Microsoft em 1987.), é um mecanismo mais antigo para que aplicações controlem umas as
outras. Assim como em DDE, em OLE Automation o controlador de automação é o cliente, e a aplicação
exportando os objetos de automação, é o servidor.
24



ouvidos usando vozes sintéticas. O reconhecedor de fala converte a voz humana falada no
áudio para texto e arquivos.
   SAPI controla um grande número de aspectos de um sistema de fala, tais como:
         a) Controle de entrada de áudio
         b) Carrega arquivos de gramática (se foi criado dinamicamente ou criado a partir de
             dados que já existiam na memória);
         c) Compila padrões SAPI XML em formato de gramática, conversão de formatos
             gramaticais;
         d) Compartilhamento de reconhecimento através de múltiplas aplicações utilizando
             agentes compartilhados;
         e) Armazena dados e encaminha os resultados para análises posteriores.
   O reconhecedor de voz realiza as seguintes tarefas:
         a) Utiliza a interface de gramática do SAPI e carrega os comandos ditados;
         b) Realiza o reconhecimento;
         c) Retorna a partir do SAPI informações sobre a gramática e o estado das
             alterações;
         d) Gera reconhecimento e outros eventos para retornar informações a aplicação.




   2.3.2. SAPI




       A interface da programação das aplicações de voz (Speech Application Programming
Interface – SAPI) é uma API (Application Programming Interface) desenvolvida pela
Microsoft que permite a utilização do reconhecimento de voz (Speech Recognition) e síntese
de voz (TTS – Text To Speech) nas aplicações do Windows. Em geral, todas as versões desta
API foram projetadas para que os programas consigam comunicar de uma maneira fácil,
acessível e através de diversas linguagens de programação com o software que reconhece a
voz ou que converte o texto para voz. Nas versões, de 1 a 4 as aplicações comunicam
diretamente com os sistemas de voz. Estas API’s incluíam definições de interface abstratas
com os diversos programas e não necessitavam de mais recursos. Entretanto, na família SAPI
5 as aplicações e os sistemas não comunicam diretamente, associando a fala que está em
execução (sapi.dll) ao respectivo componente. Existe uma API que executa um destes
25



componentes para as aplicações e outro para o conjunto das relações entre os motores de voz.
Normalmente em SAPI 5, os programas dão a ordem para:
         a) Chamar através da API uma gramática para o reconhecimento da voz;
         b) Iniciar o reconhecimento de voz;
         c) Fornecer o texto ao sintetizador para ser convertido em voz.
       O componente sapi.dll em execução interpreta estes comandos e processa-os,
momento no qual torna-se necessário chamar o motor de voz que fará a interface. Um
exemplo é o carregamento do arquivo de gramática que é feito em tempo real e,
posteriormente, os seus dados são passados para o reconhecedor de voz, no qual são
atualizados para serem utilizados. Os motores do reconhecimento e síntese de voz também
geram eventos quando estão sendo processados (por exemplo, uma expressão vocal quando
reconhecida ou o final de uma palavra sintetizada).




   2.3.3. Gramática




       Para a Microsoft (2002), a gramática define as palavras que uma aplicação pode
reconhecer. O reconhecimento da fala (RF) é baseado na gramática. Uma aplicação pode
realizar o RF usando três diferentes tipos de gramática. Cada gramática utiliza-se de uma
estratégia diferente para reduzir a possibilidade de sentença a ser reconhecida aumentando,
assim, as chances de assertividade durante o processo de RF.
   a) Gramática em formato arquivo texto - Este tipo de gramática, que é definido em
       arquivo texto, tem o seu formato similar a arquivos “.ini”. Este arquivo consiste de um
       número de seções. Cada seção é identificada por uma nova linha com o nome da seção
       entre colchetes “[]”. As seções têm um número de valores, identificadas pelo nome do
       valor, seguido do sinal de igual “=” e finalmente pelo valor. Comentários podem ser
       acrescentados no arquivo. Para isto basta acrescentar ponto e virgula “;” ou duas
       barras “//”no início da linha. A vantagem do uso de listas consiste no fato das
       aplicações poderem setar facilmente novos parâmetros para a sua lista em tempo de
       execução sem ter que recompilar a gramática. O Anexo 1 possui um exemplo de uma
       gramática.
   b) Gramática livre - Aqui são utilizadas regras de uso, que predizem as próximas
       palavras, ou seja, reduz o número de candidatos para avaliar e para reconhecer a
26



       próxima palavra. Para iniciar o uso deste tipo de gramática no RF, a aplicação,
       primeiro deve ativar uma regra específica dentro da gramática. Isto coloca a regra
       dentro do nó inicial do reconhecimento. Em outras palavras, para a regra ser utilizada,
       deve ser colocado no “Start” de regra. Este tipo de padrão requer uma lista de todas as
       regras que podem ser ativadas. Contudo, estas listas devem optar por ter sempre um
       número mínimo de regras, pois, desta forma, a eficiência da gramática será aumentada
       crescendo, assim, a precisão do reconhecimento. Esta ferramenta é muito poderosa
       devido à habilidade de recursão, mas também pode se tornar muito complexa.
Gramática de ditado - Uma gramática de ditado define um contexto para falar, que identifica
o assunto do ditado, o tipo de estilo de idioma que é esperado, e que ditado foi acabado no
passado. Uma gramática de ditado não contém informação sobre o modelo de idioma (a
máquina tem aquela informação) nem especifica tudo das palavras que podem ser faladas.
Especifica somente palavras incomuns ou grupos esperados de palavras. Existem algumas
características que podem influenciar a gramática durante o seu processamento. O peso da
gramática é um destes fatores, utilizado a cada transação para alterar a semelhança dos
mesmos já iniciados. Este peso é uma probabilidade e a faixa de valores permitida está entre 0
e 1. Os com valores 0, sempre serão interpretados como transições impossíveis de passarem a
ser reconhecidos. Por definição, as gramáticas não possuem pesos definidos, para cada
transição o peso será 1 dividido pelo número de transições fora do estado de precedência
(O&A PRODUCTIONS, 2009).




   2.3.4. Regras




       Cada gramática pode conter uma ou mais regras. Podem ser de alto nível, indicando
que podem ser ativados para o reconhecimento. Cada uma tem um estado inicial, os quais são
conectados por vários tipos de transição:
   a) Uma palavra de transição indica uma palavra para ser reconhecida;
   b) Uma regra de transição indica uma referência para uma sub-regra;
   c) Transições especiais que caracterizam ditados especiais dentro de um contexto
27



   2.3.5. Contexto livre de gramática




       As referências para sub-regras podem ser recursivas, podem referenciar a elas
próprias, um ao outro de forma direta ou indiretamente.
       Notificações de regras chamam o agente para informar quando regras são adicionadas,
alteradas ou removidas. Existem cinco ações que são tomadas na realização das regras:
   a) Novas regras podem ser adicionadas;
   b) Regras podem ser removidas;
   c) Regras podem ser ativadas;
   d) Regras podem ser desativadas para o reconhecimento;
   e) Regras podem ser invalidadas, o qual é uma maneira utilizada para editar através de
       uma aplicação e deste modo o agente precisa fazer uma leitura nova do conteúdo da
       regra.




   2.4.         Automação residencial (domótica)




       A domótica, como é chamada a automação residencial, tem como principal objetivo a
integração de todos os equipamentos residenciais, vinculando-os em uma só tecnologia.
Independentemente dos problemas, a domótica visa atender às necessidades de usuários
domésticos em termos de conforto e segurança, e também apresenta algumas soluções em
termos de comunicação de dados.




   2.4.1. Objetivos da automação residencial




       A domótica visa solucionar uma série de problemas usando eletrônica e conceitos
muitas vezes vindos diretamente da ficção científica.


                        O objetivo da automação residencial é integrar iluminação, entretenimento,
                        segurança, telecomunicações, aquecimento, ar condicionado e muito mais
28



                através de um sistema inteligente programável e centralizado. Como
                consequência fornece praticidade, segurança, conforto e economia para o
                dia a dia dos usuários (ABREU, 2003).


De acordo com Abreu (2003), a automação residencial se divide em três tipos:


 a) Sistemas autômatos (stand alone): são divididos módulos entre os cômodos,
     onde cada um pode ser transmissor ou receptor e os módulos (que podem
     controlar luzes) podem ser controlados através de uma central na cabeceira da
     cama. O sistema pode ser montado aos poucos;
 b) Sistemas integrados com controle centralizado: a central é inteligente, as
     configurações podem ser simples ou complexas, inclui ações ativadas por
     eventos, equipamento controlado via infravermelho podem ser programados pela
     central;
 c) Sistemas de automação complexos: integração total dos sistemas domésticos, a
     residência precisa ser projetada para essa automação com cabeamento
     estruturado. Segundo Abreu (2003), os equipamentos, acessórios e técnicas
     comumente utilizadas na automação residencial são:


            Telefonia e transmissão de dados,
            Aquecimento e ar condicionado,
            Iluminação,
            Home theater e som ambiente,
            Vigilância, alarme, iluminação de segurança, e circuito interno de TV,
            Aparelhos eletrodomésticos,
            Cortinas e portas automáticas,
            Home offices.
29



   3. HARDWARE




   3.1.       Eagle Layout Editor




       O Eagle Layout Editor (CADSOFT ONLINE, 2009) é uma ferramenta de fácil uso e
poderosa para projeto de placas de circuito impresso (PCB). Desenvolvida pela empresa
CadSoft Online (2009), o EAGLE veio para facilitar a vida de estudantes e profissionais que
trabalham com desenvolvimento de placas de circuito impresso.
       Para os estudantes, ou aqueles que necessitam de um pequeno projeto, a CadSoft
disponibiliza uma versão freeware do EAGLE. Contudo, algumas funcionalidades mais
profissionais encontram-se desativadas.
       O EAGLE permite o desenho de circuitos elétricos, possibilitando colocar os símbolos
representativos dos componentes, o que facilita a visualização do projeto em si.
       A Figura 1 mostra uma visão geral do circuito, desenvolvido no EAGLE, com todas as
conexões entre os componentes. Foi definido a seguinte estrutura de conexões:
            SV9 – Conexão com a porta paralela do computador
            CON_PM e CON_PF – Conexões para interligar o Buffer de proteção da porta
              paralela com a placa dos LEDs
            SV1 a SV8 – Conexão da placa dos LEDs com o driver de acionamento
            SV10 – Conexão do driver de acionamento com a placa dos LEDs
            TRAFO – Ligação do transformador a fonte
30




                      Figura 1.      Esquema elétrico geral do circuito




       Na Figura 2 mostra a placa dos LEDs. Esta placa é interligada com a placa de driver
de acionamento (Figura 3) que está junto ao equipamento. Cada conexão é identificada por
um LED verde que, quando aceso, indica que o equipamento está ligado. Esta placa de LEDs,
como pode ser observado, foi desenvolvida para acoplar até 8 drivers de acionamento, ou seja,
até 8 equipamentos. Esta placa é composta apenas por resistores e diodos emissores de luz,
sendo que finalidade dos resistores é limitar a corrente que deve circular em cada led. Um led
31



padrão, para que acenda com intensidade razoável, deve ser percorrido por uma corrente de
+/- 10mA. Um led oferece uma queda de tensão de +/- 1.8V quando percorrido com sua
corrente nominal. Portanto, para calcular o valor dos resistores usamos a lei de ohm:


                                             V=R*I
Onde:
        V = tensão (que no caso é 5V - 1.8V de queda no led)
        R = resistência que queremos encontrar
        I = corrente que deve circular pelo led, que no nosso caso é 10mA = 0.01A
Então temos:
        5V-1.8V = R*0.01A
        R = 3.2V/0.01A
        R = 320ohms
Portanto, o valor comercial mais próximo para os resistores de 320ohms é 330ohms.




                                 Figura 2.       Placa do Leds




        O conjunto dos hardwares também é composto pelo driver de acionamento, que é
basicamente um transistor operando como chave para ligar ou desligar o relé, representado
como (K2 351). Este circuito é acoplado junto a cada equipamento, realizando o trabalho de
32



fechar ou abrir o circuito para passagem da corrente elétrica. No conector SV10 temos 3
sinais que são identificados da seguinte forma. 1=5V, 2=GND(terra), 3=Sinal para
ligar/desligar o transístor e, por consequência, o relé. Explicando mais a fundo, o driver de
acionamento recebe a alimentação (5V e GND) e o sinal para ligar/desligar o equipamento.
Antes de chegar ao transístor, o sinal deve passar por um resistor para limitar a corrente que
circula pela base do mesmo. Quando o sinal está presente, uma corrente circula pela base
fazendo com que este conduza, e uma corrente circule pelo relé e este tenha seus contatos
fechados, ligando o equipamento. O diodo em antiparalelo com o relé tem a função de prover
um caminho para a corrente quando o relé é desligado, protegendo o transístor contra uma alta
tensão que é gerada pela bobina do relé. É geralmente chamado de "diodo de roda livre". A
alta tensão acontece pelo fato da bobina do relé ser um indutor, que tem a característica de
manter a corrente que circula por ele constante, quando esta corrente é interrompida
bruscamente e, na tentativa de mantê-la constante, uma alta tensão aparece nos terminais do
indutor. Esta alta tensão, por sua vez, pode ser suficiente para danificar o transístor caso não
haja outro caminho para a corrente no indutor. Sobre o relé utilizado no projeto, este é
composto internamente por duas chaves, denominado (relé com contatos duplos).
       As chaves são nomeadas K1 e K2. Cada chave tem os terminais S, P e O (S1, P1, O1 e
S2, P2, O2). Como no projeto é necessária apenas uma chave, as duas foram ligadas em
paralelo formando, assim, uma única chave com maior capacidade de corrente. A Figura 3
destaca o driver de acionamento e seus contatos dos terminas que são ligados no paralelo.




                       Figura 3.      Circuito do driver de acionamento
33



    “P” é o terminal comum de cada chave.
    “S” é o terminal "Normalmente Aberto" de cada chave, ou seja, quando o relé está
       desenergizado, esta chave (formada por P e S) está aberta.
    “O” é o terminal "Normalmente Fechado" de cada chave, ou seja, quando o relé está
       desenergizado, esta chave (formada por P e O) está fechada.
       Os equipamentos são conectados aos terminais P e S ou seja, TP1 e TP2 de forma que,
quando o relé for energizado, esta chave é fechada e o equipamento é ligado. O terminal TP3
fica livre, servindo apenas caso seja necessário mudar o sentido do bit. Ao interligar TP1 e
TP2 e o driver receber 0 (zero), o mesmo será desligado e quando receber 1(um) será ligado.
Como o equipamento foi interligado entre os terminais TP1 e TP3, quando o driver de
acionamento receber o bit 1(um) o equipamento será desligado.
       O circuito do buffer para proteção da porta paralela é mostrado na Figura 4. Este
circuito possui a função de proteger a porta paralela e, ao mesmo tempo, fornecer os níveis de
corrente elétrica suficientes para ativar os Circuitos Integrados. Estes buffers de proteção
estão acoplados junto ao circuito integrado (CI) com referência (74LS244N). Dentro do CI
existem 8 buffers, que têm, neste protótipo, a funcionalidade de proteger a porta paralela
fornecendo mais corrente do que a mesma pode fornecer. Assim, os circuitos que estão
ligados podem exigir maior corrente, sendo que o CI é capaz de fornecê-la sem requerer da
porta paralela protegendo-a contra sobrecarga de corrente.
       O buffer de proteção é composto por um circuito integrado (CI) e um jumper. O
mesmo é dividido em dois grupos de 4 buffers. Cada grupo pode ser habilitado/desabilitado
separadamente através do pino representado pela letra G na Figura 4. No desenho, apenas
para fins de representação, parece ter 2 CI's, o que se deve ao fato da existência dos dois
grupos de buffers citados acima
       O jumper é representado pela sigla JEN. Como dito acima, os buffers podem ser
habilitados/desabilitados através do pino de enable 'G'. Quando o jumper está na posição 1-2,
os buffers ficam sempre habilitados, quando o jumper está na posição 2-3, os buffers podem
ser habilitados através do pino 1 da porta paralela, ou seja, podem ser habilitados via
software, colocando o pino 1 em nível baixo (0 volts).
            Habilitar o buffer significa que o sinal que estiver presente na entrada do
              buffer, tem sua corrente amplificada e aparece na saída do buffer.
            Desabilitar o buffer significa que suas saídas ficarão em alta impedância
              independente do sinal que estiver na entrada (o buffer não deixa o sinal passar).
34




               Figura 4.     Circuito do buffer para proteção da porta paralela




       Para finalizar a composição de todo o projeto de hardware a Figura 5 mostra o circuito
da fonte de alimentação regulada, onde o nome já atribui à funcionalidade, que é alimentar
todo o circuito com uma tensão de 5 volts regulada.




               Figura 5.      Circuito da fonte de alimentação regulada (+5V)




       Todos estes circuitos demonstrados acima foram desenvolvidos no programa EAGLE
e, posteriormente, convertidos para outro formato para a criação dos adesivos realização da
plotagem em gráfica. A descrição da criação da Placa de Circuito Impresso (PCI) será
apresentada no Apêndice A.
35




   3.2.        Estrutura do Hardware




       A estrutura do hardware é fundamental para entendimento do projeto, através desta
estrutura é possível compreender detalhes técnicos e funcionais do hardware.
       Primeiramente é necessário enfatizar que todo o circuito trabalha com baixa tensão de
5 Volts, sendo responsável apenas por acionar o relé fechando o circuito da corrente elétrica
do aparelho. O funcionamento de todo o projeto pode ser compreendido da seguinte forma,
somente a porta paralela envia dados para o circuito. O circuito não envia nada de volta para a
porta paralela, portanto não é necessário usar os sinais de entrada da porta paralela. O circuito
recebe 8 sinais de controle (nível 0 ou 1) para ativar ou desativar os equipamentos, estes sinais
seguem o seguinte caminho: Paralela->Buffer Octal->Drivers dos relés->Relés.
       Para que o sinal elétrico proveniente da porta paralela do computador seja capaz de
acionar o relé e, por consequência, ligar o equipamento conectado ao mesmo, ele deve passar
por alguns estágios de condicionamento.
            O primeiro estágio é um buffer octal, ou seja, possui internamente oito buffers
               individuais, cuja principal finalidade é proteger a porta paralela impedindo que
               os circuitos seguintes drenem uma corrente maior do que ela é capaz de
               fornecer. Caso esta sobrecarga aconteça, a corrente será drenada do buffer
               octal ao invés de ser drenada da porta paralela. O buffer funciona como um
               mini amplificador de corrente.
            O segundo estágio também é um amplificador de corrente, mas, desta vez, com
               uma capacidade bem maior se comparado com o buffer octal. É composto
               principalmente por um transístor operando como uma chave digital. Este
               transístor, quando acionado, fornece toda a corrente necessária para ligar o relé
               (esta corrente é cerca de 10 vezes maior do que a porta paralela é capaz de
               fornecer!) e, consequentemente, ligar o equipamento conectado ao circuito do
               relé.
       Nesta estrutura foram utilizados diversos componentes eletrônicos todos eles estão
descritos no Apêndice B
36



       A Figura 6 possibilita melhor entendimento de todo o processo e funcionamento
quando implementado. O funcionamento é simples, o computador recebe um comando de voz
através do microfone normal padrão, este comando de voz é processado no software de
automação e os sinais são transmitidos via porta paralela para a placa mãe. A mesma é ligada
em uma fonte de energia. Cada equipamento é interligado junto ao driver de acionamento
através do cabo de energia. O driver de acionamento é ligado a uma fonte de energia e
interligado à saída da placa mãe, identificada pela porta e pelos LEDs, na parte superior. Com
isso, quando o comando de voz for totalmente reconhecido, o sinal, após chegar à placa mãe,
já é capaz de identificar qual equipamento está relacionado ao comando de voz que está
cadastrado junto ao banco de dados do software de automação. Com isto, a placa mãe envia o
sinal ao driver de acionamento onde é feita a abertura ou fechamento do relé, permitindo
passagem da corrente elétrica até o equipamento.




                       Figura 6.      Diagrama das fases do processo
37



   3.3.          Porta paralela




       A utilização da porta paralela neste projeto foi atribuída pelo fato de ser uma
tecnologia que, apesar de não ser mais comercializada, permite acessibilidade e facilidade nos
estudos e pesquisas acadêmicas.




   3.3.1. Introdução




       A porta paralela é uma interface de comunicação entre o computador e um periférico.
Quando a IBM criou seu primeiro computador pessoal, nos meados de 1960, a ideia era
conectar a essa porta      uma impressora, no entanto, são vários os periféricos que ainda
utilizam-se desta porta para enviar e receber dados para o computador (exemplos: Scanners,
Impressoras e outros) (ROGER.COM, 2009).




   3.3.2. Modelos de porta paralela




       Existem três tipos de modelos de porta paralela, a transmissão unidirecional,
transmissão bidirecional, e a porta avançada chamada de ECP.
   a) Transmissão unidirecional - A porta paralela SPP (Standard Parallel Port) pode
       chegar a uma taxa de transmissão de dados a 150KB/s. Comunica-se com a CPU
       utilizando um barramento de dados de 8 bits. Para a transmissão de dados entre
       periféricos são usado 4 bits por vez.
   b) Transmissão bidirecional - A porta avançada EPP (Enhanced Parallel Port) chega a
       atingir uma taxa de transferência de 2 MB/s. Para atingir essa velocidade, será
          necessário um cabo especial. Comunica-se com a CPU utilizando um barramento de
          dados de 32 bits. Para a transmissão de dados entre periféricos são usado 8 bits por
          vez.
38



   c) A porta avançada ECP (Enhanced Capabilities Port) - Tem as mesmas
       características que a EPP, porém, utiliza DMA (acesso direto à memória), sem a
       necessidade do uso do processador, para a transferência de dados. Utiliza também um
       buffer FIFO de 16 bytes (ROGER.COM., 2009). O buffer FIFO armazena dados
       temporários até que sejam transferidos pra outro lugar.




   3.3.3. Endereços da porta paralela




       O sistema operacional, Windows ou até mesmo o antigo DOS, nomeia as Portas
Paralelas chamando-as de LPT1, LPT2, LPT3, etc. Contudo, a porta física padrão do
computador geralmente é a LPT1 e os endereços de cada porta dependem da configuração de
seus registradores, ou seja, cada porta paralela é formada por 3 registradores. O registrador de
dados, o registrador de status e o registrador de controle. Cada um desses registradores possui
um endereço diferente. Por exemplo, o endereço 0x378 (também chamado de endereço base
da LPT1) é o endereço do registrador de dados da porta paralela LPT1. O endereço 0x379
(0x378 + 1) é o endereço do registrador de status da LPT1 e o endereço 0x37A (0x378+2) é o
endereço do registrador de controle da LPT1. Portanto, cada LPT tem o seu endereço base,
LPT1 = 0x378 e LPT2 = 0x278 e assim por diante.
       O quadro abaixo mostra os endereços hexadecimais e decimais de cada porta.
Nome da Porta        Endereço de               Endereço da Porta                 Descrição
                      memória
                                        378
      LPT1             0000:0408                             888 decimal       Endereço base
                                    hexadecimal
     LPT2                               278
                   0000:040A                                 632 decimal       Endereço base
                                    hexadecimal
QUADRO 1 – Endereços da porta paralela
Fonte: RogerCom (2009).




   3.3.4. Conector DB25




       O DB25 é um conector no qual o cabo paralelo se conecta ao computador para o envio
e recebimento de dados. No DB25, um pino está em nível lógico 0 quando a tensão elétrica no
39



mesmo está entre 0 a 0,4v. Um pino se encontra em nível lógico 1 quando a tensão elétrica no
mesmo está acima de 3.1 e até 5v. A Figura 7 mostra o conector padrão DB25, com 25 pinos,
no qual cada pino tem um nome que o identifica:




                        Figura 7.      DB25 que fica atrás do micro
                                     Fonte: RogerCom (2009).



       A Figura 8 mostra o conector macho do cabo paralelo e suas referências para
interligação entre o DB25 fêmea. As conexões D0 até D7 são as conexões de saída,
justamente as usadas no sistema de automação, apresentadas na Figura 10.




                      Figura 8.       Conector macho do cabo paralelo
                                    Fonte: RogerCom (2009).
40




                Figura 9.    Foto do conector DB25 macho do cabo paralelo
                                  Fonte: RogerCom (2009).



       Todo este esquema é necessário para saber como enviar dados ou receber dados
através da porta paralela, portanto a Figura 10 mostra claramente os pinos referentes às
entradas e as saídas.




              Figura 10.    Esquema de funcionamento do DB25 no modo SPP
                                  Fonte: RogerCom (2009).



   3.3.5. Conector macho Centronics 36 pinos




       O conector macho Centronics 36 pinos faz parte do cabo da impressora e é através
deste que a impressora é conectada ao computador. Ao desenvolver um projeto que utilize
uma interface para conectar ao computador, pode-se utilizar um conector centronics 36 pinos
41



fêmea, isso faz com que a interface aproveite o cabo da impressora, encontrado facilmente em
lojas de informática. A Figura 11 abaixo mostra o conector Centronics 36 pinos e sua
descrição:




                         Figura 11.  Conector centronics 36 pinos
                                  Fonte: RogerCom (2009).



       O quadro abaixo mostra as descrições dos pinos do conector centronics, é a partir
desta tabela que é possível fazer as conexões necessárias para o projeto de automação.
                            Número do Pino          Descrição
                                    1                 Strob
                                 2 ao 9          Dados (D0...D7)
                                   10                  Ack
                                   11                 Busy
                                   12              Paper End
                                   13               Select Out
                                   14               Auto Feed
                                15 ao 18         Não conectado
                                19 ao 30            GROUND
                                   31                  Init
                                   32                 Error
                                   33               GROUND
                                 34 a 35         Não conectado
                                   36               Select In
                          QUADRO 2 - Significado de cada pino do conector Centronics
                          Fonte: RogerCom (2009).
42



   3.3.6. Ligando e desligando aparelhos externos através da porta paralela




       Como já comentado, a porta paralela não é usada somente com uma impressora, é
possível desenvolver um circuito eletrônico e acoplá-lo a essa porta e, através de um
programa específico, enviar sinais digitais para controlá-lo. Estes foram os passos utilizados a
princípio para montar tanto o hardware quanto o software de automação.
       Conforme o projeto de automação, é possível controlar até 8 equipamentos
simultâneos. Diante disto, a Figura 12 esboça um protótipo de hardware utilizando LEDs. O
mesmo será utilizado para entendimento dos pinos de saída do conector DB25.
       Na Figura 12, observe que o terminal do catodo (K) dos LEDs está ligado aos
terminais dos resistores, que estão ligados através do cabo aos pinos do DB25. Se invertidos,
o circuito não funcionará. Observe a enumeração dos pinos do conector DB25.
       Os pinos D0 a D7 são os pinos de saída, estes pinos são os responsáveis pelo envio de
dados ao equipamento. Sinais são enviados individualmente por cada pino, possibilitando o
total controle do hardware por meio do software (ROGER.COM., 2009).




                    Figura 12.       Esboço da conexão do conector DB25
                                         Fonte: RogerCom (2009).

       O sistema de automação envia à Porta Paralela oito bits, um a cada vez que o usuário
pressionar o botão, ou através do comando de voz. No entanto a lógica do software atribui um
operador lógico “OU”, sendo possível também ligar e desligar vários equipamentos ao mesmo
tempo. A sequência de bits gerada é vista no quadro abaixo.
43



Decimal   Hexadecimal   Binário    Pino/Fio ativo (5V)                   Comentário

 128          80        10000000         9 - D7          Cada bit do byte enviado à Porta Paralela está
  64          40        01000000         8 - D6           relacionado com um pino do DB5, e um fio
  32          20        00100000         7 - D5          do cabo paralelo, fisicamente. Ao enviar um

  16          10        00010000         6 - D4           byte, que o(s) bit(s) esteja(m) ligado(s) ou

  8            8        00001000         5 - D3              desligado(s), os LEDs acende(rão) ou

                        00000100         4 - D2            apaga(rão) conforme os estados dos bits.
  4            4
  2            2        00000010         3 - D1
  1            1        00000001         2 - D0


QUADRO 3 - Sequência de bits gerados pela porta paralela
Fonte: RogerCom (2009).
44



   4. DESENVOLVIMENTO DO SOFTWARE




   4.1.         Documentação




       A documentação de software é extremamente necessária e auxilia na redução de horas
preciosas na correção de problemas. Para muitos desenvolvedores, a criação de documentação
técnica é a parte mais “aterrorizante” para se enfrentar em todo o processo de criação de um
software, seja pela necessidade de escrever várias e várias páginas de texto, gráficos e
desenhos ou ainda pela necessidade de largar aquilo que se aprendeu (programar) para fazer
aquilo que não sabe bem (redigir). Entretanto, a documentação é parte integrante de qualquer
sistema ou programa criado. Pode-se dizer que a documentação é tão importante quanto as
questões de segurança, pois sem a devida documentação, bug's e pontos vulneráveis no
sistema demoram a ser encontrados e corrigidos permitindo, assim, que os ataques continuem
levando a resultados indesejáveis do sistema e, consequentemente, insatisfação de seu
usuário.
       O projeto aqui proposto utilizou algumas técnicas de documentação, como
documentação UML gerando os diagramas de caso de uso e classes.




   4.1.2. UML




           A Linguagem de Modelagem Unificada (UML) é uma linguagem visual para
especificar, construir e documentar os artefatos dos sistemas (LARMAN, 2007).
           A palavra visual na definição é um ponto chave – a UML é a notação diagramática
padrão, de fato, para desenhar ou apresentar figuras (com algum texto) relacionadas a
software (CADSOFT ONLINE, 2009).
45



     4.1.2.1. Diagramas de Casos de Uso




        A UML fornece a notação de diagramas de casos de uso para ilustrar os nomes dos
casos de uso e dos atores, bem como os relacionamentos entre eles (LARMAN, 2007). Os
mesmos sugerem como os atores interagem com o sistema. A Figura 13 mostra o caso de uso
principal, em que o usuário pode cadastrar os aparelhos existentes na residência, e os usuários
que poderão acessar o sistema web. A descrição dos cenários existentes para cada caso de uso
encontra-se no Apêndice C.
       Conforme diagrama representado pela Figura 13, todas as opções de cadastramento,
consultas e exclusões estão relacionadas ao usuário local. Existe uma dependência no
relacionamento entre as funcionalidades de cada caso de uso. Estas relações são utilizadas
para demonstrar cada processo do sistema. Cada caso de uso possui ações classificadas pelos
“includes” ou “extends” referindo-se aos atributos e dependências destinadas a cada caso de
uso. Através deste diagrama é possível entender praticamente todos os processos que poderão
ser incorporados durante o desenvolvimento.
46




Figura 13.   Caso de uso principal do sistema
47



     4.1.2.2. Diagrama de classes


     É uma representação da estrutura e relações das classes que servem de modelo para os
objetos utilizados no desenvolvimento. Modelagem muito útil, define todas as classes que o
sistema necessita possuir e é a base para a construção de diversos outros diagramas.
     Para a construção deste projeto foram utilizadas diversas classes, pois o intuito era
estabelecer uma estrutura relacionada ao desenvolvimento orientado a objetos, com isto
requer um melhor planejamento e boa estruturação dos diagramas. A Figura 14 ilustra os
diagramas referentes às classes principais que compõem o projeto web. Dentro de cada
diagrama é possível identificar quais atributos, métodos e classes serão compostos em todo
desenvolvimento. O diagrama de classe pode ser gerado através de uma tecnologia chamada
de engenharia reversa, que possibilita após o sistema pronto, gerar todo os diagramas para fins
de documentação.




                     Figura 14.     Diagrama de classe do modulo Web


       A Figura 15 ilustra cada classe utilizada no desenvolvimento do modulo desktop. Este,
no entanto, possui uma maior complexidade, pois realiza a integração com o componente
SDK para o reconhecimento da voz.
48




Figura 15.   Diagrama de classe do modulo Desktop
49



       O projeto é composto por uma DLL (Dynamic-link library), termo técnico utilizado as
bibliotecas de ligação dinâmicas, o mesmo pode ser desenvolvido separadamente da estrutura
geral de todo o código fonte, sendo possível atribuí-la a qualquer outro projeto
independentemente. Este é mais um dos diversos recursos sobre programação orientada a
objetos.
       Esta DLL, chamada de IOAutomação, compõe toda a estrutura de dados que o sistema
necessita tais como: inclusão, exclusão, pesquisas e outros. A organização de toda a estrutura
foi planejada para futuras manutenções. Assim, os processos foram subdivididos conforme
demanda do projeto. A Figura 16 ilustra todas as classes, métodos e atributos que compõem a
estrutura relacionada aos aparelhos.




                     Figura 16.        Diagrama da estrutura dos aparelhos
50



       A Figura 17 ilustra também todas as classes, métodos e atributos utilizados na
estrutura de desenvolvimento referente aos usuários.




                     Figura 17.     Diagrama da estrutura dos usuários.
51



 4.2. Metodologias




       Na parte de documentações a ferramenta utilizada foi o Enterprise Arquitect (E.A), o
mesmo é considerado um software ícone no desenvolvimento das documentações. Utilizado
por grandes empresas, o E.A possibilita uma utilização por 30 dias. No entanto, este tempo foi
o suficiente para criar toda a estrutura de documentação do projeto de automação.
       A ferramenta utilizada na codificação de todo o código fonte, foi através da IDE de
desenvolvimento Microsoft Visual Studio 2008, com interpretação da linguagem C#.
       A estrutura de dados foi atribuída ao MySql, que de fato se tornou pioneira tanto na
área acadêmica quanto profissional, pelo fato de ser uma ferramenta totalmente gratuita,
interativa e de fácil utilização. A Figura 18 ilustra o diagrama de entidade relacionamento de
toda a estrutura composta no banco de dados.




            Figura 18.     Diagrama entidade relacionamento do banco de dados
52



       No Quadro 4, são ilustrados todos os scripts de criação da base de dados do sistema.
Todos estes scripts podem ser executados separadamente ou todos juntos.




                                                          Script de criação do banco de
CREATE DATABASE IF NOT EXISTS automacao;
USE automacao;
                                                          dados



DROP TABLE IF EXISTS `aparelho`;
CREATE TABLE `aparelho` (
  `Codigo` int(10) unsigned NOT NULL
AUTO_INCREMENT,                                           Script de criação da tabela
  `NomeAparelho` varchar(45) NOT NULL,                    APARELHOS, e todos os seus
  `Descricao` varchar(45) NOT NULL,                       atributos.
  `ComandoVoz` varchar(45) NOT NULL,
  `Flag` int(10) unsigned NOT NULL,
  `Porta` varchar(2) NOT NULL,
  `ComandoVozSaida` varchar(45) NOT NULL,
  PRIMARY KEY (`Codigo`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT
CHARSET=latin1;



DROP TABLE IF EXISTS `porta`;
CREATE TABLE `porta` (
  `NomePorta` varchar(2) NOT NULL,                        Script de criação da tabela
  `Bits` varchar(8) NOT NULL,                             PORTA, e todos seus atributos
  PRIMARY KEY (`NomePorta`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;




DROP TABLE IF EXISTS `usuario`;
CREATE TABLE `usuario` (
  `Codigo` int(10) unsigned NOT NULL
AUTO_INCREMENT,                                           Script de criação da tabela
  `Nome` varchar(45) NOT NULL,                            USUARIO, e todos os seus
  `Usuario` varchar(45) NOT NULL,                         atributos.
  `Senha` varchar(45) NOT NULL,
  PRIMARY KEY (`Codigo`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT
CHARSET=latin1;



QUADRO 4 – Script para criação da base de dados
53



 4.3. Processo de comunicação entre software e SDK 5.1




       A comunicação acontece da forma descrita a seguir. Quando instalado o Microsoft
Speech Recognition SDK 5.1 ao Windows, ele cria diversos arquivos na pasta de sistemas.
No entanto, ao inicializar o processo de desenvolvimento na IDE Microsoft Visual Studio
2008, inicialmente é necessário adicionar a referência do componente MICROSOFT SPEECH
OBJECT LIBRARY 5.0, que pode ser encontrado seguindo os passos. Clique no menu
PROJECT->ADD REFERENCE, na janela que irá abrir, siga para a aba COM, e procure pela
referência citada, clique em OK e pronto. Feito isso já se consegue manipular e integrar o
componente junto ao projeto, mas para isto é necessário ter conhecimento de lógica de
programação, pois o componente é independente e, de certa forma, não consegue trabalhar
sozinho, ou seja, é necessário o manuseio do mesmo via código.
       Quando se realiza uma referência de algum componente ou controle no projeto geral,
significa que é possível obter uma comunicação mais diretamente. Para isto, as técnicas de
programação orientada a objeto (POO), são extremamente viáveis e necessárias. Até o
momento, o software não realizou nenhuma comunicação com o componente. Para isso, é
necessário começar o processo de codificação no código fonte realizando a integração dos
mesmos.
       Inicialmente, para realizar uma primeira comunicação, precisa-se inicializar o
componente de voz, o que é feito adicionando o controle SpeechListBox que é criado junto ao
toolbox da IDE. Posteriormente, através da propriedade “SpeechEnabled”, é possível habilitá-
lo. Contudo, agora se realiza a codificação do código para habilitar totalmente o componente,
deixando livre para o manuseio em todo o sistema. A Figura 19 ilustra o código utilizado no
projeto.
54



//Inicializa o componente de reconhecimento de voz
        private void InitializeSpeech()
        {

           Debug.WriteLine("Inicializando Reconhecimento de Voz..");
           m_editMensagens.AppendText("Inicializando Reconhecimento de Voz.. (Aguardando comando inicial!!)");
           try
           {
               objRecoContext = new SpeechLib.SpSharedRecoContext();
               objRecoContext.Hypothesis += new
               _ISpeechRecoContextEvents_HypothesisEventHandler(RecoContext_Hypothesis);

               objRecoContext.Recognition += new
               _ISpeechRecoContextEvents_RecognitionEventHandler(RecoContext_Recognition);

                grammar = objRecoContext.CreateGrammar(grammarId);
                ruleTopLevel = grammar.Rules.Add("TopLevelRule", SpeechRuleAttributes.SRATopLevel |
SpeechRuleAttributes.SRADynamic, 1);
                ruleListItems = grammar.Rules.Add("ListItemsRule", SpeechRuleAttributes.SRADynamic, 2);
                SpeechLib.ISpeechGrammarRuleState stateAfterSelect;
                stateAfterSelect = ruleTopLevel.AddState();
                object PropValue = "";
                ruleTopLevel.InitialState.AddWordTransition(stateAfterSelect, PreCommandString, " ",
SpeechGrammarWordType.SGLexical, "", 0, ref PropValue, 1.0F);
                PropValue = "";
                stateAfterSelect.AddRuleTransition(null, ruleListItems, "", 1, ref PropValue, 0F);
                RebuildGrammar();
                grammar.CmdSetRuleState("TopLevelRule", SpeechRuleState.SGDSActive);
                speechInitialized = true;
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Este aplicativo não pode executar corretamente. Exceção na
inicialização do componente de voz.rnrn" + e.ToString(), "Error");
            }
        }

                   Figura 19.         Código fonte da habilitação do componente de voz



         A execução dos comandos é feita pela classe que geralmente é chamada de Rebuild
Grammar, ou seja, execução das gramáticas. Este nome pode ser modificado de acordo com o
padrão de cada profissional. Nota-se também que nesta classe já é necessária a integração com
o banco de dados para realizar a conferência entre comando reconhecido e base de dados.
         A Figura 20 ilustra os códigos que foram utilizados para executar os comandos
reconhecidos pelo sistema.
         Este trabalho visa demonstrar o estudo e pesquisas tanto do reconhecimento de voz
quanto da automação residencial, não é, no entanto o foco relacionar todos os passos de
desenvolvimento. As ilustrações foram necessárias para que o leitor consiga entender o
paradigma do projeto, e através de estudos próprios relacionados a estes, consigam
estabelecer outros meios de desenvolvimento.
55



//Executa os comandos adicionados
        public bool RebuildGrammar()
        {
            if (!speechEnabled || this.DesignMode)
            {
                return false;
            }
            object propValue = "";
            try
            {
                IOAutomacao.AparelhoBLL bll = new IOAutomacao.AparelhoBLL();
                dstAparelho = bll.ObterAparelhoPesquisa();
                ruleListItems.Clear();
                int count = 0;
                if (dstAparelho.AparelhoPesquisa.Count > 0)
                {
                    foreach (DataSetAparelho.AparelhoPesquisaRow linha in dstAparelho.AparelhoPesquisa)
                    {
                        ruleListItems.InitialState.AddWordTransition(null, linha.ComandoVoz, " ",
SpeechGrammarWordType.SGLexical, linha.ComandoVoz, count, ref propValue, 1F);
                        ruleListItems.InitialState.AddWordTransition(null, linha.ComandoVozSaida, " ",
SpeechGrammarWordType.SGLexical, linha.ComandoVozSaida, count, ref propValue, 2F);
                        count = +1;
                    }
                    grammar.Rules.Commit();
                }
            }
            catch (Exception e)
            {
                System.Windows.Forms.MessageBox.Show("Exceção capturada quando reconstrução dinâmica na regra do
listbox.rnrn" + e.ToString(), "Error");
            }
            return true;
        }


                Figura 20.          Código fonte da execução dos comandos reconhecidos



  4.4. Plano de testes




         O RUP (Rational Unified Process) é uma metodologia para desenvolvimento de software
criada pela Rational Software, IBM, SofTeam, Unisys, Nihon Unisys, Alcatel e Q-Labs. O mesmo
se tornou mais do que um software para auxiliar no desenvolvimento é uma metodologia de
desenvolvimento, com uma estrutura formal e bem definida. Portanto, utilizando-o como base,
um Plano de testes foi desenvolvido a fim de garantir que os casos de uso e as funcionalidades
indicadas fossem implementados corretamente. Com sua execução foi gerado um relatório de
execução dos testes.
         De acordo com os testes realizados, o funcionamento do software foi bem sucedido,
teve algumas falhas ou cancelamentos de alguns processos durante os testes, mas nada que
prejudicasse o funcionamento em geral. Falhas essas que são previstas durante o próprio
desenvolvimento. Com base no relatório verifica-se que o resultado foi satisfatório, mostrando
que o software está apto ao funcionamento.
         O Plano de teste e o relatório de execução dos testes são encontrados no Apêndice D.
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz
Automação residencial por voz

Weitere ähnliche Inhalte

Andere mochten auch

Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byte
Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byteRelatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byte
Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byteGustavo Fernandes
 
Carregador de baterias
Carregador de bateriasCarregador de baterias
Carregador de bateriasrobcaval8
 
Domotica - projeto comando de voz com arduino
Domotica - projeto comando de voz com arduinoDomotica - projeto comando de voz com arduino
Domotica - projeto comando de voz com arduinoDesiree Santos
 
Definição de automação
Definição de automaçãoDefinição de automação
Definição de automaçãoclesiopereira
 
Modelo de memorial justificativo
Modelo de memorial justificativoModelo de memorial justificativo
Modelo de memorial justificativoJanete Silva
 
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINO
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINOAUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINO
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINOgu_elastico
 
Introdução a história da segurança do trabalho
Introdução a história da segurança do trabalhoIntrodução a história da segurança do trabalho
Introdução a história da segurança do trabalhoAlexandre Peovão Peovão
 
Relatório Final - Técnico Em Eletrotécnica
Relatório Final - Técnico Em EletrotécnicaRelatório Final - Técnico Em Eletrotécnica
Relatório Final - Técnico Em EletrotécnicaDanielD15
 
Modelo de trabalho escolar
Modelo de trabalho escolarModelo de trabalho escolar
Modelo de trabalho escolarSHEILA MONTEIRO
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...SlideShare
 

Andere mochten auch (12)

Introdução a Automação.
Introdução a Automação.Introdução a Automação.
Introdução a Automação.
 
Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byte
Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byteRelatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byte
Relatório de Projeto - Desenvolvimento de uma memória RAM dinâmica de 1 byte
 
Carregador de baterias
Carregador de bateriasCarregador de baterias
Carregador de baterias
 
Domotica - projeto comando de voz com arduino
Domotica - projeto comando de voz com arduinoDomotica - projeto comando de voz com arduino
Domotica - projeto comando de voz com arduino
 
Definição de automação
Definição de automaçãoDefinição de automação
Definição de automação
 
Modelo de memorial justificativo
Modelo de memorial justificativoModelo de memorial justificativo
Modelo de memorial justificativo
 
Automacao
AutomacaoAutomacao
Automacao
 
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINO
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINOAUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINO
AUTOMAÇÃO RESIDENCIAL NO GERENCIAMENTO DE ENERGIA UTILIZANDO ARDUINO
 
Introdução a história da segurança do trabalho
Introdução a história da segurança do trabalhoIntrodução a história da segurança do trabalho
Introdução a história da segurança do trabalho
 
Relatório Final - Técnico Em Eletrotécnica
Relatório Final - Técnico Em EletrotécnicaRelatório Final - Técnico Em Eletrotécnica
Relatório Final - Técnico Em Eletrotécnica
 
Modelo de trabalho escolar
Modelo de trabalho escolarModelo de trabalho escolar
Modelo de trabalho escolar
 
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
A Guide to SlideShare Analytics - Excerpts from Hubspot's Step by Step Guide ...
 

Ähnlich wie Automação residencial por voz

TCC Risco na comunicação entre máquinas virtuais - Vinícius Lima
TCC Risco na comunicação entre máquinas virtuais - Vinícius LimaTCC Risco na comunicação entre máquinas virtuais - Vinícius Lima
TCC Risco na comunicação entre máquinas virtuais - Vinícius LimaGoverno do Estado de São Paulo
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)gsabatke
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.Douglas Scriptore
 
Estudo do ip cop como firewall de aplicação
Estudo do ip cop como firewall de aplicaçãoEstudo do ip cop como firewall de aplicação
Estudo do ip cop como firewall de aplicaçãoDouglas Marra da Costa
 
Pré projeto - Medidor de fluxo de água: utilizando conexão entre hardware e ...
Pré projeto -  Medidor de fluxo de água: utilizando conexão entre hardware e ...Pré projeto -  Medidor de fluxo de água: utilizando conexão entre hardware e ...
Pré projeto - Medidor de fluxo de água: utilizando conexão entre hardware e ...Bruno Teixeira
 
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...Wagner Tironi Pinto
 
Monografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoMonografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoGabriela Almeida
 
Monografia Marcos Bezerra 2008
Monografia Marcos Bezerra   2008Monografia Marcos Bezerra   2008
Monografia Marcos Bezerra 2008Marcos Bezerra
 
Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - DissertaçãoMarcius Brandão
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsMawcor
 
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenhoViabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenhoRogério Cardoso
 
Virtualização de servidores cleiton leive de lima xavier
Virtualização de servidores   cleiton leive de lima xavierVirtualização de servidores   cleiton leive de lima xavier
Virtualização de servidores cleiton leive de lima xaviercleitonleive
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Alvaro Viebrantz
 
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade AmbientalGustavo Aquino
 
TCC - Desenvolvimento de Aplicativo para Windows Phone
TCC - Desenvolvimento de Aplicativo para Windows PhoneTCC - Desenvolvimento de Aplicativo para Windows Phone
TCC - Desenvolvimento de Aplicativo para Windows PhoneCésar Augusto Pereira
 

Ähnlich wie Automação residencial por voz (20)

Vpn alan-rafael
Vpn alan-rafaelVpn alan-rafael
Vpn alan-rafael
 
TCC Risco na comunicação entre máquinas virtuais - Vinícius Lima
TCC Risco na comunicação entre máquinas virtuais - Vinícius LimaTCC Risco na comunicação entre máquinas virtuais - Vinícius Lima
TCC Risco na comunicação entre máquinas virtuais - Vinícius Lima
 
Fabio virtualizacao (1)
Fabio   virtualizacao (1)Fabio   virtualizacao (1)
Fabio virtualizacao (1)
 
Tcc plataforma telemedicina de baixo custo
Tcc plataforma telemedicina de baixo custoTcc plataforma telemedicina de baixo custo
Tcc plataforma telemedicina de baixo custo
 
 
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
MyHome - Sistema de Automação Residencial para Dispositivos Móveis.
 
Estudo do ip cop como firewall de aplicação
Estudo do ip cop como firewall de aplicaçãoEstudo do ip cop como firewall de aplicação
Estudo do ip cop como firewall de aplicação
 
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUXARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
ARTIGO CLUSTER DE ALTA DISPONIBILIDADE EM SISTEMAS LINUX
 
Pré projeto - Medidor de fluxo de água: utilizando conexão entre hardware e ...
Pré projeto -  Medidor de fluxo de água: utilizando conexão entre hardware e ...Pré projeto -  Medidor de fluxo de água: utilizando conexão entre hardware e ...
Pré projeto - Medidor de fluxo de água: utilizando conexão entre hardware e ...
 
Apps tecnologias e usos
Apps   tecnologias e usosApps   tecnologias e usos
Apps tecnologias e usos
 
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...Graduação   puc - aplicações de padrões de projeto no desenvolvimento de inte...
Graduação puc - aplicações de padrões de projeto no desenvolvimento de inte...
 
Monografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de CursoMonografia final - Trabalho de Conclusão de Curso
Monografia final - Trabalho de Conclusão de Curso
 
Monografia Marcos Bezerra 2008
Monografia Marcos Bezerra   2008Monografia Marcos Bezerra   2008
Monografia Marcos Bezerra 2008
 
Framework Entities - Dissertação
Framework Entities - DissertaçãoFramework Entities - Dissertação
Framework Entities - Dissertação
 
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on RailsComparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
Comparação de Tecnologias para Web - JBoss Seam e Ruby on Rails
 
Viabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenhoViabilidade em cluster de alto desempenho
Viabilidade em cluster de alto desempenho
 
Virtualização de servidores cleiton leive de lima xavier
Virtualização de servidores   cleiton leive de lima xavierVirtualização de servidores   cleiton leive de lima xavier
Virtualização de servidores cleiton leive de lima xavier
 
Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces Android things, machine learning e maquinas de doces
Android things, machine learning e maquinas de doces
 
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental
1° BootCamp - Workshop Internet Das Coisas Para Sustentabilidade Ambiental
 
TCC - Desenvolvimento de Aplicativo para Windows Phone
TCC - Desenvolvimento de Aplicativo para Windows PhoneTCC - Desenvolvimento de Aplicativo para Windows Phone
TCC - Desenvolvimento de Aplicativo para Windows Phone
 

Automação residencial por voz

  • 1. UNIVERSIDADE DE UBERABA VALMIR FERREIRA ROCHA AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ, UTILIZANDO MICROSOFT SPEECH RECOGNITION SDK 5.1 UBERLÂNDIA 2009
  • 2. 1 VALMIR FERREIRA ROCHA AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ, UTILIZANDO MICROSOFT SPEECH RECOGNITION SDK 5.1 Trabalho apresentado à Universidade de Uberaba, como parte dos requisitos para conclusão de graduação em Sistemas de Informação da Universidade de Uberaba. Orientador: Lilian R. Mendes Paiva. Ms UBERLÂNDIA 2009
  • 3. 2 VALMIR FERREIRA ROCHA AUTOMAÇÃO RESIDENCIAL POR COMANDO DE VOZ, UTILIZANDO MICROSOFT SPEECH RECOGNITION SDK 5.1 Trabalho apresentado à Universidade de Uberaba, como parte dos requisitos para conclusão de graduação em Sistemas de Informação da Universidade de Uberaba. Orientador(a): Lilian R. Mendes Paiva. Ms Área de concentração: Automação Residencial Aprovada em: 05 de dezembro de 2009 Banca Examinadora: Prof. Lilian R. Mendes Paiva. Ms – Orientadora Universidade de Uberaba Maria Fernanda Soares de Almeida Universidade de Uberaba Prof. Carlos Magno Medeiros Queiroz. Ms Universidade de Uberaba Prof. Thiago Bruno Caparelli. Ms Universidade de Uberaba
  • 4. 3 A toda minha família. Aos meus pais. À minha Esposa. A Deus, pela força de sempre.
  • 5. 4 AGRADECIMENTOS Primeiramente agradeço à Deus por ter me dado força de vontade para nunca desistir apesar das grandes dificuldades ocorridas. É com muita satisfação que dedico este trabalho aos meus pais, meus irmãos e a minha esposa Gercilene Cristina, que sempre apostaram em mim, me deram apoio, carinho e compreensão, sendo neste longo período as pessoas com quem sempre pude contar. Ao meu amigo Rhobison Alves, que sempre me ajudou em momentos decisivos ao longo do curso. A todos os professores que de alguma forma contribuíram para esta conquista. Aos verdadeiros amigos, compadres e parceiros que ganhei no decorrer de todo o curso.
  • 6. 5 RESUMO Atualmente, os sistemas automatizados são largamente utilizados devido à busca pela qualidade de vida, segurança e controle de equipamentos. A automação surgiu para facilitar e reduzir trabalhos, tanto empresarias e industriais como domésticos, proporcionando aos usuários maior comodidade, conforto, praticidade, produtividade e redução de custos. Além disso, a automatização de tarefas visa possibilitar a inclusão digital dos usuários de necessidades especiais. Este trabalho apresenta o desenvolvimento de um sistema para automatização de equipamentos residenciais através do reconhecimento de voz. O sistema utiliza uma estrutura de hardware próprio responsável por realizar a conexão entre os equipamentos. O protótipo desenvolvido permite que o monitoramento dos equipamentos seja realizado em duas plataformas distintas sendo elas: Internet e aplicação desktop. O Microsoft Speech Recognition (SDK), integrado ao protótipo para execução dos comandos por reconhecimento de voz, fundamenta-se em agentes inteligentes, que é considerado como uma entidade que executa um conjunto de operações que lhes foram incumbidas por um usuário ou outro programa, com algum grau de independência ou autonomia e, executando estas operações, emprega algum conhecimento dos objetivos ou desejos do usuário (IBM Research, 1998). A comunicação entre o computador pessoal (PC) e o hardware foi realizada através da porta paralela. Sendo assim, o projeto utiliza tecnologias acessíveis, visando simplicidade e baixo custo ao simular uma solução de pequeno porte. A criação da interface gráfica prioriza um ambiente amigável e de simples utilização, já que seu objetivo é permitir que portadores de necessidades especiais e pessoas sem grandes conhecimentos técnicos possam interagir facilmente com o protótipo. Palavras-chave: Agentes inteligentes, automação residencial, Microsoft Speech Recognition, segurança, baixo custo, porta paralela.
  • 7. 6 ABSTRACT Currently, the automatized systems are widely used due to the constant search for quality of life, safety and equipment control. Automation emerged in order to facilitate and reduce work, company and industry work as well as domestic, offering more comfort, facility and cost reduction. In addition to this, the automatization of tasks aims at enabling digital inclusion of disabled users. This work presents the development of a system for automatization of residential equipment through speech recognition. The system makes use of its own hardware structure, which is responsible for making the connection among the equipment. The prototype developed enables that the monitoring of the equipment to be done in two different platforms, which are: Internet and desktop application. Microsoft Speech Recognition (SDK), integrated with the prototype for the speech recognition execution, is fundamented by intelligent agents, which are systems that hold autonomy and fulfill tasks, which are always attached to an automatic executed action or to a manual outside action to be executed. The communication between the personal computer (PC) and the hardware was made possible through the parallel port. This way, the project makes use of accessible technology, aiming at simplicity and low cost to simulate a smaller dimension solution. The graphic interface creation prioritizes a simple and user-friendly environment, once its objective is to allow that disabled people as well as those without much technical knowledge can interact easily with the prototype. Key words: intelligent agents, residential automation, Microsoft Speech Recognition, safety, low cost, parallel port.
  • 8. 7 LISTA DE FIGURAS FIGURA 1.  ESQUEMA ELÉTRICO GERAL DO CIRCUITO.......................................... 30  FIGURA 2.  PLACA DO LEDS ........................................................................................... 31  FIGURA 3.  CIRCUITO DO DRIVER DE ACIONAMENTO ........................................... 32  FIGURA 4.  CIRCUITO DO BUFFER PARA PROTEÇÃO DA PORTA PARALELA .... 34  FIGURA 5.  CIRCUITO DA FONTE DE ALIMENTAÇÃO REGULADA (+5V) ............ 34  FIGURA 6.  DIAGRAMA DAS FASES DO PROCESSO .................................................. 36  FIGURA 7.  DB25 QUE FICA ATRÁS DO MICRO .......................................................... 39  FIGURA 8.  CONECTOR MACHO DO CABO PARALELO. ........................................... 39  FIGURA 9.  FOTO DO CONECTOR DB25 MACHO DO CABO PARALELO ............... 40  FIGURA 10.  ESQUEMA DE FUNCIONAMENTO DO DB25 NO MODO SPP............ 40  FIGURA 11.  CONECTOR CENTRONICS 36 PINOS ..................................................... 41  FIGURA 12.  ESBOÇO DA CONEXÃO DO CONECTOR DB25 ................................... 42  FIGURA 13.  CASO DE USO PRINCIPAL DO SISTEMA.............................................. 46  FIGURA 14.  DIAGRAMA DE CLASSE DO MODULO WEB ....................................... 47  FIGURA 15.  DIAGRAMA DE CLASSE DO MODULO DESKTOP.............................. 48  FIGURA 16.  DIAGRAMA DA ESTRUTURA DOS APARELHOS ............................... 49  FIGURA 17.  DIAGRAMA DA ESTRUTURA DOS USUÁRIOS. .................................. 50  FIGURA 18.  DIAGRAMA ENTIDADE RELACIONAMENTO DO BD ....................... 51  FIGURA 19.  CÓDIGO FONTE DA HABILITAÇÃO DO COMPONENTE DE VOZ ... 54  FIGURA 20.  CÓDIGO FONTE DA EXECUÇÃO DOS COMANDOS .......................... 55  FIGURA 21.  APLICAÇÃO DESKTOP ............................................................................ 58  FIGURA 22.  CADASTRO DE APARELHOS NA APLICAÇÃO DESKTOP ................ 58  FIGURA 23.  CADASTRO DE USUÁRIOS UTILIZADOS PARA ACESSO WEB....... 59  FIGURA 24.  VISÃO GERAL DA ÁREA DE CADASTRAMENTOS............................ 59  FIGURA 25.  APLICAÇÃO WEB (LOGIN) ..................................................................... 60  FIGURA 26.  APLICAÇÃO WEB ..................................................................................... 60  FIGURA 27.  TESTE EM PLACA DE PROTOBOARD................................................... 67  FIGURA 28.  PROJETO NO COMPUTADOR ................................................................. 68  FIGURA 29.  ADESIVO PLOTADO SEM MASCARA ................................................... 68 
  • 9. 8 FIGURA 30.  RETIRANDO A MASCARA ...................................................................... 69  FIGURA 31.  COLANDO A MASCARA NO ADESIVO................................................. 69  FIGURA 32.  FIXANDO BEM A MASCARA AO ADESIVO ........................................ 70  FIGURA 33.  RETIRANDO A MASCARA ...................................................................... 70  FIGURA 34.  COLANDO O ADESIVO NA PCB COM A MÁSCARA .......................... 71  FIGURA 35.  RETIRANDO EXCESSO DE ADESIVOS ................................................. 71  FIGURA 36.  VERIFICANDO PROJETO E PLACA ....................................................... 72  FIGURA 37.  CORROENDO AS PLACAS COM PERCLORETO DE FERRO .............. 72  FIGURA 38.  LAVANDO AS PLACAS APÓS CORROSÃO .......................................... 73  FIGURA 39.  CORROSÃO FINALIZADA ....................................................................... 73  FIGURA 40.  MONTAGEM DOS COMPONENTES ....................................................... 74  FIGURA 41.  MONTANDO PROJETO ............................................................................. 74  FIGURA 42.  PROJETO FINALIZADO ............................................................................ 75  FIGURA 43.  TRANSISTOR BC337. ................................................................................ 75  RETIRADO DE ROBOTERNETZ (ROBOTERNETZ, 2009). .............................................. 75  FIGURA 44.  DIODO 1N4148 ........................................................................................... 76  FIGURA 45.  RESISTOR (MILCOMP PRODUTOS ELETRÔNICOS LTDA., 2009). ... 77  FIGURA 46.  RELÉ DE 5V ................................................................................................ 77  FIGURA 47.  LED (DIODO SEMICONDUTOR) ............................................................. 78  FIGURA 48.  CI 74LS541 .................................................................................................. 78 
  • 10. 9 LISTA DE QUADROS QUADRO 1 – Endereços da porta paralela ..................................................................... 38 QUADRO 2 - Significado de cada pino do conector Centronics 36 pinos...................... 41 QUADRO 3 - Sequência de bytes gerados pela porta paralela ....................................... 43 QUADRO 4 - Script para criação da base de dados........................................................ 52
  • 11. 10 LISTA DE SIGLAS API – Application Programming Interface AR – Automação Residencial. CI – Circuito Integrado CPU – Central Processing Unit DMA – Direct Memory Access ECP – Enhaced Capabilities Port EPP – Enhaced Parallel Port FFT - Fast Fourier Transform IIS – Internet Information Service LED – Light-Emitting Diode PCB - Placa de Circuito Impresso PCM – Pulse Code Modulation RF – Reconhecimento da fala RUP – Rational Unified Process RV – Reconhecimento de voz SSP – Standard Parallel Port TF – Texto para Fala TTS – Text to Speech UML – Unified Modeling Language XML – Extensible Markup Language DLL - Dynamic-link library
  • 12. 11 SUMÁRIO 1.  INTRODUÇÃO .................................................................................................. 14  1.1.  Justificativa ........................................................................................................... 14  1.2.  Motivação ............................................................................................................. 14  1.3.  Objetivos............................................................................................................... 15  1.3.1.  Objetivo geral ....................................................................................................... 15  1.3.2.  Objetivos específicos ............................................................................................ 15  1.4.  Estrutura do trabalho ............................................................................................ 16  2.  FUNDAMENTAÇÃO TEÓRICA ..................................................................... 17  2.1.  Agentes inteligentes.............................................................................................. 17  2.2.  Reconhecimento de voz ........................................................................................ 18  2.2.1.  O que é o reconhecimento de voz? ....................................................................... 18  2.2.2.  Como funciona?.................................................................................................... 19  2.2.2.1.  Transformação PCM ............................................................................................ 19  2.2.2.2.  Padrões acústicos .................................................................................................. 21  2.2.2.3.  Modelos linguísticos ............................................................................................. 22  2.3.  Microsoft speech recognition SDK ...................................................................... 23  2.3.1.  Introdução ............................................................................................................. 23  2.3.2.  SAPI ..................................................................................................................... 24  2.3.3.  Gramática ............................................................................................................. 25  2.3.4.  Regras ................................................................................................................... 26  2.3.5.  Contexto livre de gramática .................................................................................. 27  2.4.  Automação residencial (domótica) ....................................................................... 27  2.4.1.  Objetivos da automação residencial ..................................................................... 27  3.  HARDWARE ...................................................................................................... 29  3.1.  Eagle Layout Editor .............................................................................................. 29  3.2.  Estrutura do Hardware .......................................................................................... 35  3.3.  Porta paralela ........................................................................................................ 37  3.3.1.  Introdução ............................................................................................................. 37  3.3.2.  Modelos de porta paralela .................................................................................... 37  3.3.3.  Endereços da porta paralela .................................................................................. 38  3.3.4.  Conector DB25 ..................................................................................................... 38  3.3.5.  Conector macho Centronics 36 pinos ................................................................... 40  3.3.6.  Ligando e desligando aparelhos externos através da porta paralela ..................... 42  4.  DESENVOLVIMENTO DO SOFTWARE ...................................................... 44  4.1.  Documentação ...................................................................................................... 44  4.1.2.  UML ..................................................................................................................... 44  4.1.2.1.  Diagramas de casos de uso ................................................................................... 45  4.1.2.2.  Diagrama de classes.............................................................................................. 47 
  • 13. 12 4.2.  Metodologias ........................................................................................................ 51  4.3.  Processo de comunicação entre software e SDK 5.1............................................ 53  4.4.  Plano de testes ...................................................................................................... 55  4.5.  Apresentação do software..................................................................................... 56  4.5.2.  Introdução ............................................................................................................. 56  4.5.3.  Requisitos funcionais............................................................................................ 57  4.5.4.  Aplicação desktop ................................................................................................ 57  4.5.5.  Aplicação web ...................................................................................................... 60  5.  CONCLUSÃO..................................................................................................... 61  5.1. Trabalhos futuros .............................................................................................................. 62  REFERÊNCIAS ..................................................................................................................... 63  ANEXOS ................................................................................................................................. 66  APÊNDICE A - DESCREVENDO A CRIAÇÃO DA PLACA DE CIRCUITO IMPRESSO (PCB).................................................................................................................. 67  APÊNDICE B - COMPONENTES ELETRÔNICOS UTILIZADOS ............................. 75  B.1 Transístor BC337 ............................................................................................................... 75  B.2 Diodo 1N4148.................................................................................................................... 76  B.3 Resistor .............................................................................................................................. 76  B.4 Relé de 5V ......................................................................................................................... 77  B.5 Led Verde / Led Vermelho 3mm ....................................................................................... 77  B.6 Circuito Integrado 74LS541 .............................................................................................. 78  APÊNDICE C – CENÁRIOS DOS CASOS DE USO ......................................................... 79  C.1. UC1 - Cadastrar Aparelho ................................................................................................ 79  C.2. UC2 - Consultar Aparelho ................................................................................................ 79  C.3. UC3 - Alterar Aparelho .................................................................................................... 79  C.4. UC4 - Excluir Aparelho .................................................................................................... 80  C.5. UC5 - Cadastrar Usuário................................................................................................... 80  C.6. UC6 - Consultar Usuário .................................................................................................. 81  C.7. UC7 - Alterar Usuário....................................................................................................... 81  C.8. UC8 - Excluir Usuário ...................................................................................................... 81  C.9. UC9 - Validar Comando de Voz....................................................................................... 82  C.10. UC10 - Ligar Aparelho ................................................................................................... 82  C.11. UC11 - Desligar Aparelho ............................................................................................. 82  C.12. UC12 - Aguardar Execução de Comando no Sistema .................................................... 83  C.13. UC13 - Capturar informações do sistema Local ............................................................. 83  C.14. UC14 - Validar Identificação .......................................................................................... 83  APÊNDICE D – PLANO DE TESTES E RELATÓRIOS DE EXECUÇÃO ................... 83  1.  INTRODUÇÃO .................................................................................................. 87  1.1.  Finalidade ............................................................................................................. 87 
  • 14. 13 1.2.  Informações Detalhadas ....................................................................................... 87  1.3.  Escopo .................................................................................................................. 87  1.4.  Identificação do Projeto ........................................................................................ 87  2.  REQUISITOS DE TESTE ................................................................................. 88  2.1.  Teste Funcional .................................................................................................... 88  2.2.  Teste de Interface do Usuário ............................................................................... 88  2.3.  Teste de Configuração .......................................................................................... 88  2.4.  Teste de Instalação ............................................................................................... 89  3.  ESTRATÉGIA DE TESTE ............................................................................... 89  3.1.  Tipos de Teste....................................................................................................... 89  3.1.1.  Teste Funcional .................................................................................................... 89  3.1.2.  Teste da Interface do Usuário ............................................................................... 90  3.1.3.  Teste de Configuração .......................................................................................... 90  3.1.4.  Teste de Instalação ............................................................................................... 91  3.1.5.  Ferramentas .......................................................................................................... 91  4.  RECURSOS ........................................................................................................ 92  4.1.  Papéis .................................................................................................................... 92 
  • 15. 14 1. INTRODUÇÃO 1.1. Justificativa A automação está cada dia mais presente em nosso cotidiano, tanto nas residências quanto nas indústrias e shoppings. Isso se deve à vários fatores, tais como redução do tempo disponível das pessoas e a constante preocupação das mesmas com a segurança e economia dos recursos disponíveis. A domótica (automação residencial) tem evoluído a cada dia. Atualmente, na maioria dos softwares existentes de automação, os usuários possuem pequenos confortos, como por exemplo, portões eletrônicos, alarmes, luzes com timer, entre outros. O grande objetivo é a convergência de tecnologias fazendo com que estejam conectadas entre si, e que os moradores de uma residência automatizada tenham o máximo de conforto e segurança que a tecnologia possibilitar (AFONSO, 2006). O campo de pesquisa relacionado ao reconhecimento de voz é muito grande, envolvendo várias áreas, tais como jogos, editores de texto, extensão de habilidades para deficientes físicos, atividades domésticas simples, tais como ligar e desligar aparelhos, sistemas de reconhecimento de fala para possibilitar diálogos inteligentes com máquinas, uso em pesquisas médicas sobre a voz e órgãos relacionados a sistemas de segurança. 1.2. Motivação Após levantamento de informações sobre diversos produtos disponíveis no mercado envolvendo reconhecimento de voz, tais como o Voice Pilot (MICROSOFT, 2003), da Microsoft, e o ViaVoice (IBM, 2009) da IBM, pode-se concluir que ainda existe espaço e necessidade de criação de novos produtos nesta área, pois os já existentes possuem alto custo, exigem hardware e software compatíveis e fazem com que exista uma constante dependência de fabricantes externos. O sistema de automação apresentado neste projeto é independente de especificações de hardware, possibilitando que qualquer computador doméstico simples seja capaz de executar perfeitamente todo o sistema.
  • 16. 15 Existe uma ausência de informações mais específicas em produtos para a área de reconhecimento de voz, principalmente no Brasil, sendo que a maioria das referências encontradas são provenientes de países da Europa e dos Estados Unidos. Diante destas informações, este trabalho busca a utilização e integração com o componente Microsoft Speech Recognition SDK (LONG, 2003), uma biblioteca de recursos disponibilizada gratuitamente através do site da Microsoft (2009), que tem como objetivo auxiliar no desenvolvimento de soluções com o reconhecimento de voz. Esta ferramenta foi integrada ao software de Automação Residencial disponibilizando meios para controlar equipamentos domésticos através do processamento computadorizado, com baixo custo e grande conforto. Além disto, o trabalho tem como objetivo a contribuição para o processo de inclusão digital dos portadores de necessidades especiais. 1.3. Objetivos 1.3.1. Objetivo geral Desenvolver um sistema de automação residencial para reconhecimento de voz, com “comandos únicos” que ativarão determinados pontos de energia conectados a aparelhos eletroeletrônicos e domésticos, através da porta paralela do computador. 1.3.2. Objetivos específicos Têm-se como objetivos específicos: a) Classificar e reconhecer palavras através do componente Microsoft Speech Recognition SDK 5.1; b) Ligar/Desligar o aparelho doméstico através do reconhecimento de voz; c) Possibilitar que os aparelhos da residência sejam controlados (Ligados ou Desligados) pelas aplicações desktop ou web; d) Permitir que o usuário monitore os estados de todos os aparelhos que estão ao seu controle pelas aplicações desktop e web.
  • 17. 16 1.4. Estrutura do trabalho O Capítulo 2 (dois) apresenta o estado da arte quanto ao funcionamento do reconhecimento de voz, destacando a complexidade das técnicas e sua evolução. Conceitos sobre Agentes Inteligentes diante do componente utilizado, reconhecimento da voz e seu funcionamento. Descreve o Microsoft Speech Recognition, e uma breve descrição sobre automação residencial e seus objetivos. O Capítulo 3 (três) relata toda a modelagem do sistema de automação residencial por comando de voz, passando pela estrutura do hardware, softwares utilizados na construção do projeto, componentes eletrônicos utilizados, os casos de uso e os planos de teste. O Capítulo 4 (quatro) apresenta o software que foi desenvolvido seguindo os conhecimentos adquiridos através da pesquisa bibliográfica. O Capítulo 5 (cinco) traz a conclusão do trabalho e as propostas futuras para melhorias do sistema.
  • 18. 17 2. FUNDAMENTAÇÃO TEÓRICA 2.1. Agentes inteligentes Basicamente um agente inteligente possui autonomia e executa tarefas, estando sempre vinculado a uma ação disparada automaticamente ou a uma ação externa manual a ser executada. A utilização de agentes inteligentes é cada vez mais difundida no meio computacional, principalmente nas áreas de interfaces, gerenciamento de redes, recuperação de informação, sistemas distribuídos e automação em geral (BARONE; YEPES, 2002). O termo agente inteligente refere-se a todo ente que possui habilidade, capacidade e permissão para atuar em nome de outro. Em termos usuais, agentes seriam pessoas com um conhecimento ou recurso mais especializado em uma determinada área, mediante o qual auxiliariam outros indivíduos em suas tarefas (BARONE; YEPES, 2002). Como ainda não é possível ter um consenso exato da definição sobre o termo agente inteligente, algumas definições mais relevantes são destacadas de acordo com alguns estudiosos: Segundo Wooldridge e Jennings (1994), são sistemas que apresentam um comportamento que é determinado por um processo de raciocínio baseado na representação de suas atitudes, tais como crenças, comprometimentos e desejos. Um sistema pode ser visto como um agente se possuir as seguintes propriedades: autonomia, habilidade social, reatividade, pró-atividade. De acordo com Nwana (1996), agente é um componente de software ou hardware capaz de atuar para poder executar uma tarefa em nome de um usuário. Tem-se ainda a definição de Russel e Norvig (1995), segundo o qual a inteligência está intrinsecamente relacionada com as ações racionais. Agir racionalmente significa agir de forma a alcançar as metas definidas por alguém, dadas às crenças deste. Assim, definem de forma genérica que um agente é algo que percebe seu ambiente por meio de sensores e atua nesse ambiente por meio de atuadores.
  • 19. 18 2.2. Reconhecimento de voz Há alguns anos atrás, o reconhecimento de voz era considerado por muitos como sendo apenas obra de ficção científica. Contudo, desde o final da década de 50, instituições de pesquisa já estudavam meios de fazer com que a voz fosse processada pelo computador. De fato, muitas aplicações estão sendo desenvolvidas atualmente no mercado. Um dos exemplos mais comuns, com os quais a maioria de nós certamente já tivemos contato, é a tecnologia de chamada por voz, presente em alguns celulares, rádio comunicadores e outros, existentes no mercado (RABINER; JUANG, 1993). 2.2.1. O que é o reconhecimento de voz? Frequentemente, a expressão “reconhecimento de voz” é utilizada com vários sentidos, que, na verdade, referem-se a tecnologias distintas. O processamento da voz pode ser aplicado em quatro áreas principais: comandos por voz, fala natural, síntese de voz e autenticação de voz. Cada uma destas é descrita a seguir: a) O reconhecimento de palavras (utilizado nos comandos de voz) caracteriza-se por processar apenas um pequeno trecho de fala, de modo a identificar que tipo de ação o sistema deve tomar. Este processamento torna-se simplificado, uma vez que o sistema já sabe de antemão quais os comandos disponíveis para o utilizador. Este é o caso de centrais de atendimento telefônico, onde o utilizador pode usar a voz em vez de pressionar botões (GUILHOTO, 2002). b) O reconhecimento de fala natural (ou fala contínua) envolve uma ou mais frases, isto é, várias palavras que tenham um sentido semântico. A fala reconhecida é então convertida em texto. O tipo de aplicação mais comum para essa tecnologia é o ditado de documentos, para uso em processadores de texto, escrita de e-mails, etc. (GUILHOTO, 2002). c) A síntese de voz é o processo contrário ao do reconhecimento da fala. O sintetizador recebe um texto na forma digital e transforma-o em ondas sonoras, ou em outras palavras, fazendo uma leitura em voz alta. Um programa de síntese de voz é útil nas situações em que o utilizador não pode desviar a atenção para ler algo ou não tem
  • 20. 19 acesso ao texto escrito, seja porque a informação está distante ou porque o utilizador tem alguma deficiência visual (GUILHOTO, 2002). d) A autenticação de voz baseia-se, por sua vez, no fato de que a voz é única para cada pessoa e pode ser utilizada para identificar alguém. Os sistemas de autenticação podem ser aplicados para permitir o acesso de uma pessoa a uma determinada função. Um telefone celular com esse recurso de voz, por exemplo, pode ser habilitado para que somente seu dono tenha o direito de usá-lo (GUILHOTO, 2002). 2.2.2. Como funciona? O reconhecimento de voz evoluiu bastante ao longo dos últimos anos. Antes, o reconhecimento processava-se apenas em modo discreto, isto é, o utilizador tinha que fazer uma pausa entre cada palavra ditada. Atualmente, o utilizador já tem a possibilidade de efetuar ditados contínuos ao computador. Além disso, o reconhecimento também se tornou mais inteligente, uma vez que possui um conjunto de regras gramaticais incorporadas permitindo, assim, uma melhor percepção do que está sendo ditado. Diferentes técnicas são utilizadas no processo do reconhecimento da voz humana, que transforma os sinais de áudio digitais provenientes da placa de som em voz reconhecida. Estes sinais passam por diversas etapas, ao longo das quais são aplicados métodos matemáticos e estatísticos junto a sua gramática de forma a tentar compreender o que está a ser ditado (WIKIPEDIA, 2009e). 2.2.2.1. Transformação PCM Quando o utilizador fornece um comando de voz pelo microfone, este é transmitido para a placa de som, sendo o sinal analógico, possivelmente amostrado 16.000 vezes por segundo. Em seguida, este é digitalizado através de uma técnica chamada Pulse Code
  • 21. 20 Modulation1 (PCM) (WIKIPEDIA, 2009e). Esta forma digital do sinal nada mais é do que uma stream2 (WIKIPEDIA, 2009e) de amplitudes que representa o sinal analógico. No entanto, o software de reconhecimento de voz não pode trabalhar diretamente com base nesta stream, dado que é muito complicado procurar padrões que possam ser relacionadas com a voz ditada atualmente. É por este motivo que a voz é transformada num conjunto de bandas de frequência discreta através de uma técnica chamada Fast Fourier Transform3 (FFT) (WIKIPEDIA, 2009b). Esta consiste numa amostragem do sinal de áudio em cada centésimo de segundo no domínio da frequência. Assim, a stream de entrada é agora representada por um conjunto de bandas de frequência discretas, que podem ser facilmente identificadas pelos componentes de frequência de um som. A partir destes componentes, é possível aproximar- nos do que o ouvido humano consegue captar. O passo seguinte envolve o reconhecimento destas bandas de frequência. Para isso, o software de reconhecimento de voz possui uma base de dados de milhares de frequências ou “fonemas”. Um fonema é a menor unidade de fala de um idioma ou dialeto. As dicções dos fonemas são diferentes entre si, de tal forma que, ao substituir um fonema numa palavra, esta passa a ter um significado completamente diferente. Por exemplo, se substituir o fonema “b” na palavra “bato” pelo fonema “m”, o significado será alterado para “mato”. A base de dados de fonemas é usada para comparar e identificar as bandas de frequência de áudio que foram amostradas. Se, por exemplo, a frequência de entrada tem um som igual ao “t”, o software tentará compará-lo com o respectivo fonema na base de dados. Ao encontrar o fonema correspondente, será atribuído ao sinal de entrada o número identificador do fonema na base de dados, também chamado de ”feature number”4. Graças às transformadas de Fourier e à base de dados de fonemas, tornou-se possível passar de um vetor PCM com 16.000 entradas para um vetor com apenas 100 entradas (por segundo), transformando o processo de reconhecimento em tempo real. 1 Representação digital de um sinal analógico, onde a magnitude do sinal é amostrado regularmente em intervalos uniformes, então quantizados para uma série de símbolos em um valor numérico (geralmente binário) do código (WIKIPEDIA, 2009e). 2 Pode ser definido como um fluxo de dados em um sistema computacional. Quando um arquivo é aberto para edição, todo ele ou parte dele fica na memória, permitindo assim alterações, por isto somente quando ele é fechado, tem-se a garantia de que nenhum dado se perderá ou será danificado (WIKIPEDIA, 2009f). 3 É um algoritmo eficiente para calcular a transformada de Fourier discreta e a sua inversa (WIKIPEDIA, 2009g). 4 Número identificador de cada fonema ditado, na base de dados do componente reconhecedor de voz.
  • 22. 21 2.2.2.2. Padrões acústicos O comando de voz é composto por diversos padrões acústicos e é justamente com eles que são formados todos os fonemas para o reconhecimento da voz. Em primeira instância o processo parece ser simples, a cada banda de frequência seria associado o seu fonema correspondente, o software, em seguida, juntaria os fonemas em palavras e o computador passaria a compreender, aparentemente, a voz humana. No entanto, o processo apresenta maiores complexidades quando visualizado de forma detalhada. Podem existir tantas variações no som, causadas pelo modo como as palavras são pronunciadas, que é quase impossível localizar a entrada na base de dados correspondente ao som. Se não bastasse, pessoas pronunciam a mesma palavra de formas diferentes e, para complicar ainda mais, o ambiente também adiciona componentes de ruído em situações nas quais o utilizador encontra-se em ambientes ruidosos. Assim sendo, o reconhecedor de voz pode apresentar resultados diferentes dependendo da localização do utilizador e da qualidade do microfone utilizado. Além disso, o próprio som de um fonema varia conforme os fonemas que o rodeiam e o som produzido por um fonema altera-se desde o início da sua pronúncia até o seu fim. Sendo assim, o software precisa usar técnicas complexas para aproximar o som de entrada e descobrir quais os fonemas que estão envolvidos. O ruído de fundo e os problemas de variação são solucionados com recurso de métodos estatísticos, ao permitirmos que um feature number seja usado por mais do que um fonema. Isto apenas é possível porque a duração de um fonema é longa se comparada com a frequência de amostragem de um centésimo de segundo. Quer dizer que enquanto um fonema está a ser pronunciado, lhe são atribuídos vários feature numbers. Admitindo que o software já foi treinado, ou seja, já foram estabelecidas as probabilidades de ocorrência de um determinado feature number num fonema, resta-nos calcular a probabilidade do conjunto de feature numbers registrados ser realmente o fonema (GUILHOTO; ROSA, 2001).
  • 23. 22 2.2.2.3. Modelos linguísticos Consiste em reconhecer palavras, comparando as combinações de fonemas com as palavras contidas no dicionário utilizado pelo programa. Contudo, isto não é assim tão simples: o utilizador pode se atrapalhar ao pronunciar uma palavra que não faz parte do dicionário; o software de reconhecimento de voz pode enganar-se ao reconhecer uma palavra; ainda não se sabe onde começa uma palavra e acaba a outra; o processamento de voz continua incomportável no nível de exigências de CPU e de memória. É por isto tudo que se torna necessário para o reconhecedor de voz restringir as possibilidades do que está a ser ditado, através do recurso de modelos linguísticos e gramáticas adequadas. Se o sistema for programado para fazer o reconhecimento de comandos, o modelo linguístico é mais simples do que se fosse para reconhecimento da linguagem natural. Nesse caso, o dicionário contém todas as formas possíveis de pronunciar cada comando registrado no sistema. Para a fala contínua, é preciso que o sistema utilize um dicionário com todas as palavras da língua ou pelo menos com todas as palavras usadas com maior frequência. As condicionantes não ficam por aqui. O dicionário deve também registrar as classes gramaticais de cada vocábulo. Além disso, é preciso construir um modelo gramatical com as construções possíveis e a probabilidade de ocorrência de cada tipo de construção. Com a ajuda destas informações, o software de reconhecimento de voz tem condições para concluir que as frases “foi à três anos” e “foi a três anos” não estão corretas, mas sim “foi há três anos”. Mais uma vez, para o caso do ditado discreto (reconhecimento de comandos), as gramáticas são muito mais simples, uma vez que o sistema sabe com antecedência quais as palavras que estão à espera. Antes disto, o software deve processar os fonemas para identificar corretamente o agrupamento de palavras. Os fonemas contidos em “foi há três anos” sugerem termos como “foia” e “trêzanos”, que não estão no dicionário de vocábulos conhecidos e, assim, devem ser descartados. Por outro lado, ao ouvir a palavra “comunicação”, o reconhecedor de voz terá que decidir se ouviu “comunica ação” ou um único termo. O modelo gramatical vai indicar qual é a construção mais plausível. Os programas mais recentemente implementados fazem a análise de toda a frase para ampliar a precisão do reconhecimento tomando, assim, vantagem do fato da linguagem apresentar uma estrutura. Por exemplo, supondo que o reconhecedor de voz tem dúvidas entre a escolha das palavras “hora” e “ora”, mas sabe que a palavra anterior é “uma”, então está na possibilidade de efetuar a escolha certa porque sabe que a sequência “uma hora” faz mais sentido do que a
  • 24. 23 sequência “uma ora”. A técnica que está por detrás disto usa “trigramas”, baseados em modelos estatísticos, que calculam a probabilidade de uma determinada sequência de palavras ocorrer. A maioria dos pacotes de reconhecimento da fala vem com dicionários que contêm cerca de 150 mil palavras do português. Os sistemas na língua inglesa também trabalham com aproximadamente a mesma quantidade de termos no dicionário (GUILHOTO; ROSA, 2001). . 2.3. Microsoft speech recognition SDK 2.3.1. Introdução A Microsoft está há mais de uma década realizando pesquisas sobre sistemas de reconhecimento de voz, inspirado a ficção cientifica, e sendo atribuídos a filmes, jogos, sistemas de automação e vários outros (RABINER; JUANG, 1993). O Microsoft Speech SDK (SDK) é um kit de desenvolvimento de software para construção de agentes de fala e aplicações para o Microsoft Windows. A interface de programação de aplicações de fala (SAPI (Speech Application Programming Interface)) (MEGATTS, 2009) reduz de forma substancial o código requerido para que se possa utilizar em um projeto o reconhecimento de voz (para mais informações sobre SAPI, ver seção dedicada no item 2.3.2). Desta forma tenta-se fazer com que a tecnologia de fala torne-se mais accessível e robusta para as novas aplicações que irão surgir (MICROSOFT, 2002). Este kit de desenvolvimento suporta OLE Automation5 (WIKIPÉDIA, 2009e) o que permite a portabilidade do kit para as linguagens ou ambientes de programação que possuem suporte a estas características, como Microsoft Visual Studio, Borland Delphi, C, C++. Existem dois tipos básicos de máquinas SAPI que são o sistema de Texto para Fala (TF) e o Reconhecimento de Voz (RV). O sistema de TF sintetiza o texto e arquivos para serem 5 É um mecanismo para a comunicação entre processos baseado em Component Object Model (COM) (MICROSOFT, 2002), introduzido pela Microsoft. Ele fornece uma infraestrutura na qual aplicações (chamadas de controladores de automação) podem acessar e manipular dados compartilhados (chamados objetos de automação) que são exportados por outras aplicações. Ela é uma evolução à Dynamic Data Exchange (DDE) (é uma tecnologia para a comunicação entre múltiplas aplicações executadas em Microsoft Windows e OS/2 introduzida pela Microsoft em 1987.), é um mecanismo mais antigo para que aplicações controlem umas as outras. Assim como em DDE, em OLE Automation o controlador de automação é o cliente, e a aplicação exportando os objetos de automação, é o servidor.
  • 25. 24 ouvidos usando vozes sintéticas. O reconhecedor de fala converte a voz humana falada no áudio para texto e arquivos. SAPI controla um grande número de aspectos de um sistema de fala, tais como: a) Controle de entrada de áudio b) Carrega arquivos de gramática (se foi criado dinamicamente ou criado a partir de dados que já existiam na memória); c) Compila padrões SAPI XML em formato de gramática, conversão de formatos gramaticais; d) Compartilhamento de reconhecimento através de múltiplas aplicações utilizando agentes compartilhados; e) Armazena dados e encaminha os resultados para análises posteriores. O reconhecedor de voz realiza as seguintes tarefas: a) Utiliza a interface de gramática do SAPI e carrega os comandos ditados; b) Realiza o reconhecimento; c) Retorna a partir do SAPI informações sobre a gramática e o estado das alterações; d) Gera reconhecimento e outros eventos para retornar informações a aplicação. 2.3.2. SAPI A interface da programação das aplicações de voz (Speech Application Programming Interface – SAPI) é uma API (Application Programming Interface) desenvolvida pela Microsoft que permite a utilização do reconhecimento de voz (Speech Recognition) e síntese de voz (TTS – Text To Speech) nas aplicações do Windows. Em geral, todas as versões desta API foram projetadas para que os programas consigam comunicar de uma maneira fácil, acessível e através de diversas linguagens de programação com o software que reconhece a voz ou que converte o texto para voz. Nas versões, de 1 a 4 as aplicações comunicam diretamente com os sistemas de voz. Estas API’s incluíam definições de interface abstratas com os diversos programas e não necessitavam de mais recursos. Entretanto, na família SAPI 5 as aplicações e os sistemas não comunicam diretamente, associando a fala que está em execução (sapi.dll) ao respectivo componente. Existe uma API que executa um destes
  • 26. 25 componentes para as aplicações e outro para o conjunto das relações entre os motores de voz. Normalmente em SAPI 5, os programas dão a ordem para: a) Chamar através da API uma gramática para o reconhecimento da voz; b) Iniciar o reconhecimento de voz; c) Fornecer o texto ao sintetizador para ser convertido em voz. O componente sapi.dll em execução interpreta estes comandos e processa-os, momento no qual torna-se necessário chamar o motor de voz que fará a interface. Um exemplo é o carregamento do arquivo de gramática que é feito em tempo real e, posteriormente, os seus dados são passados para o reconhecedor de voz, no qual são atualizados para serem utilizados. Os motores do reconhecimento e síntese de voz também geram eventos quando estão sendo processados (por exemplo, uma expressão vocal quando reconhecida ou o final de uma palavra sintetizada). 2.3.3. Gramática Para a Microsoft (2002), a gramática define as palavras que uma aplicação pode reconhecer. O reconhecimento da fala (RF) é baseado na gramática. Uma aplicação pode realizar o RF usando três diferentes tipos de gramática. Cada gramática utiliza-se de uma estratégia diferente para reduzir a possibilidade de sentença a ser reconhecida aumentando, assim, as chances de assertividade durante o processo de RF. a) Gramática em formato arquivo texto - Este tipo de gramática, que é definido em arquivo texto, tem o seu formato similar a arquivos “.ini”. Este arquivo consiste de um número de seções. Cada seção é identificada por uma nova linha com o nome da seção entre colchetes “[]”. As seções têm um número de valores, identificadas pelo nome do valor, seguido do sinal de igual “=” e finalmente pelo valor. Comentários podem ser acrescentados no arquivo. Para isto basta acrescentar ponto e virgula “;” ou duas barras “//”no início da linha. A vantagem do uso de listas consiste no fato das aplicações poderem setar facilmente novos parâmetros para a sua lista em tempo de execução sem ter que recompilar a gramática. O Anexo 1 possui um exemplo de uma gramática. b) Gramática livre - Aqui são utilizadas regras de uso, que predizem as próximas palavras, ou seja, reduz o número de candidatos para avaliar e para reconhecer a
  • 27. 26 próxima palavra. Para iniciar o uso deste tipo de gramática no RF, a aplicação, primeiro deve ativar uma regra específica dentro da gramática. Isto coloca a regra dentro do nó inicial do reconhecimento. Em outras palavras, para a regra ser utilizada, deve ser colocado no “Start” de regra. Este tipo de padrão requer uma lista de todas as regras que podem ser ativadas. Contudo, estas listas devem optar por ter sempre um número mínimo de regras, pois, desta forma, a eficiência da gramática será aumentada crescendo, assim, a precisão do reconhecimento. Esta ferramenta é muito poderosa devido à habilidade de recursão, mas também pode se tornar muito complexa. Gramática de ditado - Uma gramática de ditado define um contexto para falar, que identifica o assunto do ditado, o tipo de estilo de idioma que é esperado, e que ditado foi acabado no passado. Uma gramática de ditado não contém informação sobre o modelo de idioma (a máquina tem aquela informação) nem especifica tudo das palavras que podem ser faladas. Especifica somente palavras incomuns ou grupos esperados de palavras. Existem algumas características que podem influenciar a gramática durante o seu processamento. O peso da gramática é um destes fatores, utilizado a cada transação para alterar a semelhança dos mesmos já iniciados. Este peso é uma probabilidade e a faixa de valores permitida está entre 0 e 1. Os com valores 0, sempre serão interpretados como transições impossíveis de passarem a ser reconhecidos. Por definição, as gramáticas não possuem pesos definidos, para cada transição o peso será 1 dividido pelo número de transições fora do estado de precedência (O&A PRODUCTIONS, 2009). 2.3.4. Regras Cada gramática pode conter uma ou mais regras. Podem ser de alto nível, indicando que podem ser ativados para o reconhecimento. Cada uma tem um estado inicial, os quais são conectados por vários tipos de transição: a) Uma palavra de transição indica uma palavra para ser reconhecida; b) Uma regra de transição indica uma referência para uma sub-regra; c) Transições especiais que caracterizam ditados especiais dentro de um contexto
  • 28. 27 2.3.5. Contexto livre de gramática As referências para sub-regras podem ser recursivas, podem referenciar a elas próprias, um ao outro de forma direta ou indiretamente. Notificações de regras chamam o agente para informar quando regras são adicionadas, alteradas ou removidas. Existem cinco ações que são tomadas na realização das regras: a) Novas regras podem ser adicionadas; b) Regras podem ser removidas; c) Regras podem ser ativadas; d) Regras podem ser desativadas para o reconhecimento; e) Regras podem ser invalidadas, o qual é uma maneira utilizada para editar através de uma aplicação e deste modo o agente precisa fazer uma leitura nova do conteúdo da regra. 2.4. Automação residencial (domótica) A domótica, como é chamada a automação residencial, tem como principal objetivo a integração de todos os equipamentos residenciais, vinculando-os em uma só tecnologia. Independentemente dos problemas, a domótica visa atender às necessidades de usuários domésticos em termos de conforto e segurança, e também apresenta algumas soluções em termos de comunicação de dados. 2.4.1. Objetivos da automação residencial A domótica visa solucionar uma série de problemas usando eletrônica e conceitos muitas vezes vindos diretamente da ficção científica. O objetivo da automação residencial é integrar iluminação, entretenimento, segurança, telecomunicações, aquecimento, ar condicionado e muito mais
  • 29. 28 através de um sistema inteligente programável e centralizado. Como consequência fornece praticidade, segurança, conforto e economia para o dia a dia dos usuários (ABREU, 2003). De acordo com Abreu (2003), a automação residencial se divide em três tipos: a) Sistemas autômatos (stand alone): são divididos módulos entre os cômodos, onde cada um pode ser transmissor ou receptor e os módulos (que podem controlar luzes) podem ser controlados através de uma central na cabeceira da cama. O sistema pode ser montado aos poucos; b) Sistemas integrados com controle centralizado: a central é inteligente, as configurações podem ser simples ou complexas, inclui ações ativadas por eventos, equipamento controlado via infravermelho podem ser programados pela central; c) Sistemas de automação complexos: integração total dos sistemas domésticos, a residência precisa ser projetada para essa automação com cabeamento estruturado. Segundo Abreu (2003), os equipamentos, acessórios e técnicas comumente utilizadas na automação residencial são:  Telefonia e transmissão de dados,  Aquecimento e ar condicionado,  Iluminação,  Home theater e som ambiente,  Vigilância, alarme, iluminação de segurança, e circuito interno de TV,  Aparelhos eletrodomésticos,  Cortinas e portas automáticas,  Home offices.
  • 30. 29 3. HARDWARE 3.1. Eagle Layout Editor O Eagle Layout Editor (CADSOFT ONLINE, 2009) é uma ferramenta de fácil uso e poderosa para projeto de placas de circuito impresso (PCB). Desenvolvida pela empresa CadSoft Online (2009), o EAGLE veio para facilitar a vida de estudantes e profissionais que trabalham com desenvolvimento de placas de circuito impresso. Para os estudantes, ou aqueles que necessitam de um pequeno projeto, a CadSoft disponibiliza uma versão freeware do EAGLE. Contudo, algumas funcionalidades mais profissionais encontram-se desativadas. O EAGLE permite o desenho de circuitos elétricos, possibilitando colocar os símbolos representativos dos componentes, o que facilita a visualização do projeto em si. A Figura 1 mostra uma visão geral do circuito, desenvolvido no EAGLE, com todas as conexões entre os componentes. Foi definido a seguinte estrutura de conexões:  SV9 – Conexão com a porta paralela do computador  CON_PM e CON_PF – Conexões para interligar o Buffer de proteção da porta paralela com a placa dos LEDs  SV1 a SV8 – Conexão da placa dos LEDs com o driver de acionamento  SV10 – Conexão do driver de acionamento com a placa dos LEDs  TRAFO – Ligação do transformador a fonte
  • 31. 30 Figura 1. Esquema elétrico geral do circuito Na Figura 2 mostra a placa dos LEDs. Esta placa é interligada com a placa de driver de acionamento (Figura 3) que está junto ao equipamento. Cada conexão é identificada por um LED verde que, quando aceso, indica que o equipamento está ligado. Esta placa de LEDs, como pode ser observado, foi desenvolvida para acoplar até 8 drivers de acionamento, ou seja, até 8 equipamentos. Esta placa é composta apenas por resistores e diodos emissores de luz, sendo que finalidade dos resistores é limitar a corrente que deve circular em cada led. Um led
  • 32. 31 padrão, para que acenda com intensidade razoável, deve ser percorrido por uma corrente de +/- 10mA. Um led oferece uma queda de tensão de +/- 1.8V quando percorrido com sua corrente nominal. Portanto, para calcular o valor dos resistores usamos a lei de ohm: V=R*I Onde: V = tensão (que no caso é 5V - 1.8V de queda no led) R = resistência que queremos encontrar I = corrente que deve circular pelo led, que no nosso caso é 10mA = 0.01A Então temos: 5V-1.8V = R*0.01A R = 3.2V/0.01A R = 320ohms Portanto, o valor comercial mais próximo para os resistores de 320ohms é 330ohms. Figura 2. Placa do Leds O conjunto dos hardwares também é composto pelo driver de acionamento, que é basicamente um transistor operando como chave para ligar ou desligar o relé, representado como (K2 351). Este circuito é acoplado junto a cada equipamento, realizando o trabalho de
  • 33. 32 fechar ou abrir o circuito para passagem da corrente elétrica. No conector SV10 temos 3 sinais que são identificados da seguinte forma. 1=5V, 2=GND(terra), 3=Sinal para ligar/desligar o transístor e, por consequência, o relé. Explicando mais a fundo, o driver de acionamento recebe a alimentação (5V e GND) e o sinal para ligar/desligar o equipamento. Antes de chegar ao transístor, o sinal deve passar por um resistor para limitar a corrente que circula pela base do mesmo. Quando o sinal está presente, uma corrente circula pela base fazendo com que este conduza, e uma corrente circule pelo relé e este tenha seus contatos fechados, ligando o equipamento. O diodo em antiparalelo com o relé tem a função de prover um caminho para a corrente quando o relé é desligado, protegendo o transístor contra uma alta tensão que é gerada pela bobina do relé. É geralmente chamado de "diodo de roda livre". A alta tensão acontece pelo fato da bobina do relé ser um indutor, que tem a característica de manter a corrente que circula por ele constante, quando esta corrente é interrompida bruscamente e, na tentativa de mantê-la constante, uma alta tensão aparece nos terminais do indutor. Esta alta tensão, por sua vez, pode ser suficiente para danificar o transístor caso não haja outro caminho para a corrente no indutor. Sobre o relé utilizado no projeto, este é composto internamente por duas chaves, denominado (relé com contatos duplos). As chaves são nomeadas K1 e K2. Cada chave tem os terminais S, P e O (S1, P1, O1 e S2, P2, O2). Como no projeto é necessária apenas uma chave, as duas foram ligadas em paralelo formando, assim, uma única chave com maior capacidade de corrente. A Figura 3 destaca o driver de acionamento e seus contatos dos terminas que são ligados no paralelo. Figura 3. Circuito do driver de acionamento
  • 34. 33  “P” é o terminal comum de cada chave.  “S” é o terminal "Normalmente Aberto" de cada chave, ou seja, quando o relé está desenergizado, esta chave (formada por P e S) está aberta.  “O” é o terminal "Normalmente Fechado" de cada chave, ou seja, quando o relé está desenergizado, esta chave (formada por P e O) está fechada. Os equipamentos são conectados aos terminais P e S ou seja, TP1 e TP2 de forma que, quando o relé for energizado, esta chave é fechada e o equipamento é ligado. O terminal TP3 fica livre, servindo apenas caso seja necessário mudar o sentido do bit. Ao interligar TP1 e TP2 e o driver receber 0 (zero), o mesmo será desligado e quando receber 1(um) será ligado. Como o equipamento foi interligado entre os terminais TP1 e TP3, quando o driver de acionamento receber o bit 1(um) o equipamento será desligado. O circuito do buffer para proteção da porta paralela é mostrado na Figura 4. Este circuito possui a função de proteger a porta paralela e, ao mesmo tempo, fornecer os níveis de corrente elétrica suficientes para ativar os Circuitos Integrados. Estes buffers de proteção estão acoplados junto ao circuito integrado (CI) com referência (74LS244N). Dentro do CI existem 8 buffers, que têm, neste protótipo, a funcionalidade de proteger a porta paralela fornecendo mais corrente do que a mesma pode fornecer. Assim, os circuitos que estão ligados podem exigir maior corrente, sendo que o CI é capaz de fornecê-la sem requerer da porta paralela protegendo-a contra sobrecarga de corrente. O buffer de proteção é composto por um circuito integrado (CI) e um jumper. O mesmo é dividido em dois grupos de 4 buffers. Cada grupo pode ser habilitado/desabilitado separadamente através do pino representado pela letra G na Figura 4. No desenho, apenas para fins de representação, parece ter 2 CI's, o que se deve ao fato da existência dos dois grupos de buffers citados acima O jumper é representado pela sigla JEN. Como dito acima, os buffers podem ser habilitados/desabilitados através do pino de enable 'G'. Quando o jumper está na posição 1-2, os buffers ficam sempre habilitados, quando o jumper está na posição 2-3, os buffers podem ser habilitados através do pino 1 da porta paralela, ou seja, podem ser habilitados via software, colocando o pino 1 em nível baixo (0 volts).  Habilitar o buffer significa que o sinal que estiver presente na entrada do buffer, tem sua corrente amplificada e aparece na saída do buffer.  Desabilitar o buffer significa que suas saídas ficarão em alta impedância independente do sinal que estiver na entrada (o buffer não deixa o sinal passar).
  • 35. 34 Figura 4. Circuito do buffer para proteção da porta paralela Para finalizar a composição de todo o projeto de hardware a Figura 5 mostra o circuito da fonte de alimentação regulada, onde o nome já atribui à funcionalidade, que é alimentar todo o circuito com uma tensão de 5 volts regulada. Figura 5. Circuito da fonte de alimentação regulada (+5V) Todos estes circuitos demonstrados acima foram desenvolvidos no programa EAGLE e, posteriormente, convertidos para outro formato para a criação dos adesivos realização da plotagem em gráfica. A descrição da criação da Placa de Circuito Impresso (PCI) será apresentada no Apêndice A.
  • 36. 35 3.2. Estrutura do Hardware A estrutura do hardware é fundamental para entendimento do projeto, através desta estrutura é possível compreender detalhes técnicos e funcionais do hardware. Primeiramente é necessário enfatizar que todo o circuito trabalha com baixa tensão de 5 Volts, sendo responsável apenas por acionar o relé fechando o circuito da corrente elétrica do aparelho. O funcionamento de todo o projeto pode ser compreendido da seguinte forma, somente a porta paralela envia dados para o circuito. O circuito não envia nada de volta para a porta paralela, portanto não é necessário usar os sinais de entrada da porta paralela. O circuito recebe 8 sinais de controle (nível 0 ou 1) para ativar ou desativar os equipamentos, estes sinais seguem o seguinte caminho: Paralela->Buffer Octal->Drivers dos relés->Relés. Para que o sinal elétrico proveniente da porta paralela do computador seja capaz de acionar o relé e, por consequência, ligar o equipamento conectado ao mesmo, ele deve passar por alguns estágios de condicionamento.  O primeiro estágio é um buffer octal, ou seja, possui internamente oito buffers individuais, cuja principal finalidade é proteger a porta paralela impedindo que os circuitos seguintes drenem uma corrente maior do que ela é capaz de fornecer. Caso esta sobrecarga aconteça, a corrente será drenada do buffer octal ao invés de ser drenada da porta paralela. O buffer funciona como um mini amplificador de corrente.  O segundo estágio também é um amplificador de corrente, mas, desta vez, com uma capacidade bem maior se comparado com o buffer octal. É composto principalmente por um transístor operando como uma chave digital. Este transístor, quando acionado, fornece toda a corrente necessária para ligar o relé (esta corrente é cerca de 10 vezes maior do que a porta paralela é capaz de fornecer!) e, consequentemente, ligar o equipamento conectado ao circuito do relé. Nesta estrutura foram utilizados diversos componentes eletrônicos todos eles estão descritos no Apêndice B
  • 37. 36 A Figura 6 possibilita melhor entendimento de todo o processo e funcionamento quando implementado. O funcionamento é simples, o computador recebe um comando de voz através do microfone normal padrão, este comando de voz é processado no software de automação e os sinais são transmitidos via porta paralela para a placa mãe. A mesma é ligada em uma fonte de energia. Cada equipamento é interligado junto ao driver de acionamento através do cabo de energia. O driver de acionamento é ligado a uma fonte de energia e interligado à saída da placa mãe, identificada pela porta e pelos LEDs, na parte superior. Com isso, quando o comando de voz for totalmente reconhecido, o sinal, após chegar à placa mãe, já é capaz de identificar qual equipamento está relacionado ao comando de voz que está cadastrado junto ao banco de dados do software de automação. Com isto, a placa mãe envia o sinal ao driver de acionamento onde é feita a abertura ou fechamento do relé, permitindo passagem da corrente elétrica até o equipamento. Figura 6. Diagrama das fases do processo
  • 38. 37 3.3. Porta paralela A utilização da porta paralela neste projeto foi atribuída pelo fato de ser uma tecnologia que, apesar de não ser mais comercializada, permite acessibilidade e facilidade nos estudos e pesquisas acadêmicas. 3.3.1. Introdução A porta paralela é uma interface de comunicação entre o computador e um periférico. Quando a IBM criou seu primeiro computador pessoal, nos meados de 1960, a ideia era conectar a essa porta uma impressora, no entanto, são vários os periféricos que ainda utilizam-se desta porta para enviar e receber dados para o computador (exemplos: Scanners, Impressoras e outros) (ROGER.COM, 2009). 3.3.2. Modelos de porta paralela Existem três tipos de modelos de porta paralela, a transmissão unidirecional, transmissão bidirecional, e a porta avançada chamada de ECP. a) Transmissão unidirecional - A porta paralela SPP (Standard Parallel Port) pode chegar a uma taxa de transmissão de dados a 150KB/s. Comunica-se com a CPU utilizando um barramento de dados de 8 bits. Para a transmissão de dados entre periféricos são usado 4 bits por vez. b) Transmissão bidirecional - A porta avançada EPP (Enhanced Parallel Port) chega a atingir uma taxa de transferência de 2 MB/s. Para atingir essa velocidade, será necessário um cabo especial. Comunica-se com a CPU utilizando um barramento de dados de 32 bits. Para a transmissão de dados entre periféricos são usado 8 bits por vez.
  • 39. 38 c) A porta avançada ECP (Enhanced Capabilities Port) - Tem as mesmas características que a EPP, porém, utiliza DMA (acesso direto à memória), sem a necessidade do uso do processador, para a transferência de dados. Utiliza também um buffer FIFO de 16 bytes (ROGER.COM., 2009). O buffer FIFO armazena dados temporários até que sejam transferidos pra outro lugar. 3.3.3. Endereços da porta paralela O sistema operacional, Windows ou até mesmo o antigo DOS, nomeia as Portas Paralelas chamando-as de LPT1, LPT2, LPT3, etc. Contudo, a porta física padrão do computador geralmente é a LPT1 e os endereços de cada porta dependem da configuração de seus registradores, ou seja, cada porta paralela é formada por 3 registradores. O registrador de dados, o registrador de status e o registrador de controle. Cada um desses registradores possui um endereço diferente. Por exemplo, o endereço 0x378 (também chamado de endereço base da LPT1) é o endereço do registrador de dados da porta paralela LPT1. O endereço 0x379 (0x378 + 1) é o endereço do registrador de status da LPT1 e o endereço 0x37A (0x378+2) é o endereço do registrador de controle da LPT1. Portanto, cada LPT tem o seu endereço base, LPT1 = 0x378 e LPT2 = 0x278 e assim por diante. O quadro abaixo mostra os endereços hexadecimais e decimais de cada porta. Nome da Porta Endereço de Endereço da Porta Descrição memória 378 LPT1 0000:0408 888 decimal Endereço base hexadecimal LPT2 278 0000:040A 632 decimal Endereço base hexadecimal QUADRO 1 – Endereços da porta paralela Fonte: RogerCom (2009). 3.3.4. Conector DB25 O DB25 é um conector no qual o cabo paralelo se conecta ao computador para o envio e recebimento de dados. No DB25, um pino está em nível lógico 0 quando a tensão elétrica no
  • 40. 39 mesmo está entre 0 a 0,4v. Um pino se encontra em nível lógico 1 quando a tensão elétrica no mesmo está acima de 3.1 e até 5v. A Figura 7 mostra o conector padrão DB25, com 25 pinos, no qual cada pino tem um nome que o identifica: Figura 7. DB25 que fica atrás do micro Fonte: RogerCom (2009). A Figura 8 mostra o conector macho do cabo paralelo e suas referências para interligação entre o DB25 fêmea. As conexões D0 até D7 são as conexões de saída, justamente as usadas no sistema de automação, apresentadas na Figura 10. Figura 8. Conector macho do cabo paralelo Fonte: RogerCom (2009).
  • 41. 40 Figura 9. Foto do conector DB25 macho do cabo paralelo Fonte: RogerCom (2009). Todo este esquema é necessário para saber como enviar dados ou receber dados através da porta paralela, portanto a Figura 10 mostra claramente os pinos referentes às entradas e as saídas. Figura 10. Esquema de funcionamento do DB25 no modo SPP Fonte: RogerCom (2009). 3.3.5. Conector macho Centronics 36 pinos O conector macho Centronics 36 pinos faz parte do cabo da impressora e é através deste que a impressora é conectada ao computador. Ao desenvolver um projeto que utilize uma interface para conectar ao computador, pode-se utilizar um conector centronics 36 pinos
  • 42. 41 fêmea, isso faz com que a interface aproveite o cabo da impressora, encontrado facilmente em lojas de informática. A Figura 11 abaixo mostra o conector Centronics 36 pinos e sua descrição: Figura 11. Conector centronics 36 pinos Fonte: RogerCom (2009). O quadro abaixo mostra as descrições dos pinos do conector centronics, é a partir desta tabela que é possível fazer as conexões necessárias para o projeto de automação. Número do Pino Descrição 1 Strob 2 ao 9 Dados (D0...D7) 10 Ack 11 Busy 12 Paper End 13 Select Out 14 Auto Feed 15 ao 18 Não conectado 19 ao 30 GROUND 31 Init 32 Error 33 GROUND 34 a 35 Não conectado 36 Select In QUADRO 2 - Significado de cada pino do conector Centronics Fonte: RogerCom (2009).
  • 43. 42 3.3.6. Ligando e desligando aparelhos externos através da porta paralela Como já comentado, a porta paralela não é usada somente com uma impressora, é possível desenvolver um circuito eletrônico e acoplá-lo a essa porta e, através de um programa específico, enviar sinais digitais para controlá-lo. Estes foram os passos utilizados a princípio para montar tanto o hardware quanto o software de automação. Conforme o projeto de automação, é possível controlar até 8 equipamentos simultâneos. Diante disto, a Figura 12 esboça um protótipo de hardware utilizando LEDs. O mesmo será utilizado para entendimento dos pinos de saída do conector DB25. Na Figura 12, observe que o terminal do catodo (K) dos LEDs está ligado aos terminais dos resistores, que estão ligados através do cabo aos pinos do DB25. Se invertidos, o circuito não funcionará. Observe a enumeração dos pinos do conector DB25. Os pinos D0 a D7 são os pinos de saída, estes pinos são os responsáveis pelo envio de dados ao equipamento. Sinais são enviados individualmente por cada pino, possibilitando o total controle do hardware por meio do software (ROGER.COM., 2009). Figura 12. Esboço da conexão do conector DB25 Fonte: RogerCom (2009). O sistema de automação envia à Porta Paralela oito bits, um a cada vez que o usuário pressionar o botão, ou através do comando de voz. No entanto a lógica do software atribui um operador lógico “OU”, sendo possível também ligar e desligar vários equipamentos ao mesmo tempo. A sequência de bits gerada é vista no quadro abaixo.
  • 44. 43 Decimal Hexadecimal Binário Pino/Fio ativo (5V) Comentário 128 80 10000000 9 - D7 Cada bit do byte enviado à Porta Paralela está 64 40 01000000 8 - D6 relacionado com um pino do DB5, e um fio 32 20 00100000 7 - D5 do cabo paralelo, fisicamente. Ao enviar um 16 10 00010000 6 - D4 byte, que o(s) bit(s) esteja(m) ligado(s) ou 8 8 00001000 5 - D3 desligado(s), os LEDs acende(rão) ou 00000100 4 - D2 apaga(rão) conforme os estados dos bits. 4 4 2 2 00000010 3 - D1 1 1 00000001 2 - D0 QUADRO 3 - Sequência de bits gerados pela porta paralela Fonte: RogerCom (2009).
  • 45. 44 4. DESENVOLVIMENTO DO SOFTWARE 4.1. Documentação A documentação de software é extremamente necessária e auxilia na redução de horas preciosas na correção de problemas. Para muitos desenvolvedores, a criação de documentação técnica é a parte mais “aterrorizante” para se enfrentar em todo o processo de criação de um software, seja pela necessidade de escrever várias e várias páginas de texto, gráficos e desenhos ou ainda pela necessidade de largar aquilo que se aprendeu (programar) para fazer aquilo que não sabe bem (redigir). Entretanto, a documentação é parte integrante de qualquer sistema ou programa criado. Pode-se dizer que a documentação é tão importante quanto as questões de segurança, pois sem a devida documentação, bug's e pontos vulneráveis no sistema demoram a ser encontrados e corrigidos permitindo, assim, que os ataques continuem levando a resultados indesejáveis do sistema e, consequentemente, insatisfação de seu usuário. O projeto aqui proposto utilizou algumas técnicas de documentação, como documentação UML gerando os diagramas de caso de uso e classes. 4.1.2. UML A Linguagem de Modelagem Unificada (UML) é uma linguagem visual para especificar, construir e documentar os artefatos dos sistemas (LARMAN, 2007). A palavra visual na definição é um ponto chave – a UML é a notação diagramática padrão, de fato, para desenhar ou apresentar figuras (com algum texto) relacionadas a software (CADSOFT ONLINE, 2009).
  • 46. 45 4.1.2.1. Diagramas de Casos de Uso A UML fornece a notação de diagramas de casos de uso para ilustrar os nomes dos casos de uso e dos atores, bem como os relacionamentos entre eles (LARMAN, 2007). Os mesmos sugerem como os atores interagem com o sistema. A Figura 13 mostra o caso de uso principal, em que o usuário pode cadastrar os aparelhos existentes na residência, e os usuários que poderão acessar o sistema web. A descrição dos cenários existentes para cada caso de uso encontra-se no Apêndice C. Conforme diagrama representado pela Figura 13, todas as opções de cadastramento, consultas e exclusões estão relacionadas ao usuário local. Existe uma dependência no relacionamento entre as funcionalidades de cada caso de uso. Estas relações são utilizadas para demonstrar cada processo do sistema. Cada caso de uso possui ações classificadas pelos “includes” ou “extends” referindo-se aos atributos e dependências destinadas a cada caso de uso. Através deste diagrama é possível entender praticamente todos os processos que poderão ser incorporados durante o desenvolvimento.
  • 47. 46 Figura 13. Caso de uso principal do sistema
  • 48. 47 4.1.2.2. Diagrama de classes É uma representação da estrutura e relações das classes que servem de modelo para os objetos utilizados no desenvolvimento. Modelagem muito útil, define todas as classes que o sistema necessita possuir e é a base para a construção de diversos outros diagramas. Para a construção deste projeto foram utilizadas diversas classes, pois o intuito era estabelecer uma estrutura relacionada ao desenvolvimento orientado a objetos, com isto requer um melhor planejamento e boa estruturação dos diagramas. A Figura 14 ilustra os diagramas referentes às classes principais que compõem o projeto web. Dentro de cada diagrama é possível identificar quais atributos, métodos e classes serão compostos em todo desenvolvimento. O diagrama de classe pode ser gerado através de uma tecnologia chamada de engenharia reversa, que possibilita após o sistema pronto, gerar todo os diagramas para fins de documentação. Figura 14. Diagrama de classe do modulo Web A Figura 15 ilustra cada classe utilizada no desenvolvimento do modulo desktop. Este, no entanto, possui uma maior complexidade, pois realiza a integração com o componente SDK para o reconhecimento da voz.
  • 49. 48 Figura 15. Diagrama de classe do modulo Desktop
  • 50. 49 O projeto é composto por uma DLL (Dynamic-link library), termo técnico utilizado as bibliotecas de ligação dinâmicas, o mesmo pode ser desenvolvido separadamente da estrutura geral de todo o código fonte, sendo possível atribuí-la a qualquer outro projeto independentemente. Este é mais um dos diversos recursos sobre programação orientada a objetos. Esta DLL, chamada de IOAutomação, compõe toda a estrutura de dados que o sistema necessita tais como: inclusão, exclusão, pesquisas e outros. A organização de toda a estrutura foi planejada para futuras manutenções. Assim, os processos foram subdivididos conforme demanda do projeto. A Figura 16 ilustra todas as classes, métodos e atributos que compõem a estrutura relacionada aos aparelhos. Figura 16. Diagrama da estrutura dos aparelhos
  • 51. 50 A Figura 17 ilustra também todas as classes, métodos e atributos utilizados na estrutura de desenvolvimento referente aos usuários. Figura 17. Diagrama da estrutura dos usuários.
  • 52. 51 4.2. Metodologias Na parte de documentações a ferramenta utilizada foi o Enterprise Arquitect (E.A), o mesmo é considerado um software ícone no desenvolvimento das documentações. Utilizado por grandes empresas, o E.A possibilita uma utilização por 30 dias. No entanto, este tempo foi o suficiente para criar toda a estrutura de documentação do projeto de automação. A ferramenta utilizada na codificação de todo o código fonte, foi através da IDE de desenvolvimento Microsoft Visual Studio 2008, com interpretação da linguagem C#. A estrutura de dados foi atribuída ao MySql, que de fato se tornou pioneira tanto na área acadêmica quanto profissional, pelo fato de ser uma ferramenta totalmente gratuita, interativa e de fácil utilização. A Figura 18 ilustra o diagrama de entidade relacionamento de toda a estrutura composta no banco de dados. Figura 18. Diagrama entidade relacionamento do banco de dados
  • 53. 52 No Quadro 4, são ilustrados todos os scripts de criação da base de dados do sistema. Todos estes scripts podem ser executados separadamente ou todos juntos. Script de criação do banco de CREATE DATABASE IF NOT EXISTS automacao; USE automacao; dados DROP TABLE IF EXISTS `aparelho`; CREATE TABLE `aparelho` ( `Codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, Script de criação da tabela `NomeAparelho` varchar(45) NOT NULL, APARELHOS, e todos os seus `Descricao` varchar(45) NOT NULL, atributos. `ComandoVoz` varchar(45) NOT NULL, `Flag` int(10) unsigned NOT NULL, `Porta` varchar(2) NOT NULL, `ComandoVozSaida` varchar(45) NOT NULL, PRIMARY KEY (`Codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `porta`; CREATE TABLE `porta` ( `NomePorta` varchar(2) NOT NULL, Script de criação da tabela `Bits` varchar(8) NOT NULL, PORTA, e todos seus atributos PRIMARY KEY (`NomePorta`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; DROP TABLE IF EXISTS `usuario`; CREATE TABLE `usuario` ( `Codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, Script de criação da tabela `Nome` varchar(45) NOT NULL, USUARIO, e todos os seus `Usuario` varchar(45) NOT NULL, atributos. `Senha` varchar(45) NOT NULL, PRIMARY KEY (`Codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; QUADRO 4 – Script para criação da base de dados
  • 54. 53 4.3. Processo de comunicação entre software e SDK 5.1 A comunicação acontece da forma descrita a seguir. Quando instalado o Microsoft Speech Recognition SDK 5.1 ao Windows, ele cria diversos arquivos na pasta de sistemas. No entanto, ao inicializar o processo de desenvolvimento na IDE Microsoft Visual Studio 2008, inicialmente é necessário adicionar a referência do componente MICROSOFT SPEECH OBJECT LIBRARY 5.0, que pode ser encontrado seguindo os passos. Clique no menu PROJECT->ADD REFERENCE, na janela que irá abrir, siga para a aba COM, e procure pela referência citada, clique em OK e pronto. Feito isso já se consegue manipular e integrar o componente junto ao projeto, mas para isto é necessário ter conhecimento de lógica de programação, pois o componente é independente e, de certa forma, não consegue trabalhar sozinho, ou seja, é necessário o manuseio do mesmo via código. Quando se realiza uma referência de algum componente ou controle no projeto geral, significa que é possível obter uma comunicação mais diretamente. Para isto, as técnicas de programação orientada a objeto (POO), são extremamente viáveis e necessárias. Até o momento, o software não realizou nenhuma comunicação com o componente. Para isso, é necessário começar o processo de codificação no código fonte realizando a integração dos mesmos. Inicialmente, para realizar uma primeira comunicação, precisa-se inicializar o componente de voz, o que é feito adicionando o controle SpeechListBox que é criado junto ao toolbox da IDE. Posteriormente, através da propriedade “SpeechEnabled”, é possível habilitá- lo. Contudo, agora se realiza a codificação do código para habilitar totalmente o componente, deixando livre para o manuseio em todo o sistema. A Figura 19 ilustra o código utilizado no projeto.
  • 55. 54 //Inicializa o componente de reconhecimento de voz private void InitializeSpeech() { Debug.WriteLine("Inicializando Reconhecimento de Voz.."); m_editMensagens.AppendText("Inicializando Reconhecimento de Voz.. (Aguardando comando inicial!!)"); try { objRecoContext = new SpeechLib.SpSharedRecoContext(); objRecoContext.Hypothesis += new _ISpeechRecoContextEvents_HypothesisEventHandler(RecoContext_Hypothesis); objRecoContext.Recognition += new _ISpeechRecoContextEvents_RecognitionEventHandler(RecoContext_Recognition); grammar = objRecoContext.CreateGrammar(grammarId); ruleTopLevel = grammar.Rules.Add("TopLevelRule", SpeechRuleAttributes.SRATopLevel | SpeechRuleAttributes.SRADynamic, 1); ruleListItems = grammar.Rules.Add("ListItemsRule", SpeechRuleAttributes.SRADynamic, 2); SpeechLib.ISpeechGrammarRuleState stateAfterSelect; stateAfterSelect = ruleTopLevel.AddState(); object PropValue = ""; ruleTopLevel.InitialState.AddWordTransition(stateAfterSelect, PreCommandString, " ", SpeechGrammarWordType.SGLexical, "", 0, ref PropValue, 1.0F); PropValue = ""; stateAfterSelect.AddRuleTransition(null, ruleListItems, "", 1, ref PropValue, 0F); RebuildGrammar(); grammar.CmdSetRuleState("TopLevelRule", SpeechRuleState.SGDSActive); speechInitialized = true; } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Este aplicativo não pode executar corretamente. Exceção na inicialização do componente de voz.rnrn" + e.ToString(), "Error"); } } Figura 19. Código fonte da habilitação do componente de voz A execução dos comandos é feita pela classe que geralmente é chamada de Rebuild Grammar, ou seja, execução das gramáticas. Este nome pode ser modificado de acordo com o padrão de cada profissional. Nota-se também que nesta classe já é necessária a integração com o banco de dados para realizar a conferência entre comando reconhecido e base de dados. A Figura 20 ilustra os códigos que foram utilizados para executar os comandos reconhecidos pelo sistema. Este trabalho visa demonstrar o estudo e pesquisas tanto do reconhecimento de voz quanto da automação residencial, não é, no entanto o foco relacionar todos os passos de desenvolvimento. As ilustrações foram necessárias para que o leitor consiga entender o paradigma do projeto, e através de estudos próprios relacionados a estes, consigam estabelecer outros meios de desenvolvimento.
  • 56. 55 //Executa os comandos adicionados public bool RebuildGrammar() { if (!speechEnabled || this.DesignMode) { return false; } object propValue = ""; try { IOAutomacao.AparelhoBLL bll = new IOAutomacao.AparelhoBLL(); dstAparelho = bll.ObterAparelhoPesquisa(); ruleListItems.Clear(); int count = 0; if (dstAparelho.AparelhoPesquisa.Count > 0) { foreach (DataSetAparelho.AparelhoPesquisaRow linha in dstAparelho.AparelhoPesquisa) { ruleListItems.InitialState.AddWordTransition(null, linha.ComandoVoz, " ", SpeechGrammarWordType.SGLexical, linha.ComandoVoz, count, ref propValue, 1F); ruleListItems.InitialState.AddWordTransition(null, linha.ComandoVozSaida, " ", SpeechGrammarWordType.SGLexical, linha.ComandoVozSaida, count, ref propValue, 2F); count = +1; } grammar.Rules.Commit(); } } catch (Exception e) { System.Windows.Forms.MessageBox.Show("Exceção capturada quando reconstrução dinâmica na regra do listbox.rnrn" + e.ToString(), "Error"); } return true; } Figura 20. Código fonte da execução dos comandos reconhecidos 4.4. Plano de testes O RUP (Rational Unified Process) é uma metodologia para desenvolvimento de software criada pela Rational Software, IBM, SofTeam, Unisys, Nihon Unisys, Alcatel e Q-Labs. O mesmo se tornou mais do que um software para auxiliar no desenvolvimento é uma metodologia de desenvolvimento, com uma estrutura formal e bem definida. Portanto, utilizando-o como base, um Plano de testes foi desenvolvido a fim de garantir que os casos de uso e as funcionalidades indicadas fossem implementados corretamente. Com sua execução foi gerado um relatório de execução dos testes. De acordo com os testes realizados, o funcionamento do software foi bem sucedido, teve algumas falhas ou cancelamentos de alguns processos durante os testes, mas nada que prejudicasse o funcionamento em geral. Falhas essas que são previstas durante o próprio desenvolvimento. Com base no relatório verifica-se que o resultado foi satisfatório, mostrando que o software está apto ao funcionamento. O Plano de teste e o relatório de execução dos testes são encontrados no Apêndice D.