• Nenhum resultado encontrado

SISTEMA DE AUTOMAÇÃO RESIDENCIAL POR COMANDOS DE VOZ UTILIZANDO RASPBERRY E APLICAÇÃO MÓVEL

N/A
N/A
Protected

Academic year: 2021

Share "SISTEMA DE AUTOMAÇÃO RESIDENCIAL POR COMANDOS DE VOZ UTILIZANDO RASPBERRY E APLICAÇÃO MÓVEL"

Copied!
61
0
0

Texto

(1)

INSTITUTO FEDERAL

DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA

Minas Gerais

Campus Bambuí

SISTEMA DE AUTOMAÇÃO RESIDENCIAL POR

COMANDOS DE VOZ UTILIZANDO

RASPBERRY E APLICAÇÃO MÓVEL

Diogo Sebastião Silva de Lima

Bambuí - MG 2018

(2)

Diogo Sebastião Silva de Lima

SISTEMA DE AUTOMAÇÃO RESIDENCIAL POR

COMANDOS DE VOZ UTILIZANDO

RASPBERRY E APLICAÇÃO MÓVEL

Monografia apresentada ao Curso de Enge-nharia de Computação do Instituto Federal Minas Gerais - Campus Bambuí, como re-quisito parcial para obtenção do título de Bacharel em Engenharia de Computação. Área de concentração: Automação Residencial

Orientador: Laerte Mateus Rodrigues Coorientador: Eduardo Cardoso Melo

Bambuí - MG 2018

(3)

L732s Lima, Diogo Sebastião Silva de.

Sistema de automação residencial por comandos de voz utilizando Raspberry e aplicação móvel. / Diogo Sebastião Silva de Lima. – 2018. 73 f.; il.: color.

Orientador: Prof. Dr. Laerte Mateus Rodrigues.

Trabalho de Conclusão de Curso (graduação) - Instituto Federal de Educação, Ciência e Tecnologia de Minas Gerais – Campus Bambuí, MG, Curso Bacharelado em Engenharia de Computação, 2018.

1. Automação residencial. 2. Raspberry. 3. Android. I. Rodrigues, Laerte Mateus. II. Instituto Federal de Educação, Ciência e Tecnologia de Minas Gerais – Campus Bambuí, MG. III. Título.

(4)
(5)

Aos meus pais e irmãos.

(6)

Agradecimentos

Agradeço a Deus por permitir que esse trabalho fosse possível.

Aos meus pais que sempre me apoiaram, minha noiva que sempre esteve ao meu lado e meus irmãos que me deram apoio em todas as dificuldades. Agradeço a todos os meus amigos que influenciaram para que este trabalho fosse concretizado.

(7)

Resumo

A crescente tecnologia relacionada à vivência das pessoas em suas residências, se tornou objeto de estudo e de desenvolvimento em todo o mundo. Utilizando novas abordagens e sistemas tecnológicos, busca-se agregar melhorias aos ambientes humanos, como aumentando a praticidade e diminuindo o esforço repetitivo existente no cotidiano das pessoas em suas residências. Sistemas tecnológicos são conjuntos de hardware e software que trabalham juntos para realizar determinadas tarefas em prol da substituição do esforço humano para tal. Aplicações Móveis podem formar conjunto com microcontroladores e computadores, para se tornarem um sistema tecnológico que permite receber e executar comandos de seus usuários. Deste mesmo modo, aplicações Web juntamente com sensores e câmeras, podem gerar um sistema capaz de relatar e demonstrar em tempo real tudo que ocorre no ambiente. Neste trabalho utilizou-se alguns métodos computacionais já conhecidos, como o algoritmo do produtor-consumidor, que contém uma pilha de dados compartilhada, afim de manter para serem consumidos os comandos dados pelo usuário e comunicação por socket, que permite transmitir dados entre aplicações usando protocolos de redes de computadores. A construção de um ambiente de testes, por uma maquete de determinada residência comum atualmente, permitiu gerar teste e demonstração do sistema apresentado no trabalho, com módulos de controle de iluminação, leitura de temperatura, umidade, gás e chamas, além do controle da transmissão de vídeo em tempo real de uma câmera.

(8)

Abstract

The growing technology related to people living in their homes has become an object of study and development around the world. Using new approaches and technological systems, it seeks to add improvements to human environments, such as increasing the practicality and reducing the repetitive effort existing in the daily lives of people in their homes. Technological systems are sets of textit hardware and textit software that work together to perform certain tasks in favor of replacing human effort to do so. Mobile Applications can form together with microcontrollers and computers, to become a technological system that allows to receive and execute commands of its users. In the same way, Web applications along with sensors and cameras, can generate a system capable of reporting and demonstrating in real time everything that occurs in the environment. In this work we have used some known computational methods, such as the producer-consumer algorithm, which contains a shared data stack, in order to keep consuming the commands given by the user and communication by textit socket between applications using computer network protocols. The construction of a test environment, by a model of a certain common residence currently, allowed to generate test and demonstration of the system presented in the work, with modules of control of illumination, reading of temperature, humidity, gas and flames, besides the control of the transmission real-time video from a camera.

(9)

Lista de Figuras

Figura 1 – Fluxo de funcionamento do sistema . . . 24

Figura 2 – Gráfico de aparelhos com IoT . . . 28

Figura 3 – Casa Inteligente . . . 30

Figura 4 – Raspberry Pi modelo B+ . . . 31

Figura 5 – Fluxograma das etapas de desenvolvimento do trabalho . . . 42

Figura 6 – Tela de desenvolvimento do Android Studio . . . 43

Figura 7 – Tela do QEMU emulando Raspbian . . . 46

Figura 8 – Dispositivos conectados diretamente ao Raspberry . . . 49

Figura 9 – Esquema elétrico do controle de iluminação . . . 50

Figura 10 – Tela Inicial da Aplicação Móvel . . . 53

Figura 11 – Tela de Comandos da Aplicação Móvel . . . 54

Figura 12 – Uso do Google Speech na Aplicação Móvel . . . 55

Figura 13 – Tela da Aplicação Móvel com Comandos Enviados . . . 56

Figura 14 – Execução do Script pelo Terminal . . . 56

Figura 15 – Página da Aplicação Web . . . 57

Figura 16 – Circuito Elétrico para Controle da Iluminação . . . 57

Figura 17 – Circuito para leitura do sensor DHT11 . . . 58

Figura 18 – Circuito para leitura do sensor MQ-2 . . . 59

Figura 19 – Câmera acoplada ao Raspberry . . . 59

Figura 20 – Sistema montado sobre a maquete . . . 60

Figura 21 – Caso de Uso . . . 71

Figura 22 – Diagrama de Sequência . . . 71

Figura 23 – Diagrama de Atividade . . . 72

(10)

Lista de Tabelas

Tabela 1 – Quantidade de vendas de smartphones por sistema operacional no último trimestre de 2016 (milhões de unidades) . . . 32 Tabela 2 – Exemplo de requisito documentado com Histórias de Usuário . . . 41

(11)

Lista de Algoritmos

1 Socket Cliente . . . 44 2 Socket Servidor . . . 47 3 Produtor-Consumidor para o controlador principal . . . 48

(12)

Sumário

1 INTRODUÇÃO . . . . 23

1.1 Objetivos Geral e Específicos . . . 24

1.1.1 Objetivos Específicos . . . 25

1.2 Justificativa . . . 25

1.3 Organização do Trabalho . . . 25

2 REFERENCIAL TEÓRICO . . . . 27

2.1 Internet das Coisas . . . 27

2.2 Domótica e Smart Homes . . . 28

2.3 Raspberry Pi . . . 30 2.4 Android . . . 32 2.5 Aplicação Web. . . 33 2.5.1 HTML . . . 33 2.5.2 CSS . . . 33 2.5.3 JavaScript . . . 34 2.6 Python . . . 34

2.7 Diagramas UML e Histórias de Usuário . . . 35

3 REVISÃO DE LITERATURA . . . . 37

4 MATERIAIS E MÉTODOS . . . . 41

4.1 A Aplicação Móvel . . . 42

4.2 A Aplicação Web . . . 44

4.3 O Controlador Principal . . . 45

4.4 A Plataforma para Testes . . . 48

5 RESULTADOS . . . . 51

5.1 A Aplicação Móvel e o Script para o Raspberry . . . 51

5.2 A Página Web . . . 54

5.3 A Construção da Maquete e a Implantação do Sistema . . . 55

6 CONCLUSÃO . . . . 61

(13)

