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.
56



 4.5. Apresentação do software




   4.5.2. Introdução




        O sistema Automação Residencial por comando de voz aqui proposto é destinado ao
controle de equipamentos domésticos de forma automática em uma residência. É possível
utilizá-lo pelas aplicações desktop ou web, e pode ser considerado um sistema em tempo real.
        Sistemas de tempo real são sistemas de computação que monitoram, respondem ou
controlam um ambiente externo. Esse ambiente está conectado ao sistema de computação
através de sensores (microfone), atuadores e outras interfaces de entrada e saída. Podem
constituir-se de objetos físicos ou biológicos de qualquer forma e estrutura (SHAW, 2003). O
tempo de resposta aos estímulos externos geralmente está dentro dos limites estabelecidos
para seu funcionamento aceitável. Não importa o tamanho do intervalo de tempo, se é em
nanossegundos ou em minutos. Se o sistema tem um tempo limite para responder, então é um
sistema em tempo real.
        Tais aplicações vêm, aparecendo como parte de nossas infraestruturas comerciais,
governamentais, militares, educacionais e culturais. Nesses, estão incluídos (SHAW, 2003):
           a) Sistemas de controle de veículos para automóveis, metrôs, aeronaves, ferrovias
              e navios;
           b) Controle de tráfego para auto-estradas, espaço aéreo, trilhos de ferrovias e
              corredores de navegação marítima;
           c) Controle de processo para usinas de energia, indústrias químicas e para
              produtos de consumo, como refrigerantes e cerveja;
           d) Sistemas    médicos   para   radioterapia,     monitoramento   de   pacientes    e
              desfibrilamento;
           e) Usos militares como controle de tiro, rastreamento e sistemas de comando e de
              controle;
           f) Sistemas de manufatura com robôs;
           g) Telefone, rádio e comunicações por satélite;
           h) Jogos por computador;
           i) Sistemas de multimídia que provêm interfaces textuais, gráficas, de áudio e de
              vídeo;
57



              j) Sistemas domésticos para monitoramento e controle de eletrodomésticos;
              k) Sistemas de automação predial que controlam temperatura ambiental,
                 iluminação portas e elevadores;
              l) Sistemas de automação residencial que controlam equipamentos domésticos.
       O sistema de automação residencial por comando de voz possibilita ligar e desligar
qualquer equipamento residencial, possibilitando o monitoramento de todo o status dos
equipamentos, informando a localidade do equipamento, e seu status (desligado ou ligado).




   4.5.3. Requisitos funcionais




   a) O usuário poderá ligar e desligar os equipamentos da residência pela aplicação
       desktop através do comando de voz ou pela internet;
   b) O usuário poderá visualizar todos os aparelhos que estão sendo controlados, tanto pela
       aplicação desktop quanto pela internet.




   4.5.4. Aplicação desktop




        Na aplicação desktop os equipamentos são demonstrados na aba principal em
destaque, através de uma tabela com diversas informações, como:
        1) ID (Número de identificação)
        2) Nome do Aparelho
        3) Descrição do Aparelho
        4) Comando de Voz (Comando para ligar o equipamento)
        5) Porta
        6) Status (é alterada de acordo com o estado do dispositivo)
        7) Comando Voz de Saída (Comando para desligar o equipamento)
       A Figura 21 ilustra a aplicação desktop com alguns dispositivos ligados e outros
desligados.
58




                               Figura 21.     Aplicação desktop


       O sistema também possui um ambiente de cadastros, onde é através deste que o
usuário deverá cadastrar quais usuários poderão ter acesso via web, e quais os aparelhos
interligados ao sistema. A Figura 22 ilustra a área de cadastro de aparelhos.
       Neste cadastro é necessário inserir todas as informações exigidas para que o sistema
tenha um funcionamento perfeito.




                  Figura 22.     Cadastro de aparelhos na aplicação desktop
59



       A Figura 23 ilustra a área do cadastramento dos usuários, que são utilizados no
momento do acesso ao sistema web, concretizando os passos mínimos de segurança que se
exige ao disponibilizar um sistema web.




               Figura 23.     Cadastro de usuários utilizados para acesso web




       A Figura 24 ilustra uma visão geral da área representada com os cadastros de
aparelhos e usuários.




                    Figura 24.    Visão geral da área de cadastramentos.
60



   4.5.5. Aplicação web




        A aplicação web foi desenvolvida com o intuito de simplicidade, facilidade,
funcionalidade e praticidade, principalmente para que pessoas com necessidades especiais
possam operar o sistema. No entanto, nada de grandes interfaces, o foco realmente é a
funcionalidade.
        Logo ao inicializar a aplicação, uma identificação de login é aberta, isso favorece o
mínimo de segurança ao sistema, uma vez que o mesmo é aberto à rede mundial de
computadores. Após a identificação, todos os equipamentos são listados juntamente com o
status de cada equipamento, com informações do status de ligado ou desligado possibilitando
assim, ligar ou desligá-lo manualmente.




                            Figura 25.       Aplicação Web (login)

       Todos os equipamentos são listados, conforme Figura 26. Os botões a esquerda são
utilizados para realizar as ações conforme explicação da legenda.




                                Figura 26.      Aplicação Web
61



   5. CONCLUSÃO




       Pode-se verificar que o reconhecimento de voz é uma área que está cada vez mais em
expansão, com o intuito de melhorar e facilitar tarefas cotidianas. É certo que ainda está numa
fase de evolução, mas mesmo assim já consegue, e com algum grau de certeza, obter
resultados bastante promissores.
       Este trabalho atingiu as metas propostas de desenvolvimento de um sistema que
engloba automação residencial por comando de voz. Foi possível, no entanto, verificar
algumas das características que tornou o SDK uma das novas alternativas para a utilização do
reconhecimento de voz em sistemas de automação. A família Microsoft realmente fez um
bom trabalho na criação e melhoramento do componente SDK, a mais de uma década eles
vêm aprimorando o componente para que sua integração a outros sistemas se torne cada vez
útil. O mesmo foi utilizado no projeto aqui proposto, se comportando perfeitamente e
alcançando o resultado esperado. Contudo, sempre há alguns escorregões, pois como sempre
falamos nada é perfeito, e tudo se ajusta e melhora conforme pesquisas e feedbacks realizados
por profissionais e alunos durante a utilização do componente. Por ser o SDK uma ferramenta
gratuita, a Microsoft conta com a participação de todos os que utilizam da mesma para expor
seus defeitos, para que possam corigi-los em novas versões.
       Para a realização deste trabalho foram feitos estudos referentes a sinais enviados e
recebidos pela porta paralela LPT1, reconhecimento de voz utilizando componente Microsoft
Speech Recognition (SDK 5.1), sem os quais não seria possível desenvolver esse trabalho;
conceitos sobre as tecnologias existentes para automação residencial e sobre eletrônica.
        O projeto demonstra uma viabilidade econômica satisfatória deste nível de
automação residencial com um custo bem acessível a todas as classes.
       O projeto proposto mostra-se extremamente viável, pois atualmente é notável que uma
maior atenção deveria ser dispensada para o público portador de necessidades especiais.
        Um projeto adaptado a uma residência real deverá trazer consigo elementos capazes
de controlar níveis superiores de reconhecimento de voz, através de microfones superiores aos
usados no protótipo do projeto. Ainda assim, a viabilidade econômica do projeto é justificada
frente aos valores exagerados cobrados por empresas que atuam nesse nicho de mercado.
        Após a conclusão dos estudos e do desenvolvimento deste projeto, observou-se que o
mesmo é um sistema consideravelmente simples de ser implementado, possibilitando a
expansão da automação residencial por comando de voz de baixo custo, que ainda está em
62



grande crescimento e amadurecimento, apresentando ainda poucos produtos acessíveis no
mercado.




   5.1. Trabalhos futuros


        Como trabalhos futuros, deseja-se, diante das funcionalidades desempenhadas pelo
sistema, implementar os itens de:
             Modificar o sistema de comunicação, passando a trabalhar com porta USB, ou
diretamente via Bluetooth ou Wifi.
             Não limitar quantidades de aparelhos a serem controlados.
63



REFERÊNCIAS



ABREU, R. S. Automação residencial: um pouco de história. Ribeirão Preto, 2003. 46
eslaides, color. PowerPoint for Windows 10.26. Arquivo ppt baixado da Internet. Disponível
em: <http://www.aureside.org.br/publicacoes/download/automacao_residencial.zip>. Acesso
em: 28 set. 2009.


AFONSO, R. Sistema de automação residencial com central de controle microcontrolada
e independente de pc. 2006. 91 f. Monografia (Trabalho de Conclusão de Curso II do curso
de Ciências da Computação) – Universidade Regional de Blumenau, Blumenau, 2006.


BARONE, D. A. C.; YEPES, I. Inteligência artificial distribuída: uma abordagem ao
comportamento social inteligente. Sociedades Artificiais. Porto Alegre: Bookman, 2002.


BEIZER, B. Software Testing Techniques. New York:: Van Nostrand Reinhold Company,
1990.


CADSOFT ONLINE. Eagle: version 5.6. Disponível em <http://www.cadsoftusa.com>.
Acesso em: 07 out. 2009.


CATHEY, J. J. Dispositivos e circuitos eletrônicos. 2. ed. Porto Alegre: Bookman, 2003.


ENDERLEIN, R. Microeletrônica: uma introdução ao universo dos microchips, seu
funcionamento, fabricação e aplicações. São Paulo: EdUSP, 1994.


GUILHOTO, P. Reconhecimento de voz. Portugal: Sistema Multimídia, 2002. p. 5.


GUILHOTO, P. J. S.; ROSA, S. P. C. S. Reconhecimento de voz: sistemas multimédia:
2001/2002. Coimbra: Universidade de Coimbra, Faculdade de Ciências e Tecnologias,
Departamento de Engenharia Informática, 2001.


IBM. Embedded ViaVoice. Disponível em:
<http://www-01.ibm.com/software/pervasive/embedded_viavoice/>. Acesso em:
10 maio 2009.


IBM RESEARCH. Intelligent Agents Project at IBM T. J. Watson Research.
Disponível:      site       IBM         Corporation        (1998). URL:
http://www.research.ibm.com/iagents/. Consultado em 13 dez. 2009.
64



LARMAN, G. Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and Iterative Development. Porto Alegre: Bookman, 2007.


LONG, B. Speech Synthesis & Speech Recognition Using SAPI 4 High Level Interfaces.
Embarcadero Technologies. 2003. Disponível em:
<http://edn.embarcadero.com/print/29581>. Acesso em: 05 maio 2009


MEGATTS. SAPI. Disponível em:
<http://www.megatts.com/2007/07/10/sapi-o-que-e/>. Acesso em: 2 out. 2009.


MICROSOFT. Help Microsoft Speech SDK version 5.1. Microsoft Corporation, 2002.


MICROSOFT. Speech SDK 5.1. Download. Disponível em:
<http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-
6583171b4530&DisplayLang=en>. Acesso em: 02 jan 2009.


MICROSOFT. Suporte. Voice pilot. Dicas sobre treinamento de voz piloto.              2003.
Disponível em: <http://support.microsoft.com/kb/95089>. Acesso em: 10 maio 2009.


MILCOMP PRODUTOS ELETRÔNICOS LTDA.                          Resistor.   Disponível    em:
<http://www.milcomp.com.br/>. Acesso em: 20 jun.2009.


NWANA, H. S. Software agents: an overview. Knowledge Engineering Review, Cambridge,
v. 11, n. 3, p. 205-244, 1996.


O & A PRODUCTIONS. Why Should I Use Speech in My Application. Disponível em:
<http://www.o2a.com/framesPrimer.htm>. Acesso em: 4 out. 2009.


RABINER, L. R.; JUANG, B. H. Fundamentals of speech recognition. New York: Prentice
Hall,1993.


RAMOS, C. M. et al. Física fundamental: vol. único: 2º grau. São Paulo: FTD, 1993.


RATIONAL UNIFIED PROCESS®. Rational Unified Process: visão geral. 2001.
Disponível em: <http://www.wthreex.com/rup/portugues/index.htm>. Acesso em: abr. 2009.
65



ROBOTERNETZ.         Hauptseite.    [Transistor].    Disponível em: <http://www.rn-
wissen.de/index.php/Hauptseite>. Acesso em: 20 jun. 2009.
ROGER.COM. 2009. Disponível em:<http://www.roger.com>. Acesso em: 20 jun. 2009.


RUSSEL, S.; NORVIG, P. Artificial Intelligence: A modern Approach. New York: Prentice
Hall, 1995.


SHAW, A. C. Sistemas e software de tempo real. Porto Alegre: Bookman, 2003.


WIKIPÉDIA.         Component       Object     Model.    2009a.      Disponível    em:
<http://pt.wikipedia.org/wiki/Component_Object_Model>. Acesso em: 3 out. 2009.


