• Nenhum resultado encontrado

Sistema de automação residencial de baixo custo utilizando web service

N/A
N/A
Protected

Academic year: 2021

Share "Sistema de automação residencial de baixo custo utilizando web service"

Copied!
59
0
0

Texto

(1)

DEPARTAMENTO ACAD ˆ

EMICO DE COMPUTAC

¸ ˜

AO

CURSO DE CI ˆ

ENCIA DA COMPUTAC

¸ ˜

AO

TIAGO MIGUEL REICHERT

SISTEMA DE AUTOMAC

¸ ˜

AO RESIDENCIAL DE BAIXO CUSTO

UTILIZANDO WEB SERVICE

TRABALHO DE CONCLUS ˜

AO DE CURSO

MEDIANEIRA

2016

(2)

SISTEMA DE AUTOMAC

¸ ˜

AO RESIDENCIAL DE BAIXO CUSTO

UTILIZANDO WEB SERVICE

Trabalho de Conclus˜ao de Curso apresentado ao Departamento Acadˆemico de Computac¸˜ao da Universidade Tecnol´ogica Federal do Paran´a como requisito parcial para obtenc¸˜ao do t´ıtulo de “Bacharel em Ciˆencia da Computac¸˜ao”.

Orientador: Prof. Dr. Pedro Luiz de Paula Filho

Co-orientador: Prof. Me. Hamilton Pereira da Silva

MEDIANEIRA

2016

(3)

Câmpus Medianeira

Departamento Acadêmico de Computação

Coordenação Curso Bacharelado em Ciência da Computação

Câmpus Medianeira Avenida Brasil, 4232 85884-000 - Medianeira - Paraná - Brasil Fone: (45) 3240-8000 www.utfpr.edu.br/medianeira

TERMO DE APROVAÇÃO

Sistema de Automação Residencial Utilizando Web Service Por

Tiago Miguel Reichert

Este Trabalho de Conclusão de Curso (TCC) foi apresentado às 13:00h do dia 07 de Junho de 2016 como requisito parcial para a obtenção do título de no Curso Bacharelado em Ciência da Computação, da Universidade Tecnológica Federal do Paraná, Câmpus Medianeira. O candidato foi arguido pela Banca Examinadora composta pelos professores abaixo assinados. Após deliberação, a Banca Examinadora considerou o trabalho aprovado.

Prof. Pedro Luiz de Paula Filho UTFPR – Câmpus Medianeira

(Orientador)

Prof. Marcio Angelo Matté UTFPR – Câmpus Medianeira

(Convidado)

Prof. Ricardo Sobjak UTFPR – Câmpus Medianeira

(Convidado)

Prof. Jorge Aikes Junior UTFPR – Câmpus Medianeira (Responsável pelas atividades de TCC)

(4)

REICHERT, Tiago Miguel. SISTEMA DE AUTOMAC¸ ˜AO RESIDENCIAL DE BAIXO CUSTO UTILIZANDO WEB SERVICE. 57 f. Trabalho de Conclus˜ao de Curso – Curso de Ciˆencia da Computac¸˜ao, Universidade Tecnol´ogica Federal do Paran´a. Medianeira, 2016. Com a busca por comodidade e seguranc¸a residencial, foi desenvolvido um sistema de automac¸˜ao visando facilitar o controle de diversos dispositivos e o gerenciamento de recursos energ´eticos e h´ıdricos, al´em de um m´odulo respons´avel por seguranc¸a. O sistema de automac¸˜ao foi embarcado em um Raspberry Pi, este por sua vez controla um Arduino e oferece interfaces de comunicac¸˜ao implementadas em formato de um web service REST (transferˆencia de estado representacional). A interface humana que fornece os componentes necess´arios para o controle e gerenciamento do sistema de automac¸˜ao por parte do usu´ario, foi disponibilizado para plataforma Android. Com este sistema foram atendidos os requisitos relevantes para automac¸˜ao residencial de forma eficiente e com tecnologias e ferramentas gratuitas, disponibilizando ainda a possibilidade de futuras extens˜oes, como por exemplo, outras plataformas para gerenciamento e controle do sistema embarcado pelo usu´ario.

Palavras-chave: dom´otica, REST, servic¸o web, android, arduino, raspberry pi, seguranc¸a, comodidade

(5)

REICHERT, Tiago Miguel. LOW COST HOME AUTOMATION SYSTEM USING WEB SERVICE. 57 f. Trabalho de Conclus˜ao de Curso – Curso de Ciˆencia da Computac¸˜ao, Universidade Tecnol´ogica Federal do Paran´a. Medianeira, 2016.

With the request for convenience and home security, was developed an automation system to facilitate the control of some devices and the management of energy and water resources, as well as a module to increase the security. The automation system was embedded on a Raspberry Pi, there controls an Arduino and offers communication interfaces implemented in form of a REST (representational state transfer) web service. The interface that provides the components for the user to control and management the automation system is available for Android platform. In this system all relevant requirements for home automation were efficiently attended and with free technologies and tools, still providing the possibility of further expansion, such as other platforms for management and control of the embedded system by the user.

(6)

Agradec¸o a todos os professores pelo conhecimento repassado durante o percorrer do curso, e principalmente aos meus orientadores Dr. Pedro Luiz de Paula Filho e Me. Hamilton Pereira da Silva, assim como, ao professor Esp. Marcio Angelo Matt´e que me auxiliaram no desenvolvido deste projeto.

Ressalto tamb´em um agradecimentos aos colegas que fizeram parte desta trajet´oria, na qual adquirimos conhecimento e certamente novas amizades com momentos de estudos e descontrac¸˜ao.

(7)
(8)

FIGURA 1 Funcionamento b´asico de um web servive . . . 21 –

FIGURA 2 Arquitetura Cliente / Servidor . . . 22 –

FIGURA 3 Arquitetura de Sistema em Camadas . . . 22 –

FIGURA 4 Arquitetura do Sistema Android . . . 25 –

FIGURA 5 Mensagem no Formato JSON . . . 30 –

FIGURA 6 Diagrama de Implantac¸˜ao . . . 32 –

FIGURA 7 Sensor de Umidade e Temperatura DHT11 . . . 34 –

FIGURA 8 Sensor de movimento/presenc¸a PIR . . . 34 –

FIGURA 9 M´odulo rel´e com 2 canais . . . 35 –

FIGURA 10 Solenoide . . . 36 –

FIGURA 11 Raspberry Pi 2 - Modelo B . . . 37 –

FIGURA 12 Protocolo de Comunicac¸˜ao Serial . . . 37 –

FIGURA 13 Dados do Protocolo de Comunicac¸˜ao Serial . . . 38 –

FIGURA 14 Diagrama de Sequencia - Ligando uma Lˆampada X . . . 39 –

FIGURA 15 Instalac¸˜ao F´ısica - Acionamento de uma Lˆampada . . . 39 –

FIGURA 16 Maquete Utilizada para Experimentos . . . 44 –

FIGURA 17 Configurac¸˜oes da Aplicac¸˜ao Android . . . 45 –

FIGURA 18 Cadastrando Dispositivo pela Aplicac¸˜ao Android . . . 46 –

FIGURA 19 Telas da Aplicac¸˜ao Android . . . 46 –

FIGURA 20 Sub-menu Iluminac¸˜ao . . . 47 –

FIGURA 21 Controles da Aplicac¸˜ao Android . . . 48 –

FIGURA 22 Telas da Aplicac¸˜ao Android . . . 49 –

FIGURA 23 Telas de Agendamentos . . . 49 –

(9)

AC Corrente Alternada

API Application Programming Interface

CI Circuito Integrado

CPU Central Processing Unit

DC Corrente Cont´ınua

DEX Dalvik Executable

EEPROM Electrically Erasable Programmable Read-Only Memory

EPROM Erasable Programmable Read-Only Memory

GPIO General Purpose Input/Output

HTTP Hypertext Transfer Protocol

IDE Ambiente de Desenvolvimento Integrado

IP Internet Protocol

JEE Java Enterprise Edition

JME Java Micro Edition

JRE Java Runtime Enviroment

JSE Java Standard Edition

JSON JavaScript Object Notation

JSP JavaServer Pages

MVC Model, View, Controller

NDK Native Development Kit

OSI Open Systems Interconnection

RAM Random Access Memory

REST Transferˆencia de Estado Representacional REST Transferˆencia de Estado Representacional

RF Requisitos Funcionais

ROM Read-Only Memory

SBC Single-board Computer

SD Sistema Distribu´ıdo

SDK Software Development Kit

SOA Service-Oriented Architecture

SOAP Protocolo Simples de Acesso a Objetos

SO Sistema Operacional

UC Unidade de Controle

UDDI Universal Description, Discovery and Integration

ULA Unidade L´ogica Aritm´etica

URI Uniform Resource Identifier

USB Universal Serial Bus

WSDL Web Service Description Language

(10)

1 INTRODUC¸ ˜AO . . . 10 1.1 OBJETIVO GERAL . . . 11 1.2 OBJETIVOS ESPEC´IFICOS . . . 11 1.3 JUSTIFICATIVA . . . 11 2 FUNDAMENTAC¸ ˜AO TE ´ORICA . . . 13 2.1 AUTOMAC¸ ˜AO RESIDENCIAL . . . 13 2.2 SISTEMAS EMBARCADOS . . . 15 2.2.1 Microprocessador . . . 15 2.2.2 Microcontroladores . . . 16 2.2.3 Arduino . . . 17 2.3 SINGLE-BOARD COMPUTER . . . 17 2.3.1 Raspberry Pi . . . 17 2.4 COMPUTAC¸ ˜AO DISTRIBU´IDA . . . 18 2.4.1 HTTP . . . 19 2.4.2 Web Service . . . 20 2.4.2.1 SOAP . . . 20 2.4.2.2 REST . . . 21

2.4.2.3 Comparac¸˜ao entre SOAP e REST . . . 23

2.5 DESENVOLVIMENTO PARA DISPOSITIVOS M ´OVEIS . . . 23

2.5.1 Sistema Operacional Android . . . 24

2.6 TECNOLOGIAS E FERRAMENTAS . . . 26

2.6.1 Java . . . 26

2.6.2 VRaptor . . . 27

2.6.3 Maven . . . 28

2.6.4 Raspbian Wheezy . . . 28

2.6.5 Ambiente de Desenvolvimento Integrado . . . 29