APÊNDICES

67

APÊNDICE A – REQUISITOS LEVANTADOS POR

HIS-TÓRIAS DE USUÁRIO . . . . 69

APÊNDICE B – DIAGRAMAS UML . . . . 71

(14)

23

1 Introdução

O ser humano passa parte de sua vida dentro de uma residência, um espaço habitual, particular, casual e íntimo, que tem por função abrigar e proteger tanto seus residentes como bens, produtos e dispositivos cotidianos. Incessantemente tenta-se trazer a essas residências o máximo de conforto, praticidade, interação e entretenimento, ficando coerente que se adapte os avanços tecnológicos obtidos ao longo dos anos para estes fins nestes ambientes de moradia (MOREIRA, 2017).

Uma forma de se melhorar a vivência em uma residência com o uso da tecnologia, seria a redução do esforço humano repetitivo e o aumento da praticidade nas tarefas rotineiras. Um conceito que se encaixa neste contexto é a Automação, que segundo Ribeiro (2003), se caracteriza pela mínima interferência humana em determinada tarefa, de forma que seja executada por máquina, sistema automático ou controle remoto. Também engloba o uso de potências para acionamento de máquinas e a adição de uma inteligência aos equipamentos, para que possam executar tarefas com mais eficiência e economia.

Assim, sistemas de automação voltados para as residências são desenvolvidos priorizando a comodidade e praticidade, de forma simples e intuitiva. Normalmente as residências possuem vários objetos eletroeletrônicos, sendo que suas interações se tornam parte de nosso cotidiano. Com o uso de sistemas automáticos, as casas se tornam mais confortáveis facilitando o manuseio dos dispositivos, reduzindo o tempo das tarefas e diminuindo os custos com energia elétrica, por exemplo (TAVEIRA et al., 2018).

Para gerar interação entre dispositivos e seres humanos, foi necessário que houvesse um novo conceito, que pudesse levar a esses dispositivos serviços de internet. A internet das coisas, comumente chamada pela sigla IoT (Internet of Things), vem para aumentar o poder das conexões de internet, que agora permitem a comunicação entre diferentes dispositivos comuns, que fazem parte dos hábitos humanos (LIMA, 2017b).

A junção da automação com a internet das coisas, em prol de encontrar e implantar melhorias e avanços em residências abriu uma gama de estudos e conceitos. Buscando maior comodidade, bem-estar e praticidade para os ambientes residenciais, através do avanço da tecnologia, surgiu o termo domótica, uma área da automação voltada para melhorias no conjuntos residenciais (RAMOS; SANTOS, 2015).Casas que aderiram a este tipo de avanço são comumente chamadas de casas inteligentes e equipamentos com IoT, que fomentam a automação residencial são conhecidos como equipamentos de smart home, termo usado para qualificar casas com componentes tecnológicos.

Este presente trabalho relata o desenvolvimento de um sistema, que contemple tanto software como hardware, que tem por objetivo controlar vários processos dentro de uma casa por comandos de voz. Alguns destes processos são: controle de iluminação, ventiladores, portões e eletrodomésticos em geral, ler sinais de sensores como temperatura e umidade

(15)

24 Capítulo 1. Introdução

e gerar relatórios com informações da residência. A figura 1 ilustra o funcionamento do sistema, que irá receber o comando de voz pela aplicação móvel, irá transcrever a voz e mandar o texto, via rede pelo roteador presente na residência para o Raspberry, que irá interpretar o comando e executar a ação.

Figura 1 – Fluxo de funcionamento do sistema

Fonte: Autor (2018)

O microcontrolador Raspberry age dentro do sistema como um controlador principal, intermediando todas as ações da residência e controlando todos os dispositivos eletrônicos que atuam para executar os comandos do usuário. Esse microcontrolador age conforme determinados scripts e mantém uma aplicação Web na rede local, além de guardar dados da residência que podem ser aproveitados para análise.

Esta aplicação Web trabalha como uma interface entre o sistema e o usuário e tem como propósito a visualização em tempo real da situação da residência. Em relação a toda a parte de software do sistema, utilizou-se ferramentas para auxiliar na construção de suas várias partes, entre elas estão a plataforma de desenvolvimento Android Studio, o emulador de sistemas QEMU e o editor de código Sublime Text. Todas essas ferramentas e conceitos são citadas e explicados no próximo capítulo.

1.1

Objetivos Geral e Específicos

O objetivo geral deste trabalho é desenvolver um sistema de automação residencial capaz de controlar aparelhos eletroeletrônicos por meio de um sistema inteligente, utilizando conceitos presentes na computação e na automação, realizando testes comportamentais do mesmo através de um protótipo de uma residência.

(16)

1.2. Justificativa 25

1.1.1

Objetivos Específicos

1. Levantar os requisitos para a automatização de uma residência;

2. Construir um protocolo de comunicação entre o dispositivo de controle e os usuários; 3. Construir um protótipo de uma residência e testar todas as partes do sistema.

1.2

Justificativa

A Automação é um fator essencial para residências, pois traz benefícios importantes, como comodidade e praticidade. Sistemas automatizados podem monitorar sensores que podem avisar incêndios, vazamentos de gás, válvulas, portas ou portões que não foram fechadas, gastos de energia que poderiam ser evitados, entre muitas condições que trazem mais conforto (OLIVEIRA, 2017).

Desta forma podemos então pensar, que aplicando a automação dentro das resi-dências, poderíamos diminuir muitas ações feitas pelo ser humano através de sistemas automáticos. Desta forma é possível controlar componentes como iluminação, refrigeração, portões, janelas, entre muitos outros, analisar fatores como temperatura e umidade, além de aumentar a segurança das residências, com o controle de câmeras e alarme, tudo isso com o menor esforço humano possível (BRAGA, 2015).

Este trabalho trará um sistema que adere algumas funções de controle, que levam conforto e praticidade para dentro de uma residência, de forma a ser mais barato econo-micamente, sem a necessidade de compra de diversos dispositivos de preço elevado, se tornando algo mais acessível.

1.3

Organização do Trabalho

Neste projeto, será apresentado um sistema que não necessitará de um computador pessoal, ou notebook como muitos sistemas inteligentes já existentes, ele irá trabalhar em um único controlador, fará comunicação de forma segura com um aplicativo Android, que receberá diversos comandos por voz, que serão interpretados e executados, com diversos módulos (luzes, eletrodomésticos, sistemas de segurança, sensores), usando um tipo de sistema que previne o acesso não autorizado a Smart Home, trazendo comodidade, praticidade, segurança, entre outras diversas melhorias que serão apresentadas brevemente. No seguimento do trabalho será apresentado um referencial teórico, que contempla conceitos usados no texto, uma revisão literária citando trabalhos relacionados ao tema deste, a metodologia e os materiais que serão empregados para o projeto, assim como as ferramentas utilizadas, explicando cada função das mesmas. Serão mostrados todos os resultados alcançados com o trabalho juntamente com as discussões que foram levantadas

(17)

26 Capítulo 1. Introdução

durante o processo. Por fim, uma conclusão sobre todo o conteúdo mostrado, como também, qual será o seguimento do trabalho a partir deste ponto.

(18)

27

2 Referencial Teórico

Este trabalho utiliza do conceito de Internet das Coisas para determinar as caracte-rísticas dos dispositivos que estarão conectados entre si, trabalhando de forma independente a fim de se alcançar um sistema automatizado, em que o usuário tenha todos os benefí-cios de uma Smart Home. Com base nos princípios da domótica, o sistema atenderá os principais requisitos de um projeto de automação residencial, que comumente envolvem controle de iluminação, leitura de sensores e acionamento de atuadores. Para controlar todo o sistema, um Raspberry Pi mantém todos os dispositivos conectados e trabalhando conforme os comandos dos usuários, que são passados para este controlador através de uma aplicação móvel desenvolvida para Android. No inicio do trabalho foi documentado todos os requisitos do sistema através de uma notação chamada Histórias de Usuário e no fim, diagramas UML documentaram partes do funcionamento do sistema. Estes conceitos importantes para o desenvolvimento do trabalho são detalhados nas seções deste capítulo.

2.1

Internet das Coisas

A Internet das Coisas, conhecida pela sigla IoT, tem por característica dar a objetos como geladeiras, mesas, cafeteiras e até mesmo roupas, conexões com serviços de internet. Quando estes dispositivos conectam a rede, fazem também conexões entre si, gerando um emaranhado de aparelhos eletrônicos com um fluxo de dados constante e em tempo real, que podem ser controlados por outro dispositivo central, mas que também possam realizar tarefas por si mesmos, contendo em suas arquiteturas um poder de processamento e um banco de informações advindas do ideal defendido pela Internet das Coisas (LIMA, 2017b).