WIKIPÉDIA. Fast Fourier Transform. 2009b. Disponível em:
<http://en.wikipedia.org/wiki/Fast_Fourier_transform>. Acesso em: 15 set. 2009.


WIKIPÉDIA. LED. 2009c. Disponível em: <http://pt.wikipedia.org/wiki/LED>.
Acesso em: 12 out. 2009.


WIKIPÉDIA. OLE Automation. 2009d. Disponível em:
<http://pt.wikipedia.org/wiki/OLE_Automation>. Acesso em: 3 out. 2009.


WIKIPÉDIA. Pipeline. 2009e. Disponível em: <http://pt.wikipedia.org/wiki/Pipeline>.
Acesso em: 7 set. 2009.


WIKIPÉDIA.           Pulse-code        modulation.     2009f.        Disponível   em:
<http://en.wikipedia.org/wiki/Pulse-code_modulation>. Acesso em: 7 set. 2009.


WIKIPÉDIA. Stream. 2009g. Disponível em: <http://pt.wikipedia.org/wiki/Stream>. Acesso
em: 10 set. 2009.


WOOLDRIDGE, M.; JENNINGS, N. R. Intelligent Agents: Theory and Practice. Knowledge
Engineering Review, Cambridge, v. 100, n. 2, p. 115-152, 1994.
66



ANEXOS




                        Anexo 1 - Exemplo de Gramáticas




      A descrição deste anexo serve como exemplo de uma gramática que é interpretada
internamente pelo SDK. (RABINER; JUANG, 1993)


[Grammar]
langid=1033
type=cfg

[Lists]
=Ligar
=Desligar
=Abrir
=Fechar
[<Start>]
<Start>= [opt] <Ligar> [opt] <Desligar> [opt] <Abrir>[opt]<Fechar>

[Ligar]
=TV
=Ar
=Ventilador
=Computador

[Desligar]
=TV
=Ar
=Ventilador
=Computador

[Abrir]
=Portão
=Veneziana
=Porta

[Fechar]
=Portão
=Veneziana
=Porta
67



APÊNDICE A - DESCREVENDO A CRIAÇÃO DA PLACA DE CIRCUITO
IMPRESSO (PCB)




       Os passos para a criação de uma PCB é simples, mas requer bastante atenção em todos
os detalhes, pois qualquer erro de projeto o circuito pode não funcionar, ou até mesmo
danificar outros componentes junto à placa. É necessário bastante atenção nos produtos
utilizados, alguns deles são corrosivos e prejudiciais à saúde, caso venha ter algum contato
interno.
       Antes de realizar a criação da PCB, é necessário realizar alguns testes dos
componentes eletrônicos, se possível junto a um protoboard, evitando constrangimentos e
desperdício de material.
       Protoboard em inglês, ou melhor, matriz de contato é uma placa com milhares de
furos e conexões condutoras para montagem de circuitos elétricos experimentais. A grande
vantagem do protoboard na montagem de circuitos eletrônicos é a facilidade de inserção de
componentes, uma vez que não necessita soldagem. As placas variam de 800 furos até 6000
furos, tendo conexões verticais e horizontais. Na superfície de uma matriz de contato há uma
base de plástico na qual existem centenas de orifícios onde são encaixados os componentes.
Em sua parte inferior são instalados contatos metálicos que interliga eletricamente os
componentes inseridos na placa. Geralmente suportam correntes entre 1A e 3A. A Figura 27
mostra o teste realizado com o auxilio de um protoboard.




                           Figura 27.   Teste em placa de Protoboard
68




       Após os testes, é hora de verificar o projeto no computador, levá-lo até uma gráfica e
realizar o corte do adesivo. Qualquer operador de plotter entende como realizar este tipo de
serviço de recorte para adesivos com mascaras. Este processo seria uma simples impressão
em um papel A4, mas devido à corrosão necessária para criar as trilhas eletrônicas das placas,
o adesivo é indispensável e o método mais simples e acadêmico realmente torna-se este. Os
passos seguintes serão demonstrados conforme figuras abaixo.
       A Figura 28 mostra o projeto no computador. Este será levado até uma gráfica para
fazer os recortes.




                            Figura 28.      Projeto no computador


       Na Figura 29 é demonstrado o adesivo plotado, ou seja, já no recorte, conforme
projeto.




                        Figura 29.       Adesivo plotado sem mascara
69




       Figura 30 mostra como é feita a retirada da máscara, para que seja introduzida no
adesivo. Esta mascara ajuda na retirada do adesivo, uma vez que não é possível fazer a
retirada manualmente devido às diversas trilhas eletrônicas criadas no projeto.




                             Figura 30.     Retirando a mascara


       A Figura 31 demonstra o adesivo já com mascara colada.




                        Figura 31.     Colando a mascara no adesivo


       Realiza-se uma fricção ao adesivo, até que a mascara esteja realmente fixada ao
adesivo.
70




                      Figura 32.     Fixando bem a mascara ao adesivo


       A Figura 33 mostra o momento da retirada do adesivo através da máscara, observe que
todo o adesivo sai junto a mascara, isso facilitará na colagem a placa metálica.




                              Figura 33.     Retirando a mascara


       O momento agora é de atenção, realizar a colagem do adesivo junto à placa metálica,
tendo o cuidado de não deixar bolhas, isso pode prejudicar no momento da corrosão da placa.
71




                   Figura 34.     Colando o adesivo na PCB com a máscara


       Agora é necessário retirar o excesso de adesivo, verifique que conforme a retirada vai
se formando as trilhas eletrônicas.




                         Figura 35.     Retirando excesso de adesivos


       A Figura 36 mostra uma comparação entre o projeto no computador e o projeto na
placa após a colagem dos adesivos, este momento é bom se atentar a todos os detalhes do
projeto, para possíveis correções antes de torná-lo físico.
72




                         Figura 36.     Verificando projeto e placa


       A Figura 37 mostra o momento da corrosão, necessária para retirar a parte metálica
que não contem os adesivos. A corrosão é feita com percloreto de ferro, produto químico e
necessita de cuidados como luvas e espátulas.




                 Figura 37.    Corroendo as placas com percloreto de ferro


       Após a corrosão é necessário realizar uma limpeza a placa, isso é feito com água
corrente.
73




                       Figura 38.     Lavando as placas após corrosão


       A Figura 39 mostra a placa após a lavagem, veja os detalhes das trilhas eletrônicas.




                             Figura 39.     Corrosão finalizada


       Todos os componentes são soldados, criando um conjunto de hardware, conforme
Figura 40.
74




                         Figura 40.    Montagem dos componentes


       Os hardwares são montados, formando todo o conjunto do projeto, conforme mostra a
Figura 41.




                              Figura 41.     Montando projeto


       Projeto de hardware pronto. A Figura 42 mostra o projeto já montado e finalizado,
pronto para interagir junto ao software de automação.
75




                               Figura 42.     Projeto finalizado




APÊNDICE B - COMPONENTES ELETRÔNICOS UTILIZADOS




B.1 Transístor BC337




       O transistor tem por princípio o poder de controle da corrente. Ele pode funcionar, no
circuito, com uma chave (liga/desliga) ou como um amplificador. A Figura 43 mostra o
transistor BC337 que é de uso geral e foi utilizado no projeto.




                               Figura 43.     Transistor BC337.
                       Retirado de Roboternetz (ROBOTERNETZ, 2009).
76



       O transistor permite tanto a amplificação de potência elétrica quando seu
chaveamento. Na microeletrônica o transistor desempenha primordialmente a função de uma
chave eletrônica por impulsos elétricos; para uma tensão alta na base, uma grande corrente
percorre o circuito Emissor-Coletor (chave ligada), enquanto, se a tensão da base for baixa, a
corrente será pequena (chave desligada) (ENDERLEIN, 1994).
       A corrente de emissor é calculada com a taxa do fluxo de cargas positivas que entram
na região do emissor (CATHEY, 2003).




B.2 Diodo 1N4148




       Um diodo é o tipo mais simples de semicondutor. De modo geral, um semicondutor é
um material com capacidade variável de conduzir corrente elétrica. Um diodo é um
dispositivo de estado sólido que permite o fluxo de corrente em apenas um sentido, um
processo conhecido como retificação. Díodos são um componente fundamental dos circuitos
elétricos. Eles também são usados para formar outros componentes, tais como o transistor
bipolar, que utiliza dois diodos em série.




                                 Figura 44.   Diodo 1N4148




B.3 Resistor




       Resistores são componentes eletrônicos, caracterizados por uma grandeza física que
mede a oposição à passagem de corrente (RAMOS, 1993).
       São utilizados para limitar a corrente elétrica em um circuito ou para criarem uma
queda de tensão em algum ponto do circuito. A Figura 44 mostra a imagem de um resistor.
77




     Figura 45.      Resistor (MILCOMP PRODUTOS ELETRÔNICOS LTDA., 2009).


       De acordo com as cores apresentadas externamente, na cápsula que envolve o material
resistivo, pode-se determinar o valor de um resistor, ou utilizando um equipamento de
medição.




B.4 Relé de 5V




           Os relés são dispositivos comutadores eletromecânicos. São utilizados basicamente
para ligar ou desligar dispositivos. É normal o relé estar ligado a dois circuitos. Existem
diversos tipos de relés, mas todos eles trabalham com a mesma finalidade.
           No sistema de automação o relé é utilizado para abrir e fechar o circuito que envia
sinal elétrico aos aparelhos.




                                   Figura 46.    Relé de 5v




B.5 Led Verde / Led Vermelho 3mm




           O LED é um diodo semicondutor que quando energizado emite luz visível, por isso
LED (Diodo Emissor de Luz). A luz não é monocromática (como em um laser), mas consiste
de uma banda espectral relativamente estreita e é produzida pelas interações energéticas do
elétron (WIKIPÉDIA, 2009c). 0
78




                         Figura 47.    LED (Diodo semicondutor)




B.6 Circuito Integrado 74LS541




         Circuito integrado, também conhecido por chip, é um dispositivo microeletrônico
que consiste de muitos transistores e outros componentes interligados capazes de
desempenhar muitas funções. Suas dimensões são extremamente reduzidas, os componentes
são formados em pastilhas de material semicondutor.
         CI 74LS541 Circuito integrado Buffer, normalmente utilizado para proteger a porta
paralela do computador, quando se liga a porta paralela do computador a um circuito
eletrônico.




                                Figura 48.    CI 74LS541
79



APÊNDICE C – CENÁRIOS DOS CASOS DE USO




  C.1. UC1 - Cadastrar Aparelho
     Este caso de uso realiza o cadastramento de novos equipamentos no sistema.
     Cenário(s) Principal(is)
     1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários".
     2 - O usuário clica no botão Cadastrar Aparelho.
     3 - O usuário insere o nome, descrição, comando de voz de entrada, comando de voz
     de saída e a porta.
     4 - O usuário clica no botão salvar


     Cenário(s) Alternativo(s)
     1 - O sistema verifica que o aparelho já é cadastrado.
     2 - O sistema emite a mensagem "Equipamento já é cadastrado".
     3 - O sistema verifica que a porta já está em uso.
     4 - O sistema emite a mensagem "Porta já encontra em uso"


  C.2. UC2 - Consultar Aparelho
     Este caso de uso permite a consulta de equipamentos já cadastrados no sistema.
     Cenário(s) Principal(is)
     1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários".
     2 - O usuário clica na lupa de pesquisa do setor de aparelhos.
     3 - O usuário visualiza uma lista de todos os aparelhos cadastrados.
     4 - O usuário seleciona o item desejado.


     Cenário(s) Alternativo(s)
     1 - Caso não tenha nenhum aparelho cadastrado, e emitido a seguinte mensagem "Não
     existe aparelhos cadastrados”.


  C.3. UC3 - Alterar Aparelho
     Este caso de uso permite a alteração de um equipamento existente no sistema
     Cenário(s) Principal(is)
80



   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários"
   2 - O usuário clica na lupa de pesquisa do setor de aparelhos
   3 - O usuário visualiza uma listagem de todos os aparelhos cadastrados
   4 - O usuário escolhe o aparelho desejado
   5 - O usuário clica no botão Editar
   6 - O usuário faz as alterações necessárias
   7 - O usuário clica no botão Gravar


C.4. UC4 - Excluir Aparelho
   Este caso de uso permite a exclusão de um equipamento no sistema
   Cenário(s) Principal(is)
   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários
   2 - O usuário clica na lupa de pesquisa no setor de aparelhos
   3 - O usuário visualiza uma lista de todos os aparelhos cadastrados
   4 - O usuário escolhe o aparelho desejado
   5 - O usuário clica no botão Deletar
   6 - O usuário confirma a mensagem de exclusão


   Cenário(s) Alternativo(s)
   1 - O usuário cancela a exclusão