2.6.6 JSON . . . 29 3 MATERIAL E M ´ETODOS . . . 31 3.1 ARQUITETURA DO SISTEMA . . . 31 3.1.1 Diagrama de Implantac¸˜ao . . . 32 3.1.2 Requisitos do Sistema . . . 32 3.2 EQUIPAMENTOS . . . 33 3.2.1 Sensores . . . 33 3.2.2 Atuadores . . . 35 3.3 SISTEMA EMBARCADO . . . 36 3.4 SISTEMA CONTROLADOR . . . 37 3.5 APLICAC¸ ˜AO ANDROID . . . 38

3.6 SISTEMA DE AUTOMAC¸ ˜AO RESIDENCIAL . . . 39

4 RESULTADOS EXPERIMENTAIS . . . 44

5 CONCLUS ˜AO . . . 52

(11)
(12)

1 INTRODUC¸ ˜AO

Na sociedade de maneira geral ´e poss´ıvel observar a busca por comodidade, de modo com que uma pessoa n˜ao utilize muito tempo na resoluc¸˜ao de problemas cotidianos, possibilitando assim uma melhor qualidade de vida. Um sistema condicionador de ar, por exemplo, pode ser entendido como uma tecnologia voltada a comodidade, pois cont´em funcionalidades que permitem ao seu utilizador o controle de alguns elementos como a temperatura em seu ambiente. Esse cen´ario pode ser melhorado aplicando-se “inteligˆencia” ao equipamento, de modo com que seja poss´ıvel o controlar remotamente assim que sair de sua residˆencia, para que quando chegue em casa o ambiente j´a esteja na temperatura desejada.

Considerando as facilidades provenientes desses mecanismos de comodidade ´e poss´ıvel pensar na sua aplicac¸˜ao junto a seguranc¸a residencial, tendo em vista que a seguranc¸a ´e um item indispens´avel. Alguns equipamentos de seguranc¸a residencial s˜ao sensores de feixe infravermelho, cˆameras de v´ıdeo e sensores de presenc¸a, por´em geralmente n˜ao ´e poss´ıvel acessar estes equipamentos remotamente para verificar se houve algum incidente de seguranc¸a. Com o avanc¸o e popularizac¸˜ao em sensores e componentes eletrˆonicos, vem sendo cada vez mais vi´avel o desenvolvimento e implantac¸˜ao de sistemas automatizados residenciais, por meio de microcomputadores baseados em SBC (Single-board Computer) de baixo custo.

Conforme GVcia (2015), a quantidade de smartphones no Brasil j´a ultrapassou a quantidade de computadores, com a mobilidade e facilidade de utilizac¸˜ao destes aparelhos, se torna muito cˆomodo a possibilidade de gerir praticamente todos os equipamentos eletrˆonicos por meio de um aparelho, sendo poss´ıvel ter diversos destes “controles universais”.

A proposta deste trabalho ´e implementar um esquema de automac¸˜ao que aumente a comodidade/seguranc¸a residencial por meio da integrac¸˜ao de diversos equipamentos utilizando um microcomputador baseado em SBC. O mesmo deve ainda disponibilizar uma interface para o usu´ario por meio de um aplicativo mobile, melhorando a usabilidade destes equipamentos e tornando-os acess´ıveis de qualquer lugar com conex˜ao a Internet.

(13)

1.1 OBJETIVO GERAL

Desenvolver um esquema de automac¸˜ao residencial visando proporcionar seguranc¸a e comodidade aos moradores.

1.2 OBJETIVOS ESPEC´IFICOS

Para atingir o objetivo geral ´e necess´ario o atendimento aos seguintes objetivos espec´ıficos:

• Elaborar o referencial te´orico sobre automac¸˜ao residencial; • Projetar e implementar o sistema embarcado;

• Projetar e implementar o sistema de comunicac¸˜ao; • Projetar e implementar o sistema controlador;

• Projetar e implementar o sistema de interface para interac¸˜ao do usu´ario com o sistema; • Testar e conduzir experimentos de funcionalidade.

1.3 JUSTIFICATIVA

Segundo Sebrae (2015), no Brasil a automac¸˜ao residencial est´a em forte expans˜ao, impulsionada pela procura de seguranc¸a e conforto por parte dos consumidores.

Conforme Aureside (2013), citado por Pauli (2014), alguns equipamentos como projetor multim´ıdia, ar-condicionado, televis˜ao, s˜ao instalados impulsionados pela onda mercadol´ogica do momento e acabam resolvendo alguns problemas, por´em, a falta de integrac¸˜ao de tais equipamentos acaba gerando frustrac¸˜oes. Por exemplo, televis˜ao, DVD player, home theater e receptor de tv a cabo geralmente est˜ao muito pr´oximos e acaba sendo necess´ario interagir com praticamente todos eles, porem cada um possui o seu controle. Todos estes equipamentos e muitos outros podem ser controlados por meio de um smartphone, sem

(14)

haver necessidade de procurar pelos diversos controle remotos.

Um dos desafios a ser atingidos ´e a diminuic¸˜ao no custo destes sistemas, pois ap´os realizar uma pesquisa de prec¸os de sistemas de automac¸˜ao residencial dispon´ıveis no mercado1, foi poss´ıvel constatar que o valor destes, giram em torno de R$6.000,00. Outro ponto a ser observado ´e interface com o usu´ario a qual se da somente via pain´eis instalados na casa ou aplicativos para uma plataforma espec´ıfica.

As residˆencias inteligentes possibilitam um uso mais apropriado do tempo, tornando as tarefas mais prazerosas e ´ageis, tendo em vista que podem realizar o servic¸o repetitivo do dia a dia, al´em disso proporcionam um melhor controle da utilizac¸˜ao de fontes de energia e fontes h´ıdricas por exemplo, possibilitando um consumo mais racional (BOLZANI, 2004).

1Levantamento de prec¸os realizado nos seguintes enderec¸os: http://goo.gl/WRUOeb, http://goo.gl/CwJosP e

(15)

2 FUNDAMENTAC¸ ˜AO TE ´ORICA

Este cap´ıtulo aborda o embasamento te´orico relacionado `as tecnologias aplicadas ao presente trabalho. Ser˜ao descritos conte´udos relacionados a automac¸˜ao residencial, sistemas embarcados, computac¸˜ao distribu´ıda e desenvolvimento para dispositivos m´oveis.

2.1 AUTOMAC¸ ˜AO RESIDENCIAL

Segundo Bolzani (2014), a automac¸˜ao residencial tamb´em ´e conhecida por dom´otica, que origina-se do latim domus (casa) e do termo rob´otica. Com dom´otica pretende-se criar sistemas controladores que realizam os processos repetitivos de forma automatizada, integrar os diversos dispositivos presentes em uma residˆencia em uma plataforma ´unica, controlar sistemas de seguranc¸a, disponibilizando maior conforto e seguranc¸a para os moradores por meio de uma residˆencia inteligente.

Para um melhor entendimento do que a automac¸˜ao residencial ´e capaz, basta analisar uma situac¸˜ao em que ap´os um dia exaustivo de trabalho, tem-se apenas vontade de descansar, por´em ao chegar em frente de casa percebe-se que o controle do port˜ao eletrˆonico foi esquecido no trabalho, e que ser´a necess´ario voltar para busc´a-lo. Isso n˜ao seria necess´ario caso houvesse um sistema de dom´otica na residˆencia, somente seria preciso acionar o port˜ao e desativar o sistema de seguranc¸a por meio de um aplicativo instalado em um smartphone se autenticando com uma senha (seja ela num´erica, uma combinac¸˜ao de toques ou at´e mesmo um comando de voz). Ap´os adentrar na casa o sistema aciona o ar-condicionado na temperatura pr´e-programada e acende as luzes da sala de entrada.

Al´em disso, o sistema pode armazenar as atividades corriqueiras do usu´ario, conseguindo assim, deduzir que ao entrar na sala de entretenimento ser´a ligada a televis˜ao no canal desejado, ativado o home theater, fechando as persianas e diminu´ıdo a luminosidade das lˆampadas. Tudo isso programado conforme o usu´ario desejar, podendo ser tudo de modo

(16)

autom´atico ou o sistema pode solicitar a confirmac¸˜ao do usu´ario antes de realizar qualquer operac¸˜ao. Pode-se observar que o propriet´ario ganha em seguranc¸a, comodidade e economia energ´etica tendo em vista que o mesmo pode desligar as luzes e outros equipamentos eletrˆonicos automaticamente assim que detectar que n˜ao est˜ao sendo utilizados. Esse exemplo n˜ao ´e ficc¸˜ao cientifica, j´a se pode obter isso e muito mais com um sistema de automac¸˜ao residencial.

Segundo Aldrich (2003), a tendˆencia ´e que os equipamentos de uma residˆencia, sejam conectados em rede, de forma que possam ser gerenciados por meio de comandos e monitoramentos remotos, tanto internos quanto externos `a habitac¸˜ao, al´em disso o sistema pode ser capaz de aprender as preferˆencias dos operadores. Isso permitir´a o aumento da qualidade de vida para seus moradores e usu´arios, utilizac¸˜ao eficaz dos recursos com sustentabilidade, proporcionando lazer, comunicac¸˜ao, racionalizac¸˜ao de energia, seguranc¸a e conforto.