A integração global advinda da Internet das Coisas é resultado de um processo contínuo, em que sensores coletam dados, os processam e geram informações que são transmitidas por toda a rede de comunicação cujo dispositivos se encontram vinculados. Contudo, a IoT é composta não só por estes dispositivos de integração, mas por diversos avanços tecnológicos e complexas tecnologias e infraestruturas que fazem este conceito se tornar possível. Englobando hardware, software e serviços de internet, a IoT avança cada vez que uma das suas partes avançam, como o desenvolvimento de um software mais otimizado, de um hardware mais robusto e potente ou da melhoria nas redes de internet locais, expandindo a capacidade de troca de informações (ALBERTIN; ALBERTIN, 2017).

Em relação a IoT, um site de estatísticas (STATISTA, 2018) realizou uma pesquisa para prever o número de aparelhos adaptados para internet das coisas, entre 2015 e 2025. No gráfico da Figura 2, é possível ver que em 2015 havia uma quantidade grande com cerca de 15.41 bilhões de aparelhos com IoT, que seguindo uma taxa de crescimento, poderá

(19)

28 Capítulo 2. Referencial Teórico

passar para 30.73 bilhões em 2020, para que então 5 anos depois esse número cresça de forma exorbitante, chegando a 75.44 bilhões de aparelhos. Isto mostra que as previsões são de números astronômicos, com um crescimento considerável de aparelhos com internet das coisas.

Figura 2 – Gráfico de aparelhos com IoT

Fonte: Statista (2018)

Com o advento da IoT, a automação residencial cresceu, pois se tornou possível e viável automatizar praticamente todas as partes de uma residência, fazendo com que, muitos objetos presentes dentro dela, possam se comunicar, agirem através de comandos e atualizarem suas funções constantemente. Para caracterizar a automação residencial dentro do meio tecnológico, emergiu um novo conceito que engloba todos os princípios, práticas,

hardwares e softwares que implantam sistemas inteligentes em residências, conhecido por

Domótica.

2.2

Domótica e Smart Homes

A automação domótica, segundo Nazário et al. (2017), se baseia em controlar mecanismos de uma residência através de um sistema ou método, executando atividades que automatizam ou melhorem estes mecanismos, trazendo assim mais conforto e bom uso para os recursos da residência.

Bem como conforto, a domótica busca implantar sistemas que facilitem a vida de pessoas que, com problemas físicos por exemplo, encontram dificuldades em locomoção e

(20)

2.2. Domótica e Smart Homes 29

afazeres do cotidiano, como também permite gerir recursos hídricos, energéticos e aumentar a segurança de seus usuários (MONTEIRO, 2015).

Monteiro (2015) ainda divide a domótica em 4 sub-áreas:

• Serviços e Lazer - Compreende a automação de serviços como iluminação, clima-tização e som ambiente, trazendo conforto aos usuários;

• Segurança - Automatiza setores da residencia que podem causar danos aos usuários utilizando sensores (gás e chama) para detectarem e notificarem seus usuários; • Comunicação - Como o usuário passa para a residência suas vontades e de que

forma a mesma compreende estes comandos. Pode se adotar diversas tecnologias para estabelecer esta comunicação, como servidores Web e aplicações móveis; • Gestão Energética - Medição do consumo de energia da residência, permitindo ao

usuário identificar pontos com mais gastos e otimizá-los.

Através da aplicação dos princípios da domótica uma residência se torna uma infraestrutura inteligente, que além de melhorias para seus usuários, também contribui para o avanço tecnológico deste ramo por sempre processar e compartilhar informações que podem ser usadas para diversos fins de pesquisa. A essas infraestruturas inteligentes da-se o nome de Smart Homes.

Smart Homes, ou então casas inteligentes, segundo (SILVA et al., 2015a), são

residencias que oferecem ambientes autônomos e harmônicos, que podem gerar redução de gastos energéticos, controle de luminosidade, equipamentos e tarefas do cotidiano, onde os processos residenciais serão programados para agirem conforme a vontade de seus usuários, fazendo assim com que a interferência humana seja cada vez menor. A figura 3 ilustra os diversos componentes de uma casa inteligente, como controle de iluminação, janelas, cli-matização e segurança, todos controlados de forma prática pelo usuário, preferencialmente em uma única plataforma que dê suporte à todas as funções do sistema, que possa ser prático e confortável.

Uma pesquisa de mercado realizada pelo Coldwell Banker (BANKER, 2016) entre-vistou cerca de 4.000 pessoas, sobre o assunto de Smart Home em 2016. Esta pesquisa revelou que 45% dos entrevistados desejam possuir uma casa inteligente, assim como 54% de proprietários de imóveis dizem que adotariam equipamentos ou casas inteligentes completas caso vendessem seus imóveis. Sobre quais tipo de características os entrevis-tados consideravam mais vitais, 63% das pessoas votaram em sistemas de segurança e alarme, 56% em detectores de incêndio e gás, 63% em iluminação e 58% em controles de temperatura. Já uma pesquisa realizada pelo mesmo órgão em 2018 mostrou que 32% dos americanos já possuem algum tipo de dispositivo que se enquadre em Smart Homes, e garantem, que este é um número que só cresce ano após ano.

(21)

30 Capítulo 2. Referencial Teórico

Figura 3 – Casa Inteligente

Fonte: TechMob (2017)

Smart Homes são ambientes harmônicos, que mantém todos os seus dispositivos conectados e trabalhando conjuntamente em sincronia (SILVA et al., 2015a). Para manter a congruência desse sistema, um controlador principal coordena todas as ações. Neste trabalho, um micro computador conhecido por Raspberry Pi, desempenhou este papel.

2.3

Raspberry Pi

O controlador principal do sistema desenvolvido neste trabalho será o Raspberry Pi, que nada mais é que um mini computador, do tamanho de um cartão de crédito, que é capaz de fazer tarefas que um computador pessoal faz, como também controlar sistemas elétricos, possuindo conexões de entrada, como mouse, teclado e uma interface para entrada de sinais, como também conexões de saída, como vídeo, áudio e uma interface para saída de sinais (ARAÚJO et al., 2016).

O Raspberry, diferente dos microcontroladores, roda um sistema operacional Linux, exatamente como um computador pessoal. Ele possui uma interface para conexão Ethernet, como também é possível utilizar um adaptador Wi - Fi conectado em uma de suas 4 portas USB. O armazenamento de dados é feito por um cartão MicroSD, que age para o Raspberry, em termos práticos, como um disco rígido para um computador. Este microcomputador possui uma fileira de pinos que permitem a conexão com outros dispositivos eletrônicos, sendo assim possível fazer o controle de atuadores e a leitura de sensores (MONK, 2016). A figura 4 mostra o Raspberry Pi 3 model B+, a distribuição usada neste trabalho. Segundo a Fundacaoraspberrypi (2018) esta distribuição tem por características:

(22)

2.3. Raspberry Pi 31

1. Broadcom BCM2837B0, Cortex-A53 (ARMv8) 64-bit SoC @ 1.4GHz 2. 1GB LPDDR2 SDRAM

3. 2.4GHz e 5GHz IEEE 802.11.b/g/n/ac conexão sem fio e LAN, Bluetooth 4.2, BLE 4. Gigabit Ethernet sobre USB 2.0 (taxa de transferência máxima de 300 Mbps) 5. 40 pinos GPIO

6. Full-size HDMI 7. 4 portas USB 2.0

8. Porta CSI para conexão do Raspberry Pi com câmera

9. Porta DSI para conexão do Raspberry Pi com tela touchscreen 10. 4 pólos de saída stereo e porta de vídeo composto

11. Porta Micro SD para carregamento do sistema operacional e outros dados 12. Tensão de entrada 5V/2.5A DC

13. Suporte Power-over-Ethernet (PoE) (requer PoE HAT separado)

Figura 4 – Raspberry Pi modelo B+

(23)

32 Capítulo 2. Referencial Teórico

2.4

Android

Segundo (LIMA, 2017a), Android é um sistema operacional para dispositivos móveis que tem como base o kernel do sistema linux. O Android se tornou o sistema mais difundido no mundo entre os aparelhos smartphone, pois oferecia uma plataforma flexível e atualizável, com uma interação homem-máquina simples e intuitiva. O Android é distribuído pela Google, onde empresas do ramo de smartphones, que antes tinham dificuldades em criar seus próprios sistemas operacionais, apenas modificam o sistema Android para seu melhor uso em seus dispositivos.