C.5. UC5 - Cadastrar Usuário
   Caso de uso refere-se ao cadastramento de usuários que terão acesso ao sistema web
   Cenário(s) Principal(is)
   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários"
   2 - O usuário clica no botão Cadastrar Usuário
   3 - O usuário insere o nome, login, senha e confirmar senha.
   4 - O usuário clica no botão salvar


   Cenário(s) Alternativo(s)
   1 - O sistema verifica que o login já existe
          1.1 - O sistema emite a mensagem "Este nome de usuário já está em uso".
   2 - O sistema verifica se a senha é idêntica ao campo Confirmar senha
81



          2.1 - O sistema emite a mensagem "Os valores do campo senha e confirmar
   senha tem que ser iguais"
C.6. UC6 - Consultar Usuário
   Caso de uso permite a consulta de usuários já cadastrados no sistema.
   Cenário(s) Principal(is)
   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários".
   2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários
   3 - O usuário visualiza uma lista de todos os usuários cadastrados
   4 - O usuário seleciona o item desejado


   Cenário(s) Alternativo(s)
   1 - Caso não tenha nenhum aparelho usuário cadastrado, e emitido a seguinte
   mensagem "Não existe usuários cadastrados”.


C.7. UC7 - Alterar Usuário
   Caso de uso permite a alteração de um usuário existente no sistema
   Cenário(s) Principal(is)
   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários".
   2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários
   3 - O usuário visualiza uma listagem de todos os usuários cadastrados
   4 - O usuário escolhe o item desejado
   5 - O usuário clica no botão Editar
   6 - O usuário faz as alterações necessárias
   7 - O usuário clica no botão Gravar


C.8. UC8 - Excluir Usuário
   Caso de uso permite a exclusão de um usuário no sistema
   Cenário(s) Principal(is)
   1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários
   2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários
   3 - O usuário visualiza uma lista de todos os aparelhos cadastrados
   4 - O usuário escolhe o aparelho desejado
   5 - O usuário clica no botão Deletar
   6 - O usuário confirma a mensagem de exclusão
82




   Cenário(s) Alternativo(s)
   1 - O usuário cancela a exclusão


C.9. UC9 - Validar Comando de Voz
   Este caso de uso faz a validação do comando de voz, junto à biblioteca SDK 5.1 da
   Microsoft.
   Cenário(s) Principal(is)
   1 - O comando de voz é processado
   2 - O sistema faz a verificação do comando voz, validando ou não através do banco de
   dados que possui todas as informações necessárias.
   3 - A verificação do sistema é feito através do componente Microsoft Speech SDK 5.1
   de reconhecimento de voz.
   4 - Se o comando de voz de entrada for valido, então o aparelho é ligado.
   5 - Se o comando de voz de saída for valido, então o aparelho é desligado.


C.10. UC10 - Ligar Aparelho
   Este caso de uso faz com que apos o reconhecimento de voz for aceito, o equipamento
   ligue.
   Cenário(s) Principal(is)
   1 - Após conhecimento de voz for aceito pela validação o equipamento é ligado.
   Cenário(s) Alternativo(s)
   1 - Caso o comando executado pelo usuário for para Ligar o aparelho, isso será feito
   através do WebService.


C.11. UC11 - Desligar Aparelho
   Este caso de uso permanece com os equipamentos desligados caso o comando de voz
   não for aceito.
   Cenário(s) Principal(is)
   1 - Se o reconhecimento de voz for aceito, o equipamento o sinal de desligamento do
   aparelho é acionado.
   2 - Caso o reconhecimento de voz não for validado e aceito, o equipamento permanece
   como esta.
83



     Cenário(s) Alternativo(s)
     1 - Caso o comando executado pelo usuário for para desligar o aparelho, isso será feito
     através do WebService.


  C.12. UC12 - Aguardar Execução de Comando no Sistema
     Caso de Uso permite aguardar a execução de algum comando do usuário Web.
     Cenário(s) Principal(is)
     1 - O sistema fica em “Stand By” aguardando algum comando ser executado
     2 - O usuário executa algum comando através do sistema Web, para ligar ou desligar o
     aparelho.
     3 - O sistema processa o comando.
     4 - O sistema liga ou desliga o aparelho de acordo com o comando recebido via Web


  C.13. UC13 - Capturar informações do sistema Local
     Caso de uso permite fazer a busca de dados do sistema local
     Cenário(s) Principal(is)
     1 - Caso o WebService estiver normalizado, quando o sistema atingir este ponto,
     automaticamente ele busca todos os dados do sistema local, carregando no sistema
     web.


  C.14. UC14 - Validar Identificação
     Caso de uso permite fazer a validação das credenciais do usuário Web.
     Cenário(s) Principal(is)
     1 - Sistema verifica se as credenciais "usuário" e "senha" são validos.
     2 - Caso verdadeiro o sistema continua o processo.
     3 - Caso contrario, volta para a tela de identificação, impedindo qualquer avanço do
     usuário.




APÊNDICE D – PLANO DE TESTES E RELATÓRIOS DE EXECUÇÃO
84




Sistema de Automação Residencial por Comando de Voz
                                        Plano de Testes


                                          Versão 1.0
85




             Histórico de Revisão
  Data       Versão                   Descrição             Autor
23/07/2009    1.0     Criação do Plano de Testes   Valmir Ferreira Rocha
86



                                                                  Índice


1.     INTRODUÇÃO .............................................................................................................. 87
1.1.          Finalidade ................................................................................................................. 87
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
4.     RECURSOS .................................................................................................................... 92
4.1.          Papéis ........................................................................................................................ 92
87



                                          Plano de Testes
                      1. INTRODUÇÃO


    1.1.        Finalidade


           Há um mito segundo o qual, se fôssemos realmente bons para programar, não haveria
'bugs' a ser procurados. Se pudéssemos realmente nos concentrar, se todos usassem
programação estruturada, projeto 'top-down’, tabelas de decisão, se tivéssemos as balas de
prata certas, então não haveria 'bugs (LARMAN, 2007)0.
           Por melhores que sejam as técnicas e processos sempre estarão presentes os erros
humanos. Não se pode garantir que os programas funcionem corretamente, sem a presença de
erros, portanto, para ter um sistema mais confiável, com o mínimo de erros, são executados os
testes.
           A principal finalidade do Teste é localizar e expor os pontos fracos do software
(SHAW, 2003)0.


    1.2.        Informações Detalhadas


           O sistema de automação residencial por comando de voz permite ligar e desligar
aparelhos domésticos pela aplicação Web ou desktop.


    1.3.        Escopo


           Foram feitos testes de funcionalidades do sistema para verificar se a operabilidade do
sistema atende aos requisitos solicitados, testes de interface do usuário, de configuração e de
instalação, gerando um sistema mais estável e seguro para utilização.


    1.4.        Identificação do Projeto


           A tabela abaixo identifica a documentação e disponibilidade; ela é utilizada para
desenvolver o plano de teste:
88



           Documento             Criado ou    Recebido ou     Autor ou        Observações
       (e versão / data)         Disponível     Revisado      Recurso
  Especificação de Requisitos    Sim  Não    Sim  Não
  Relatórios de Caso de Uso      Sim  Não    Sim  Não
  Plano de Projeto               Sim  Não    Sim  Não
  Manual do Usuário              Sim  Não    Sim  Não
  Manual de Instalação           Sim  Não    Sim  Não



   2. REQUISITOS DE TESTE


           A listagem a seguir identifica os itens (casos de uso, requisitos funcionais, requisitos
não funcionais) que foram identificados como objetivos de teste. A lista representa o que foi
testado.


   2.1.          Teste Funcional


              Verificar se o usuário consegue ligar e desligar qualquer aparelho pela
                 aplicação Web
              Verificar se o usuário consegue ligar e desligar qualquer aparelho pela
                 aplicação Desktop
              Verificar se o usuário consegue ligar e desligar qualquer aparelho pela
                 aplicação Desktop e depois visualizar status pela aplicação Web
              Verificar se todos os casos de uso estão implementados corretamente


   2.2.          Teste de Interface do Usuário


              Verificar se todas as funcionalidades estão disponíveis
              Verificar se todas as telas nas Aplicações Web e Desktop atendem os requisitos
                 de interface amigável
              Verificar se o padrão visual é consistente em todas as telas


   2.3.          Teste de Configuração
89



           Verificar se a aplicação Web funciona em diferentes browsers


2.4.          Teste de Instalação


           Verificar se um usuário seguindo apenas os passos descritos no manual de
              instalação é capaz de instalar o sistema Automação Residencial.


3. ESTRATÉGIA DE TESTE


3.1.          Tipos de Teste


3.1.1. Teste Funcional


       Objetivo do Teste:      Garantir a funcionalidade adequada de objetivo do teste, incluindo
                               navegação e processamento.
       Técnica:                Executar cada caso de uso, fluxo de caso de uso ou função a fim
                               de verificar o seguinte:
                                Os resultados esperados ocorrerão quando forem usados estados
                               válidos.
                                Cada regra de negócio será adequadamente aplicada.
       Critérios de             Todos os testes planejados foram executados.
       Conclusão:               Todos os defeitos identificados foram abordados.
       Considerações           Nenhuma.
       Especiais:
90



3.1.2. Teste da Interface do Usuário


   Objetivo do Teste:    Verificar se:
                          A navegação pelo sistema reflete adequadamente as funções e
                         os requisitos de negócio, incluindo os métodos de janela-a-janela,
                         de campo-a-campo e de uso de acesso (como, movimentos do
                         mouse).
                          Os objetos e as características da Web, como menus, tamanho,
                         posição, estado e enfoque, estão de acordo com os padrões.
   Técnica:              Criar/modificar testes de cada página para verificar a navegação.
   Critérios de          Cada janela foi completamente verificada para que permaneça
   Conclusão:            consistente com a versão de avaliação de desempenho ou esteja de
                         acordo com o padrão aceitável.
   Considerações         Nenhuma.
   Especiais:




3.1.3. Teste de Configuração


   Objetivo do Teste:       Verificar se o sistema funciona adequadamente nas
                            configurações de hardware/software necessárias.
   Técnica:                    Abrir/fechar vários softwares não relacionados a objetivos
                            do teste, como os aplicativos da Microsoft, Excel e Word,
                            como parte do teste, ou antes, do início do teste.
                               Testar o sistema utilizando diversos computadores clientes
                            diferentes.
   Critérios de Conclusão: O sistema funciona de forma satisfatória nas configurações
                            testadas.
   Considerações            Nenhuma.
   Especiais:
91



    3.1.4. Teste de Instalação


          Objetivo do Teste:           Verificar se as instruções incluídas no manual de
                                       instalação são suficientes para a correta instalação do
                                       software:
                                          Testar o sistema utilizando uma nova máquina.
                                          Instalar uma mesma versão já instalada do Sistema
                                       Automação residencial por comando de voz.
          Técnica:                        Testar a instalação do Sistema Automoção Residencial
                                       em cada cenário: em uma nova máquina e atualização de
                                       uma máquina que já contenha a mesma versão instalada
          Critérios de Conclusão:      O Sistema Automação Residencial executa suas transações
                                       corretamente.

          Considerações Especiais:     Nenhuma.




    3.1.5. Ferramentas


           As seguintes ferramentas serão empregadas nesse projeto:


                         Ferramenta        Fornecedor/Desenvolvimento Próprio          Versão
Internet Explorer      Navegador Web                    Microsoft                    7.0.5750.13
Internet Explorer      Navegador Web                    Microsoft                      8.1.2.34
Internet Explorer      Navegador Web                    Microsoft                    7.0.5730.13
Firefox                Navegador Web                     Mozilla                        3.0.8
Chrome                 Navegador Web                     Google                       2.0.172.30
92



    4. RECURSOS


    4.1.        Papéis


           O papel Testador é responsável pelas atividades centrais do esforço de teste, que
envolve conduzir os testes necessários e registrar os resultados desses testes (SHAW, 2003)0.
Isso inclui:
       Configurar e executar os testes
       Registrar os resultados e verificar a execução dos testes
       Analisar erros de execução e recuperar-se deles
       Documentar solicitações de alteração
93




                                                    Roteiro de Simulações de Testes
                                                Automação Residencial por Comando de Voz
         Descrição do Ambiente                   Os testes foram realizados com o Internet Explorer 7 e 8, Firefox 3, utilizando-se do
                                                 Microsoft Framework 3.5 com o banco de dados MySql Server, SO Window XP
         Configuração da Máquina                 Configuração da Máquina: Windows XP com Service Pack 3, 2GB de RAM e 120 GB de
                                                 Hard Disk
         Ciclo de Testes:                        1 a 19
         Período de Execução:                    23/06/2009 a 26/06/2009
         Categoria                               Caso de Uso