O significado da palavra conforto no idioma portuguˆes est´a relacionado `a sensac¸˜ao de bem-estar, por´em pelo fato de depender muito do meio cultural e de cada individuo ´e dif´ıcil defini-la objetivamente, por exemplo, para uma pessoa o simples fato de possuir uma residˆencia significa conforto, j´a para outra, tem-se a necessidade de uma casa inteligente que realize as atividades mecˆanicas e repetitivas que ele teria que exercer (SANTOS DA SILVA; OLIVEIRA SANTOS, 2012).

Para Baumann (2008), a preocupac¸˜ao com a seguranc¸a residencial ´e cada vez maior, tendo em vista o crescimento da violˆencia, abuso sexual e furtos. Existem in´umeras maneiras de aumentar a seguranc¸a residencial, seja com uso de cˆameras, alarmes ou vigilantes. Por´em a maioria dos sistemas de seguranc¸a, dispon´ıveis no mercado, funcionam de forma especifica n˜ao integrando a seguranc¸a com a comodidade, por exemplo, ser´a necess´ario uma aplicac¸˜ao para visualizar imagens de uma cˆamera de seguranc¸a e outra para acionar o ar condicionado.

Os invasores comumente evitam residencias que aparentam ter movimentac¸˜ao de pessoas, e tendem a escolher casas desertas e/ou com pouca ou nenhuma iluminac¸˜ao. Segundo Paran´a Seguro (201?), a melhor forma de se proteger ´e a vigilˆancia natural, quando o invasor acredita estar sendo vigiado e assim se desencoraja e procura outro local para agir. Uma forma de simular a vigilˆancia natural seria por meio de um sistema de automac¸˜ao residencial, no qual ´e poss´ıvel ligar/desligar lˆampadas e um sistema de som ambiente, remotamente, aparentando a presenc¸a de pessoas. Outra forma de melhorar a seguranc¸a ´e, assim que detectar alguma movimentac¸˜ao estranha, seja por cˆamera ou sensores, ser alertado por um smartphone informando que houve alguma intrus˜ao, assim, podendo ligar para a pol´ıcia diretamente por meio de um bot˜ao no aplicativo que lhe alertou.

O m´odulo respons´avel por gerir os diversos atuadores e sensores necess´arios em sistema de automac¸˜ao residencial pode estar implantado em um sistema embarcado tendo em

(17)

vista a sua praticidade.

2.2 SISTEMAS EMBARCADOS

Sistemas embarcados geralmente est˜ao atribu´ıdos a um hardware limitado e, realizam atividades bem espec´ıficas. Estes sistemas est˜ao cada vez mais presentes na vida das pessoas, e s˜ao encontrados em equipamentos eletrodom´esticos ou at´e mesmo em sistemas automotivos, por exemplo. Conforme os processadores utilizados se tornam mais sofisticados e potentes, torna-se vi´avel o uso de sistemas operacionais para auxiliar o desenvolvimento de software embarcado, al´em disso o prec¸o do hardware torna-se mais baixo e o custo final do sistema ´e cada vez mais influenciado pelo custo de desenvolvimento do software (GALLASSI; MARTINS, 2014).

2.2.1 Microprocessador

Um microprocessador ´e uma CPU (Unidade Central de Processamento) constru´ıda em um ´unico CI (Circuito Integrado). Este, precisa de outros perif´ericos para formac¸˜ao de um computador, tais como, mem´oria e unidade de entrada e sa´ıda. A organizac¸˜ao b´asica destes dispositivos pode ser dividida em unidade de controle, unidade l´ogica aritm´etica e registradores. • Unidade de Controle (UC): A UC ´e respons´avel pela decodificac¸˜ao e execuc¸˜ao das instruc¸˜oes, tamb´em fornece os sinais de temporizac¸˜ao adequados para o processador e para o pr´oprio computador (CAMPOS, 2008);

• Unidade L´ogica Aritm´etica (ULA): A ULA faz parte do processador e ´e respons´avel por executar as operac¸˜oes l´ogicas aritm´eticas, todas operac¸˜oes realizadas s˜ao baseadas na operac¸˜ao de adic¸˜ao. O desempenho da ULA influencia diretamente o desempenho do processador (OLIVEIRA et al., 2013);

• Registradores: S˜ao usados para o armazenamentos internos da CPU, constru´ıdos como flip-flops, que podem armazenar dados. Existem diversos registradores na CPU e o principal deles ´e chamado de acumulador (OLIVEIRA et al., 2013).

(18)

2.2.2 Microcontroladores

Para Assis (2004), um diferencial entre microcontroladores e microprocessadores ´e o fato do microcontrolador possuir todos os perif´ericos necess´arios em um ´unico CI, tais como UC, ULA, registradores, mem´oria e unidade de entrada e sa´ıda. Estes controladores s˜ao geralmente utilizados em aplicac¸˜oes espec´ıficas, como por exemplo, monitoramento de sensores, controle de rel´es e outros. Por´em quando se deseja trabalhar com cˆameras de v´ıdeo ou algo que exija um processamento maior deve-se recorrer aos SBC pelo fato de terem um poder de processamento muito superior aos microcontroladores, na Tabela 1, ´e poss´ıvel visualizar a comparac¸˜ao entre um Arduino Mega 2560, baseado em microcontrolador, e um Raspberry Pi 2, baseado em SBC.

• Mem´oria: As mem´orias podem ser divididas em dois grupos, RAM (Random Access Memory) e ROM (Read-Only Memory). A mem´oria RAM permite a leitura e gravac¸˜ao de dados durante a execuc¸˜ao de programas, e a mem´oria ROM permite somente a leitura dos dados e em alguns modelos e com t´ecnicas espec´ıficas ´e poss´ıvel regravar a mem´oria, por exemplo, a EPROM (Erasable Programmable Read-Only Memory) permite que seu conte´udo seja deletado expondo a mesma `a luz ultravioleta por cerca de 10 minutos, por´em ´e necess´ario uma voltagem cada vez maior para reescrever os dados, o que torna limitado a quantidade de vezes que pode ser reescrita. J´a a EEPROM (Electrically Erasable Programmable Read-Only Memory) permite apagar e regravar os dados in´umeras vezes (MONTEIRO, 2007);

• Unidade de Entrada e Sa´ıda: Para permitir o contato com outros dispositivos, ´e necess´ario a unidade de entrada e sa´ıda, a qual disp˜oe de diversas “portas” de entrada, sa´ıda e entrada/sa´ıda no microcontrolador. Quando se trabalha com essas “portas” primeiramente ´e necess´ario escolher qual ser´a utilizada e em seguida enviar ou receber dados nela (MONTEIRO, 2007).

Caracter´ısticas Microcontrolador Single-board Computer

Modelo Arduino Mega 2560 Raspberry Pi 2 – Modelo B

Clock Speed 16 MHz 4x 900Mhz

Mem´oria RAM 8 KB 1 GB

Armazenamento Interno - 256KB Externo - MicroSD e USB Tabela 1 – Comparativo entre microcontrolador e SBC

(19)

2.2.3 Arduino

Conforme Arduino (2016), esta placa possui o microcontrolador ATmega25601, detˆem 54 pinos GPIO (General Purpose Input/Output) os quais podem ser utilizados, por exemplo, para leitura de sensores digitais e acionar atuadores. Possui tamb´em 16 pinos de entrada anal´ogica os quais podem ser utilizados para leitura de sensores cuja operac¸˜ao e anal´ogica. Al´em disso disp˜oem de 256KB de mem´oria flash e um clock speed de 16 MHz (ARDUINO, 2016).

A placa pode ser alimentada atrav´es da conex˜ao USB ou com uma fonte de alimentac¸˜ao externa a qual ´e selecionada automaticamente.

2.3 SINGLE-BOARD COMPUTER

Conforme Rasmussen (1989), um SBC ´e um computador montado em uma placa de circuito, contendo todos os componentes necess´arios para seu funcionamento, tais como, microprocessador, unidade de entrada e sa´ıda e mem´oria. Geralmente, um SBC representa uma soluc¸˜ao de baixo custo para controle e processamento de diversos elementos. Entre os seus principais representantes, pode-se citar o Raspberry Pi, Banana Pi, Intel Edson, Intel Galileo, entre outros.

2.3.1 Raspberry Pi

Conforme Raspberry Pi Foundation (2015), Raspberry Pi ´e um SBC desenvolvido no Reino Unido pela Fundac¸˜ao Raspberry Pi, em 2006 buscou-se criar um pequeno computador de baixo custo para incentivar o ensino de computac¸˜ao nas escolas, j´a em 2008 os microprocessadores desenhados para dispositivos m´oveis comec¸aram a se popularizar tornando-os mais acess´ıveis e, segundo tornando-os autores, com um processamento alto o suficiente para

1Datasheet dispon´ıvel em

(20)

aplicac¸˜oes multim´ıdia, por´em, somente em 2012 comec¸am as primeiras vendas do Raspberry Pi Modelo A com 256 MB de mem´oria RAM. Na Tabela 2, pode-se observar a diferenc¸a entre os modelos do Raspberry Pi.

Tendo em vista que o Raspberry Pi ´e um computador, ele possui um SO (Sistema Operacional) que gerencia os seus recursos, tais como mem´oria, processador, rede, dentre outros. Existem diversos sistemas operacionais compat´ıveis com o Raspberry Pi, por´em o mais utilizado ´e o Raspbian2, o qual ´e uma distribuic¸˜ao do Debian, otimizado para o Raspberry Pi. Outra possibilidade de SO ´e o Windows 10 IoT3, que ´e uma distribuic¸˜ao Windows, dispon´ıvel a partir do Raspberry Pi 2.

Caracater´ıstica Modelo A Modelo A+ Modelo B Modelo B+ 2 Modelo B

Processador 1x 700MHz 1x 700MHz 1x 700MHz 1x 700MHz 4x 900MHz

Mem´oria RAM 256 MB 256 MB 512 MB 512 MB 1 GB

Armazenamento Full SD Micro SD Full SD Micro SD Micro SD

Porta Ethernet N˜ao N˜ao Sim Sim Sim

GPIO 17 26 17 26 40

Tabela 2 – Comparativo dos diversos modelos de Raspberry Pi Fonte: Adaptado de Raspberry Pi Foundation (2015)

Por´em em automac¸˜ao residencial o sistema embarcado precisa se comunicar de alguma forma com a aplicac¸˜ao a qual o usu´ario utiliza, para realizar esta comunicac¸˜ao ´e poss´ıvel utilizar computac¸˜ao distribu´ıda.

2.4 COMPUTAC¸ ˜AO DISTRIBU´IDA

Em um SD (Sistema Distribu´ıdo), m´aquinas distintas se comunicam via rede de modo que parec¸am somente uma m´aquina. As aplicac¸˜oes de SD podem compartilhar dados, arquivos, executar c´odigos em m´aquinas remotas dentre outras funcionalidades. Conforme Silva e Lovatti (2009), as principais vantagens de um SD em relac¸˜ao a sistemas centralizados, nos quais cada m´aquina distinta se comporta de forma independente, s˜ao: desempenho, escalabilidade, conectividade, seguranc¸a, confiabilidade, tolerˆancia a falhas e transparˆencia. Os autores ainda descrevem estes comportamentos da seguinte forma:

2Dispon´ıvel em https://www.raspbian.org/

(21)

• Desempenho e Escalabilidade: As requisic¸˜oes feitas pelos clientes podem ser enviadas a diferentes servidores, n˜ao sobrecarregando um servidor e assim aumentando o desempenho. Escalabilidade ´e a possibilidade de um sistema crescer sem afetar as aplicac¸˜oes e os usu´arios j´a existentes;

• Conectividade e Seguranc¸a: Fornecer interfaces comuns a todas as m´aquinas do sistema, omitindo assim problemas de conectividade devido a particularidades de uma m´aquina. Caso o recurso que se deseja acessar for um sistema de arquivos globalmente compartilhado, os usu´arios remotos poder˜ao acess´a-lo como acessariam um sistema de arquivos local, privado. Estes sistemas devem permitir acesso somente a usu´arios autorizados e garantir que a informac¸˜ao transmitida pela rede somente possa ser lida pelo usu´ario que a solicitou;