Segundo a Gartner (2016), cerca de 432 milhões de aparelhos smartphones foram vendidos no mundo no ultimo trimestre de 2016, o que totalizou quase 1,5 bilhões de unidades comercializadas em todo o ano, com um aumento de 5% referente ao ano anterior. Seguindo estes valores do ultimo trimestre de 2016, o sistema operacional Android apareceu de forma gigantesca, em mais de 350 milhões de aparelhos, cerca de 81,7% de todos os dispositivos comercializados. Ainda segundo os dados levantados pela Gartner (2016) e para fins comparativos, a tabela 1 mostra as quantidades e porcentagens dos aparelhos vendidos no mundo com os mais famosos sistemas operacionais móveis em 2016.

Tabela 1 – Quantidade de vendas de smartphones por sistema operacional no último trimestre de 2016 (milhões de unidades)

Sistema operacional 4T16 Unidades Participação de Mercado no 4T16 (%)

Android 352.669,9 81,7 iOS 77,038.9 17.9 Windows 1,092.2 0.3 BlackBerry 207.9 0.0 Other OS 530.4 0.1 Total 431,539.3 100.0

O sistema Android está presente nos mais diversos dispositivos como smartphones, robôs, satélites, televisões, geladeiras, relógios inteligentes e sistemas automotivos de computador de bordo. Seu código-fonte aberto permite com que o desenvolvedor faça diversas alterações, use dos recursos de seu dispositivo, das bibliotecas desenvolvidas por outros programadores e contribua para a evolução do sistema (DEITEL; DEITEL; DEITEL, 2015). Com estas características, é possível notar porque o Android é uma boa escolha para trabalhar com internet das coisas e automação residencial, como este sistema está presente em grande parte dos dispositivos já existentes com IoT e que, seguindo as projeções continuará na maioria dos dispositivos que forem lançados. Logo, por todos esses fatores, a aplicação deste trabalho será implementada para Android.

(24)

2.5. Aplicação Web 33

2.5

Aplicação Web

Em 1989, Tim Berners-Lee desenvolveu a conhecida World Wide Web (WWW), que permitiu aos pesquisadores criarem arquivos de texto e compartilha-los para que os demais pudessem lê-los a qualquer momento. Desde então, essa tecnologia abriu espaço para que milhares de desenvolvedores construíssem novas aplicações, não só em formato texto, mas com imagens, vídeos e interações com o usuário para trazer informação e entretenimento das mais diversas áreas e conteúdos. O crescimento das aplicações Web foi exponencial, se tornou o meio de aquisição de informações mais utilizado no mundo, devido sua enorme quantidade de dados e o fato de ser acessível a grande parte de pessoas no mundo (WINCKLER; PIMENTA, 2002).

Atualmente, as aplicações Web são complexas e compões recursos poderosos, reali-zando ações como operações e cálculos científicos, troca de dados, geração de informações e entretenimento, o que transformam aplicações Web em grandes sistemas computacionais. Essas grandes aplicações precisam ser dividas e construídas em partes, por uma equipe de desenvolvimento, ao invés de um único desenvolvedor. Muitas ferramentas e linguagens foram criadas para auxiliar no processo de construção de aplicações Web, cada uma capaz de trabalhar no desenvolvimento de determinada parte da aplicação. As mais famosas são a linguagem de marcação HTML, as folhas de estilo CSS e a linguagem de programação JavaScript (LOUDON, 2018).

2.5.1

HTML

HTML consiste em uma linguagem de marcação para construir documentos que definem páginas da Web, os quais são interpretados por navegadores Web (browsers). Linguagens de marcação são constituídas por um conjunto de convenções que estabelecem representações de texto, que permitem codificar e manipular a forma como os textos são apresentados. Pode-se citar como exemplo de codificação de texto o negrito, itálico e sublinhado. Este tipo de linguagem coloca marcações dentro do texto, em qualquer parte dele que deva ser definida com uma determinada codificação. Assim age o HTML, que define marcações e codifica textos para que possam ser interpretados pelos navegadores e serem transformados em páginas Web (ALMEIDA, 2002).

2.5.2

CSS

Cascading Style Sheet, ou simplesmente CSS, é uma folha de estilo que define

características às páginas Web, como cores, fontes e espaçamentos. Essa folha de estilo é um documento, construído em módulos que definem a forma gráfica de cada elemento da página, o que permite deixar as páginas mais vivas e de melhor visualização. O estilo de um elemento pode ser alterado diversas vezes por diferentes agentes, como o desenvolvedor,

(25)

34 Capítulo 2. Referencial Teórico

o usuário e até os navegadores, dessa forma entra em cena o efeito cascata, que define qual dos estilos irá prevalecer, usando de uma estratégia de ponderação para escolher qual a forma gráfica que será adotada ao elemento (SILVA, 2007).

2.5.3

JavaScript

JavaScript é uma linguagem de programação que inicialmente foi criada para aumentar o poder e o dinamismo das páginas Web, fornecendo recursos para que as páginas pudessem realizar ações externas, não só sendo um conjunto de elementos visuais. Sua utilização se tornou enorme no mundo do desenvolvimento Web, não só pelo fato de não possuir uma concorrente direta como também, por ganhar cada vez mais, ferramentas incríveis e recursos amplos. Esta linguagem de programação detém diversos paradigmas como imperativo, orientado a objetos, orientado e eventos e funcional. Suas grandes características a ausência de tipagens, o uso de princípios de prototipagem e a vasta liberdade de programação dada ao desenvolvedor (CRUZ; VALENTE, 2016).

2.6

Python

Para criar os dois scripts responsáveis por interpretar e executar os comandos do usuário, bem como manter e realizar parte do back-end da aplicação Web, foi utilizado a linguagem especificada para rodar como nativa no Raspberry, Python.

A Linguagem de programação Python foi criada por Guido Van Rossum no final de 1989, com a intuito de ser uma linguagem mais eficiente e produtiva do que as outras linguagens já existentes para uso geral e que possuía uma tendência para algoritmos científicos, mas que também poderia ser usada para desenvolver aplicações comerciais. A concepção da ideia para criação do Python surgiu quando Guido trabalhava em um projeto conhecido como Amoeba, constituído por um sistema operacional criado por Andrew Tanembaum no ano de 1982 e que fez Guido perceber que o desenvolvimento com C e Shell Script não era tão eficiente e produtivo em relação as necessidades dos desenvolvedores (MANZANO, 2018).

Por ser uma linguagem interpretada o Python não necessita que seu código-fonte seja compilado, sendo necessário que apenas o interpretador de Python esteja instalado na máquina para rodar um script escrito com ela. Python também é uma linguagem de tipagem dinâmica e forte, ou seja, o próprio interpretador do Python decide qual o tipo de dados de determinada variável, sem que seja necessário a especificação por parte do programador e dizemos tipagem forte pois o interpretador não realiza a conversão automática do tipo de dados de uma variável. Outra característica do Python é utilizar a indentação do código para estabelecer os blocos de instrução, de forma a instruir o interpretador sobre cada linha de código e a qual elemento subjacente ela pertence (MORENO, 2018).

(26)

2.7. Diagramas UML e Histórias de Usuário 35

2.7

Diagramas UML e Histórias de Usuário

A linguagem de modelagem unificada (UML) compreende diagramas para mo-delagem de sistemas de software que permitem, de forma gráfica, representar diversos aspectos como funcionamento e as estruturas do sistema, o comportamento e as ações tomadas sobre determinada situação e as relações entre os usuários e o sistema. Esta linguagem foi desenvolvida em 1996, sendo seus principais contribuintes Grady Booch, James Rumbaugh e Ivar Jacobson, que uniram diversas outras notações que já existiam para modelagem de software criando um tipo de notação unificada e que tem grande aceitação pelos desenvolvedores de software até hoje. Esta notação também independe de qualquer linguagem de programação, como também pode ser usada para modelar qualquer sistema não importando qual forma de desenvolvimento será usada (BEZERRA, 2017). A versão 2.0 da UML possui 13 diagramas, divididos em diagramas estruturais e comportamentais, sendo que para a documentação do sistema, onde se pode visualizar o funcionamento e o comportamento da parte de software do projeto, foram usados alguns destes diagramas.