Ordem   Categoria    Nome Caso de Uso           Nome da Simulação     Simulação                                       Resultado Esperado          Resultado dos testes

  1       Testes     UC1 - Cadastrar Aparelho   Cadastrar Aparelho    1 - O usuário clica na Aba "Cadastro de         Cadastramento efetuado      O cadastro do aparelho foi
        Funcionais                                                    Aparelhos e Usuários"                           na base de dados            realizado com sucesso
                                                                      2 - O usuário clica no botão Cadastrar
                                                                      Aparelho
                                                                      3 - O usuário insere o nome, descrição,
                                                                      comando de voz de entrada, comando de
                                                                      voz de saída e a porta
                                                                      4 - O usuário clica no botão salvar
                                                                      5 - O sistema emite mensagem de Aparelho
                                                                      Cadastrado com Sucesso.



  2       Testes     UC1 - Cadastrar Aparelho   Aparelho já           1 - O sistema verifica se o aparelho já está    Cadastramento não           Verificação de cadastros já
        Funcionais                              cadastrado            cadastrado.                                     efetuado na base de dados   realizados foi efetuada com
                                                                      2 - O sistema emite a mensagem                                              sucesso, impedindo o
                                                                      "Equipamento já é cadastrado".                                              cadastramento de informações
                                                                                                                                                  duplicadas.

  3       Testes     UC1 - Cadastrar Aparelho   Porta já cadastrada   1 - O sistema verifica que a porta já está em   Cadastramento não           Verificação de cadastros já
        Funcionais                                                    uso                                             efetuado na base de dados   realizados foi efetuada com
                                                                      2 - O sistema emite a mensagem "Porta já                                    sucesso, impedindo o
                                                                      encontra em uso"                                                            cadastramento de informações
                                                                                                                                                  duplicadas.
94



4     Testes     UC2 - Consultar Aparelho   Consultar Aparelho   1 - O usuário clica na Aba "Cadastro de       Consulta de Aparelhos         Realização da consulta de
    Funcionais                                                   Aparelhos e Usuários"                                                       aparelhos foi realizada com
                                                                 2 - O usuário clica na lupa de pesquisa do                                  sucesso.
                                                                 setor de aparelhos
                                                                 3 - O usuário visualiza uma lista de todos os
                                                                 aparelhos cadastrados
                                                                 4 - O usuário seleciona o item desejado

5     Testes     UC2 - Consultar Aparelho   Consultar Aparelho   1 - O usuário clica na Aba "Cadastro de       Fechar a tela de pesquisa,    Teste ocasionou falha, pois ao
    Funcionais                                                   Aparelhos e Usuários"                         e retornar a tela principal   fechar a tela de pesquisa através
                                                                 2 - O usuário clica na lupa de pesquisa do    do sistema.                   do botão X, o sistema fechou-se
                                                                 setor de aparelhos                                                          por completo. Não se
                                                                 3 - O usuário visualiza uma lista de todos os                               comportando com o devido.
                                                                 aparelhos cadastrados                                                       Correções foram feitas e
                                                                 4 - O usuário não seleciona nenhum item                                     corrigidas.
                                                                 5 - O usuário clica no "X" para fechar a
                                                                 janela de pesquisa

6     Testes     UC3 - Atualizar Aparelho   Alterar Aparelho     1 - O usuário clica na Aba "Cadastro de         Alterar cadastro já         Processo de edição de aparelhos
    Funcionais                                                   Aparelhos e Usuários"                           efetuado na base de dados   já cadastrados foi realizado com
                                                                 2 - O usuário clica na lupa de pesquisa do                                  sucesso
                                                                 setor de aparelhos
                                                                 3 - O usuário visualiza uma listagem de
                                                                 todos os aparelhos cadastrados
                                                                 4 - O usuário escolhe o aparelho desejado
                                                                 5 - O usuário clica no botão Editar
                                                                 6 - O usuário faz as alterações necessárias
                                                                 7 - O usuário clica no botão Gravar
7     Testes     UC4 - Excluir Aparelho     Excluir Aparelho     1 - O usuário clica na Aba "Cadastro de         Excluir Aparelho na base    A exclusão do aparelho foi
    Funcionais                                                   Aparelhos e Usuários                            de dados                    realizado com sucesso.
                                                                 2 - O usuário clica na lupa de pesquisa no
                                                                 setor de aparelhos
                                                                 3 - O usuário visualiza uma lista de todos os
                                                                 aparelhos cadastrados
                                                                 4 - O usuário escolhe o aparelho desejado
                                                                 5 - O usuário clica no botão Deletar
                                                                 6 - O usuário confirma a mensagem de
                                                                 exclusão
8     Testes     UC4 - Excluir Aparelho     Excluir Aparelho     1 - O usuário cancela a exclusão                Excluir Aparelho na base    A operação foi realizada com
    Funcionais                                                                                                   de dados                    sucesso, no entanto a exclusão
                                                                                                                                             não foi realizada pois o usuário
                                                                                                                                             cancelou a operação.
95



9      Testes     UC5 - Cadastrar Usuário   Cadastrar Usuário   1 - O usuário clica na Aba "Cadastro de         Cadastrar usuário na base   O cadastro do usuário foi
     Funcionais                                                 Aparelhos e Usuários"                           de dados                    realizado com sucesso
                                                                2 - O usuário clica no botão Cadastrar
                                                                Usuário
                                                                3 - O usuário insere o nome, login, senha e
                                                                confirmar senha
                                                                4 - O usuário clica no botão salvar
                                                                5 - Sistema emite mensagem de cadastro de
                                                                usuário realizada com sucesso.
10     Testes     UC5 - Cadastrar Usuário   Cadastrar Usuário   1 - O sistema verifica se o login já existe     Campos obrigatórios         Sistema validou corretamente os
     Funcionais                                                 1.1 - O sistema emite a mensagem "Este                                      dados já existentes, não deixando
                                                                nome de usuário já está em uso".                                            realizar duplicidade dos dados
                                                                2 - O sistema verifica se a senha é idêntica
                                                                ao campo Confirmar senha
                                                                2.1 - O sistema emite a mensagem "Os
                                                                valores do campo senha e confirmar senha
                                                                tem que ser iguais”.
11     Testes     UC6 - Consultar Usuário   Consultar Usuário   1 - O usuário clica na Aba "Cadastro de         Consultar Usuários          A consulta retornou dados
     Funcionais                                                 Aparelhos e Usuários"                           cadastrados na base de      corretamente
                                                                2 - O usuário clica na lupa de pesquisa do      dados
                                                                setor de Cadastro de Usuários
                                                                3 - O usuário visualiza uma lista de todos os
                                                                usuários cadastrados
                                                                4 - O usuário seleciona o item desejado
12     Testes     UC6 - Consultar Usuário   Consultar Usuário   1 - Caso não tenha nenhum usuário               Consultar Usuários          Sistema se comportou
     Funcionais                                                 cadastrado, e emitido a seguinte mensagem       cadastrados na base de      perfeitamente, no entanto a
                                                                "Não existe usuários cadastrados”.              dados                       consulta não foi realizada por não
                                                                                                                                            possui base de dados.




13     Testes     UC6 - Consultar Usuário   Consultar Usuário   1 - O usuário clica na Aba "Cadastro de       Fechar a tela de pesquisa,    Teste ocasionou falha, pois ao
     Funcionais                                                 Aparelhos e Usuários"                         e retornar a tela principal   fechar a tela de pesquisa através
                                                                2 - O usuário clica na lupa de pesquisa do    do sistema.                   do botão X, o sistema fechou-se
                                                                setor de Usuários                                                           por completo. Não se
                                                                3 - O usuário visualiza uma lista de todos os                               comportando com o devido.
                                                                usuários cadastrados                                                        Correções foram feitas e
                                                                4 - O usuário não seleciona nenhum item                                     corrigidas.
                                                                5 - O usuário clica no "X" para fechar a
                                                                janela de pesquisa
96



14     Testes     UC7 - Atualizar Usuário        Alterar Usuário      1 - O usuário clica na Aba "Cadastro de        Alterar cadastro já         Sistema efetuou a alteração
     Funcionais                                                       Aparelhos e Usuários"                          efetuado na base de dados   realizada pelo usuário
                                                                      2 - O usuário clica na lupa de pesquisa do                                 corretamente.
                                                                      setor de Cadastro de Usuários
                                                                      3 - O usuário visualiza uma listagem de
                                                                      todos os usuários cadastrados
                                                                      4 - O usuário escolhe o item desejado
                                                                      5 - O usuário clica no botão Editar
                                                                      6 - O usuário faz as alterações necessárias
                                                                      7 - O usuário clica no botão Gravar



15     Testes     UC8 - Excluir Usuário          Excluir Usuário      1 - O usuário clica na Aba "Cadastro de       Cadastramento efetuado       Sistema excluiu corretamente o
     Funcionais                                                       Aparelhos e Usuários                          na base de dados             registro solicitado pelo usuário.
                                                                      2 - O usuário clica na lupa de pesquisa do
                                                                      setor de Cadastro de Usuários
                                                                      3 - O usuário visualiza uma lista de todos os
                                                                      aparelhos cadastrados
                                                                      4 - O usuário escolhe o aparelho desejado
                                                                      5 - O usuário clica no botão Deletar
                                                                      6 - O usuário confirma a mensagem de
                                                                      exclusão

16     Testes     UC8 - Excluir Usuário          Excluir Usuário      1 - O usuário cancela a exclusão               Excluir Usuário na base     A operação foi realizada com
     Funcionais                                                                                                      de dados                    sucesso, no entanto a exclusão
                                                                                                                                                 não foi realizada pois o usuário
                                                                                                                                                 cancelou a operação.




17     Testes     UC9 - Validar Comando de Voz   Validar Comando de   1 - O comando de voz é processado              Validação do comando de     O sistema realizou a validação do
     Funcionais                                  Voz                  2 - O sistema faz a verificação do comando     voz                         comando junto ao banco de dados
                                                                      voz, validando ou não através do banco de                                  perfeitamente.
                                                                      dados que possui todas as informações
                                                                      necessárias.
                                                                      3 - A verificação do sistema é feito através
                                                                      do componente Microsoft Speech SDK 5.1
                                                                      de reconhecimento de voz.
                                                                      4 - Se o comando de voz de entrada for
                                                                      valido, então o aparelho é ligado.
                                                                      5 - Se o comando de voz de saída for
                                                                      valido, então o aparelho é desligado.
97



18     Testes     UC10 - Ligar Aparelho           Ligar Aparelho         1 - Após o conhecimento de voz for aceito     Ligar Aparelho          Sistema ligou o aparelho como
     Funcionais                                                          pela validação o equipamento é ligado.                                previsto.




19     Testes     UC11 - Desligar Aparelho        Desligar Aparelho      1 - Após o conhecimento de voz for aceito     Desligar Aparelho       Sistema desligou o aparelho
     Funcionais                                                          pela validação o equipamento é desligado.                             perfeitamente como previsto.




20     Testes     UC12 - Desligar Aparelho        Desligar Aparelho      1 - Caso o reconhecimento de voz não for      Desligar Aparelho       Comportamento perfeito, pois
     Funcionais                                                          validado e nem aceito, o equipamento                                  caso o comando de voz não seja
                                                                         permanece como esta.                                                  aceito, o sistema não executa
                                                                                                                                               nenhuma ação, apenas relata que
                                                                                                                                               o comando ainda não foi
                                                                                                                                               reconhecido.
21     Testes     UC12 - Aguardar execução de     Aguardando             1 - O sistema fica em Stand By aguardando     Executar comandos via   Sistema web funcionou
     Funcionais   comando do sistema Web          execução               algum comando ser executado                   sistema web             corretamente
                                                                         2 - O usuário executa algum comando
                                                                         através do sistema Web, para ligar ou
                                                                         desligar o aparelho
                                                                         3 - O sistema processa o comando
                                                                         4 - O sistema liga ou desliga o aparelho de
                                                                         acordo com o comando recebido via Web.




22     Testes     UC13 - Capturar sistema local   Capturar informações   1 - Caso o WebService estiver normalizado, Sincronizando              A sincronização de dados entre
     Funcionais                                   do sistema local       quando o sistema atingir este ponto,       informações locais e Web   web e desktop funcionou
                                                                         automaticamente ele conecta com a base de                             perfeitamente.
                                                                         dados local, carregando no sistema web.
98



23     Testes     UC14 - Validar Identificação   Validar Identificação   1 - Sistema verifica se as credenciais     Validando Identificação   Validação de usuário no sistema
     Funcionais                                                          "usuário" e "senha" são validos            do Usuário no acesso ao   web funcionou perfeitamente.
                                                                         2 - Caso verdadeiro o sistema continua o   sistema Web
                                                                         processo
                                                                         3 - Caso contrario volta para a tela de
                                                                         identificação, impedindo qualquer avanço
                                                                         do usuário.