• Confiabilidade e Tolerˆancia a Falhas: Realizar replicac¸˜ao de recursos, trazendo uma maior confiabilidade e disponibilidade destes recursos para os usu´arios. SD possuem mecanismos que detectam e reagem quando s˜ao encontradas falhas no sistema, assegurando a consistˆencia das informac¸˜oes, eles ainda precisam conseguir reintegrar os recursos que falharam, assim que reparados;

• Transparˆencia: Ocultar a localizac¸˜ao de recursos dos usu´arios que est˜ao os acessando, dando a impress˜ao de estar acessando arquivos remotos como se fossem locais.

Dentre as tecnologias para comunicac¸˜ao baseadas em SD pode-se citar o web service o qual oferece um meio de comunicac¸˜ao entre m´aquinas de forma eficiente e gen´erica.

2.4.1 HTTP

HTTP (Hypertext Transfer Protocol) ´e um protocolo contido na camada de aplicac¸˜ao do modelo OSI (Open Systems Interconnection), conforme Kurose e Ross (2006), HTTP consiste em uma arquitetura de duas camadas, na qual existe uma parte no cliente e outra no servidor. Estas duas camadas se comunicam por mensagens cuja estrutura e modo de comutac¸˜ao ´e definido pelo protocolo HTTP.

O HTTP possui diversos m´etodos que o lado do cliente solicita ao servidor, dentre eles pode-se citar GET, POST, PUT e DELETE. Estes m´etodos podem ser executados todos na mesma URI (Uniform Resource Identifier) por´em no lado do servidor ser˜ao interpretados de forma diferenciada. O GET ´e comumente utilizado para solicitar algo, o POST para criar

(22)

algo no lado do servidor, PUT para atualizar e por fim o DELETE para excluir (BELSHE et al., 2015).

2.4.2 Web Service

Conforme W3C (2004), o web service foi estruturado com o intuito de disponibilizar a interac¸˜ao entre m´aquinas, de forma independente de hardware e software utilizados em cada m´aquina, conseguindo assim integrar sistemas heterogˆeneos. Este servic¸o geralmente possui interfaces baseadas em XML (Extensible Markup Language), disponibilizadas na rede por meio do protocolo HTTP. Existem dois tipos de web services amplamente utilizados, o SOAP (Protocolo Simples de Acesso a Objetos) e o REST (Transferˆencia de Estado Representacional), cada um com suas particularidades e aplicac¸˜oes, por´em ambos s˜ao derivados da arquitetura SOA (Service-Oriented Architecture), na qual as funcionalidades do sistema s˜ao desenvolvidas em forma de servic¸os.

2.4.2.1 SOAP

O web service SOAP faz uso de trˆes tecnologias, SOAP, WSDL (Web Service Description Language) e UDDI (Universal Description, Discovery and Integration) (SILVA; LOVATTI, 2009).

• SOAP: Protocolo que possui as chamadas e retornos dos web services, ele permite a troca de informac¸˜oes em ambientes distribu´ıdos;

• WSDL: Linguagem de descric¸˜ao dos web services, onde est˜ao descritas as informac¸˜oes como a localizac¸˜ao, operac¸˜oes dispon´ıveis e assinaturas de func¸˜oes do web service; • UDDI: Gerencia informac¸˜ao sobre provedores, implementac¸˜oes e metadados de servic¸os.

Al´em disso, cont´em informac¸˜oes sobre os servic¸os e funcionalidades que os servic¸os web oferecem, permitindo uma associac¸˜ao desses servic¸os com suas informac¸˜oes t´ecnicas.

Na Figura 1 ´e demonstrado o funcionamento b´asico de um web service SOAP, em que o cliente faz uma requisic¸˜ao ao servidor e o mesmo retorna os dados em formato XML para o cliente.

(23)

Figura 1 – Funcionamento b´asico de um web servive Fonte: Adaptado de Silva e Lovatti (2009)

O web service ´e acessado pelos seus clientes usando mensagens formatadas em XML. O SOAP encapsula essas mensagens e as transmite por HTTP, ou por outro protocolo, por exemplo, TCP ou SMTP. Os servic¸os (operac¸˜oes, mensagens, parˆametros etc) s˜ao descritos na WSDL. O processo de publicac¸˜ao/pesquisa/descoberta utiliza o UDDI. Os web services podem ser ativados por demanda ou podem funcionar continuamente.

2.4.2.2 REST

Visando reunir as melhores pr´aticas nos estilo de arquitetura j´a existentes, Fielding (2000), propˆos um novo estilo de arquitetura que re´une as melhores pr´aticas identificadas em sua pesquisa. Este estilo ´e composto pelas seguintes estruturas: cliente/servidor, sistema em camadas, cache e sem estado.

• Cliente/Servidor: Basicamente composto por duas partes, o cliente e o servidor. Os clientes solicitam servic¸os e recursos disponibilizados pelo servidor, esta comunicac¸˜ao pode ocorrer em m´aquinas distintas por meio da rede (na qual o servidor est´a em uma m´aquina e o cliente em outra), como pode ser visto na Figura 2, ou o cliente e servidor podem estar em uma s´o m´aquina (LIMA, 2012).

• Sistemas em Camadas: A Figura 3 representa a arquitetura de um sistema em camadas. ´

E poss´ıvel observar que esta arquitetura ´e composta por diversos n´ıveis hier´arquicos, em que cada n´ıvel corresponde a uma camada, e esta por sua vez conhece somente as

(24)

Figura 2 – Arquitetura Cliente / Servidor Fonte: Adaptado de Lima (2012)

Figura 3 – Arquitetura de Sistema em Camadas Fonte: Adaptado de IBM (2015)

interfaces da camada superior, conseguindo assim restringir o acesso de uma camada somente com as camadas diretamente interligadas (TOBALDINI, 2007).

• Cache: Segundo Lima (2012), a arquitetura cache evita desperd´ıcio de banda, pois armazena os dados que n˜ao sofrem constante alterac¸˜oes na m´aquina do cliente, e quando estes dados s˜ao solicitados, comparam-se os dados presentes na m´aquina do cliente com o servidor (este procedimento pode ser feito por meio de comparac¸˜ao de hash). Caso estes sejam idˆenticos pode-se determinar que n˜ao houve alterac¸˜ao e assim utilizar os dados presentes na m´aquina do cliente, caso contr´ario deve-se baixar os dados atualizados do servidor. Esta arquitetura provem diversas vantagens, como diminuic¸˜ao de transferˆencias de arquivos, e maior performance, j´a que o servidor fica menos carregado (FIELDING, 2000).

• Sem Estado: Na arquitetura sem estado, o servidor n˜ao possui nenhuma informac¸˜ao de contexto, toda requisic¸˜ao ao servidor deve conter as informac¸˜oes necess´arias para aquela requisic¸˜ao. Dessa forma o servidor n˜ao precisa lidar com diversos contextos (estados), levando em conta o contexto atual para tomar suas decis˜oes, isso o torna mais simples (FIELDING, 2000).

(25)

2.4.2.3 Comparac¸˜ao entre SOAP e REST

Segundo Lima (2012), as principais vantagens e desvantagens do REST sobre o SOAP s˜ao:

• Vantagens

– Utiliza todos os m´etodos do HTTP, como por exemplo, GET, POST, PUT, DELETE, dentre outros. J´a o SOAP utiliza somente o POST;

– ´E muito trabalhoso criar uma interface WSDL e UDDI que o SOAP necessita; – N˜ao ´e necess´ario utilizar mensagens formatadas em XML, trazendo melhor

performance em redes mais lentas; – Curva de aprendizado menor. • Desvantagens

– Ocupa somente o protocolo HTTP ao contr´ario do SOAP que pode ser transportado em qualquer protocolo, como por exemplo: HTTP, SMTP, TCP, etc;

– Os conceitos sobre transac¸˜ao s˜ao melhores especificados para o protocolo SOAP.

2.5 DESENVOLVIMENTO PARA DISPOSITIVOS M ´OVEIS

Conforme Oliveira (2011), com a necessidade de agilizar a comunicac¸˜ao, foram desenvolvidos v´arios equipamentos, como por exemplo, o telefone, que ao longo dos anos foi aprimorado. No ano de 1947 as companhias Bell e AT&T criaram o primeiro sistema telefˆonico de alta capacidade, interligado por diversas antenas, que al´em de proporcionar agilidade na comunicac¸˜ao, tamb´em fornecia mobilidade ao usu´ario.

O computador surgiu e evoluiu seguindo a mesma ideologia dos telefones, e em 1980 o primeiro computador port´atil (notebook) foi apresentado, pesando aproximadamente doze quilogramas, j´a nos dias atuais estes dispositivos podem chegar a pesar menos de dois quilogramas.

A evoluc¸˜ao dos telefones e computadores acarretou nos smartphones, os quais possuem diversas funcionalidades e aplicac¸˜oes (OLIVEIRA, 2011).

Para ter essas funcionalidades ´e primordial um sistema que gerencie os recursos de hardware, para tanto foram desenvolvido diversos sistemas operacionais, tais como, Android,

(26)

Windows Phone, iOS, dentre outros. Segundo Kantar Worldpanel (2016), o SO Android det´em 92,4% do marcado Brasileiro e ´e o mais utilizado mundialmente, tendo isso em vista, ele ser´a melhor explanado.

2.5.1 Sistema Operacional Android

Conforme Bordin (2012), Android ´e um sistema operacional baseado em Linux, otimizado para dispositivos m´oveis, desenvolvido pelo Open Handset Alliance, liderada pela Google. A linguagem de programac¸˜ao padr˜ao de aplicativos para Android ´e Java, utilizando o Android Software Development Kit(SDK), por´em o mesmo possui suporte para as linguagens C e C++, por meio do Android Native Development Kit (NDK).

Para um melhor entendimento de como o sistema operacional Android ´e estruturado, na Figura 4 ´e mostrada sua arquitetura. Para um desenvolvimento de aplicac¸˜oes mais robustas e de alto n´ıvel ´e necess´ario conhecer todas as camadas do sistema, podendo assim tirar maior proveito das vantagens que elas oferecem (PASSOS, 2009).

As camadas da arquitetura do sistema operacional Android s˜ao kernel linux, bibliotecas, runtime Android, framework nativo e aplicativos:

• Kernel Linux: O Kernel Linux ´e utilizado para abstrair toda parte de hardware, realizando todos os servic¸os que o n´ucleo de um sistema operacional deve realizar como seguranc¸a, gerenciamento de mem´oria, gerenciamento de processos, rede, drivers, entre outros. Vale ressaltar que foram feitas melhorias no kernel visando um melhor desempenho em dispositivos m´oveis (PASSOS, 2009);

• Bibliotecas: A camada das bibliotecas foi totalmente escrita em C e C++, as principais bibliotecas do Android s˜ao o Bionic Libc o qual foi desenvolvido pensando na otimizac¸˜ao para sistemas embarcados e possui uma implementac¸˜ao um pouco diferente do Libc encontrado em sistemas Linux, como o Fedora, o WebKit que ´e um engine de browser o qual faz o processo de renderizac¸˜ao das p´aginas web para apresentar no navegador, o Media Framework baseado no pacote de v´ıdeos OpenCore respons´avel por oferecer o suporte a diversos tipos de arquivos de m´ıdia e o SQLite, um banco de dados otimizado para dispositivos m´oveis (PASSOS, 2009);

• Runtime Android: Componente que permite executar programas complexos com mem´oria, bateria e processamento limitado. O ambiente de execuc¸˜ao ´e composto

(27)

Figura 4 – Arquitetura do Sistema Android Fonte: Adaptado de Bordin (2012)

pela m´aquina virtual Dalvik a qual oferece a portabilidade dos aplicativos para diversos aparelhos distintos. Por´em estas aplicac¸˜oes devem estar no formato DEX (Dalvik Executable), ou seja, caso seja necess´ario executar alguma aplicac¸˜ao Java, esta primeiramente ser´a convertida em DEX. Al´em da m´aquina virtual existem as core librariesas quais oferecem para DEX as mesmas funcionalidades b´asicas dispon´ıveis em Java. (PASSOS, 2009);

• Framework Nativo: Totalmente escrito em Java, um framework visa facilitar e aumentar a produtividade no desenvolvimento por meio de re-utilizac¸˜ao de c´odigo. No Android existem implementac¸˜oes para localizac¸˜ao e telefonia dentre v´arias outras que podem ser visualizadas na Figura 4, estas funcionam como uma API (Application Programming Interface) a qual pode ser utilizada nas aplicac¸˜oes (PASSOS, 2009);

• Aplicativos: O Android funciona com diversas aplicac¸˜oes em seu core (n´ucleo), incluindo calend´ario, mapas, navegador, contatos, entre outros. Al´em destas aplicac¸˜oes nativas nesta camada tamb´em executam as aplicac¸˜oes de terceiros, vale ressaltar que todas estas aplicac¸˜oes s˜ao escritas em Java (PASSOS, 2009).

(28)

2.6 TECNOLOGIAS E FERRAMENTAS

Diversas tecnologias e ferramentas podem ser utilizadas em projetos de software, visando tornar-los mais robustos e confi´aveis, pois pode-se utilizar tecnologias e ferramentas amplamente difundidas e testadas diminuindo assim a probabilidade de bugs. Al´em disso, facilitam o desenvolvimento em alguns aspectos os quais ser˜ao citados em cada item desta sec¸˜ao.

2.6.1 Java

Java ´e uma linguagem de programac¸˜ao orientada a objetos, projetada para ter diversas dependˆencias, n˜ao sendo necess´ario re-implementar um m´odulo que j´a foi implementado uma vez, tendo em vista que este possui interfaces oferecidas e requeridas gen´ericas. Al´em disso, ´e poss´ıvel executar a aplicac¸˜ao em qualquer m´aquina, independente de seu hardware e sistema operacional, desde que a mesma possua o JRE (Java Runtime Enviroment), que funciona praticamente como uma m´aquina virtual para rodar aplicac¸˜oes desenvolvidas em linguagem Java (GOSLING et al., 2000). ´E importante ressaltar que existem diferentes plataformas nesta linguagem, as quais s˜ao JSE (Java Standard Edition), JEE (Java Enterprise Edition) e JME (Java Micro Edition):

• JSE: ´E a base das outras plataformas e tamb´em a mais utilizada, pois seu uso ´e voltado para computadores pessoais e servidores. Esta plataforma cont´em todos os requisitos necess´arios para desenvolver em linguagem Java (GOSLING et al., 2000).

• JEE: Foi desenvolvida pensando em comunicac¸˜ao, voltada para internet, intranet, conex˜ao com banco de dados, dentre outros. Al´em de possuir todas as funcionalidades da JSE, a JEE detˆem bibliotecas para acesso a banco de dados, servidores web e diversas outras aplicac¸˜oes baseadas em rede (GOSLING et al., 2000).

• JME: Uma vers˜ao mais compacta e utilizada em desenvolvimento de aplicac¸˜oes para dispositivos m´oveis, anteriores aos smartphones, tendo em vista que a capacidade de processamento e armazenamento destes dispositivos era bem reduzida, quando comparados com um computador (GOSLING et al., 2000).

(29)

Al´em das diversas plataformas, a linguagem Java utiliza diversos frameworks, visando facilitar o desenvolvimento, pois eles podem ser entendidos como m´odulos desenvolvidos de forma gen´erica possibilitando adapta-los para o fim desejado. Dentre os diversos frameworks pode-se citar o VRaptor.

2.6.2 VRaptor

Segundo Freire e Silveira (2004), o VRaptor ´e um framework MVC (Model, View, Controller) para web, que oferece uma biblioteca com um conjunto de classes para auxiliar o desenvolvimento, r´apido e simples, de aplicac¸˜oes baseadas em MVC, al´em de facilitar a manutenc¸˜ao do c´odigo. Para que isso ocorra algumas boas pr´aticas s˜ao aplicadas, como injec¸˜ao de dependˆencias e REST (Transferˆencia de Estado Representacional), VRaptor ´e um framework de iniciativa brasileira com c´odigo aberto e documentac¸˜ao em portuguˆes, atualmente mantido pela Caelum4, por´em pelo fato de ser um projeto de c´odigo aberto, o mesmo conta com o apoio de uma extensa comunidade em seu desenvolvimento. ´E poss´ıvel visualizar v´arios tutoriais e exemplos no site5do VRaptor na aba “Documentac¸˜ao”.

“O framework VRaptor ´e um controlador MVC desenvolvido por alunos da Universidade de S˜ao Paulo (USP) para web focado no desenvolvimento ´agil. Atrav´es da invers˜ao de controle e injec¸˜ao de dependˆencias, ele elimina o tempo de trabalho que seria perdido com o c´odigo repetitivo: validac¸˜oes, convers˜oes, direcionamentos e lookups (ANTONIO; FERRO, 2009).”

Ainda segundo Antonio e Ferro (2009), “Ele se adapta perfeitamente para trabalhar com o JSP (JavaServer Pages) na camada de apresentac¸˜ao e com o Hibernate na persistˆencia. Totalmente baseado em anotac¸˜oes do Java 5.0. As anotac¸˜oes garantem uma maneira simples de trabalhar com programac¸˜ao para a web.”

4Caelum ´e uma instituic¸˜ao que oferece diversos cursos em ´areas relacionadas a desenvolvimento de sistemas 5Dispon´ıvel em http://www.vraptor.org/pt/docs/guia-de-1-minuto/

(30)

2.6.3 Maven

Para Dias e Junior (2013), o Maven ´e uma ferramenta que visa automatizar a compilac¸˜ao em projetos da linguagem Java. Maven ´e constru´ıdo utilizando uma arquitetura baseada em plug-ins, isso permite o uso de qualquer aplicac¸˜ao control´avel por meio da entrada padr˜ao. Algumas das principais vantagens de se usar o Maven, s˜ao estruturas padronizadas de diret´orio, arquitetura de plug-ins, gerenciamento de dependˆencias e gerenciamento de escopo (MARTINS, 2009).

• Estrutura Padronizada de Diret´orio: Todos projetos que fazem uso do Maven possuem a mesma estrutura de projeto.

• Arquitetura Plug-in: As func¸˜oes do Maven s˜ao efetuadas por plug-ins, assim quando o projeto ´e testado ou utilizado pela primeira vez, o Maven faz o download dos plug-ins necess´arios automaticamente e os armazena em um reposit´orio comum.

• Gerenciamento de Dependˆencias: Quando alguma dependˆencia for descrita no arquivo de configurac¸˜ao XML (pom.xml) do Maven, ela ser´a acessada de um reposit´orio local caso j´a tenha sido feito o download da mesma, caso contr´ario, ser´a feito o download e armazenado no reposit´orio local.

• Gerenciamento de Escopo: O pacote final de distribuic¸˜ao cont´em somente os arquivos necess´arios, deixando de fora os arquivos referente aos c´odigos de teste, e dependˆencias n˜ao utilizadas ou desnecess´arias para o pacote final.

2.6.4 Raspbian Wheezy

Raspbian Wheezy ´e um SO otimizado para o hardware do Raspberry Pi, Raspbian Wheezy foi baseado em Debian e conta com mais de 35 mil pacotes. A construc¸˜ao inicial destes pacotes foi terminado em junho de 2012, por´em continua em atualizac¸˜ao constante, visando disponibilizar a maior quantidade poss´ıvel de pacotes para o sistema operacional Raspbian Wheezy. Este SO ´e recomendado para a maioria dos usu´arios de Raspberry Pi, a ´unica excec¸˜ao ´e para os usu´arios dependentes de software ainda n˜ao presente ou funcional do Raspbian Wheezy (BARROS, 2013).

(31)

2.6.5 Ambiente de Desenvolvimento Integrado

O ambiente de desenvolvimento integrado, conhecido pelo acrˆonimo do inglˆes IDE ´e um ambiente utilizado para aumentar a produtividade dos desenvolvedores de software, por´em segundo Boudreau et al. (2002), o intuito do IDE n˜ao ´e tornar a programac¸˜ao f´acil, pois isso depende da habilidade do programador. No desenvolvimento deste projeto foram utilizados trˆes IDEs, o NetBeans, o Android Studio e o Arduino Software.

• NetBeans: Para Boudreau et al. (2002), NetBeans ´e um projeto open source criado pela Sun Microsystem, que pode ser utilizado para aumentar o desempenho no momento de programar em linguagens como Java, C, C++, PHP, dentre outras. Este IDE foi utilizado no desenvolvimento de todo sistema embarcado, desde a parte de sensores e atuadores at´e o web service;