Para documentar os requisitos do projeto será usado Histórias de usuário, que segundo (LUCASSEN et al., 2016) é uma notação concisa para expressar os requisitos muito usada no desenvolvimento ágil. Essa notação geralmente é composta por um curto trecho descrevendo as histórias de usuário, perspectivas das partes interessadas sobre a história de usuário e critérios de aceitação. Os trechos que descrevem as histórias usam os elementos principais do requisito, como o que é esperado do sistema, o que o usuário espera poder fazer no sistema e opcionalmente, porque esse requisito é importante.

(27)

37

3 Revisão de Literatura

Este capítulo trará alguns trabalhos realizados nos últimos anos, que tiveram temas relacionados ao presente trabalho.

Silva et al. (2015b) fizeram um trabalho sobre um sistema de automação residencial sensível ao contexto. Através de uma aplicação sensível ao contexto em uma residência, distribui-se corretamente funções e configurações de seus dispositivos e permite que a residência adapte seus ambientes internos atendendo as necessidades de seus usuários, através da percepção do que ocorre em seu interior. Um sistema de automação residencial sensível ao contexto deve exercer funções como detectar a presença de um usuário em determinado local, capturar informações de dispositivos eletrônicos e configurar correta-mente os equipamentos da residência. O sistema desenvolvido neste trabalho foi composto por diversas partes, como um controlador principal, que distribuía as informações de contexto da residência em cômodos, onde haviam controladores locais, que tinham por função controlar apenas o cômodo em que se situavam. O controlador principal mantinha uma base de dados, que armazenava as informações previamente, mas também funcionava como um servidor concorrente, que atendia chamadas simultâneas dos controladores locais. No protótipo, utilizou-se um Raspberry Pi como controlador principal, Arduinos UNO como controladores locais e uma rede LAN cabeada para a conexão dos dispositivos.

Fernandes, Barbosa e Cardoso (2015) fizeram um trabalho sobre uma aplicação para auxiliar pessoas com deficiência física utilizando automação residencial e realidade aumentada. O avanço da tecnologia permitiu a melhoria da vida das pessoas em diversos aspectos, inclusive a saúde. Através da realidade aumentada é possível amplificar a percepção sensorial com recursos computacionais. Este trabalho apresentou uma ferramenta de realidade aumentada para a automação residencial que auxilie pessoas com deficiência física, em suas atividades do cotidiano. No sistema, um Arduino ficou responsável pela parte de controle, que recebia os comandos onde eram enviados sinais elétricos para as cargas (como as luzes por exemplo). A aplicação móvel no sistema, era composta por um ambiente virtual, desenvolvido por realidade aumentada, que incluía interações e animações, para melhorar a utilização da aplicação pelo usuário. Através de um sistema de rastreamento de movimento, o usuário dá os comandos de liga e desliga com a cabeça, que são enviados a central de comandos, composta pelo Arduino, que por sua vez, executa a ação. A central de comandos ainda utiliza da realidade aumentada para ilustrar o estado atual das cargas para o usuário.

Ramos e Santos (2015) fizeram um trabalho que se delimitou a desenvolver um sistema de automação residencial totalmente sem fio com módulo de iluminação, aprovei-tando os sistemas de roteamento já presentes na residência, sem a necessidade de muitas alterações na estrutura do edifício. o sistema é composto por uma interface de usuário,

(28)

38 Capítulo 3. Revisão de Literatura

que conectada a um servidor, comunica se com um coordenador, que envia os comandos a um dispositivo final, que controla a iluminação. A comunicação entre eles é feita atra-vés de um roteador e a execução dos comandos é advinda do próprio microcontrolador. O protocolo integrado nos dispositivos para comunicação foi o ZigBee que compõem o padrão IEEE 802.15 e possui baixa taxa de transmissão, curto alcance e facilidade de implantação. Por ter facilidades quanto a implementação, ele se torna algo interessante para um sistema de automação, porém possui baixa taxa de transferência, o que pode atrapalhar em sistemas mais robustos e que necessitem de maior rapidez nas comunicações dos dispositivos. Um computador central mantém o servidor, e o sistema composto pelo coordenador e dispositivo final, são ambos microcontroladores.

Furtado et al. (2017) desenvolveram um projeto de iluminação residencial para melhoria na qualidade de vida do idoso. Este trabalho visou o desenvolvimento de um sistema de automação residencial para facilitar as tarefas de pessoas idosas dentro de suas residências. O sistema se baseia na utilização de um sensor que, colocado na cama do idoso, poderá dizer se o mesmo está deitado e caso não esteja, um Arduino irá receber o sinal do sensor para então ligar as luzes do ambiente e iniciar um timer, que então contará 10 minutos, após essa contagem, o Arduino verifica se o idoso encontra-se na cama, para que, caso ele ainda não tenha voltado, um alerta sonoro notifique o responsável. Um módulo bluetooth permite que o Arduino envie dados a uma aplicação móvel, que mostra ao responsável do idoso, sua presença ou não na cama.

Costa (2017) apresentou um trabalho sobre o desenvolvimento de um sistema para automação residencial via interface natural do usuário, utilizando o Kinect, que nada mais é que um dispositivo de interpretação de voz e movimentos desenvolvido pela Microsoft. Este dispositivo acompanha um kit de desenvolvimento para que se possa criar aplicações de computador que utilizem o Kinect. Neste trabalho foi desenvolvido um sistema de automação residencial que utiliza o Kinect para Windows, assim sendo controlado por interface natural do usuário, ou seja, as ações do sistema são dadas por gestos, movimentos e comandos de voz do usuário. O sistema foi composto por um computador pessoal, que fica conectado ao Kinect e ao controlador e uma aplicação móvel, que também se comunica com o controlador. Este controlador é responsável por executar as ações automáticas da residência e foi se utilizado um microcontrolador PIC para esta tarefa. Através de gestos, o usuário dá comandos, que são lidos pelo Kinect e passados ao computador. O computador por sua vez, envia os comandos para o controlador, que os executa, sendo que o usuário também possui o recurso de controlar a casa por toque, via aplicação móvel.

SILVA et al. (2017) realizaram um trabalho que teve por finalidade, desenvolver e implantar um sistema que captasse a água da chuva em uma residência, utilizando a mesma para tarefas do cotidiano, exceto para consumo humano, como também gerir o uso desse recurso através de uma aplicação móvel. Para isso, foi desenvolvido um protótipo que captasse a água vinda da chuva através de calhas instaladas em um telhado

(29)

39

improvisado, que representava a estrutura de um teto residencial. A água retida pela calha, passava então por um filtro e ia para um reservatório próprio. No chuveiro da residência, foi instalado uma válvula solenóide e um sensor de presença, de forma que, quando houvesse alguém embaixo do chuveiro, a válvula era acionada, fazendo sair água de forma automática. Este sistema era todo controlado por um microcontrolador Arduino, que também se comunicava com uma aplicação móvel que permitia ao usuário gerir os recursos hídricos.

Taveira et al. (2018) apresentaram uma pesquisa bibliográfica sobre a automação de iluminação na arquitetura. Através de seu trabalho, os autores mostraram que com o uso da automação é possível proporcionar um melhor desempenho em uma edificação, através de sensores e controles automáticos. Com o controle, esforços repetitivos são reduzidos, aumentando a qualidade de vida dos moradores. Através da automação, pode-se empregar então, técnicas que aumentem o bem-estar, a segurança e até a redução do consumo energético em uma residência.

Com o estudo dos trabalhos acima, é possível perceber que a grande dificuldade de um projeto para automação residencial, é a implantação desse sistema dentro de uma residência sem que necessite de mudar a estrutura da mesma, considerando que cada residência possui um caso particular de alteração para se tornar uma smart home. Dessa forma, sistemas de automação residencial se tornam complexos quando tem por fim ser genéricos, poderem trabalhar da mesma forma em diferentes ambientes residenciais, procurando fazer o mínimo de alteração em suas estruturas. Atualmente, grandes projetos de automação residencial são implantados já na construção de novas residências, em que as plantas já são projetadas para atender ao sistema de automação, fugindo da complexidade de se adaptar a uma estrutura residencial já existente. Grandes empresas de construção civil perceberam que é mais interessante construir smart homes mesmo elas não dando suporte aos sistemas propriamente ditos, pois este diferencial acaba sendo uma forma de inovação nas construções civis, trazendo lucro e domínio de mercado para estas empresas. Este trabalho se iguala aos outros em encontrar dificuldades para criar um sistema genérico e de fácil implantação, por conter diversos módulos como controle de iluminação, portões e outras cargas elétricas, que utilizam da própria rede de alimentação da residência e que assim, se torna inevitável precisar realizar mudanças, por menor que sejam, nas diferentes estruturas das residências.