99




                                                                  Roteiro de Simulações de Testes
                                                              Automação Residencial por Comando de Voz
             Descrição do Ambiente                             Os testes foram realizados com o Internet Explorer 7 e 8, Firefox 3, utilizando-se do
                                                               Microsoft Framework 3.5 com o banco de dados MySql Server, SO Windows XP
             Configuração da Máquina                           Configuração da Máquina: Windows XP com Service Pack 3, 2GB de RAM e 120 GB de
                                                               Hard Disk
             Ciclo de Testes:                                  1 a 19
             Período de Execução:                              21-10-2009 a 30-10-2009
             Categoria                                         Interface




Ordem   Categoria   Nome do Teste               Nome da Simulação             Simulação                                 Resultado Esperado             Situação

  1     Interface   Mensagem                    Mensagem de Erro              Após a inclusão de qualquer cadastro      Mensagem amigável              Sistema emitiu corretamente as
                                                                              retornar mensagem amigável de erro                                       mensagens de erro ocorrido.
                                                                              para o usuário


  2     Interface   Ícones                      Ícones nas telas              Ao entrar na Aba "Cadastro de        Ícones visíveis                     Os ícones dos botões de consulta
                                                                              Aparelhos e Usuários" colocar ícones                                     foram colocados corretamente.
                                                                              nos botões de consulta


  3     Interface   Botões                      Botões de ações               Colocar hints nos botões de ações         Mensagem amigável nos botões   As informações de hints foram
                                                                              como "Cadastrar Aparelho”,                                               adicionadas perfeitamente.
                                                                              "Cancelar", "Editar”, "excluir" etc...


  4     Interface   Tabulação                   Simular Tabulação nas telas   Passar por todas as telas e ir teclando   Deverá passar por todos os     O processo de tabulação funcionou
                                                                              no TAB para ver se passa de campo         campos e botões                corretamente.

  5     Interface   Fluxo das Abas              Simular fluxo nas abas        Clicar em todas as abas para verificar Deverá passar por todas as abas   Em cada aba, as informações foram
                                                                              a exibição dos dados a serem                                             mostradas perfeitamente.
                                                                              mostrados ou ocultados


  6     Execução    Iniciar aplicação Desktop   Iniciar aplicação Desktop     O usuário clica para abrir a aplicação    Aplicação iniciada             Inicialização desktop, e habilitação
                                                                              desktop, em seguida deverá habilitar                                     do comando de voz, funcionou
                                                                              o comando de voz.                                                        corretamente.
100



7   Execução   Iniciar aplicação Web      Iniciar aplicação Web   Após a inicialização do aplicativo      Aplicação iniciada   Aplicativo web inicializado com
                                                                  Desktop, já é possível inicializar a                         sucesso.
                                                                  qualquer momento o aplicativo Web.


8   Execução   Iniciar Aplicação Web em   Iniciar aplicação Web   Testar se a aplicação web funciona      Aplicação iniciada   Sistema funcionou corretamente em
               diferentes Browsers                                em diferentes browsers.                                      todas as aplicações descritas.
                                                                  Browsers testados: Internet Explorer,
                                                                  Firefox, Chrome.