• Android Studio: Segundo Barros (2013), Android Studio ´e um ambiente de desenvolvimento para Android, baseado no IntelliJ IDEA. O IDE foi anunciada em 16 de maio de 2013 na conferˆencia Google I/O e disponibilizado a vers˜ao beta em julho de 2013. O Android Studio foi utilizado para desenvolver a aplicac¸˜ao mobile que realiza o gerenciamento e controle do sistema embarcado;

• Arduino Software: utilizado para desenvolvimento de sketch’s Arduino os quais s˜ao baseados em linguagem Wiring. Estes sketch’s s˜ao posteriormente compilados em c´odigo de m´aquina para o Arduino.

2.6.6 JSON

De acordo com ECMA International (2013), JSON (JavaScript Object Notation) foi derivado da linguagem ECMAScript e consiste em uma estrutura de dados, est´a estrutura ´e composta por pares (chave-valor), separados um do outro por virgula, todos estes dados ficam dentro de chaves. JSON tem grande semelhanc¸a com XML, por´em, ´e mais leve por ter uma estrutura mais simples, tendo isso em vista, ele ´e utilizado em v´arias aplicac¸˜oes nas quais ´e necess´ario transmitir dados pelo protocolo HTTP, por´em n˜ao se restringindo somente a essa func¸˜ao. A Figura 5 mostra uma mensagem no formato JSON, na qual "usuario" ´e uma chave e "reichert" ´e o valor associado a esta chave, logo ap´os, tˆem-se uma virgula separando o

(32)

pr´oximo par chave("senha")-valor(123456).

Figura 5 – Mensagem no Formato JSON Fonte: Autoria Pr´opria

(33)

3 MATERIAL E M ´ETODOS

Com o intuito de desenvolver um sistema de automac¸˜ao residencial, proporcionando comodidade e seguranc¸a, foi implementado um sistema de automac¸˜ao residencial embarcado no Raspberry Pi, respons´avel pelo controle do Arduino. E neste, est˜ao ligados os sensores para coleta de informac¸˜oes (tais como temperatura, umidade e poss´ıveis intrus˜oes) e atuadores os quais realizam alguma tarefa espec´ıfica (tais como acionar uma lˆampada, ligar a irrigac¸˜ao ou ligar uma televis˜ao).

Esse sistema foi desenvolvido em linguagem Java, utilizando o IDE (Ambiente de Desenvolvimento Integrado) Netbeans. O sistema comporta tamb´em um web service REST o qual foi utilizado o framework VRaptor para construc¸˜ao. Este web service possibilita a comunicac¸˜ao com qualquer cliente, por´em para demonstrac¸˜ao foi desenvolvido um aplicativo Android com a IDE Android Studio, espec´ıfico para consumir os dados deste servic¸o na web.

As pr´oximas sec¸˜oes detalham melhor cada uma das tecnologias e seus procedimentos de aplicac¸˜ao.

3.1 ARQUITETURA DO SISTEMA

A arquitetura do sistema ´e composta pelo Raspberry Pi, Arduino, sensores, atuadores e usu´arios (smartphone, desktop e website), uma listagem completa dos perif´ericos utilizados no sistema de automac¸˜ao pode ser visualizada no Apˆendice A. O sistema de automac¸˜ao residencial foi embarcado no Raspberry Pi o qual ´e respons´avel por monitorar as requisic¸˜oes dos usu´arios e controlar os pinos GPIO do Arduino, onde est˜ao ligados os sensores e atuadores. Mant´em ainda as credenciais dos usu´arios, poss´ıveis agendamentos e disponibiliza uma interface de comunicac¸˜ao baseada em web service REST para troca de informac¸˜oes por meio do protocolo HTTP entre o Raspberry Pi e os usu´arios.

(34)

3.1.1 Diagrama de Implantac¸˜ao

O diagrama de implantac¸˜ao representado na Figura 6 demonstra a arquitetura b´asica do sistema, a qual foi sub-dividida em 3 categorias, visando melhor entendimento do sistema como um todo.

Figura 6 – Diagrama de Implantac¸˜ao Fonte: Autoria Pr´opria

3.1.2 Requisitos do Sistema

O sistema atende os seguintes RF (Requisitos Funcionais): • RF1 - Controlar Iluminac¸˜ao (Interna e Externa);

• RF2 - Controlar Irrigac¸˜ao do Jardim;

• RF3 - Gerenciar Agendamentos (Iluminac¸˜ao e Irrigac¸˜ao); • RF4 - Monitorar Temperatura e Umidade do Ambiente; • RF5 - Controlar Sensores de Intrus˜ao;

• RF6 - Controlar Equipamentos por meio de Infra-Vermelho (ar condicionado, televis˜ao, etc.);

(35)

• RF7 - Disponibilizar Sistema de Alarme (sirene, notificac¸˜ao no smartphone, etc.).

3.2 EQUIPAMENTOS

Em relac¸˜ao ao conjunto de hardware, foram utilizados para desenvolvimento do sistema, um notebook Acer modelo Aspire 4752 com processador Intel i5 e 4GB de mem´oria RAM, para teste em dispositivo m´ovel o smartphone Blue Studio Energy 2 com Android vers˜ao 5.0, Roteador Wireless TP-Link, Raspberry Pi 2 Modelo B, Arduino Mega 2560, fonte de alimentac¸˜ao de 5 volts Micro USB (Universal Serial Bus), sensores e atuadores al´em de fios e dispositivos encontrados em uma residˆencia, como televis˜ao, home theater, lˆampadas, sistema de irrigac¸˜ao e eletrodom´esticos em geral.

3.2.1 Sensores

Sensores s˜ao dispositivos utilizados para coletar dados, como por exemplo, temperatura, umidade, identificar movimentos, imagens dentre outros.

• Sensor de Umidade e Temperatura DHT11: Conforme (D-Robotics UK, 2015), o sensor DHT11 que pode ser visualizado na Figura 7(a), ´e capaz de medir a temperatura e umidade de um ambiente com grande precis˜ao, de forma r´apida e com baixo custo de aquisic¸˜ao. Este sensor consegue medir a umidade dentro de uma variac¸˜ao de 20-90%RH (Umidade Relativa - Relative Humidity) com precis˜ao de ±5% e a temperatura entre 0-50oC com precis˜ao de ±2oC.

(36)

(a) Sensor (b) Aplicac¸˜ao T´ıpica

Figura 7 – Sensor de Umidade e Temperatura DHT11 Fonte: Adaptado de D-Robotics UK (2015)

Conforme pode ser observado na Figura 7(a), o sensor possui 4 pinos. Por´em foi utilizado somente 3 deles, o pino 1 para a alimentac¸˜ao, o pino 2 para coleta de dados por parte do Arduino e o pino 4 para o neutro (GND). Vale ressaltar que o pino 2 deve estar ligado a um resistor de 5K Ohms e na alimentac¸˜ao conforme Figura 7(b);

• Sensor de Movimento/Presenc¸a PIR: O sensor PIR consegue detectar movimentac¸˜ao em um ambiente, ele basicamente ´e composto por um sensor pyroelectric que pode ser visualizado na Figura 8(a), resistores, capacitores, potenciˆometros para ajuste de sensibilidade, um BISS0001 (CI de detecc¸˜ao de movimento PIR de baixa potˆencia) e 3 pinos, dos quais um ´e a alimentac¸˜ao, um o neutro e o outro de dados, estes por sua vez podem ser observados na Figura 8(b) (ADAFRUIT, 2015).

(a) Frente (b) Verso

Figura 8 – Sensor de movimento/presenc¸a PIR Fonte: Adaptado de Adafruit (2015)

(37)

3.2.2 Atuadores

Atuadores s˜ao dispositivos que realizam alguma ac¸˜ao, como por exemplo, sirene, motor, emissor infravermelho, rel´e e outros.

• M´odulo Rel´e: O m´odulo rel´e visto na Figura 9, ´e composto por diversos componentes, como transistores, conectores, LED’s, diodos e rel´es. Cada rel´e possui um LED o qual indica se o mesmo est´a acionado. Quando energizado um pino com 5v o rel´e comuta o seu circuito interno e deixa a energia passar em seu lado oposto, o qual suporta 250/125V AC (Corrente Alternada) ou 30/28V DC (Corrente Cont´ınua) ambos com intensidade de corrente m´axima de 10A (FILIPEFLOP, 2015).

Figura 9 – M´odulo rel´e com 2 canais Fonte: Filipeflop (2015)

Este m´odulo foi utilizado para possibilitar o acionamento de dispositivos que necessitam corrente e/ou tens˜ao maior que o suportado pelos pinos GPIO do Arduino;

• LED Emissor Infravermelho: O LED emissor infravermelho ´e necess´ario para simular o controle remoto de dispositivos que possuem um receptor infravermelho, este LED emite sinais de luz da mesma forma que o controle original do dispositivo. Dessa forma ´e poss´ıvel controlar estes dispositivos sem qualquer tipo de modificac¸˜ao f´ısica. Para realizar tal procedimento primeiramente deve-se ler as func¸˜oes do controle remoto original, que basicamente ´e composto por diversos pulsos de luz infravermelho, depois de ter lido a sequˆencia emitida pelo controle original, basta emitir esta mesma sequˆencia com o Arduino;

• Sirene: Sirene ´e um dispositivo que emite uma frequˆencia sonora, tendo isso em vista a sirene foi utilizada em conjunto com o sistema de seguranc¸a visando alertar quando houver algum incidente;

(38)

enrolado em um cilindro. Ao aplicar uma certa corrente el´etrica que varia em diversos modelos, ´e gerado uma forc¸a na bobina solenoide e consequentemente o pino que est´a trancando a passagem da ´agua ´e puxado para o centro da bobina permitindo a passagem da ´agua, como pode ser visto na Figura 10(a).

Quando a bobina solenoide estiver sem energia o pino n˜ao permite que a ´agua passe, conforme Figura 10(b).

(a) Aberta (b) Verso

Figura 10 – Solenoide

Fonte: Adaptado de Manutenc¸˜ao & Suprimentos (2015)

Est´a v´alvula foi utilizada para controlar a irrigac¸˜ao, possibilitando liberar e cessar a passagem da ´agua de forma autom´atica.

3.3 SISTEMA EMBARCADO

O sistema embarcado foi implantado no Raspberry Pi 2 Modelo B, que pode ser visto na Figura 11, e realiza o controle do Arduino o qual aciona e monitora os sensores (DHT11 e PIR) e os atuadores (m´odulo rel´e, emissor infravermelho e sirene) por meio da linguagem Java, atendendo todos os requisitos do sistema. Al´em deste controle o sistema embarcado disponibiliza uma interface de comunicac¸˜ao gen´erica baseada em web service REST, com o framework VRaptor oferecendo simplicidade e praticidade caso haja necessidade futura de outras plataformas para o controle por parte do usu´ario.