Em todos os trabalhos analisados, o usuário dava comandos para a residência através de alguma aplicação ou plataforma Web, porém na maioria dos projetos era utilizado apenas botões para acionar os comandos, limitando o usuário a continuar procurando e apertando um botão para fazer uma determinada ação como acionar uma lâmpada, o que não difere muito da ideia de ligar uma lâmpada pelo próprio interruptor. Outro ponto importante nos trabalhos analisados é o uso de um microcontrolador para controle da residência, o que também era limitado, pois o próprio microcontrolador é limitado, sendo que se fosse

(30)

40 Capítulo 3. Revisão de Literatura

necessário visualizar informações, controlar som ambiente e criar funções de entretenimento para o usuário, era necessário haver um computador pessoal conectado ao microcontrolador, para fazer as funções que ele não conseguiria sozinho. Neste trabalho apresenta-se solução para estes dois inconvenientes encontrados nos trabalhos, em que para diminuir o esforço do usuário em continuar procurando botões, a aplicação deste sistema recebe todos os comandos do usuário por voz, aumentado seu conforto e praticidade. Em relação ao problema de limitações dos microcontroladores, este trabalho utiliza como controlador principal o Raspberry, que é um micro computador com funções de microcontrolador, o que permite implementar todas as características da smart home apenas no Raspberry.

(31)

41

4 Materiais e Métodos

Classifica-se esta referida pesquisa como sendo aplicada, qualitativa, descritiva e, de acordo com os procedimentos utilizados, uma pesquisa-ação. A construção deste projeto foi dividida em cinco partes, pois dessa forma pode-se encontrar e resolver problemas menores do sistema em cada fase de desenvolvimento, procurando evitar erros maiores que podiam ser encontrados caso o sistema fosse construído de uma única vez. A primeira parte foi a documentação dos requisitos do projeto utilizando a notação Histórias de Usuário e os diagramas UML, em que se especificou o que devia compor o sistema e porquê. O documento com os requisitos foram preenchidos pelos próprios desenvolvedores em conjunto, usando suas perspectivas sobre o que eles consideravam essencial para o projeto, que podem ser vistos no Apêndice A. Um exemplo de requisito deste projeto que foi documentado pode ser visto na tabela 2.

Tabela 2 – Exemplo de requisito documentado com Histórias de Usuário

Número 03 Leitura de Temperatura: (x) Nova () Melhoria

Data: 27/03/2018 Prioridade:3 Risco: Baixo Estimativa: Horas

Descrição: Como o usuário poderá visualizar a temperatura em tempo real de sua residência.

Testes de Aceitação:

TA03-01: A temperatura deverá ser lida pelo sensor sempre que o usuário requisitar.

TA03-02: O sensor de temperatura deverá se encontrar em uma região estratégica na residência.

Levantados os requisitos do sistema, foi criado determinados diagramas UML que representassem graficamente o funcionamento do sistema, a interação entre todos os dispositivos e os fluxos de processos com os comandos, desde o usuário até a execução da ação em si. Todos os diagramas UML podem ser vistos no Apêndice B.

A próxima etapa é a criação da aplicação móvel, que tem por função ser a interface de comunicação entre o usuário e a residência, necessitando assim de manter comunicação com o controlador principal, podendo enviar os comandos do usuário sempre que necessário. A conexão da aplicação com o controlador foi implementada seguindo um modelo muito utilizado em sistemas distribuídos conhecido por cliente-servidor.

Segundo Kurose e Ross (2006) o modelo cliente-servidor consiste na interação entre clientes (máquinas pessoais, estações de trabalho) e servidores (computadores mais robustos e potentes), que recebem solicitações dos clientes e então enviam as informações requisitadas, que previamente eram de posse dos servidores, de forma simultânea. Um exemplo de aplicação que adota este modelo é a paginação Web, onde uma máquina cliente

(32)

42 Capítulo 4. Materiais e Métodos

deseja acessar o conteúdo de uma página Web que previamente está hospedada em um servidor, de forma que este cliente requisita os arquivos referentes a página e o servidor os envia para serem carregados pelo navegador Web presente na máquina requisitante.

Análogo a isto, o controlador principal irá agir como o servidor, que fica esperando as requisições (comandos) do cliente, ou seja, da aplicação móvel, para então interpretar estas requisições e executar determinada tarefa como ligar/desligar uma lâmpada ou retornar à aplicação a temperatura ambiente da residência. Em seguida, foi desenvolvido a página Web que será hospedada localmente pelo próprio Raspberry e terá como missão ser a interface entre o usuário e o estado em tempo real da residência. Após estar estabelecido a conexão e o funcionamento da aplicação e do controlador, bem como desenvolvida a página Web, foi então construído uma estrutura que simula um ambiente residencial com diversos dispositivos eletrônicos, para que então fosse feito todos os testes do sistema. A figura 5 traz um fluxograma com as etapas descritas no texto, sendo que essas etapas e as ferramentas utilizadas em cada uma delas são explicadas nas seções deste capítulo.

Figura 5 – Fluxograma das etapas de desenvolvimento do trabalho

Fonte: Autor (2018)

Para todas as partes do sistema utilizou-se diversos materiais, de atuadores, sensores até o próprio controlador principal. Todos os materiais utilizados foram listados para que assim pudessem ser adquiridos, como também avaliados seus valores e o valor final do sistema. A lista com todos os materiais utilizados para o desenvolvimento deste trabalho está presente no Apêndice C.

4.1

A Aplicação Móvel

Como o sistema escolhido para a aplicação móvel foi Android, utilizou-se então a ferramenta oficial para criação de aplicações Android Studio. Este ambiente de de-senvolvimento é disponibilizado pela Google e baseado na IntelliJ IDEA, onde oferece diversos recursos que auxiliam os programadores em seus projetos. Além das funções básicas de um ambiente de desenvolvimento como editor de código-fonte e a árvore de

(33)

4.1. A Aplicação Móvel 43

arquivos do projeto, o Android Studio possui vínculo com um mecanismo que constrói as aplicações de forma automatizada, disponibiliza um emulador que permite fazer testes no aplicativo sem a necessidade de o instalar em algum dispositivo e pacotes de bibli-otecas que permitem desenvolver aplicações para qualquer versão existente do sistema Android (GOOGLEDEVELOPERS, 2018). A figura 6 mostra uma tela deste ambiente de desenvolvimento.

Figura 6 – Tela de desenvolvimento do Android Studio

Fonte: GoogleDevelopers (2018)

Para que a aplicação móvel pudesse enviar os comandos ao controlador implementou-se um mecanismo conhecido por socket, que trabalha como uma entidade básica para a comunicação entre processos em uma rede, composto pelos endereços IPs dos dispositivos e um número de porta onde acontecerá a troca de mensagens. O socket é programado, podendo rodar em uma rotina ou processo, durante todo o tempo de funcionamento do sistema. Esse mecanismo pode ser implementado através de uma API(Application

Programming Interfaces), em que uma vez implementado, ele fica dependente do sistema

(WALTRICK, 2014).

O algoritmo 1 traz o pseudocódigo da implementação do socket dentro da aplicação móvel, que começa criando um novo socket com o endereço IP e a porta de rede onde o servidor está conectado (estes parâmetros são definidos na implementação do servidor). Em seguida tenta fazer a conexão deste e, caso a conexão se estabeleça a mensagem do cliente é enviada. A conexão do cliente com o servidor neste sistema é uma conexão não

persistente, ou seja, quando a mensagem é enviada, a conexão do socket é encerrada

(34)

44 Capítulo 4. Materiais e Métodos

estabelecer uma conexão novamente.

Algoritmo 1: Socket Cliente

Entrada: Msg, IP, PORTA

1 início

2 cria socket com a porta e o Ip do cliente 3 se conecta com o socket servidor então 4 envia mensagem para o servidor

5 senão

6 diga que a conexão falhou

7 fim

8 fecha o socket

9 fim

A aplicação permite aos usuários dar os comandos a residência através de comandos de voz, um importante requisito documentado no início do trabalho. Através de um complemento Speech-to-Text disponibilizado pelo sistema Android foi então possível adaptar a aplicação para que, quando o usuário quiser dar um comando, o aplicativo inicia uma gravação de áudio que perdura enquanto o microfone do dispositivo recebe sinais sonoros. Quando a gravação se encerra, o complemento transcreve todo o áudio recolhido em forma de texto. Terminada a aplicação, foi então desenvolvido todas as partes necessárias para o funcionamento do controlador principal.