Trabalho de Conclusão de Curso

  • 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 vozessinté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 asaplicaçõ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 queacenda 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 abriro 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á entre0 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 fazcom 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. Processode 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 componentede 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 comandosadicionados 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.
  • 57.
    56 4.5. Apresentaçãodo software 4.5.2. Introdução O sistema Automação Residencial por comando de voz aqui proposto é destinado ao controle de equipamentos domésticos de forma automática em uma residência. É possível utilizá-lo pelas aplicações desktop ou web, e pode ser considerado um sistema em tempo real. Sistemas de tempo real são sistemas de computação que monitoram, respondem ou controlam um ambiente externo. Esse ambiente está conectado ao sistema de computação através de sensores (microfone), atuadores e outras interfaces de entrada e saída. Podem constituir-se de objetos físicos ou biológicos de qualquer forma e estrutura (SHAW, 2003). O tempo de resposta aos estímulos externos geralmente está dentro dos limites estabelecidos para seu funcionamento aceitável. Não importa o tamanho do intervalo de tempo, se é em nanossegundos ou em minutos. Se o sistema tem um tempo limite para responder, então é um sistema em tempo real. Tais aplicações vêm, aparecendo como parte de nossas infraestruturas comerciais, governamentais, militares, educacionais e culturais. Nesses, estão incluídos (SHAW, 2003): a) Sistemas de controle de veículos para automóveis, metrôs, aeronaves, ferrovias e navios; b) Controle de tráfego para auto-estradas, espaço aéreo, trilhos de ferrovias e corredores de navegação marítima; c) Controle de processo para usinas de energia, indústrias químicas e para produtos de consumo, como refrigerantes e cerveja; d) Sistemas médicos para radioterapia, monitoramento de pacientes e desfibrilamento; e) Usos militares como controle de tiro, rastreamento e sistemas de comando e de controle; f) Sistemas de manufatura com robôs; g) Telefone, rádio e comunicações por satélite; h) Jogos por computador; i) Sistemas de multimídia que provêm interfaces textuais, gráficas, de áudio e de vídeo;
  • 58.
    57 j) Sistemas domésticos para monitoramento e controle de eletrodomésticos; k) Sistemas de automação predial que controlam temperatura ambiental, iluminação portas e elevadores; l) Sistemas de automação residencial que controlam equipamentos domésticos. O sistema de automação residencial por comando de voz possibilita ligar e desligar qualquer equipamento residencial, possibilitando o monitoramento de todo o status dos equipamentos, informando a localidade do equipamento, e seu status (desligado ou ligado). 4.5.3. Requisitos funcionais a) O usuário poderá ligar e desligar os equipamentos da residência pela aplicação desktop através do comando de voz ou pela internet; b) O usuário poderá visualizar todos os aparelhos que estão sendo controlados, tanto pela aplicação desktop quanto pela internet. 4.5.4. Aplicação desktop Na aplicação desktop os equipamentos são demonstrados na aba principal em destaque, através de uma tabela com diversas informações, como: 1) ID (Número de identificação) 2) Nome do Aparelho 3) Descrição do Aparelho 4) Comando de Voz (Comando para ligar o equipamento) 5) Porta 6) Status (é alterada de acordo com o estado do dispositivo) 7) Comando Voz de Saída (Comando para desligar o equipamento) A Figura 21 ilustra a aplicação desktop com alguns dispositivos ligados e outros desligados.
  • 59.
    58 Figura 21. Aplicação desktop O sistema também possui um ambiente de cadastros, onde é através deste que o usuário deverá cadastrar quais usuários poderão ter acesso via web, e quais os aparelhos interligados ao sistema. A Figura 22 ilustra a área de cadastro de aparelhos. Neste cadastro é necessário inserir todas as informações exigidas para que o sistema tenha um funcionamento perfeito. Figura 22. Cadastro de aparelhos na aplicação desktop
  • 60.
    59 A Figura 23 ilustra a área do cadastramento dos usuários, que são utilizados no momento do acesso ao sistema web, concretizando os passos mínimos de segurança que se exige ao disponibilizar um sistema web. Figura 23. Cadastro de usuários utilizados para acesso web A Figura 24 ilustra uma visão geral da área representada com os cadastros de aparelhos e usuários. Figura 24. Visão geral da área de cadastramentos.
  • 61.
    60 4.5.5. Aplicação web A aplicação web foi desenvolvida com o intuito de simplicidade, facilidade, funcionalidade e praticidade, principalmente para que pessoas com necessidades especiais possam operar o sistema. No entanto, nada de grandes interfaces, o foco realmente é a funcionalidade. Logo ao inicializar a aplicação, uma identificação de login é aberta, isso favorece o mínimo de segurança ao sistema, uma vez que o mesmo é aberto à rede mundial de computadores. Após a identificação, todos os equipamentos são listados juntamente com o status de cada equipamento, com informações do status de ligado ou desligado possibilitando assim, ligar ou desligá-lo manualmente. Figura 25. Aplicação Web (login) Todos os equipamentos são listados, conforme Figura 26. Os botões a esquerda são utilizados para realizar as ações conforme explicação da legenda. Figura 26. Aplicação Web
  • 62.
    61 5. CONCLUSÃO Pode-se verificar que o reconhecimento de voz é uma área que está cada vez mais em expansão, com o intuito de melhorar e facilitar tarefas cotidianas. É certo que ainda está numa fase de evolução, mas mesmo assim já consegue, e com algum grau de certeza, obter resultados bastante promissores. Este trabalho atingiu as metas propostas de desenvolvimento de um sistema que engloba automação residencial por comando de voz. Foi possível, no entanto, verificar algumas das características que tornou o SDK uma das novas alternativas para a utilização do reconhecimento de voz em sistemas de automação. A família Microsoft realmente fez um bom trabalho na criação e melhoramento do componente SDK, a mais de uma década eles vêm aprimorando o componente para que sua integração a outros sistemas se torne cada vez útil. O mesmo foi utilizado no projeto aqui proposto, se comportando perfeitamente e alcançando o resultado esperado. Contudo, sempre há alguns escorregões, pois como sempre falamos nada é perfeito, e tudo se ajusta e melhora conforme pesquisas e feedbacks realizados por profissionais e alunos durante a utilização do componente. Por ser o SDK uma ferramenta gratuita, a Microsoft conta com a participação de todos os que utilizam da mesma para expor seus defeitos, para que possam corigi-los em novas versões. Para a realização deste trabalho foram feitos estudos referentes a sinais enviados e recebidos pela porta paralela LPT1, reconhecimento de voz utilizando componente Microsoft Speech Recognition (SDK 5.1), sem os quais não seria possível desenvolver esse trabalho; conceitos sobre as tecnologias existentes para automação residencial e sobre eletrônica. O projeto demonstra uma viabilidade econômica satisfatória deste nível de automação residencial com um custo bem acessível a todas as classes. O projeto proposto mostra-se extremamente viável, pois atualmente é notável que uma maior atenção deveria ser dispensada para o público portador de necessidades especiais. Um projeto adaptado a uma residência real deverá trazer consigo elementos capazes de controlar níveis superiores de reconhecimento de voz, através de microfones superiores aos usados no protótipo do projeto. Ainda assim, a viabilidade econômica do projeto é justificada frente aos valores exagerados cobrados por empresas que atuam nesse nicho de mercado. Após a conclusão dos estudos e do desenvolvimento deste projeto, observou-se que o mesmo é um sistema consideravelmente simples de ser implementado, possibilitando a expansão da automação residencial por comando de voz de baixo custo, que ainda está em
  • 63.
    62 grande crescimento eamadurecimento, apresentando ainda poucos produtos acessíveis no mercado. 5.1. Trabalhos futuros Como trabalhos futuros, deseja-se, diante das funcionalidades desempenhadas pelo sistema, implementar os itens de:  Modificar o sistema de comunicação, passando a trabalhar com porta USB, ou diretamente via Bluetooth ou Wifi.  Não limitar quantidades de aparelhos a serem controlados.
  • 64.
    63 REFERÊNCIAS ABREU, R. S.Automação residencial: um pouco de história. Ribeirão Preto, 2003. 46 eslaides, color. PowerPoint for Windows 10.26. Arquivo ppt baixado da Internet. Disponível em: <http://www.aureside.org.br/publicacoes/download/automacao_residencial.zip>. Acesso em: 28 set. 2009. AFONSO, R. Sistema de automação residencial com central de controle microcontrolada e independente de pc. 2006. 91 f. Monografia (Trabalho de Conclusão de Curso II do curso de Ciências da Computação) – Universidade Regional de Blumenau, Blumenau, 2006. BARONE, D. A. C.; YEPES, I. Inteligência artificial distribuída: uma abordagem ao comportamento social inteligente. Sociedades Artificiais. Porto Alegre: Bookman, 2002. BEIZER, B. Software Testing Techniques. New York:: Van Nostrand Reinhold Company, 1990. CADSOFT ONLINE. Eagle: version 5.6. Disponível em <http://www.cadsoftusa.com>. Acesso em: 07 out. 2009. CATHEY, J. J. Dispositivos e circuitos eletrônicos. 2. ed. Porto Alegre: Bookman, 2003. ENDERLEIN, R. Microeletrônica: uma introdução ao universo dos microchips, seu funcionamento, fabricação e aplicações. São Paulo: EdUSP, 1994. GUILHOTO, P. Reconhecimento de voz. Portugal: Sistema Multimídia, 2002. p. 5. GUILHOTO, P. J. S.; ROSA, S. P. C. S. Reconhecimento de voz: sistemas multimédia: 2001/2002. Coimbra: Universidade de Coimbra, Faculdade de Ciências e Tecnologias, Departamento de Engenharia Informática, 2001. IBM. Embedded ViaVoice. Disponível em: <http://www-01.ibm.com/software/pervasive/embedded_viavoice/>. Acesso em: 10 maio 2009. IBM RESEARCH. Intelligent Agents Project at IBM T. J. Watson Research. Disponível: site IBM Corporation (1998). URL: http://www.research.ibm.com/iagents/. Consultado em 13 dez. 2009.
  • 65.
    64 LARMAN, G. ApplyingUML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development. Porto Alegre: Bookman, 2007. LONG, B. Speech Synthesis & Speech Recognition Using SAPI 4 High Level Interfaces. Embarcadero Technologies. 2003. Disponível em: <http://edn.embarcadero.com/print/29581>. Acesso em: 05 maio 2009 MEGATTS. SAPI. Disponível em: <http://www.megatts.com/2007/07/10/sapi-o-que-e/>. Acesso em: 2 out. 2009. MICROSOFT. Help Microsoft Speech SDK version 5.1. Microsoft Corporation, 2002. MICROSOFT. Speech SDK 5.1. Download. Disponível em: <http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee- 6583171b4530&DisplayLang=en>. Acesso em: 02 jan 2009. MICROSOFT. Suporte. Voice pilot. Dicas sobre treinamento de voz piloto. 2003. Disponível em: <http://support.microsoft.com/kb/95089>. Acesso em: 10 maio 2009. MILCOMP PRODUTOS ELETRÔNICOS LTDA. Resistor. Disponível em: <http://www.milcomp.com.br/>. Acesso em: 20 jun.2009. NWANA, H. S. Software agents: an overview. Knowledge Engineering Review, Cambridge, v. 11, n. 3, p. 205-244, 1996. O & A PRODUCTIONS. Why Should I Use Speech in My Application. Disponível em: <http://www.o2a.com/framesPrimer.htm>. Acesso em: 4 out. 2009. RABINER, L. R.; JUANG, B. H. Fundamentals of speech recognition. New York: Prentice Hall,1993. RAMOS, C. M. et al. Física fundamental: vol. único: 2º grau. São Paulo: FTD, 1993. RATIONAL UNIFIED PROCESS®. Rational Unified Process: visão geral. 2001. Disponível em: <http://www.wthreex.com/rup/portugues/index.htm>. Acesso em: abr. 2009.
  • 66.
    65 ROBOTERNETZ. Hauptseite. [Transistor]. Disponível em: <http://www.rn- wissen.de/index.php/Hauptseite>. Acesso em: 20 jun. 2009. ROGER.COM. 2009. Disponível em:<http://www.roger.com>. Acesso em: 20 jun. 2009. RUSSEL, S.; NORVIG, P. Artificial Intelligence: A modern Approach. New York: Prentice Hall, 1995. SHAW, A. C. Sistemas e software de tempo real. Porto Alegre: Bookman, 2003. WIKIPÉDIA. Component Object Model. 2009a. Disponível em: <http://pt.wikipedia.org/wiki/Component_Object_Model>. Acesso em: 3 out. 2009. WIKIPÉDIA. Fast Fourier Transform. 2009b. Disponível em: <http://en.wikipedia.org/wiki/Fast_Fourier_transform>. Acesso em: 15 set. 2009. WIKIPÉDIA. LED. 2009c. Disponível em: <http://pt.wikipedia.org/wiki/LED>. Acesso em: 12 out. 2009. WIKIPÉDIA. OLE Automation. 2009d. Disponível em: <http://pt.wikipedia.org/wiki/OLE_Automation>. Acesso em: 3 out. 2009. WIKIPÉDIA. Pipeline. 2009e. Disponível em: <http://pt.wikipedia.org/wiki/Pipeline>. Acesso em: 7 set. 2009. WIKIPÉDIA. Pulse-code modulation. 2009f. Disponível em: <http://en.wikipedia.org/wiki/Pulse-code_modulation>. Acesso em: 7 set. 2009. WIKIPÉDIA. Stream. 2009g. Disponível em: <http://pt.wikipedia.org/wiki/Stream>. Acesso em: 10 set. 2009. WOOLDRIDGE, M.; JENNINGS, N. R. Intelligent Agents: Theory and Practice. Knowledge Engineering Review, Cambridge, v. 100, n. 2, p. 115-152, 1994.
  • 67.
    66 ANEXOS Anexo 1 - Exemplo de Gramáticas A descrição deste anexo serve como exemplo de uma gramática que é interpretada internamente pelo SDK. (RABINER; JUANG, 1993) [Grammar] langid=1033 type=cfg [Lists] =Ligar =Desligar =Abrir =Fechar [<Start>] <Start>= [opt] <Ligar> [opt] <Desligar> [opt] <Abrir>[opt]<Fechar> [Ligar] =TV =Ar =Ventilador =Computador [Desligar] =TV =Ar =Ventilador =Computador [Abrir] =Portão =Veneziana =Porta [Fechar] =Portão =Veneziana =Porta
  • 68.
    67 APÊNDICE A -DESCREVENDO A CRIAÇÃO DA PLACA DE CIRCUITO IMPRESSO (PCB) Os passos para a criação de uma PCB é simples, mas requer bastante atenção em todos os detalhes, pois qualquer erro de projeto o circuito pode não funcionar, ou até mesmo danificar outros componentes junto à placa. É necessário bastante atenção nos produtos utilizados, alguns deles são corrosivos e prejudiciais à saúde, caso venha ter algum contato interno. Antes de realizar a criação da PCB, é necessário realizar alguns testes dos componentes eletrônicos, se possível junto a um protoboard, evitando constrangimentos e desperdício de material. Protoboard em inglês, ou melhor, matriz de contato é uma placa com milhares de furos e conexões condutoras para montagem de circuitos elétricos experimentais. A grande vantagem do protoboard na montagem de circuitos eletrônicos é a facilidade de inserção de componentes, uma vez que não necessita soldagem. As placas variam de 800 furos até 6000 furos, tendo conexões verticais e horizontais. Na superfície de uma matriz de contato há uma base de plástico na qual existem centenas de orifícios onde são encaixados os componentes. Em sua parte inferior são instalados contatos metálicos que interliga eletricamente os componentes inseridos na placa. Geralmente suportam correntes entre 1A e 3A. A Figura 27 mostra o teste realizado com o auxilio de um protoboard. Figura 27. Teste em placa de Protoboard
  • 69.
    68 Após os testes, é hora de verificar o projeto no computador, levá-lo até uma gráfica e realizar o corte do adesivo. Qualquer operador de plotter entende como realizar este tipo de serviço de recorte para adesivos com mascaras. Este processo seria uma simples impressão em um papel A4, mas devido à corrosão necessária para criar as trilhas eletrônicas das placas, o adesivo é indispensável e o método mais simples e acadêmico realmente torna-se este. Os passos seguintes serão demonstrados conforme figuras abaixo. A Figura 28 mostra o projeto no computador. Este será levado até uma gráfica para fazer os recortes. Figura 28. Projeto no computador Na Figura 29 é demonstrado o adesivo plotado, ou seja, já no recorte, conforme projeto. Figura 29. Adesivo plotado sem mascara
  • 70.
    69 Figura 30 mostra como é feita a retirada da máscara, para que seja introduzida no adesivo. Esta mascara ajuda na retirada do adesivo, uma vez que não é possível fazer a retirada manualmente devido às diversas trilhas eletrônicas criadas no projeto. Figura 30. Retirando a mascara A Figura 31 demonstra o adesivo já com mascara colada. Figura 31. Colando a mascara no adesivo Realiza-se uma fricção ao adesivo, até que a mascara esteja realmente fixada ao adesivo.
  • 71.
    70 Figura 32. Fixando bem a mascara ao adesivo A Figura 33 mostra o momento da retirada do adesivo através da máscara, observe que todo o adesivo sai junto a mascara, isso facilitará na colagem a placa metálica. Figura 33. Retirando a mascara O momento agora é de atenção, realizar a colagem do adesivo junto à placa metálica, tendo o cuidado de não deixar bolhas, isso pode prejudicar no momento da corrosão da placa.
  • 72.
    71 Figura 34. Colando o adesivo na PCB com a máscara Agora é necessário retirar o excesso de adesivo, verifique que conforme a retirada vai se formando as trilhas eletrônicas. Figura 35. Retirando excesso de adesivos A Figura 36 mostra uma comparação entre o projeto no computador e o projeto na placa após a colagem dos adesivos, este momento é bom se atentar a todos os detalhes do projeto, para possíveis correções antes de torná-lo físico.
  • 73.
    72 Figura 36. Verificando projeto e placa A Figura 37 mostra o momento da corrosão, necessária para retirar a parte metálica que não contem os adesivos. A corrosão é feita com percloreto de ferro, produto químico e necessita de cuidados como luvas e espátulas. Figura 37. Corroendo as placas com percloreto de ferro Após a corrosão é necessário realizar uma limpeza a placa, isso é feito com água corrente.
  • 74.
    73 Figura 38. Lavando as placas após corrosão A Figura 39 mostra a placa após a lavagem, veja os detalhes das trilhas eletrônicas. Figura 39. Corrosão finalizada Todos os componentes são soldados, criando um conjunto de hardware, conforme Figura 40.
  • 75.
    74 Figura 40. Montagem dos componentes Os hardwares são montados, formando todo o conjunto do projeto, conforme mostra a Figura 41. Figura 41. Montando projeto Projeto de hardware pronto. A Figura 42 mostra o projeto já montado e finalizado, pronto para interagir junto ao software de automação.
  • 76.
    75 Figura 42. Projeto finalizado APÊNDICE B - COMPONENTES ELETRÔNICOS UTILIZADOS B.1 Transístor BC337 O transistor tem por princípio o poder de controle da corrente. Ele pode funcionar, no circuito, com uma chave (liga/desliga) ou como um amplificador. A Figura 43 mostra o transistor BC337 que é de uso geral e foi utilizado no projeto. Figura 43. Transistor BC337. Retirado de Roboternetz (ROBOTERNETZ, 2009).
  • 77.
    76 O transistor permite tanto a amplificação de potência elétrica quando seu chaveamento. Na microeletrônica o transistor desempenha primordialmente a função de uma chave eletrônica por impulsos elétricos; para uma tensão alta na base, uma grande corrente percorre o circuito Emissor-Coletor (chave ligada), enquanto, se a tensão da base for baixa, a corrente será pequena (chave desligada) (ENDERLEIN, 1994). A corrente de emissor é calculada com a taxa do fluxo de cargas positivas que entram na região do emissor (CATHEY, 2003). B.2 Diodo 1N4148 Um diodo é o tipo mais simples de semicondutor. De modo geral, um semicondutor é um material com capacidade variável de conduzir corrente elétrica. Um diodo é um dispositivo de estado sólido que permite o fluxo de corrente em apenas um sentido, um processo conhecido como retificação. Díodos são um componente fundamental dos circuitos elétricos. Eles também são usados para formar outros componentes, tais como o transistor bipolar, que utiliza dois diodos em série. Figura 44. Diodo 1N4148 B.3 Resistor Resistores são componentes eletrônicos, caracterizados por uma grandeza física que mede a oposição à passagem de corrente (RAMOS, 1993). São utilizados para limitar a corrente elétrica em um circuito ou para criarem uma queda de tensão em algum ponto do circuito. A Figura 44 mostra a imagem de um resistor.
  • 78.
    77 Figura 45. Resistor (MILCOMP PRODUTOS ELETRÔNICOS LTDA., 2009). De acordo com as cores apresentadas externamente, na cápsula que envolve o material resistivo, pode-se determinar o valor de um resistor, ou utilizando um equipamento de medição. B.4 Relé de 5V Os relés são dispositivos comutadores eletromecânicos. São utilizados basicamente para ligar ou desligar dispositivos. É normal o relé estar ligado a dois circuitos. Existem diversos tipos de relés, mas todos eles trabalham com a mesma finalidade. No sistema de automação o relé é utilizado para abrir e fechar o circuito que envia sinal elétrico aos aparelhos. Figura 46. Relé de 5v B.5 Led Verde / Led Vermelho 3mm O LED é um diodo semicondutor que quando energizado emite luz visível, por isso LED (Diodo Emissor de Luz). A luz não é monocromática (como em um laser), mas consiste de uma banda espectral relativamente estreita e é produzida pelas interações energéticas do elétron (WIKIPÉDIA, 2009c). 0
  • 79.
    78 Figura 47. LED (Diodo semicondutor) B.6 Circuito Integrado 74LS541 Circuito integrado, também conhecido por chip, é um dispositivo microeletrônico que consiste de muitos transistores e outros componentes interligados capazes de desempenhar muitas funções. Suas dimensões são extremamente reduzidas, os componentes são formados em pastilhas de material semicondutor. CI 74LS541 Circuito integrado Buffer, normalmente utilizado para proteger a porta paralela do computador, quando se liga a porta paralela do computador a um circuito eletrônico. Figura 48. CI 74LS541
  • 80.
    79 APÊNDICE C –CENÁRIOS DOS CASOS DE USO C.1. UC1 - Cadastrar Aparelho Este caso de uso realiza o cadastramento de novos equipamentos no sistema. Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários". 2 - O usuário clica no botão Cadastrar Aparelho. 3 - O usuário insere o nome, descrição, comando de voz de entrada, comando de voz de saída e a porta. 4 - O usuário clica no botão salvar Cenário(s) Alternativo(s) 1 - O sistema verifica que o aparelho já é cadastrado. 2 - O sistema emite a mensagem "Equipamento já é cadastrado". 3 - O sistema verifica que a porta já está em uso. 4 - O sistema emite a mensagem "Porta já encontra em uso" C.2. UC2 - Consultar Aparelho Este caso de uso permite a consulta de equipamentos já cadastrados no sistema. Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários". 2 - O usuário clica na lupa de pesquisa do setor de aparelhos. 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados. 4 - O usuário seleciona o item desejado. Cenário(s) Alternativo(s) 1 - Caso não tenha nenhum aparelho cadastrado, e emitido a seguinte mensagem "Não existe aparelhos cadastrados”. C.3. UC3 - Alterar Aparelho Este caso de uso permite a alteração de um equipamento existente no sistema Cenário(s) Principal(is)
  • 81.
    80 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários" 2 - O usuário clica na lupa de pesquisa do setor de aparelhos 3 - O usuário visualiza uma listagem de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Editar 6 - O usuário faz as alterações necessárias 7 - O usuário clica no botão Gravar C.4. UC4 - Excluir Aparelho Este caso de uso permite a exclusão de um equipamento no sistema Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários 2 - O usuário clica na lupa de pesquisa no setor de aparelhos 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Deletar 6 - O usuário confirma a mensagem de exclusão Cenário(s) Alternativo(s) 1 - O usuário cancela a exclusão C.5. UC5 - Cadastrar Usuário Caso de uso refere-se ao cadastramento de usuários que terão acesso ao sistema web Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários" 2 - O usuário clica no botão Cadastrar Usuário 3 - O usuário insere o nome, login, senha e confirmar senha. 4 - O usuário clica no botão salvar Cenário(s) Alternativo(s) 1 - O sistema verifica que o login já existe 1.1 - O sistema emite a mensagem "Este nome de usuário já está em uso". 2 - O sistema verifica se a senha é idêntica ao campo Confirmar senha
  • 82.
    81 2.1 - O sistema emite a mensagem "Os valores do campo senha e confirmar senha tem que ser iguais" C.6. UC6 - Consultar Usuário Caso de uso permite a consulta de usuários já cadastrados no sistema. Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários". 2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários 3 - O usuário visualiza uma lista de todos os usuários cadastrados 4 - O usuário seleciona o item desejado Cenário(s) Alternativo(s) 1 - Caso não tenha nenhum aparelho usuário cadastrado, e emitido a seguinte mensagem "Não existe usuários cadastrados”. C.7. UC7 - Alterar Usuário Caso de uso permite a alteração de um usuário existente no sistema Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários". 2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários 3 - O usuário visualiza uma listagem de todos os usuários cadastrados 4 - O usuário escolhe o item desejado 5 - O usuário clica no botão Editar 6 - O usuário faz as alterações necessárias 7 - O usuário clica no botão Gravar C.8. UC8 - Excluir Usuário Caso de uso permite a exclusão de um usuário no sistema Cenário(s) Principal(is) 1 - O usuário clica na Aba "Cadastro de Aparelhos e Usuários 2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Deletar 6 - O usuário confirma a mensagem de exclusão
  • 83.
    82 Cenário(s) Alternativo(s) 1 - O usuário cancela a exclusão C.9. UC9 - Validar Comando de Voz Este caso de uso faz a validação do comando de voz, junto à biblioteca SDK 5.1 da Microsoft. Cenário(s) Principal(is) 1 - O comando de voz é processado 2 - O sistema faz a verificação do comando voz, validando ou não através do banco de dados que possui todas as informações necessárias. 3 - A verificação do sistema é feito através do componente Microsoft Speech SDK 5.1 de reconhecimento de voz. 4 - Se o comando de voz de entrada for valido, então o aparelho é ligado. 5 - Se o comando de voz de saída for valido, então o aparelho é desligado. C.10. UC10 - Ligar Aparelho Este caso de uso faz com que apos o reconhecimento de voz for aceito, o equipamento ligue. Cenário(s) Principal(is) 1 - Após conhecimento de voz for aceito pela validação o equipamento é ligado. Cenário(s) Alternativo(s) 1 - Caso o comando executado pelo usuário for para Ligar o aparelho, isso será feito através do WebService. C.11. UC11 - Desligar Aparelho Este caso de uso permanece com os equipamentos desligados caso o comando de voz não for aceito. Cenário(s) Principal(is) 1 - Se o reconhecimento de voz for aceito, o equipamento o sinal de desligamento do aparelho é acionado. 2 - Caso o reconhecimento de voz não for validado e aceito, o equipamento permanece como esta.
  • 84.
    83 Cenário(s) Alternativo(s) 1 - Caso o comando executado pelo usuário for para desligar o aparelho, isso será feito através do WebService. C.12. UC12 - Aguardar Execução de Comando no Sistema Caso de Uso permite aguardar a execução de algum comando do usuário Web. Cenário(s) Principal(is) 1 - O sistema fica em “Stand By” aguardando algum comando ser executado 2 - O usuário executa algum comando através do sistema Web, para ligar ou desligar o aparelho. 3 - O sistema processa o comando. 4 - O sistema liga ou desliga o aparelho de acordo com o comando recebido via Web C.13. UC13 - Capturar informações do sistema Local Caso de uso permite fazer a busca de dados do sistema local Cenário(s) Principal(is) 1 - Caso o WebService estiver normalizado, quando o sistema atingir este ponto, automaticamente ele busca todos os dados do sistema local, carregando no sistema web. C.14. UC14 - Validar Identificação Caso de uso permite fazer a validação das credenciais do usuário Web. Cenário(s) Principal(is) 1 - Sistema verifica se as credenciais "usuário" e "senha" são validos. 2 - Caso verdadeiro o sistema continua o processo. 3 - Caso contrario, volta para a tela de identificação, impedindo qualquer avanço do usuário. APÊNDICE D – PLANO DE TESTES E RELATÓRIOS DE EXECUÇÃO
  • 85.
    84 Sistema de AutomaçãoResidencial por Comando de Voz Plano de Testes Versão 1.0
  • 86.
    85 Histórico de Revisão Data Versão Descrição Autor 23/07/2009 1.0 Criação do Plano de Testes Valmir Ferreira Rocha
  • 87.
    86 Índice 1. INTRODUÇÃO .............................................................................................................. 87 1.1. Finalidade ................................................................................................................. 87 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 4. RECURSOS .................................................................................................................... 92 4.1. Papéis ........................................................................................................................ 92
  • 88.
    87 Plano de Testes 1. INTRODUÇÃO 1.1. Finalidade Há um mito segundo o qual, se fôssemos realmente bons para programar, não haveria 'bugs' a ser procurados. Se pudéssemos realmente nos concentrar, se todos usassem programação estruturada, projeto 'top-down’, tabelas de decisão, se tivéssemos as balas de prata certas, então não haveria 'bugs (LARMAN, 2007)0. Por melhores que sejam as técnicas e processos sempre estarão presentes os erros humanos. Não se pode garantir que os programas funcionem corretamente, sem a presença de erros, portanto, para ter um sistema mais confiável, com o mínimo de erros, são executados os testes. A principal finalidade do Teste é localizar e expor os pontos fracos do software (SHAW, 2003)0. 1.2. Informações Detalhadas O sistema de automação residencial por comando de voz permite ligar e desligar aparelhos domésticos pela aplicação Web ou desktop. 1.3. Escopo Foram feitos testes de funcionalidades do sistema para verificar se a operabilidade do sistema atende aos requisitos solicitados, testes de interface do usuário, de configuração e de instalação, gerando um sistema mais estável e seguro para utilização. 1.4. Identificação do Projeto A tabela abaixo identifica a documentação e disponibilidade; ela é utilizada para desenvolver o plano de teste:
  • 89.
    88 Documento Criado ou Recebido ou Autor ou Observações (e versão / data) Disponível Revisado Recurso Especificação de Requisitos  Sim  Não  Sim  Não Relatórios de Caso de Uso  Sim  Não  Sim  Não Plano de Projeto  Sim  Não  Sim  Não Manual do Usuário  Sim  Não  Sim  Não Manual de Instalação  Sim  Não  Sim  Não 2. REQUISITOS DE TESTE A listagem a seguir identifica os itens (casos de uso, requisitos funcionais, requisitos não funcionais) que foram identificados como objetivos de teste. A lista representa o que foi testado. 2.1. Teste Funcional  Verificar se o usuário consegue ligar e desligar qualquer aparelho pela aplicação Web  Verificar se o usuário consegue ligar e desligar qualquer aparelho pela aplicação Desktop  Verificar se o usuário consegue ligar e desligar qualquer aparelho pela aplicação Desktop e depois visualizar status pela aplicação Web  Verificar se todos os casos de uso estão implementados corretamente 2.2. Teste de Interface do Usuário  Verificar se todas as funcionalidades estão disponíveis  Verificar se todas as telas nas Aplicações Web e Desktop atendem os requisitos de interface amigável  Verificar se o padrão visual é consistente em todas as telas 2.3. Teste de Configuração
  • 90.
    89  Verificar se a aplicação Web funciona em diferentes browsers 2.4. Teste de Instalação  Verificar se um usuário seguindo apenas os passos descritos no manual de instalação é capaz de instalar o sistema Automação Residencial. 3. ESTRATÉGIA DE TESTE 3.1. Tipos de Teste 3.1.1. Teste Funcional Objetivo do Teste: Garantir a funcionalidade adequada de objetivo do teste, incluindo navegação e processamento. Técnica: Executar cada caso de uso, fluxo de caso de uso ou função a fim de verificar o seguinte:  Os resultados esperados ocorrerão quando forem usados estados válidos.  Cada regra de negócio será adequadamente aplicada. Critérios de  Todos os testes planejados foram executados. Conclusão:  Todos os defeitos identificados foram abordados. Considerações Nenhuma. Especiais:
  • 91.
    90 3.1.2. Teste daInterface do Usuário Objetivo do Teste: Verificar se:  A navegação pelo sistema reflete adequadamente as funções e os requisitos de negócio, incluindo os métodos de janela-a-janela, de campo-a-campo e de uso de acesso (como, movimentos do mouse).  Os objetos e as características da Web, como menus, tamanho, posição, estado e enfoque, estão de acordo com os padrões. Técnica: Criar/modificar testes de cada página para verificar a navegação. Critérios de Cada janela foi completamente verificada para que permaneça Conclusão: consistente com a versão de avaliação de desempenho ou esteja de acordo com o padrão aceitável. Considerações Nenhuma. Especiais: 3.1.3. Teste de Configuração Objetivo do Teste: Verificar se o sistema funciona adequadamente nas configurações de hardware/software necessárias. Técnica:  Abrir/fechar vários softwares não relacionados a objetivos do teste, como os aplicativos da Microsoft, Excel e Word, como parte do teste, ou antes, do início do teste.  Testar o sistema utilizando diversos computadores clientes diferentes. Critérios de Conclusão: O sistema funciona de forma satisfatória nas configurações testadas. Considerações Nenhuma. Especiais:
  • 92.
    91 3.1.4. Teste de Instalação Objetivo do Teste: Verificar se as instruções incluídas no manual de instalação são suficientes para a correta instalação do software:  Testar o sistema utilizando uma nova máquina.  Instalar uma mesma versão já instalada do Sistema Automação residencial por comando de voz. Técnica:  Testar a instalação do Sistema Automoção Residencial em cada cenário: em uma nova máquina e atualização de uma máquina que já contenha a mesma versão instalada Critérios de Conclusão: O Sistema Automação Residencial executa suas transações corretamente. Considerações Especiais: Nenhuma. 3.1.5. Ferramentas As seguintes ferramentas serão empregadas nesse projeto: Ferramenta Fornecedor/Desenvolvimento Próprio Versão Internet Explorer Navegador Web Microsoft 7.0.5750.13 Internet Explorer Navegador Web Microsoft 8.1.2.34 Internet Explorer Navegador Web Microsoft 7.0.5730.13 Firefox Navegador Web Mozilla 3.0.8 Chrome Navegador Web Google 2.0.172.30
  • 93.
    92 4. RECURSOS 4.1. Papéis O papel Testador é responsável pelas atividades centrais do esforço de teste, que envolve conduzir os testes necessários e registrar os resultados desses testes (SHAW, 2003)0. Isso inclui:  Configurar e executar os testes  Registrar os resultados e verificar a execução dos testes  Analisar erros de execução e recuperar-se deles  Documentar solicitações de alteração
  • 94.
    93 Roteiro de Simulações de Testes Automação Residencial por Comando de Voz Descrição do Ambiente Os testes foram realizados com o Internet Explorer 7 e 8, Firefox 3, utilizando-se do Microsoft Framework 3.5 com o banco de dados MySql Server, SO Window XP Configuração da Máquina Configuração da Máquina: Windows XP com Service Pack 3, 2GB de RAM e 120 GB de Hard Disk Ciclo de Testes: 1 a 19 Período de Execução: 23/06/2009 a 26/06/2009 Categoria Caso de Uso Ordem Categoria Nome Caso de Uso Nome da Simulação Simulação Resultado Esperado Resultado dos testes 1 Testes UC1 - Cadastrar Aparelho Cadastrar Aparelho 1 - O usuário clica na Aba "Cadastro de Cadastramento efetuado O cadastro do aparelho foi Funcionais Aparelhos e Usuários" na base de dados realizado com sucesso 2 - O usuário clica no botão Cadastrar Aparelho 3 - O usuário insere o nome, descrição, comando de voz de entrada, comando de voz de saída e a porta 4 - O usuário clica no botão salvar 5 - O sistema emite mensagem de Aparelho Cadastrado com Sucesso. 2 Testes UC1 - Cadastrar Aparelho Aparelho já 1 - O sistema verifica se o aparelho já está Cadastramento não Verificação de cadastros já Funcionais cadastrado cadastrado. efetuado na base de dados realizados foi efetuada com 2 - O sistema emite a mensagem sucesso, impedindo o "Equipamento já é cadastrado". cadastramento de informações duplicadas. 3 Testes UC1 - Cadastrar Aparelho Porta já cadastrada 1 - O sistema verifica que a porta já está em Cadastramento não Verificação de cadastros já Funcionais uso efetuado na base de dados realizados foi efetuada com 2 - O sistema emite a mensagem "Porta já sucesso, impedindo o encontra em uso" cadastramento de informações duplicadas.
  • 95.
    94 4 Testes UC2 - Consultar Aparelho Consultar Aparelho 1 - O usuário clica na Aba "Cadastro de Consulta de Aparelhos Realização da consulta de Funcionais Aparelhos e Usuários" aparelhos foi realizada com 2 - O usuário clica na lupa de pesquisa do sucesso. setor de aparelhos 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados 4 - O usuário seleciona o item desejado 5 Testes UC2 - Consultar Aparelho Consultar Aparelho 1 - O usuário clica na Aba "Cadastro de Fechar a tela de pesquisa, Teste ocasionou falha, pois ao Funcionais Aparelhos e Usuários" e retornar a tela principal fechar a tela de pesquisa através 2 - O usuário clica na lupa de pesquisa do do sistema. do botão X, o sistema fechou-se setor de aparelhos por completo. Não se 3 - O usuário visualiza uma lista de todos os comportando com o devido. aparelhos cadastrados Correções foram feitas e 4 - O usuário não seleciona nenhum item corrigidas. 5 - O usuário clica no "X" para fechar a janela de pesquisa 6 Testes UC3 - Atualizar Aparelho Alterar Aparelho 1 - O usuário clica na Aba "Cadastro de Alterar cadastro já Processo de edição de aparelhos Funcionais Aparelhos e Usuários" efetuado na base de dados já cadastrados foi realizado com 2 - O usuário clica na lupa de pesquisa do sucesso setor de aparelhos 3 - O usuário visualiza uma listagem de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Editar 6 - O usuário faz as alterações necessárias 7 - O usuário clica no botão Gravar 7 Testes UC4 - Excluir Aparelho Excluir Aparelho 1 - O usuário clica na Aba "Cadastro de Excluir Aparelho na base A exclusão do aparelho foi Funcionais Aparelhos e Usuários de dados realizado com sucesso. 2 - O usuário clica na lupa de pesquisa no setor de aparelhos 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Deletar 6 - O usuário confirma a mensagem de exclusão 8 Testes UC4 - Excluir Aparelho Excluir Aparelho 1 - O usuário cancela a exclusão Excluir Aparelho na base A operação foi realizada com Funcionais de dados sucesso, no entanto a exclusão não foi realizada pois o usuário cancelou a operação.
  • 96.
    95 9 Testes UC5 - Cadastrar Usuário Cadastrar Usuário 1 - O usuário clica na Aba "Cadastro de Cadastrar usuário na base O cadastro do usuário foi Funcionais Aparelhos e Usuários" de dados realizado com sucesso 2 - O usuário clica no botão Cadastrar Usuário 3 - O usuário insere o nome, login, senha e confirmar senha 4 - O usuário clica no botão salvar 5 - Sistema emite mensagem de cadastro de usuário realizada com sucesso. 10 Testes UC5 - Cadastrar Usuário Cadastrar Usuário 1 - O sistema verifica se o login já existe Campos obrigatórios Sistema validou corretamente os Funcionais 1.1 - O sistema emite a mensagem "Este dados já existentes, não deixando nome de usuário já está em uso". realizar duplicidade dos dados 2 - O sistema verifica se a senha é idêntica ao campo Confirmar senha 2.1 - O sistema emite a mensagem "Os valores do campo senha e confirmar senha tem que ser iguais”. 11 Testes UC6 - Consultar Usuário Consultar Usuário 1 - O usuário clica na Aba "Cadastro de Consultar Usuários A consulta retornou dados Funcionais Aparelhos e Usuários" cadastrados na base de corretamente 2 - O usuário clica na lupa de pesquisa do dados setor de Cadastro de Usuários 3 - O usuário visualiza uma lista de todos os usuários cadastrados 4 - O usuário seleciona o item desejado 12 Testes UC6 - Consultar Usuário Consultar Usuário 1 - Caso não tenha nenhum usuário Consultar Usuários Sistema se comportou Funcionais cadastrado, e emitido a seguinte mensagem cadastrados na base de perfeitamente, no entanto a "Não existe usuários cadastrados”. dados consulta não foi realizada por não possui base de dados. 13 Testes UC6 - Consultar Usuário Consultar Usuário 1 - O usuário clica na Aba "Cadastro de Fechar a tela de pesquisa, Teste ocasionou falha, pois ao Funcionais Aparelhos e Usuários" e retornar a tela principal fechar a tela de pesquisa através 2 - O usuário clica na lupa de pesquisa do do sistema. do botão X, o sistema fechou-se setor de Usuários por completo. Não se 3 - O usuário visualiza uma lista de todos os comportando com o devido. usuários cadastrados Correções foram feitas e 4 - O usuário não seleciona nenhum item corrigidas. 5 - O usuário clica no "X" para fechar a janela de pesquisa
  • 97.
    96 14 Testes UC7 - Atualizar Usuário Alterar Usuário 1 - O usuário clica na Aba "Cadastro de Alterar cadastro já Sistema efetuou a alteração Funcionais Aparelhos e Usuários" efetuado na base de dados realizada pelo usuário 2 - O usuário clica na lupa de pesquisa do corretamente. setor de Cadastro de Usuários 3 - O usuário visualiza uma listagem de todos os usuários cadastrados 4 - O usuário escolhe o item desejado 5 - O usuário clica no botão Editar 6 - O usuário faz as alterações necessárias 7 - O usuário clica no botão Gravar 15 Testes UC8 - Excluir Usuário Excluir Usuário 1 - O usuário clica na Aba "Cadastro de Cadastramento efetuado Sistema excluiu corretamente o Funcionais Aparelhos e Usuários na base de dados registro solicitado pelo usuário. 2 - O usuário clica na lupa de pesquisa do setor de Cadastro de Usuários 3 - O usuário visualiza uma lista de todos os aparelhos cadastrados 4 - O usuário escolhe o aparelho desejado 5 - O usuário clica no botão Deletar 6 - O usuário confirma a mensagem de exclusão 16 Testes UC8 - Excluir Usuário Excluir Usuário 1 - O usuário cancela a exclusão Excluir Usuário na base A operação foi realizada com Funcionais de dados sucesso, no entanto a exclusão não foi realizada pois o usuário cancelou a operação. 17 Testes UC9 - Validar Comando de Voz Validar Comando de 1 - O comando de voz é processado Validação do comando de O sistema realizou a validação do Funcionais Voz 2 - O sistema faz a verificação do comando voz comando junto ao banco de dados voz, validando ou não através do banco de perfeitamente. dados que possui todas as informações necessárias. 3 - A verificação do sistema é feito através do componente Microsoft Speech SDK 5.1 de reconhecimento de voz. 4 - Se o comando de voz de entrada for valido, então o aparelho é ligado. 5 - Se o comando de voz de saída for valido, então o aparelho é desligado.
  • 98.
    97 18 Testes UC10 - Ligar Aparelho Ligar Aparelho 1 - Após o conhecimento de voz for aceito Ligar Aparelho Sistema ligou o aparelho como Funcionais pela validação o equipamento é ligado. previsto. 19 Testes UC11 - Desligar Aparelho Desligar Aparelho 1 - Após o conhecimento de voz for aceito Desligar Aparelho Sistema desligou o aparelho Funcionais pela validação o equipamento é desligado. perfeitamente como previsto. 20 Testes UC12 - Desligar Aparelho Desligar Aparelho 1 - Caso o reconhecimento de voz não for Desligar Aparelho Comportamento perfeito, pois Funcionais validado e nem aceito, o equipamento caso o comando de voz não seja permanece como esta. aceito, o sistema não executa nenhuma ação, apenas relata que o comando ainda não foi reconhecido. 21 Testes UC12 - Aguardar execução de Aguardando 1 - O sistema fica em Stand By aguardando Executar comandos via Sistema web funcionou Funcionais comando do sistema Web execução algum comando ser executado sistema web corretamente 2 - O usuário executa algum comando através do sistema Web, para ligar ou desligar o aparelho 3 - O sistema processa o comando 4 - O sistema liga ou desliga o aparelho de acordo com o comando recebido via Web. 22 Testes UC13 - Capturar sistema local Capturar informações 1 - Caso o WebService estiver normalizado, Sincronizando A sincronização de dados entre Funcionais do sistema local quando o sistema atingir este ponto, informações locais e Web web e desktop funcionou automaticamente ele conecta com a base de perfeitamente. dados local, carregando no sistema web.
  • 99.
    98 23 Testes UC14 - Validar Identificação Validar Identificação 1 - Sistema verifica se as credenciais Validando Identificação Validação de usuário no sistema Funcionais "usuário" e "senha" são validos do Usuário no acesso ao web funcionou perfeitamente. 2 - Caso verdadeiro o sistema continua o sistema Web processo 3 - Caso contrario volta para a tela de identificação, impedindo qualquer avanço do usuário.
  • 100.
    99 Roteiro de Simulações de Testes Automação Residencial por Comando de Voz Descrição do Ambiente Os testes foram realizados com o Internet Explorer 7 e 8, Firefox 3, utilizando-se do Microsoft Framework 3.5 com o banco de dados MySql Server, SO Windows XP Configuração da Máquina Configuração da Máquina: Windows XP com Service Pack 3, 2GB de RAM e 120 GB de Hard Disk Ciclo de Testes: 1 a 19 Período de Execução: 21-10-2009 a 30-10-2009 Categoria Interface Ordem Categoria Nome do Teste Nome da Simulação Simulação Resultado Esperado Situação 1 Interface Mensagem Mensagem de Erro Após a inclusão de qualquer cadastro Mensagem amigável Sistema emitiu corretamente as retornar mensagem amigável de erro mensagens de erro ocorrido. para o usuário 2 Interface Ícones Ícones nas telas Ao entrar na Aba "Cadastro de Ícones visíveis Os ícones dos botões de consulta Aparelhos e Usuários" colocar ícones foram colocados corretamente. nos botões de consulta 3 Interface Botões Botões de ações Colocar hints nos botões de ações Mensagem amigável nos botões As informações de hints foram como "Cadastrar Aparelho”, adicionadas perfeitamente. "Cancelar", "Editar”, "excluir" etc... 4 Interface Tabulação Simular Tabulação nas telas Passar por todas as telas e ir teclando Deverá passar por todos os O processo de tabulação funcionou no TAB para ver se passa de campo campos e botões corretamente. 5 Interface Fluxo das Abas Simular fluxo nas abas Clicar em todas as abas para verificar Deverá passar por todas as abas Em cada aba, as informações foram a exibição dos dados a serem mostradas perfeitamente. mostrados ou ocultados 6 Execução Iniciar aplicação Desktop Iniciar aplicação Desktop O usuário clica para abrir a aplicação Aplicação iniciada Inicialização desktop, e habilitação desktop, em seguida deverá habilitar do comando de voz, funcionou o comando de voz. corretamente.
  • 101.
    100 7 Execução Iniciar aplicação Web Iniciar aplicação Web Após a inicialização do aplicativo Aplicação iniciada Aplicativo web inicializado com Desktop, já é possível inicializar a sucesso. qualquer momento o aplicativo Web. 8 Execução Iniciar Aplicação Web em Iniciar aplicação Web Testar se a aplicação web funciona Aplicação iniciada Sistema funcionou corretamente em diferentes Browsers em diferentes browsers. todas as aplicações descritas. Browsers testados: Internet Explorer, Firefox, Chrome.