(39)

Figura 11 – Raspberry Pi 2 - Modelo B Fonte: Raspberry Pi Foundation (2015)

3.4 SISTEMA CONTROLADOR

O sistema controlador consiste no acionamento e leitura de sensores efetuados pelo Arduino. Ele simplesmente cumpre ordens do sistema embarcado (Raspberry Pi), por exemplo, o sistema embarcado ordena ao sistema controlador para mudar o status do pino 10 para HIGH (ligado) e o controlador mesmo sem saber o que ele est´a acionando, executa o comando solicitado. Esta comunicac¸˜ao com o sistema embarcado ´e feita via serial, para o qual foi concebido um protocolo de comunicac¸˜ao possibilitando que ambos possam se comunicar sem confus˜ao na identificac¸˜ao das mensagens enviadas/recebidas.

Este protocolo de comunicac¸˜ao consiste em informac¸˜oes separados pelo caractere -, na Figura 12, ´e poss´ıvel observar uma mensagem enviada do sistema embarcado ao sistema controlador, pode-se identificar qual a ordem em que os dados est˜ao dispostos na mensagem.

Figura 12 – Protocolo de Comunicac¸˜ao Serial Fonte: Autoria Pr´opria

Sendo que na primeira posic¸˜ao ´e informado o tipo de pino, que pode ser digital (1), emissor infravermelho (2), sensor (3) ou receptor infravermelho (4), j´a a segunda posic¸˜ao do protocolo representa a localizac¸˜ao f´ısica do pino no sistema controlador, a ac¸˜ao informa se ser´a

(40)

ligado (1) ou desligado (0), ou seja, se o pino ser´a configurado em HIGH ou LOW caso ele seja digital. Por fim, a quarta e ´ultima posic¸˜ao cont´em os dados necess´arios em um acionamento por infravermelho, estes dados tamb´em possuem um separador.

Na Figura 13, ´e poss´ıvel observar os dados de uma solicitac¸˜ao de acionamento por infra-vermelho, o primeiro campo representa a codificac¸˜ao que ser´a utilizada para emitir os pulsos, o segundo campo cont´em o c´odigo em hexadecimal dos pulsos, j´a a terceira posic¸˜ao informa a taxa de bits a ser utilizada e a quarta posic¸˜ao traz os pulsos em si, este ´ultimo campo n˜ao foi mostrado por completo pois o mesmo cont´em em torno de 243 n´umeros para uma requisic¸˜ao de acionamento infra-vermelho de um ar condicionado.

Figura 13 – Dados do Protocolo de Comunicac¸˜ao Serial Fonte: Autoria Pr´opria

3.5 APLICAC¸ ˜AO ANDROID

A aplicac¸˜ao Android disponibiliza ao usu´ario a interface gr´afica, para gerenciamento e controle do sistema embarcado. Esta aplicac¸˜ao funciona como um controle remoto universal ao qual o usu´ario ter´a acesso a todos os dispositivos ligados ao sistema de automac¸˜ao residencial, tudo isso pode ser feito estando na residˆencia ou em qualquer lugar do planeta, desde que haja conex˜ao com a internet e IP (Internet Protocol) p´ublico na residˆencia. J´a no dispositivo que est´a executando a aplicac¸˜ao do usu´ario, basta ter acesso a internet. As telas do sistemas assim como sua respectiva funcionalidade s˜ao apresentados no Cap´ıtulo 4.

(41)

3.6 SISTEMA DE AUTOMAC¸ ˜AO RESIDENCIAL

Para melhor visualizac¸˜ao de como o sistema de automac¸˜ao residencial completo funciona, nesta sec¸˜ao ´e demonstrado um exemplo de acionamentos e o que acontece no sistema ap´os o usu´ario fazer uma requisic¸˜ao. A Figura 14, mostra o diagrama de sequˆencia que representa a comunicac¸˜ao dentre as diversas partes do sistema quando o usu´ario solicita que uma lˆampada X seja ligada.

Figura 14 – Diagrama de Sequencia - Ligando uma Lˆampada X Fonte: Autoria Pr´opria

J´a a Figura 15, representa a instalac¸˜ao f´ısica dos componentes para que este exemplo possa ser executado.

Figura 15 – Instalac¸˜ao F´ısica - Acionamento de uma Lˆampada Fonte: Autoria Pr´opria

(42)

Quando o usu´ario abre a listagem de dispositivos, ´e realizado uma requisic¸˜ao para o sistema embarcado, conforme C´odigo 1, com o comando descrito na linha 1, e o retorno desta requisic¸˜ao ´e convertido para um ArrayList<Pino> na linha 3.

1 S t r i n g r e t o r n o = new H t t p C o n n e c t i o n () . e x e c u t e (" h t t p :// " + s e r v i d o r + " / tcc / p i n o s ", H t t p C o n n e c t i o n . GET ) . get () ; 2

3 List < Pino > p i n o s = H t t p C o n n e c t i o n . g s o n . f r o m J s o n ( retorno , new T y p e T o k e n < A r r a y L i s t < Pino > >() {}. g e t T y p e () ) ;

C´odigo 1 – Requisic¸˜ao de pinos para o sistema embarcado Fonte: Autoria Pr´opria

J´a no sistema embarcado est´a solicitac¸˜ao ´e recebida no m´etodo do C´odigo 2.

1 @ G e t (" / p i n o s ") 2 p u b l i c v o i d g e t A l l P i n s () { 3 try { 4 r e s u l t . use ( R e s u l t s . j s o n () ) . w i t h o u t R o o t () . f r o m ( p i n o D B . g e t A l l () ) . s e r i a l i z e () ; 5 r e s u l t . use ( R e s u l t s . h t t p () ) . s e t S t a t u s C o d e ( 2 0 0 ) ; 6 } c a t c h ( E x c e p t i o n ex ) { 7 ... 8 } 9 }

C´odigo 2 – M´etodo do sistema embarcado para retornar todos os pinos Fonte: Autoria Pr´opria

Os dados s˜ao recuperados de um arquivo de texto no formato JSON e transformados em um ArrayList<Pino> (C´odigo 3): 1 p u b l i c A r r a y L i s t < Pino > g e t A l l () t h r o w s F i l e N o t F o u n d E x c e p t i o n { 2 A r r a y L i s t < Pino > l i s t P i n o s ; 3 F i l e R e a d e r r e a d F i l e = new F i l e R e a d e r ( p a t h + " p i n o s . j s o n ") ; 4 l i s t P i n o s = g s o n . f r o m J s o n ( r e a d F i l e , new T y p e T o k e n < A r r a y L i s t < Pino > >() {}. g e t T y p e () ) ; 5 r e t u r n l i s t P i n o s ; 6 }

C´odigo 3 – Recuperando todos os dispositivos cadastrados e persistidos no arquivo de texto Fonte: Autoria Pr´opria

(43)

Ap´os estes dados terem sidos retornados para a aplicac¸˜ao mobile, eles ser˜ao filtrados de acordo com a categoria que o usu´ario selecionar. Seguindo o exemplo citado anteriormente ser´a mostrado somente os dispositivos da categoria Ilumina¸c~ao, o C ´odigo 4 mostra como isso ´e realizado.

1 Map < Integer , A r r a y L i s t < Pino > > d a d o s = new HashMap < >() ; 2 d a d o s . put ( C a t e g o r i a . I L U M I N A C A O , new A r r a y L i s t < Pino >() ) ; 3 4 for ( P i n o p : p i n o s ) { 5 s w i t c h( p . g e t C a t e g o r i a () ) { 6 c a s e C a t e g o r i a . I L U M I N A C A O : 7 d a d o s . put ( C a t e g o r i a . I L U M I N A C A O , d a d o s . get ( C a t e g o r i a . I L U M I N A C A O ) ) . add ( p ) ; 8 b r e a k; 9 } 10 } 11 12 s w i t c h ( t e l a ) { 13 c a s e C a t e g o r i a . I L U M I N A C A O : 14 t e x t o . s e t T e x t (" I l u m i n a ¸c ~a o ") ; 15 l i s t v i e w . s e t A d a p t e r (new P i n o V i e w A d a p t e r ( M a i n A c t i v i t y . g e t A p p C o n t e x t () , d a d o s . get ( C a t e g o r i a . I L U M I N A C A O ) ) ) ; 16 b r e a k; 17 }

C´odigo 4 – Filtrando os dispositivos retornados conforme solicitado pelo usu´ario Fonte: Autoria Pr´opria

Ap´os executar o m´etodo setAdapter do listview passando por parˆametro um novo PinoViewAdapter, o listview ser´a populado com os dispositivos, seguindo o modelo definido no m´etodo getView da classe PinoViewAdapter que pode ser visualizado no C´odigo 5, mostrando um ´ıcone referente ao status do dispositivo, o qual possui a cor verde caso o dispositivo esteja ligado e vermelho caso esteja desligado. Al´em do ´ıcone, ´e mostrado a descric¸˜ao do dispositivo. 1 @ O v e r r i d e 2 p u b l i c V i e w g e t V i e w (int p o s i t i o n , V i e w c o n v e r t V i e w , V i e w G r o u p p a r e n t ) { 3 ... 4 I m a g e V i e w img = ( I m a g e V i e w ) vi . f i n d V i e w B y I d ( R . id . i m g L i s t V i e w P i n o ) ;

(44)

5 if( d a t a . get ( p o s i t i o n ) . i s L i g a d o () ) { 6 img . s e t I m a g e R e s o u r c e ( R . m i p m a p . on ) ; 7 } e l s e { 8 img . s e t I m a g e R e s o u r c e ( R . m i p m a p . off ) ; 9 } 10 T e x t V i e w t e x t = ( T e x t V i e w ) vi . f i n d V i e w B y I d ( R . id . t x t L i s t V i e w P i n o ) ; 11 t e x t . s e t T e x t ( d a t a . get ( p o s i t i o n ) . g e t D e s c r i c a o () ) ; 12 13 r e t u r n vi ; 14 }

C´odigo 5 – Listando os dispositivos da categoria ilmunic¸˜ao com seus respectivos status Fonte: Autoria Pr´opria

Por fim o usu´ario ver´a no aplicativo uma tela parecida com a Figura 20(a), onde ´e poss´ıvel ver todos os dispositivos da categoria Ilumina¸c~ao cadastrados no sistema embarcado. Ao clicar sobre um dispositivo ser´a realizada a requisic¸˜ao do C´odigo 6 na aplicac¸˜ao Android.