4.2

A Aplicação Web

Para construir a aplicação Web foi utilizado o conjunto HTML, CSS e JavaS-cript, onde cada um desses elementos foi responsável por parte da aplicação e juntos, possibilitaram o desenvolvimento de uma página dinâmica e responsiva.

Para edição da página HTML, das folhas de estilo CSS e dos scripts em JavaScript, usou-se a ferramenta Sublime Text (SUBLIMEHQ, 2018), um editor de textos repleto de ferramentas para automatização da escrita de códigos, com suporte como auto complete, pré-interpretador de código e debug para a maioria das linguagens de programação. Esse editor de texto possui uma ferramenta para gerenciamento de pacotes que permite ao usuário utilizar plugins que auxiliam na escrita de códigos, como os utilizados neste trabalho para a função de auto complete em JavaScript e HTML.

Enquanto o HTML foi responsável por especificar os elementos da página, o CSS permitiu criar uma interface que fosse bonita, intuitiva e responsiva. A aplicação Web devia conter as informações mais relevantes da residência e o stream da câmera e para isso definiu-se uma classe speech-buble, que permitiu criar um balão colorido que traria as informações dentro de si, juntamente com uma classe definida por certas regras que permitiram fazer a aplicação Web resposiva. A página Web também realiza processamento,

(35)

4.3. O Controlador Principal 45

de forma que toda as entradas de dados, como valores de temperatura e sinalização dos sensores de chama e gás, são processados pelo JavaScript e mostrados na página Web, assim como outras informações julgadas importantes, como a data atual.

Em relação a forma como o usuário acessa a aplicação Web, toda o código da página (HTML, CSS, JavaScript) foi inserido em um script escrito em Python, que ficou responsável por criar um Web Server através de uma biblioteca nativa do Python e hospedar em determinada porta do endereço de rede do Raspberry a página Web, permitindo assim que a mesma fosse acessada por qualquer dispositivo conectado à rede. Através deste

script feito em Python é que também foi possível realizar o stream da câmera.

4.3

O Controlador Principal

Para exercer a função de controlador principal utilizou-se um Raspberry Pi, que agindo com um micro computador permite a instalação de um sistema operacional. Baseado em linux, o mais famoso sistema operacional para Raspberry é o Raspbian, uma variante de outro sistema Linux que foi otimizado para funcionar em computadores com arquiteturas de hardwares como o Raspberry Pi. Este sistema operacional livre permite fazer com o Raspberry praticamente tudo que se faz com um computador pessoal, como acessar a internet, ouvir músicas, assistir vídeos e até rodar alguns jogos, possuindo cerca de 35 mil pacotes pré-compilados de fácil instalação (QUEIROZ et al., 2016).

Outra função disponível com este sistema é a criação de um script, que segundo COSTA (2010) pode ser entendido como um roteiro composto por um código-fonte, um arquivo que contém um conjunto de comandos sequenciais, que são executados por um interpretador da linguagem pela qual o script foi escrito, e então executa cálculos, tarefas e funções do sistema operacional. Para que então o Raspberry execute todas as ações como controlador principal da residência, foi implementado um script com todas as ações que ele deve tomar e que fica rodando durante todo o tempo em que o sistema está funcionando.

Como o hardware do Raspberry Pi é limitado, o desenvolvimento do script se tornaria uma tarefa demorada, principalmente durantes os testes de funcionamento da comunicação com a aplicação móvel. A fim de facilitar esse desenvolvimento, foi utilizado um software de virtualização chamado QEMU para emular o sistema Raspbian, onde o

scriptfoi escrito e testado, para depois ser usado no Raspberry em si. QEMU (QEMU,

2018) é um software livre para virtualização de processadores, que permite emular diversos sistemas operacionais para essas arquiteturas de foma rápida. Ele opera em dois modos: • Emulação total do sistema: Neste modo o QEMU virtualiza uma arquitetura completa, com todos os processadores e demais componentes, permitindo a emulação de vários sistemas operacionais sem a necessidade de reiniciar a máquina.

(36)

46 Capítulo 4. Materiais e Métodos

compilados de uma CPU em outra CPU, de forma a facilitar a depuração e compilação cruzada.

O QEMU possui recursos como ser portátil para diversos sistemas operacionais e arqui-teturas, usa tradução dinâmica para códigos nativos com uma velocidade razoável, um acelerador de kernel e suporte para emular periféricos como portas USB. A figura 7 mostra uma tela da emulação do sistema operacional Raspbian com o QEMU.

Figura 7 – Tela do QEMU emulando Raspbian

Fonte: Autor (2018)

Após o fim do desenvolvimento da aplicação móvel, com a função de interpretar áudios e transcrevê-los para texto, o sistema já podia oferecer ao usuário uma interface para comunicação entre o mesmo e a residência, atendendo ao requisito de que os comandos fossem passados por voz. No entanto, qualquer comando que for passado ao aplicativo precisa ainda ser "ouvido e entendido"pela residência através da comunicação entre aplicação e o controlador principal, Raspberry. Seguindo o modelo cliente-servidor, o Raspberry se conecta com aplicação através do socket e age como um servidor recebendo as requisições da aplicação. O algoritmo 2 traz o pseudocódigo de como o Raspberry recebe os comandos passados pelo usuário através da aplicação. Primeiramente é definido o número de porta onde o servidor ficará esperando as requisições do cliente, e depois é criado o socket com este número de porta e o ip do Raspberry na rede. Após isto o servidor entra em um

(37)

4.3. O Controlador Principal 47

loop infinito onde fica esperando o cliente requisitar uma conexão para que ele a aceite e

comece a receber as mensagens do cliente.

Algoritmo 2: Socket Servidor

Saída: Ip do cliente conectado e a mensagem enviada 1 início

2 coloca um valor para a porta

3 cria o socket com a porta e o Ip do controlador

4 repita

5 espera requisição da aplicação

6 se aceita conexão com socket cliente então

7 recebe a mensagem do cliente

8 senão

9 diga que a conexão falhou

10 fim

11 até infinito; 12 fecha o socket

13 fim

O script então foi implementado com o socket, que permitia ao Raspberry receber os comandos da aplicação. Em seguida, era necessário escrever no script o código para que o Raspberry interpreta-se esses comandos, executando uma respectiva ação, como ascender uma lâmpada. Para que então, esse script possa ficar esperando um comando e, quando este comando for recebido, ele seja executado, foi implementado no script o problema do produtor-consumidor (também conhecido como problema do buffer limitado). Este problema, segundo Tanenbaum e Woodhull (2009) consiste no compartilhamento de um buffer por dois processos, em que um deles (produtor) adiciona dados a este buffer e o outro (consumidor), recolhe estes dados adicionados, sendo possível adaptar este problema para n produtores e consumidores. Pelo fato do buffer ter um tamanho fixo, ocorrem vezes em que o produtor o deixa cheio e, desta forma, o produtor deve ser bloqueado até o momento em que o consumidor remova alguma informação, para que haja espaço no

buffer para o produtor adicionar mais dados. Da mesma forma, o consumidor deve ser

bloqueado sempre que o buffer estiver vazio. Utilizando os conceitos deste problema, o

script do Raspberry implementa um buffer de tamanho 1, que irá guardar um comando

vindo da aplicação que será adicionado pelo produtor e, como o buffer já estará cheio com um comando, o produtor será bloqueado e o consumidor ativado, onde o comando é removido do buffer e então interpretado pelo Raspberry, que então executa a ação necessária. Este script fica executando o tempo todo, e esse processo de produzir e consumir comandos acontece constantemente. O algoritmo 3 traz o pseudocódigo da adaptação do problema do produtor-consumidor para atender ao funcionamento do Raspberry.

(38)

48 Capítulo 4. Materiais e Métodos

Algoritmo 3: Produtor-Consumidor para o controlador

princi-pal

1 PRODUTOR:

2 início

3 se produtor não estiver bloqueado então

4 espera comando da aplicação adiciona comando ao buffer

5 senão 6 bloqueia o produtor 7 desbloqueia o consumidor 8 chama o consumidor 9 fim 10 fim 11 CONSUMIDOR: 12 início

13 se consumidor não estiver bloqueado então

14 retira comando do buffer interpreta o comando

15 senão 16 bloqueia o consumidor 17 desbloqueia o produtor 18 chama o produtor 19 fim 20 fim