1 new H t t p C o n n e c t i o n () . e x e c u t e (" h t t p :// "+ s e r v i d o r +" / tcc / p i n o /

u p d a t e ", H t t p C o n n e c t i o n . POST , H t t p C o n n e c t i o n . g s o n . t o J s o n ( p i n o ) ) ;

C´odigo 6 – Requisic¸˜ao para alterar o status do dispositivo selecionado Fonte: Autoria Pr´opria

O sistema embarcado recebe a solicitac¸˜ao no m´etodo do C´odigo 7.

1 @ P o s t (" / p i n o / u p d a t e ") 2 @ C o n s u m e s ( v a l u e = M e d i a T y p e . A P P L I C A T I O N _ J S O N , o p t i o n s = W i t h o u t R o o t .c l a s s) 3 p u b l i c v o i d u p d a t e ( P i n o p i n o ) { 4 try { 5 p i n o D B . u p d a t e ( p i n o ) ; 6 s w i t c h ( p i n o . g e t C a t e g o r i a () ) { 7 ... 8 c a s e C a t e g o r i a . D I G I T A L : 9 S e r i a l P o r t F a c t o r y . g e t I n s t a n c e () . g e t S e r i a l P o r t () . w r i t e S t r i n g ( p i n o . g e t T i p o () + " - " + p i n o . g e t P o s i c a o () + " - " + p i n o . i s L i g a d o () + " - " + p i n o . g e t D a d o s () ) ;

(45)

10 b r e a k;

11 }

12 }

13 ...

14 }

C´odigo 7 – M´etodo no sistema embarcado que recebe a solicitac¸˜ao de atualizac¸˜ao Fonte: Autoria Pr´opria

O m´etodo update da classe PinoDAO pode ser visualizado no C´odigo 8.

1 p u b l i c v o i d u p d a t e ( P i n o p ) t h r o w s F i l e N o t F o u n d E x c e p t i o n { 2 List < Pino > l i s t P i n o s = g e t A l l () ; 3 l i s t P i n o s . set ( l i s t P i n o s . i n d e x O f ( p ) , p ) ; 4 5 S t r i n g j s o n = g s o n . t o J s o n ( l i s t P i n o s ) ; 6 try { 7 F i l e W r i t e r w r i t e F i l e = new F i l e W r i t e r ( p a t h + " p i n o s . j s o n ") ; 8 w r i t e F i l e . w r i t e ( j s o n ) ; 9 w r i t e F i l e . c l o s e () ; 10 } c a t c h ( I O E x c e p t i o n e ) { 11 ... 12 } 13 }

C´odigo 8 – Atualizar o status do dispositivo no arquivo de texto Fonte: Autoria Pr´opria

Ap´os atualizar o dispositivo no arquivo de texto localizado no sistema embarcado, e solicitar ao sistema controlador para que seja alterado o status do pino, ligando a lˆampada, ´e retornado para aplicac¸˜ao Android que ocorreu tudo bem e o usu´ario recebe uma notificac¸˜ao que a lˆampada foi ligada.

(46)

4 RESULTADOS EXPERIMENTAIS

Tendo em vista que todos os requisitos do sistema foram atendidos com ˆexito. Optou-se por montar uma maquete (Figura 16), e realizar testes de deOptou-sempenho e usabilidade visando ter resultados mais palp´aveis quanto ao funcionamento do sistema.

Figura 16 – Maquete Utilizada para Experimentos Fonte: Autoria Pr´opria

A aplicac¸˜ao desenvolvida para plataforma Android tem um visual a contento e funcional, a seguir ser˜ao demonstradas as principais telas e suas funcionalidades.

No menu de configurac¸˜ao do sistema que pode ser acessado no bot˜ao destacado na Figura 17(a), tˆem-se dois itens: adicionar dispositivo e alterar senha, que podem ser vistos na Figura 17(b).

Ao clicar na opc¸˜ao adicionar dispositivo, ´e aberto uma nova tela para cadastr´a-los (18), nesta tela s˜ao solicitadas informac¸˜oes das quais algumas s˜ao utilizadas somente em casos espec´ıficos. O item A ´e a descric¸˜ao do dispositivo, esta ser´a utilizada para posterior identificac¸˜ao do mesmo, o item B ´e referente ao pino que este dispositivo est´a ligado fisicamente no sistema controlador, o item C traz algumas opc¸˜oes de tipos de dispositivos, os quais s˜ao: Sensor, Infra-vermelho e Digital, deve-se selecionar a opc¸˜ao correspondente ao dispositivo que est´a sendo

(47)

(a) Acessando as Configurac¸˜oes

(b) Opc¸˜oes de Configurac¸˜ao

Figura 17 – Configurac¸˜oes da Aplicac¸˜ao Android Fonte: Autoria Pr´opria

cadastrado. O item D ´e ativado somente caso no item C for selecionado a opc¸˜ao Infra-vermelho, pois ´e necess´ario informar o padr˜ao de pulsos do equipamento que est´a sendo cadastrado, j´a o item E ´e acionado caso no item C for escolhido a opc¸˜ao Digital, neste caso ´e facultativo informar em qual pino do sistema controlador est´a ligado o interruptor f´ısico para o dispositivo. Por fim, o item F representa a categoria do dispositivo, existem cinco categorias, as quais s˜ao: Ar Condicionado, Iluminac¸˜ao, Irrigac¸˜ao, Multim´ıdia e Outros, est´a categoria ser´a utilizada para organizar os dispositivos na aplicac¸˜ao do usu´ario.

J´a ao clicar em alterar senha ´e aberto a tela (Figura 19(a)), na qual ´e poss´ıvel alterar a senha de acesso ao sistema, ´e necess´ario digitar a senha antiga, uma nova senha e a confirmac¸˜ao desta nova senha. A senha ser´a alterada somente caso a senha antiga esteja correta e a senha nova e confirmac¸˜ao estejam iguais.

Na Figura 19(b), ´e mostrado a aba principal da aplicac¸˜ao. Na marcac¸˜ao A, pode-se ativar/desativar o pode-sensor de prepode-senc¸a e a sirene do alarme. Na marcac¸˜ao B, ´e poss´ıvel observar o enderec¸o do servidor ao qual est´a conectado atualmente. Al´em disso, na marcac¸˜ao C, tˆem-se acesso aos sub-menus referente ao seguintes m´odulos: Iluminac¸˜ao, Multim´ıdia, Ar Condicionado, Irrigac¸˜ao, Outros e Seguranc¸a. Por fim, a marcac¸˜ao D mostra o bot˜ao para fazer logout.

Para ser mais f´acil entender o funcionamento da aplicac¸˜ao, ´e interessante visualizar o funcionamento de cada um dos sub-menus citados anteriormente. ´E importante ressaltar que

(48)

Figura 18 – Cadastrando Dispositivo pela Aplicac¸˜ao Android Fonte: Autoria Pr´opria

(a) Alterando a Senha (b) Aba com o Menu Principal

Figura 19 – Telas da Aplicac¸˜ao Android Fonte: Autoria Pr´opria

ao adentrar cada um dos sub-menus, `a aplicac¸˜ao solicita os equipamentos daquela categoria ao sistema embarcado, e este por sua vez, retorna os dispositivos.

• Iluminac¸˜ao: ao acessar o sub-menu iluminac¸˜ao, ´e listado todos os equipamentos desta categoria cadastrados no sistema com o seu status atual, conforme pode ser visto na Figura

(49)

20(a), o dispositivo L^ampada do Quarto est´a ligado e o dispositivo L^ampada da Sala est´a desligado. Para alterar o status basta clicar sobre o mesmo, conforme Figura 20(b), que ser´a feito uma requisic¸˜ao ao servidor embarcado, alterando o status do dispositivo fisicamente e no arquivo de configurac¸˜ao;

(a) Um dispositivo ligado e outro desligado

(b) Ligando um dispositivo

Figura 20 – Sub-menu Iluminac¸˜ao Fonte: Autoria Pr´opria

• Multim´ıdia: neste sub-menu est˜ao listados os dispositivos de multim´ıdia com seu respectivo status, do mesmo modo que no sub-menu de iluminac¸˜ao. Por´em, ao clicar sobre um dispositivo deste sub-menu ´e aberto uma tela com um controle, idˆentico a Figura 21(a), pelo qual ´e poss´ıvel ter acesso a algumas func¸˜oes de um controle remoto de um dispositivo de multim´ıdia, tais como volume e canal. Para alterar alguma destas configurac¸˜oes, basta clicar sobre o bot˜ao correspondente;

• Ar Condicionado: o sub-menu ´e bem parecido com o sub-menu multim´ıdia. Por´em, a tela do controle remoto ´e diferente conforme pode ser visto na Figura 21(b), nela fica armazenado todas configurac¸˜oes atuais do dispositivo. Esta diferenc¸a ocorre pois o funcionamento do controle remoto do ar condicionado ´e diferente do controle de algum dispositivo de multim´ıdia. No ar condicionado, toda vez que ´e enviado algum comando pelo controle, s˜ao enviados pulsos para o dispositivo correspondente a todas as configurac¸˜oes vis´ıveis no controle, tais como, modo de funcionamento, temperatura e ligado. J´a em um dispositivo multim´ıdia, ´e enviado somente o comando solicitado, como

Referências

Documentos relacionados

Por último, la Convención Americana sobre Derechos Humanos (en adelante CADH) en el art. Toda persona tiene derecho a la libertad de pensamiento y de expresión. Este

Apesar do Decreto de Lei nº118/2013 ter sido lançado em 2013, fazia falta o lançamento de um despacho que definiria a forma de calculo de Qusable e SPF. Apenas em dezembro de 2015

A presente investigação teve como objetivo geral o estudo dos fatores de risco e de proteção internos e externos utilizados perante a violência social, nomeadamente o bullying

largura do coroamento do quebramar largura da berma do quebramar consumo de betão m3/m2 definida como Hk/Hs = 1.55 para águas profundas quando as alturas de onda são caracterizadas

An optimized set of loading (tension), frequency and number of cycles was obtained. Concerning the method validation, using modified T-test samples in fresh and humidity-aging

Os supercondutores magnéticos, volantes de inércia e os condensadores são apropriados para aplicações que necessitam de grande potência de saída em pouca

A partir da análise das Figuras 5.20, 5.21, 5.22 e 5.23 pode-se afirmar que a variação do início da altura de queda do bloco não alterou os resultados da energia cinética e alturas

Assim, este trabalho apresenta uma abordagem que tem como objetivo principal: (i) analisar a cobertura de código levando em consideração os fluxos de chamadas existentes no sistema