Após a finalização do script para o Raspberry, foi então desenvolvido a plataforma para testar todo o sistema, que envolveu também as conexões elétricas dos dispositivos.

4.4

A Plataforma para Testes

Nesta etapa do projeto, foi estabelecido alguns componentes que poderiam ser conectados ao Raspberry e como eles seriam conectados, a construção de uma maquete para simular uma residência e a montagem do circuito elétrico presente no sistema, para que então pudesse ser feito os devidos testes com os principais componentes de uma smart

home.

Através dos requisitos documentados pela História de Usuário, escolheu-se quais dispositivos estariam ligados direta ou indiretamente ao Raspberry, que agiriam de forma a atender os principais comandos passados pelo usuário, trazendo a maior comodidade e praticidade possível. Para atender o requisito de que o usuário veja a temperatura e a umidade de sua casa, o requisito de avisar o usuário quando os níveis de gás na residência estiverem consideravelmente altos ou o requisito de que a iluminação possa ser ligada sempre que os níveis de luz ambiente estiverem baixos por exemplo, ligou-se diretamente

(39)

4.4. A Plataforma para Testes 49

ao controlador sensores próprios para essas tarefas. Para o controle de algumas cargas, como ventiladores e máquina de lavar, o Raspberry se conecta com eles de forma indireta, tendo como intermédio um circuito de acionamento que envolvem relés e optoacopladores, que são circuitos integrados que dão uma maior segurança para o Raspberry em tarefas que envolvam cargas de alta tensão, que podem gerar picos na rede e causar danos à todo o sistema. Já para o controle de iluminação, apenas os relés eram suficientes, pois as lâmpadas não geram tantos riscos ao controlador em si. Para que o Raspberry se comunique com a aplicação através da rede, um módulo Wi-Fi é conectado diretamente a ele, que lhe permitir conectar a rede de forma prática e em qualquer lugar da residência. A figura 8 ilustra alguns dispositivos que podem estar conectados diretamente ao Raspberry, como foram citados neste parágrafo.

Figura 8 – Dispositivos conectados diretamente ao Raspberry

Fonte: Autor (2018)

É possível dizer que o principal requisito desse sistema de automação residencial seja o controle da iluminação da residência. Para fins de entendimento, a figura 9 demonstra como o Raspberry consegue controlar a iluminação da residência, conectado indiretamente com uma lâmpada para poder controla-lá. Primeiramente, um relé é conectado a um pino de alimentação, um pino de controle e um pino ground do Raspberry, onde os pinos de alimentação e ground são para gerar passagem de corrente dentro do relé e o pino de controle enviava um sinal elétrico quando o relé precisasse ser acionado, ou seja, quando a luz devesse ligar. De forma inversa, quando a luz devesse desligar, o Raspberry parava de enviar esse sinal pelo pino de controle.

Estabelecidas as conexões elétricas do sistema, foi então construída uma maquete que representa uma residência comum nas construções civis dos dias atuais, com 7 cômodos sendo eles 3 quartos, sala, cozinha, banheiro e uma varanda. O material usado para

(40)

50 Capítulo 4. Materiais e Métodos

Figura 9 – Esquema elétrico do controle de iluminação

Fonte: Autor (2018)

construção da maquete foi feita com folhas de papelão coladas e revestidas com folhas de papel A4, fazendo com a que maquete fosse rígida porém leve, o que permitiu a sua locomoção fácil e de forma segura. Contudo, a maquete da residência foi projetada antes de se construir a maquete propriamente dita, onde se desenhou uma simples planta baixa para dar orientação durante sua fase de construção.

As lâmpadas de cada cômodo tem seus fios de alimentação conectados a um conjunto de relés sendo um relé para cada lâmpada, que estão todos conectados ao Raspberry, fazendo assim o controle da iluminação. Juntamente com os relés, um sensor de temperatura e umidade e um sensor de gás também fazem conexão com o Raspberry, sendo o sensor de temperatura colocado aproximadamente no centro da casa e o sensor de gás é colocado na cozinha. Com a maquete pronta e os componentes instalados, foi possível fazer os testes do sistema, começando pelo teste do controle de iluminação da residência, ligando e desligando aleatoriamente as lâmpadas dos cômodos por diversas vezes e anotando qualquer anormalidade percebida. Por fim os sensores foram testados, fazendo leituras constantes no ambiente e gerando um relatório de dados, que também foi usado para análise de comportamento e resultado de testes do sistema.

(41)

51

5 Resultados

Pode-se classificar o desenvolvimento deste sistema como sendo gradual, codepen-dente, expansivo e incitador. Diz-se gradual pois todo o sistema foi construído em etapas que se relacionavam, de forma que, quando se avançava para uma etapa, que possuía determinados objetivos, estes mesmos só podiam ser alcançados, caso os objetivos da etapa antecedente fossem também alcançados, previamente. Diz-se codependente pelo fato de que todos os componentes deste sistema, quando foram desenvolvidos, dependiam do de-senvolvimento de outros componentes, pois todos os módulos e funcionalidades do projeto necessitavam de dois ou mais componentes do sistema, dessa forma criando entre eles uma ligação e em consequência, o desenvolvimento dos mesmos dependiam entre si. Diz-se expansivo pois a implantação dos módulos do sistema foram expandindo sobre a residência, inciando o desenvolvimento sobre apenas uma determinada área (iluminação), expandiu-se a cada etapa para mais regiões, como a utilização de sensores nas áreas da residência em que podia se gerar problemas com vazamento de gás e focos de incêndio, indo então até outras áreas para ler e analisar a temperatura e umidade de toda a residência, como por fim, expandiu-se para os arredores da residência, onde se monitorava os acontecimentos com a câmera instalada. Diz-se incitador pois todo o desenvolvimento deste trabalho é apenas o início de um sistema que pode ter muitos módulos e funcionalidades, com a finalidade de estimular outros pesquisadores a manterem seu crescimento e expansão contínua, pois sua abrangência dentro das residência permite que o pesquisador tenha liberdade de criar melhorias para diversas regiões da residência e este estimulo, é o princípio da ideia deste trabalho.

Este capítulo mostra todos os resultados obtidos, quando se aplicado os métodos e materiais do capítulo anterior. Como este sistema foi gradual, cada tópico deste capítulo traz os resultados de determinada etapa e por ser codependente, determinados tópicos trazem os resultados de forma relacionada entre os elementos do sistema. A sequência dos tópicos e as imagens deste capítulo demonstram o fato do trabalho ter seu aspecto expansivo e, no último capítulo deste trabalho, cita-se algumas outras áreas que ainda podem ser exploradas e desenvolver outros módulos e funcionalidades dentro do sistema, afim de incitar trabalhos futuros.

5.1

A Aplicação Móvel e o Script para o Raspberry

Como já dito, a aplicação móvel teve por função, receber e transcrever os comandos de voz do usuário, enviando-os para o Raspberry. Já o script do Raspberry teve por função interpretar os comandos enviados pela aplicação móvel e gerar a respectiva ação, como o acionamento de uma carga elétrica, por exemplo. Dessa forma, foi necessário que

Referências

Documentos relacionados

Curvas de rarefação (Coleman) estimadas para amostragens de espécies de morcegos em três ambientes separadamente (A) e agrupados (B), no Parque Estadual da Ilha do Cardoso,

Profª. Adrielle Ledra Semana 23.. 3- Escreva as sentenças abaixo por extenso. Na sua estante, há 184 livros de história. Sua mãe colocou mais 53 livros.. 2- Marque um X

CENTROS ECORREGIONAIS: Embrapa Amazônia Ocidental; Embrapa Cerrados; Embrapa Clima Temperado; Embrapa Acre; Embrapa Amapá; Embrapa Rondônia; Embrapa Roraima; Embrapa Meio-Norte;

Quando a luz acende, o console está sob a condição de monitoramento, com os medidores de nível principal mostrando o nível do sinal do canal do monitor e o sinal do canal é

autoincriminação”, designadamente através da indicação de exemplos paradigmáticos. Sem prejuízo da relevância da matéria – traduzida, desde logo, no número e

Nas larvas mantidas sem alimento, as mesmas características foram observadas: o epitélio do mesêntero tornou-se mais achatado e células normais circundadas por células

O predomínio na sub-bacia de uso com pastagens degradadas, fases de relevo principalmente fortemente onduladas e onduladas, e manejo incorreto do solo, são as

c.4) Não ocorrerá o cancelamento do contrato de seguro cujo prêmio tenha sido pago a vista, mediante financiamento obtido junto a instituições financeiras, no