Sunteți pe pagina 1din 71

PONTIFCIA UNIVERSIDADE CATLICA DE MINAS GERAIS Trabalho de diplomao

Leonardo Wagner Ribeiro Leite

Uma Soluo de Domotica Utilizando Sistema Operacional Android e uma Plataforma de Prototipagem Arduino

Belo Horizonte

2012

Leonardo Wagner Ribeiro Leite

Uma soluo de domotica utilizando um sistema Android e uma plataforma de prototipagem Arduino

Trabalho apresentado disciplina de Trabalho de Diplomao II, do curso Cincia da Computao da Pontifcia Universidade Catlica de Minas Gerais, como requisito para a obteno do ttulo de Bacharel. Orientador: Pasteur Junior

Belo Horizonte 2012

Leonardo Wagner Ribeiro Leite Documento Padro para o Trabalho de Diplomao

Monografia apresentada disciplina de Trabalho de Diplomao do curso de Cincia da Computao da Pontifcia Universidade Catlica de Minas Gerais.

________________________________________________________

(Orientador) PUC Minas

________________________________________________________ Examinador PUC Minas

________________________________________________________ Examinador PUC Minas

Belo Horizonte, 15 de Junho de 2012

DEDICATRIA

Dedico esse trabalho minha famlia, minha esposa e filho, meus pais, irmos e irms pela pacincia e apoio a minha pessoa.

AGRADECIMENTOS

Agradeo minha famlia, minha esposa, meus pais, irmos e irms pela pacincia e apoio que deram. Agradeo tambm aos professores e professoras pelos incentivos prestados e por todo conhecimento que me foi passado. Aos meus amigos, de convvio acadmico, com quem eu fiz vrios trabalhos e estudei para as diversas provas, meus amigos do meu bairro e trabalho por me escutar e me aconselhar em decises difceis, tambm gostaria de agradecer aos meus tios e tias que me auxiliaram desde o inicio. A todos meus sinceros agradecimentos.

RESUMO

Este trabalho discorre sobre o desenvolvimento de uma soluo para automao residencial de baixo custo, com arquitetura robusta, possibilitando controle de diversos dispositivos e acessos remotos atravs de um aparelho mvel que possua sistema Android e uma conexo com a internet via 3G ou WIFI. Tudo isso foi possvel utilizando uma plataforma de prototipagem Arduino, um componente Ethernet Shield, e um software desenvolvido neste trabalho para o sistema Android chamado "Arduino Manager", para controle dos dispositivos conectados a plataforma de prototipagem. Foi realizado o mapeamento dos dispositivos e a programao das aes que o Arduino ir executar para controle destes dispositivos, desta forma, funcionando como uma interface para acesso e controle do software AM. Portanto, a aplicao funciona de forma semelhante a uma soluo cliente servidor, onde o Arduino ir atuar como um servidor e o AM o cliente, que ir executar aes nos dispositivos. Ao longo deste trabalho descrito detalhadamente todo o processo realizado e todas as etapas de implementao, assim como, os mtodos e arquiteturas utilizadas. H tambm, uma descrio rica em detalhes de todas as tecnologias utilizadas no projeto. Alm disso, so realizados alguns testes e anlises da soluo proposta e as concluses alcanadas. Tal soluo se mostrou perfeitamente eficaz e robusta, fornecendo uma ampla gama de possibilidades em automao residencial.

Palavras-Chave: Automao residencial, Domotica, Arduino, Android, Ethernet shield, Arduino manager, Arquiterura robusta, Aparelho mvel.

LISTA DE FIGURAS

FIGURA 1 ARDUINO 2009......................................................................................................................21 FIGURA 2 EXEMPLO SISTEMA ARDUINO......................................................................................22 FIGURA 3 ETHERNET SHIELD...........................................................................................................26 FIGURA 4 IMAGEM DO SISTEMA ANDROID.................................................................................27 FIGURA 5 - ARQUITETURA ANDROID................................................................................................28 FIGURA 6 - UTILIZAO DAS VERSES ANDROID.......................................................................30 FIGURA 7 - HIERARQUIA DE CLASSES VIEW..................................................................................31 FIGURA 8 ARQUITERURA DA SOLUO.......................................................................................36 FIGURA 9 ARDUINO MANAGER........................................................................................................39 FIGURA 10 - ADICIONAR O DISPOSITIVO "MANUALMENTE"..................................................51 FIGURA 11 - SINCRONIZAR ARDUINO....................................................................................51 FIGURA 12 - DISPOSITIVO SINCRONIZADO...........................................................................52 FIGURA 13 - CONTROLE DO DISPOSITIVO.......................................................................................52 FIGURA 14 - TELA DE CONTROLE DO DISPOSITIVO LED......................................................53

LISTA DE TABELAS

TABELA 1 CARACTERSTICAS.................................................................................................23 TABELA 2 NUMERAO DE FIGURAS.............................................................................................37 TABELA 3 CONFIGURAO ARDUINO PARA ETHERNET SHIELD......................................43 TABELA 4 MAPEAMENTO ARDUINO DE DISPOSITIVOS..........................................................44

ABREVIATURAS AM - ARDUINO MANAGER A/D - ANALGICO / DIGITAL CC - CORRENTE CONTNUA CI - CIRCUITO INTEGRADO IHM INTERFACE HOMEM MQUINA PC COMPUTADOR PESSOAL RAM RANDOM ACCESS MEMORY VCC TENSO EM CORRENTE CONTNUA

SUMRIO
1 INTRODUO..........................................................................................................................................13 2 REVISO DE LITERATURA.................................................................................................................21 3 DESENVOLVIMENTO DO SISTEMA.................................................................................................35 4 ANLISES E DISCUSSO......................................................................................................................53 5 CONCLUSES..........................................................................................................................................55 REFERNCIAS............................................................................................................................................57 .........................................................................................................................................................................57 APNDICE 1.................................................................................................................................................59 .........................................................................................................................................................................72

13

1 INTRODUO 1.1 Consideraes Preliminares A palavra Automao vem do latim Automatus, que por sua vez, significa mover-se por si, ou seja, executar funes sem a interferncia do homem. A automao um sistema de controle de mecanismos e dispositivos para executar aes, verificaes e at mesmo correes de erros. Segundo [LACOMBE 2004] a automao a aplicao de tcnicas computadorizadas para diminuir o uso de mo-de-obra em qualquer processo, especialmente o uso de robs nas linhas de produo. A automao diminui os custos e aumenta a velocidade da produo. Portanto, um processo automatizado possui diversos benefcios, entre eles, velocidade, reduo de custos, e muitas vezes o conforto. A automao se divide em trs grandes reas, a automao comercial, que visa a otimizao de processos comerciais atravs do controle dos seus principais processos tais como, controle de estoque, contas a pagar e a receber, folha de pagamento, identificao de mercadorias atravs de cdigos de barra entre outras. A automao industrial, que controla os processos industriais para maximizar a produo visando um menor consumo de energia e/ou matrias primas, menor emisso de resduos, melhores condies de segurana, reduzir a interferncia humana sobre os processos. E por ultimo a rea de Domotica, cujo significado vem do latim, Domus(Casa) com Robtica(Controle automatizado de algo) que tem como objetivo a automao de mecanismos em uma residncia, visando qualidade de vida, conforto, integrao, e uma maior satisfao no lar. A automao uma realidade emergente em ambientes residenciais. Uma das grandes contribuies para a rea de automao residencial foi a inveno das mquinas eltricas de lavar roupas em 1908 [ELSENPETER 2003]. Aps isso, outras solues como detectores de palmas e os detectores de assovios, que ligavam e desligavam dispositivos, lmpadas e eletrodomsticos, foram desenvolvidas. Algumas destas tecnologias, apesar de cruciais para o

14

desenvolvimento da rea, como a telefonia, rdio, no contriburam tanto quanto a televiso, computadores pessoais, a internet e controle pela energia eltrica (X10, por exemplo), que so considerados os grandes avanos da automao residencial [VARGAS 2004]. Por aproximadamente 30 anos a automao residencial tem se mantido como um recurso inacessvel para grande parte da populao, em funo do alto custo das solues. Em geral, as pessoas detentoras de um maior poder aquisitivo adquirem sistemas caros e feitos sobre medida e os mais corajosos e desbravadores estudam o funcionamento dos dispositivos e compram aos poucos os componentes necessrios para montar seus prprios sistemas. Porm, grande parte do mercado ainda encontra-se intocada [TERUEL 2007], onde a oferta consiste

predominantemente de dispositivos independentes e embarcados de funes especficas e providos de inteligncia que geralmente utilizam temporizadores. Este cenrio tente a mudar em funo da popularizao da banda larga, das redes residenciais WIFI, e tecnologias de comunicao de dados como 3G e 4G [ABI RESEARCH 2011]. Tendo em vista que, o conceito de habitao tem mudado na ultima dcada em razo da rpida evoluo tecnolgica, onde a tecnologias como tablets smartphones, banda larga, esto cada vez mais presentes no ambiente familiar e levando em considerao que os dispositivos mveis se tornaram objetos indispensveis na vida de qualquer indivduo, este trabalho visa uma soluo utilizando dispositivos mveis e uma arquitetura robusta para automao residencial de baixo custo e acessvel onde o meio de comunicao a internet atravs de conexes 3G ou WIFI. Tornando o ambiente residencial um lugar mais agradvel e de maior conforto e com isso melhorando a qualidade de vida de toda famlia. Um indivduo realiza diversas atividades do seu dia a dia atravs de celulares e tablets. Realiza o pagamento de contas sem ter que ir ao banco, efetua compras sem ter que se dirigir fisicamente at a loja, agenda consultas sem ter que telefonar ou ir ao consultrio, e poderia controlar diversas atividades na sua residncia atravs destes aparelhos pela internet utilizando

15

o seu 3G ou at mesmo wireless, como por exemplo, lavar as suas roupas, preparar o seu banho ou ligar o micro-ondas para preparar uma lasanha momentos antes de chegar em casa. O trabalho desenvolvido e relatado neste documento implementa uma soluo para automao residencial que visa menor custo e uma arquitetura robusta para controle e automao de dispositivos residenciais atravs de um smartphone utilizando o sistema Android e um dispositivo Arduino, se comunicando atravs de uma conexo 3G ou WIFI usufruindo do protocolo HTTP. Em geral as empresas investem em solues para controle de segurana, temperatura, iluminao, udio e vdeo, persianas ou cortinas [TERUEL 2007]. Poucas empresas se concentram em solues realmente inovadoras e abrangentes para a automao residencial, visando, por exemplo, eletrodomsticos inteligentes e colaborativos [PEREIRA 2007]. Porm, tais solues seriam perfeitamente factveis atravs de bons algoritmos e um dispositivo Arduino com os componentes corretos. Podemos citar como exemplo, uma soluo que verifica a temperatura de um determinado ambiente e aumenta a potencia de um ar condicionado gradativamente em funo do aquecimento deste ambiente. Ou at mesmo uma soluo de segurana, onde o Arduino, atravs de um sensor de presena, ao detectar a presena inesperada de um indivduo, poderia registrar uma foto do mesmo e envi-la atravs da internet para o departamento de policia mais prximo e em seguida alertar o proprietrio sobre o ocorrido via SMS. Solues como estas, seriam perfeitamente factveis com a arquitetura e os componentes citados neste trabalho. A automao residencial utilizando Arduino pode ser muito robusta e bem elaborada alm de possibilitar um leque muito grande de possibilidades. Observa-se tambm que esta uma soluo de baixo custo, onde os componentes utilizados so acessveis a grande parte da populao, seja pelo baixo custo ou por j possuir uma parte dos componentes necessrios em casa. Para exemplificar: o Arduino UNO, custaria

16

em torno de US$ 24, o Ethernet Shield US$ 36, um sensor de temperatura US$ 4, a maioria dos componentes de Arduino possuem uma faixa bem variada de valores, que vo de US$ 1,5 o mais barato e US$ 300 o Kit mais sofisticado [SPARKFUN 2012]. Em funo da soluo proposta, onde o Arduino ser acessado remotamente, atravs de dispositivos mveis, dados recentes mostram que o acesso telefonia mvel, bem como a aparelhos mais sofisticados e com acesso a internet vem aumentando exponencialmente. Dados apontam que existem cerca de 1.2 celulares por habitante no Brasil segundo pesquisa realizada pela [ANATEL 2011], entre esses quase 250 milhes de aparelhos, aproximadamente 62 milhes so smathphones segundo dados estatsticos coletados pela Avellar Duarte Consultoria de 2011 [AVELLAR DUARTE 2011], dispositivos esses que sero utilizados neste trabalho. De acordo com a estimativa realizada pela IDC consultoria, em 2012 sero vendidos cerca de 15,4 milhes de smarthphones, isso em funo do baixo custo de vrios aparelhos que esto sendo introduzidos no mercado, [IDC 2010]. Isso mostra que este tipo de tecnologia est cada vez mais comum na vida do Brasileiro. Alm disso, um estudo da COMSCORE mostra que o sistema operacional da Google (Android), sistema adotado para a realizao deste estudo, detm cerca de 50.1% do mercado de smathphones, e o sistema operacional mais utilizado no mundo para essa plataforma [COMSCORE DATA MINE 2012], desta forma justificando o motivo pelo qual esse sistema foi a escolhido para o desenvolvimento da soluo proposta.

1.2 Motivaes para realizao do trabalho

A motivao para realizao deste trabalho baseia-se na possibilidade de propor uma soluo acessvel para um indivduo que tenha interesse em implantar automao residencial em sua casa com uma arquitetura robusta de controle via web. Dessa forma, a proposta do trabalho desenvolver uma soluo que oferea uma ampla gama de possibilidades e que proporcione uma rica e diversificada experincia em automao residencial, alm de prover segurana e

17

resultados precisos. Contudo, sem que haja a necessidade de investimentos exorbitantes, uma vez que, as solues fornecidas pelo mercado atualmente so caras e na maioria das vezes inacessveis para grande parte da populao. Outro fator motivante para a realizao deste estudo resultou da anlise de dados do mercado. Um estudo realizado pela Motorola Mobility, onde foram entrevistados 9 mil consumidores na amrica latina, apontou que dos quase 3 mil Brasileiros entrevistados, 78% disseram ter interesse em automao residencial [AURESIDE 2012]. Porm, devemos levar em considerao que a renda mdia do brasileiro de aproximadamente R$ 1550,00, ou seja, uma renda baixa para implantar automao residencial nos padres que o mercado oferece hoje, onde a soluo mais barata oferecida pela Kalatec Home custa em torno de 4 mil reais, Kalatec Home [KALATEC HOME 2012] e oferece ao cliente um tablet com sistema 3NYX e o controle de iluminao da residncia, ou seja, uma soluo bem simples. Desta forma, a soluo proposta neste trabalho se mostrou condizente com o perfil econmico de grande parte dos cidados Brasileiros, uma vez que, todo o projeto realizado neste trabalho teve custo de R$ 260, porm, utilizando tecnologias open Source e menos sofisticadas, mas podendo possibilitar uma soluo de automao residencial bem mais completa e diversificada que a soluo da Kalatec Home. Em relao arquitetura proposta, a motivao se embasa no contexto atual, onde os investimentos em automao sem fio so claramente maiores que a automao via cabo. Somente no ano passado os investimentos somaram cerca de US$ 58 milhes [PEREIRA 2007], dois teros dos dispositivos de controle so sem fios [PEREIRA 2007]. Portanto, a grande parte da automao residencial est direcionada para o contexto de aplicaes sem fio, desta forma motivando a arquitetura proposta atravs do componente Ethernet Shield para o Arduino,

18

possibilitando um controle do Arduino via internet que por sua vez controla os dispositivos conectados ao mesmo. Ainda assim, torna-se necessrio um dispositivo que esteja em sintonia com a arquitetura proposta, que fosse um dispositivo presente no dia a dia do indivduo, um aparelho indispensvel, o smathphone. O smartphone est cada vez mais presente no cotidiano das pessoas, hoje possvel comprar um smartphone com sistema operacional Android por valores bem acessveis ao bolso do Brasileiro, alm disso, como j relatado, o sistema operacional Android est presente em 51,1% dos dispositivos de telefonia mvel [COMSCORE DATA MINE 2012], neste caso, deixando clara a motivao para o uso de smartphones que possuem o sistema operacional Android. Em relao ao meio de acesso, que ser atravs de banda larga instalada na residncia, os dados estatsticos coletados pela TIC Provedores, mostram que cerca de 27% dos lares Brasileiros possuem acesso a internet [TIC DOMICILIOS 2010], alm isso, com o projeto do governo federal, que est disponibilizando banda larga popular a um valor aproximado de R$ 35, pretende-se alcanar a meta de 70% dos lares brasileiros com internet banda larga em 2014 [CORREIO DO ESTADO 2011]. Alm de todas as motivaes mencionadas, os componentes propostos na soluo so perfeitamente compatveis com as solues encontradas no mercado hoje, como por exemplo, ZigBee e at mesmo o protocolo X10, que foi um dos grandes avanos da automao residencial e amplamente utilizado no contexto atual, ele foi o principal responsvel pela popularizao da automao residencial, porm, o mesmo possui algumas limitaes e desvantagens, como por exemplo, limitao do nmero de dispositivos ligados na rede e a baixa taxa de transmisso de dados, h tambm a necessidade de do uso de repetidores para que os sinais se propagem pelas diferentes de uma resistncia e de uso de filtros para evitar interferncias [VARGAS 2004]. Com a utilizao o Arduino, em conjunto com o protocolo

19

X10, seria possvel reduzir as limitaes do X10, uma vez que, o Arduino possibilita a conexo de 78 dispositivos em suas portas e uma ampla transmisso de dados utilizando o Ethernet Shield que possibilita uma transmisso de 100 Mb por segundo em pacotes de at 9600 bits. Como isso, fica perfeitamente claro que a soluo proposta est em sintonia com a demanda do mercado, assim como, est condizente com o poder aquisitivo de grande parte da populao Brasileira.

1.3 Objetivos O objetivo deste trabalho desenvolver uma soluo para automao residencial, de baixo custo, e que possua uma arquitetura robusta, ou seja, que seja aplicvel em vrias situaes, seja segura e precisa em seus resultados e desta forma, satisfaa at os usurios mais exigentes. Portanto, foi proposta uma soluo utilizando uma plataforma de prototipagem Arduino, um componente que prov o servio de web Server para o Arduino chamado Ethernet Shield, acesso a internet atravs de um roteador, um dispositivo mvel com sistema operacional Android, e alguns dispositivos que sero controlados pelo Arduino, como por exemplo, um mdulo de rel que ir controlar a porta e o porto da residncia, um sensor de temperatura que ir registrar a temperatura do ambiente residencial, e alguns leds que iro simular a iluminao de uma residncia, tudo controlado via web. Portanto, ser necessrio realizar o mapeamento dos dispositivos citados no Arduino e posteriormente desenvolver os interpretadores de comandos para que o Arduino se comunique com o sistema Android atravs do sistema Arduino Manager (Sistema desenvolvido neste trabalho), alm de programar uma aplicao Android para executar os comandos no Arduino, ou utilizar alguma soluo para o Android j pronta, como por exemplo, uma aplicao chamada Domotic Home, que pode ser encontrada no Android Market totalmente gratuita e

20

open Source. Para alcanar o objetivo proposto, sero realizados vrios testes para avaliar a confiabilidade da soluo ,assim como, comprovar o seu perfeito funcionamento.

1.4 Estrutura do trabalho Aps a descrio do primeiro capitulo que trata da introduo ao assunto que embasa este documento, seguem os captulos 2, 3, 4 e 5. O Captulo 2 trata da reviso bibliogrfica, a primeira parte aborda as tecnologias utilizadas na soluo, suas descries tcnicas, estruturas, suas funes em relao ao trabalho proposto alm de suas arquiteturas. A segunda parte expem algumas solues relacionadas ao projeto, suas similaridades com a soluo proposta, assim como, seus pontos fracos e fortes. E na quarta e ultima seo do captulo 2, realizada uma breve anlise crtica sobre as sees anteriores, citando as principais vantagens e desvantagens e contribuies para o trabalho realizado. O Captulo 3 trata dos aspectos metodolgicos, onde so expostos os mtodos utilizados no desenvolvimento da soluo e os testes realizados, alm de detalhar toda a arquitetura do projeto proposto. Tambm neste captulo, apresentando um pequeno tutorial de como utilizar o programa desenvolvido neste trabalho (Arduino Manager) e suas principais funcionalidades. No Captulo 4 feita uma anlise de todo o trabalho desenvolvido avaliando alguns testes expondo possveis vulnerabilidades e apresentando algumas concluses em relao a soluo proposta. Por ltimo, no Capitulo 5, apresentam-se todas as concluses finais, os objetivos alcanados, e uma seo de trabalhos futuros para possveis melhorias no trabalho realizado, as referencias utilizadas neste documento e um apndice com uma documentao vasta em relao ao sistema Arduino Manager.

21

2 REVISO DE LITERATURA

2.1.1 Arduino Arduino uma plataforma open source de prototipagem eletrnica baseada na flexibilidade, ou seja, possui hardware e software de fcil utilizao, alm disso, possui um baixo custo e pode ser executado em vrias plataformas, como Windows, Mac OS, e Linux. Foi projetado para engenheiros, artistas, aficionados por tecnologia ou qualquer pessoa interessada em criar objetos ou ambientes interativos, [ARDUINO 2012].

FIGURA 1 ARDUINO 2009

Fonte: http://www.arduino.cc, 2012.

O Arduino faz parte do conceito de hardware e software livre e est aberto ao uso e contribuies por parte de toda sociedade. O Arduino surgiu na Itlia em 2005, com a proposta de criar um dispositivo para desenvolvimento de projetos/prottipos de forma menos dispendiosa do que outras solues existentes at ento no mercado [Vega e Beppu 2010]. O Arduino pode perceber o ambiente atravs de uma grande variedade de sensores e pode interagir com o mesmo atravs do controle de diversos dispositivos, como por exemplo, lmpadas, motores e vrios outros atuadores. O Arduino possui um microcontrolador Atmel AVR de 8 bits com suporte de entrada e sada, e uma linguagem de programao padro

22

baseada em C/C++. Um microcontrolador (tambm denominado MCU) um computador em um chip, que contm microprocessador, memria, e perifricos de entrada e sada. Um microprocessador pode ser programado para funes especficas, diferente de outros microprocessadores de propsito geral (como os utilizados em PCs). Eles so embarcados no interior de algum dispositivo, no nosso caso, o Arduino, para que possam controlar suas funes ou aes. Como possvel perceber, o Arduino semelhante a um PC tradicional, possui sensores como dispositivos de entrada (semelhante ao mouse ou teclado) e atuadores como dispositivos de sada, como um motor ou um rel que aciona algum dispositivo (semelhante a impressoras e caixas de som), porm o Arduino faz interface com circuitos eltricos, podendo receber ou variar informaes/tenses sobre eles. Atravs da Figura 2 exibida abaixo possvel ter uma viso simplificada do sistema.

FIGURA 2 EXEMPLO SISTEMA ARDUINO

Fonte: Apostila Arduino, Universidade Federal Fluminense, 2010.

O Arduino pode ser conectado a um computador hospedeiro, programado em ambiente Windows, Mac ou Linux, desta forma possvel a criao de programas que quando implementados fazem com que o hardware execute certas aes. Com isso, configurando a etapa de processamento e execuo. No sendo suficiente para demonstrar o seu poderio, uma placa Arduino alm de possuir um controlador, possui vrias linhas digitais e analgicas de entrada e sada, uma interface serial ou USB para se conectar a um hospedeiro que utilizado para program-la e executar interaes em tempo real. O micro controlador Atmel AVR pr-programado com um bootloader, que simplifica o carregamento de programas para o chip de memria flash embutido, facilitando a programao e a incorporao para outros circuitos. Um importante

23

aspecto do Arduino o padro que todas as placas possuem em relao aos seus conectores, permitindo com isso, que a CPU seja interligada com diversos mdulos expansivos projetados sobre medida, conhecidos como Shields, que ampliam ainda mais as possibilidades destes dispositivos. Neste projeto foi utilizado o Arduino Uno, cujas caractersticas so detalhadas na tabela 1. O Arduino UNO e uma placa baseada no microcontrolador Atmel AVR. Tem 14 pinos de entrada ou sada digital (dos quais 6 podem ser utilizados como sadas PWM), 6 entradas analgicas, um oscilador de cristal 16 MHz, controlador USB, uma tomada de alimentao, um conector ICSP, e um boto de reset. Para sua utilizao basta conect-lo a um computador com um cabo USB ou lig-lo com um adaptador AC para DC ou bateria [ARDUINO 2012].

TABELA 1 CARACTERSTICAS

Fonte: Documentao oficial Arduino UNO, site arduino.cc , 2012.

O Arduino Uno pode ser alimentado pela conexo USB ou por qualquer fonte de alimentao externa ou bateria. A fonte pode ser conectada com um plug de 2,1 mm (centro positivo) no conector de alimentao. Cabos vindos de uma bateria podem ser inseridos nos pinos GND (terra) e Vin (entrada de tenso) do conector de alimentao. A placa pode operar com uma alimentao externa de 6 a 20 V. Entretanto se a alimentao for inferior a 7 V o pino

24

de 5 V pode fornecer menos de 5 V e a placa pode ficar instvel. Se a alimentao foi superior a 12 V o regulador de tenso pode superaquecer e avariar a placa a alimentao recomendada de 7 a 12 V [ARDUINO 2012]. A memria do Arduino Uno possui 32 KB de memria Flash (onde armazenado o software), alm de 2 KB de SDRAM (onde as variveis ficam) e 1KB de EEPROM (esta ultima pode ser lida e escrita atravs da biblioteca EEPROM e guarda os dados permanentemente, mesmo com o desligamento da placa). Ao contrrio da memria SDRAM que apagada todas as vezes que desligamos o circuito. Como j foi dito, o Arduino Uno possui 14 pinos que podem ser usados para entrada e sada, utilizando-se das funes pinMode(), digitalWrite() e digitalRead(). Eles operam com 5 V. Cada pino pode fornecer ou receber no mximo 40 mA e tem um resistor interno de 20-50 k. Alm disso, alguns pinos tm funes especializadas. Serial: 0 (RX) e 1 (TX). Usados para receber (RX) e transmitir (TX) dados seriais TTL. Estes pinos so conectados aos pinos correspondentes do chip serial FTDI USB-to-TTL. PWM: 3, 5, 6, 9, 10, e 11. Fornecem uma sada analgica PWM de 8-bit com a funo analogWrite(). SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estes pinos suportam comunicao SPI, que embora compatvel com o hardware, no esto includas na linguagem do Arduino. LED: 13. H um LED j montado e conectado ao pino digital 13. O Arduino Uno tem 6 entradas analgicas, cada uma delas est ligada a um conversor analgico-digital de 10 bits, ou seja, transformam a leitura analgica em um valor dentre 1024 possibilidades (exemplo: de 0 a 1023). Por padro, elas medem de 0 a 5 V, embora seja possvel mudar o limite superior usando o pino AREF e um pouco de cdigo de baixo nvel. Adicionalmente alguns pinos tm funcionalidades especializadas: I2C: 4(SDA) e 5(SCL). Suportam comunicao I2C (TWI) usando a biblioteca Wire. AREF. Referncia de tenso para entradas analgicas. Usados com analogReference().

25

Reset. Envie o valor LOW para reiniciar o microcontrolador. Tipicamente utilizados para adicionar um boto de reset aos Shields (placas que podem ser plugadas ao Arduino para estender suas capacidades) que bloqueiam o que h na placa, [ARDUINO 2012]. O ATmega328 permite comunicao serial no padro UART TTL (5 V), que est disponvel nos pinos digitais 0 (RX) e 1 (TX). Um chip FTDI FT232RL na placa encaminha esta comunicao serial atravs da USB e os drivers FTDI (includo no software do Arduino) fornecem uma porta virtual para o software no computador. O software Arduino inclui um monitor serial que permite que dados simples de texto sejam enviados e recebidos da placa Arduino. Os LEDs RX e TX da placa piscam quando os dados esto sendo transferidos ao computador pelo chip FTDI e h conexo USB (mas no quando h comunicao serial pelos pinos 0 e 1). A biblioteca Software Serial permite comunicao serial por quaisquer dos pinos digitais do Arduino Uno. O ATmega328 tambm oferece suporte aos padres de comunicao I2C (TWI) e SPI. O software do Arduino inclui uma biblioteca Wire para simplificar o uso do barramento I2C. Para usar a comunicao SPI veja o datasheet (folha de informaes) do ATmega328, [ARDUINO 2012].

2.1.2 Ethernet Shield O Arduino Ethernet Shield permite que um dispositivo Arduino seja conectado a internet, Ele foi desenvolvido com base no chip W5100 que prov uma biblioteca de network (IP) que suporta os protocolos UDP e TCP. So permitidas at 4 conexes de socket simultaneamente, a partir da biblioteca Ethernet possvel escrever programas para se conectar a internet atravs do Ethernet Shield. H tambm neste dispositivo um slot micro-SD onde possvel armazenar dados e arquivos para serem acessados via rede, alm disso, o mesmo possui um conector RJ45 onde possvel conecta-lo a uma rede local e uma serie de LEDs de informao [ARDUINO 2012].

26

FIGURA 3 ETHERNET SHIELD INCLUDEPICTURE "http://arduino.cc/en/uploads/Main/ArduinoEthernetShieldV3.jpg" \* MERGEFORMATINET

Fonte: Documentao oficial Ethernet Shield, site Arduino.cc , 2012.

PWR: Indica que a placa est ligada. LINK: Indica a presena de uma rede e pisca quando o shield transmite e recebe informaes. FULLD: Indica que a rede full duplex. 100M: Indica a presena de uma conexo de rede de 100 MB/s (Em posio a 10 Mb/s). RX: Indica que o shield est recebendo informaes. TX: Indica que o shield est transmitindo informaes. COLL: Indica colises na rede. O jumper de soldas marcado INT pode ser conectado para permitir que o Arduino receba informaes de interrupes do W5100 mais isso no suportado pela biblioteca Ethernet. Este jumper conecta o pino INT do W5100 ao pino digital 2 do Arduino [ARDUINO 2012]. 2.1.3 O Sistema Operacional Android

27

O Android um sistema operacional para dispositivos mveis, executado sobre o ncleo Linux. Inicialmente, foi desenvolvido pela Google e posteriormente pela empresa Open Handset Alliance, porm, a Google responsvel por toda gerncia e engenharia do projeto. O Android permite que desenvolvedores desenvolvam os programas na linguagem Java para controlar os dispositivos atravs de bibliotecas desenvolvidas pela Google. Segunda o site PC World, em abril de 2012 existiam aproximadamente 400.000 Aplicativos para Android [PC WORLD 2012].

FIGURA 4 IMAGEM DO SISTEMA ANDROID

Fonte: Android 4.0 no Galaxy Nexus.

Em julho de 2005 a Google comprou a Android Inc, at ento uma pequena empresa com sede na Califrnia, USA, [BUSINESSWEEK 2005]. Durante o perodo em que Andy Rubin conduziu a Google, foi desenvolvido um projeto de uma plataforma para dispositivos mveis baseado no sistema operacional Linux, com o objetivo de ser uma plataforma totalmente flexvel de cdigo fonte aberto (Open Source) e de fcil adaptao para qualquer fabricante de telefonia mvel. No final de 2006, vrios noticirios lanaram especulaes de que a Google

28

estaria entrando no mercado de dispositivos mveis. Porm, o primeiro dispositivo a rodar o sistema da Google foi somente em outubro de 2008, um aparelho da HTC chamado HTC Dream, [HTC 2008]. Posteriormente o sistema da Google tambm estaria sendo implantado em tablets, o primeiro a utilizar o sistema foi um tablet da Motorola chamado Xoom em Janeiro de 2011 [PC WORLD BRASIL 2011]. Em relao arquitetura do Android, apesar de baseado no Kernel do Linux, tem pouco em comum com as distribuies convencionais do sistema de Linus Torvalds. Na verdade o sistema operacional Android se assemelha a uma mquina virtual Java, rodando sobre um Kernel Linux adaptado para dispositivos de telefonia mvel, possibilitando o desenvolvimento de aplicativos Java utilizando de um conjunto de bibliotecas e servios. Sua arquitetura possui quatro camadas:

FIGURA 5 - ARQUITETURA ANDROID

Fonte: Site oficial Android developer.android.com.

Na camada mais interna do sistema Android est situada a camada Linux Kernel o Android utiliza o Kernel Linux para gerenciar memria, processos, rede e vrios servios de

29

sistema operacional. Acima desta camada, se encontra uma camada de bibliotecas nativas do sistema Android, estas bibliotecas so escritas em C/C++ e compiladas de acordo com a arquitetura especfica de cada dispositivo, cada fabricante desenvolve e faz as devidas modificaes em funo da arquitetura do telefone mvel. Existem vrias Bibliotecas no SDK Android, entre elas esto:

APIs para renderizao 2D e 3D. API para gerenciamento de do banco de dados SQLite. APIs para gerenciamento e suporte a vrios formados de udio e vdeo. API de controle de dispositivo Bluetooth, Bluez. API de gerenciamento de telefonia. API Webkit para rpida exibio de HTML. APIs para controle de GPS, acelermetro, tela sensvel ao toque.

Alm de todas as APIs, o SDK inclui um emulador do dispositivo, uma ferramenta para debugar e ferramentas para anlise de memria e desempenho e totalmente compatvel com a IDE Eclipse de desenvolvimento atravs do plugin ADT (Android Development tool). Tambm acima da camada de Kernel Linux existe a camada Android Runtime, a qual possui as APIs Java e a maquina virtual Dalvik para a execuo das aplicaes. A mquina virtual Dalvik uma mquina virtual baseada em registradores projetada e escrita por Dan Bornstein com a contribuio dos engenheiros da Google para o sistema Android [DALVIK 2012]. A mquina virtual Dalvik foi projetada para requerer uma mnima quantidade de memria [DALVIK 2012]. Alm disso, ela foi projetada para possibilitar que mltiplas instncias da maquina virtual rodem simultaneamente, deixando para o SO o isolamento de processos, o gerenciamento de memria, e o suporte os threads [DALVIK 2012]. A mquina Dalvik semelhante a JVM (Mquina virtual Java), porm, ela no utiliza o mesmo ByteCode

30

que a JVM utiliza. Na verdade, ela utiliza uma ferramenta chamada "dx" que est inclusa na SDK do Android, esta ferramenta transforma os arquivos ".class" de classes Java compiladas em um formato especfico ".dex" [DALVIK 2012]. O arquivo .dex o arquivo compilado da Dalvik Machine (Arquivo Executvel) ele transformado em um formato compactado chamado .apk (Android Package) que ser o arquivo a ser utilizado pelo dispositivo. Quando um aplicativo escrito em Java compilado, gerado o arquivo .dex automaticamente. Acima das camadas Runtime e Libraries se encontra a camada framework de aplicao, ela inclui os programas que gerenciam as funes bsicas do telefone, como alocao de recursos, aplicaes de telefone, mudana entre processos ou programas, alm de detectar a localizao fsica do aparelho. Neste caso, o framwork de aplicao funciona como um conjunto de ferramentas bsicas para o desenvolvimento de ferramentas mais complexas pelos desenvolvedores. No topo da arquitetura, se encontra a camada de aplicaes (Aplications), esta camada a camada onde se encontram as funes bsicas do aparelho, execuo de chamadas telefnicas, acesso ao navegador Web, acesso lista de contatos, camada mais utilizada por usurios comuns. As outras camadas so utilizadas por desenvolvedores da Google, fabricantes de hardware atravs de alguns kits de desenvolvimento. Alm da arquitetura Android, existem vrias distribuies, estas distribuies so as verses de cada sistema operacional Android, cada aparelho utiliza uma verso apropriada, essas verses muitas vezes so adaptadas para cada operadora de telefonia. A aplicao Android desenvolvida para esse trabalho suportada em cinco verses do Android, que esto entre as verses 2.3.3 e 2.1, compreendendo cerca de 92,8% das verses utilizadas no mercado, como mostrado no quadro abaixo:

FIGURA 6 - UTILIZAO DAS VERSES ANDROID

31

Fonte: Site oficial Android developer.android.com.

O sistema Android trabalha com o conceito de Activity (Atividades) que so similares s classes Java JFrame e representam uma tela da aplicao [ANDROID DEVELOPER 2012]. Controla os estados e a passagem de parmetros de uma tela para outra. Uma tela composta por vrios elementos visuais representados pela classe view, a organizao da classe View pode ser observada na figura abaixo:

FIGURA 7 - HIERARQUIA DE CLASSES VIEW

Fonte: Site oficial Android developer.android.com.

Uma view pode ser um componente grfico como, por exemplo, botes, imagens, radio buttons, checkboxes. Tambm pode ser uma view mais complexa, que agrupa e organiza um conjunto de views mais simples. Uma view pode ser definida na aplicao Java de forma procedimental ou declarativa, na forma procedimental os componentes so definidos nas classes Activitys de forma a produzir

32

interfaces mais dinmicas, em relao a forma declarativa, a interface definida em um arquivo "main.xml". Alm isso, criada uma classe R.java automaticamente que est vinculada a view definida na "main.xml", esta funciona de forma semelhante a uma screen wrapper, onde possvel controlar os componentes da view atravs desta classe R, [ANDROID DEVELOPER 2012]. Alm disso, existe um arquivo chamado AndroidManifest.xml, cuja sua funo mapear as Activitys, ou seja, todo projeto Android deve possuir este arquivo. Este arquivo semelhante ao arquivo web.xml de mapeamento de Servlets java, ou seja, descreve os componentes da aplicao, define nomes as Activitys, declara as permisses de acesso, lista as bibliotecas que a aplicao ir utilizar e qual Activity ser iniciada em primeiro lugar quando a aplicao for iniciada. Tambm existe o conceito de Intents, refere-se s intenes, o sistema Android possibilita o programador desenvolver as operaes a serem executadas atravs dos Intents, que executam aes de envio e recuperao de dados. utilizado o mtodo startActivity para iniciar uma atividade, broadcastIntent para enviar o Intent em modo broadcast. Um Intent fornece uma facilidade para realizao de uma ligao em tempo de execuo final entre o cdigo em diferentes aplicaes. basicamente uma estrutura de dados que abstrai a ideia de uma ao a ser executada [ANDROID DEVELOPER 2012]. Portanto, o sistema operacional Android bem consistente, capaz de se adaptar a vrios tipos de plataformas de forma a produzir resultados condizentes com cada tipo de hardware. Facilita o desenvolvimento de aplicaes atravs de suas abstraes de fcil entendimento muitas vezes de fcil deduo. Isso faz com que o sistema Android seja o sistema operacional para dispositivos mveis mais utilizados no mundo, alm de ser um sistema open source e gratuito, atende perfeitamente a qualquer dispositivo uma vez que totalmente flexvel e facilmente migrvel.

33

2.2 Trabalhos Relacionados Um trabalho que auxiliou muito o desenvolvimento desta proposta foi o desenvolvido por [Perozzo e Pereira 2007], cuja proposta consiste em um ambiente inteligente desenvolvido para cenrios de automao predial/residencial a partir de um estudo de caso de uma sala de seminrios automatizada. O trabalho se desenvolve em uma proposta cujo objetivo proporcionar um ambiente inteligente onde seria possvel a interao do usurio atravs de dispositivos mveis e interfaces multimodais (onde a interao do usurio com o computador seria realizada via capacidade sensoriais das pessoas como viso, audio, tacto, olfato, ou seja, de forma natural). Para isso foi proposta a utilizao de sensores de temperatura, de iluminao e presena para ajustar adequadamente a iluminao do ambiente e a temperatura de acordo com uma agenda de ocupao e proporcionar um ambiente agradvel e um baixo consumo de energia.

Outro trabalho interessante e que deve ser citado o trabalho de [EUZBIO 2011], o qual descreve o desenvolvimento de um projeto de automao residencial utilizando um aparelho de celular com sistema operacional Android conectado a uma rede de Arduino, utilizando mdulos ZigBee (padro de rede sem fio, objetivando malha de baixo custo, baixa utilizao de energia).O sistema executa comandos nos dispositivos mapeados (que no caso

so apenas leds) alm de ser possvel configurar horrios para acionar os dispositivos. A arquitetura proposta nesse trabalho se mostrou muito econmica em termos de energia e de custo bem acessvel tambm, levando em considerao que os componentes utilizados so open sorce. Desta forma, o trabalho teve grande influncia na soluo proposta aqui, onde os objetivos a serem alcanados so semelhantes.

34

2.3 Anlise Crtica Dos Trabalhos Relacionados A soluo proposta por [Perozzo e Pereira 2007] se distancia do objetivo do trabalho proposto aqui, porm, possibilita uma grande noo da importncia de ambientes automatizados os grandes benefcios que estes ambientes inteligentes podem trazer, tais ambientes esto intimamente relacionados a computao ubqua mostrando uma outra perspectiva da automao residencial/predial. Porm, a soluo permite que as preferncias de configurao do ambiente possam ser realizadas por um sistema dotado de inteligncia computacional, soluo essa que pode no ser a mais apropriada, uma vez que, poderia necessitar de um possvel treinamento ou uma base de dados para determinar a configurao mais apropriada, e com isso, podendo dar margem a erros e configuraes incorretas com necessidades do usurio.

J a soluo proposta por [EUZBIO 2011] apesar de possuir um acionamento de dispositivos de forma programada, o alcance de operao est limitado em relao a quantidade de Arduinos e mdulos ZigBee, alm disso, o sistema "DroidLair" suporta somente lmpadas, reduzindo muito o controle de dispositivos e a automao residencial. Porm, a soluo se mostrou extremamente econmica em termos de energia e poderia ser mais econmica ainda se dispensasse a utilizao de um PC.

35

3 DESENVOLVIMENTO DO SISTEMA

3.1 Introduo

O objetivo deste trabalho projetar um sistema de automao residencial de baixo custo de arquitetura robusta, ou seja, um sistema resistente a falhas, que possibilite grande mobilidade, seja preciso nos resultados fornecidos segundo os dados recebidos. Para isso, necessria uma arquitetura condizente com esses objetivos. Assim sendo, foi realizada uma pesquisa no sentido de buscar os componentes mais condizentes em termos de custo e adequabilidade automao residencial. Essa pesquisa concluiu que a plataforma de prototipagem Arduino seria a ferramenta essencial para a realizao deste trabalho, uma vez que, est sendo muito utilizada em solues de automao residencial por ser de custo baixo e possuir total compatibilidade com as demais tecnologias de automao residencial existentes no mercado, como por exemplo, X10, Xbee, ZigBee etc. Alm disso, seria necessrio uma ferramenta para controle a distancia desta plataforma, flexvel e tambm de baixo custo, direcionando o foco desta pesquisa para o sistema operacional Android e os aparelhos mveis smartphones. Seria tambm necessrio um componente para o Arduino que possibilitasse o fornecimento de servios via web para o controle de forma remota e mvel atravs do dispositivo Android. Nesse caso o componente selecionado foi o Ethernet Shield. Em seguida, foram selecionados alguns dispositivos que seriam anexados ao Arduino para simular os dispositivos em uma residncia, como atuadores e receptores. Um receptor foi inserido no projeto, o sensor de temperatura e cinco atuadores, dois rels e trs LEDs. A prxima etapa foi o projeto da arquitetura, posteriormente o desenvolvimento dos softwares do Arduino e do sistema Android, de um mecanismo de comunicao entre eles e, por ultimo, a implantao e os testes.

36

3.2 Arquitetura Proposta Tendo em vista os objetivos do projeto, a soluo de arquitetura deveria ser robusta no sentido de possibilitar mobilidade, flexibilidade, resistncia a possveis falhas e ameaas alm de prover resultados precisos. Desta forma, chegou-se a seguinte soluo:

FIGURA 8 ARQUITERURA DA SOLUO

Fonte: Arquitetura do projeto

A arquitetura em questo mostrou-se coesa e extremamente robusta em relao a todos os seus componentes, que so descritos abaixo:

37

TABELA 2 NUMERAO DE FIGURAS Numero 1 2 3 4 5 6 7 Componente Roteador conectado a internet Dispositivo Smartphone com sistema Android e o sistema Arduino Manager Fonte de energia de 5V a 12V Arduino Uno Sensor de Temperatura Mdulo rel com dois rels Trs LEDs

A arquitetura prov uma soluo para uma rede interna que utiliza um IP externo para fornecer servios atravs deste. O roteador tem a funo de rotear as solicitaes ao Arduino de acordo com a porta acionada. Desta forma, foi necessrio configurar o roteamento das chamadas a porta 8080 para o IP interno do Arduino. Neste caso, sempre que houver um envio de informao para o IP externo com a porta 8080, o roteador rotear essa informao para o IP interno do Arduino. Assim, possvel enviar informaes para o Arduino de qualquer lugar atravs de um dispositivo mvel com Arduino Manager e uma conexo com a Internet, proporcionando uma alta mobilidade e controle flexvel dos componentes da Arquitetura. Alm disso, o Arduino conectado a uma fonte de energia 110V que alimenta o sistema

continuamente, alm de est conectado internet da residncia por meio de um cabo RJ45, possibilitando que fique online e disponvel para receber comandos e enviar informaes de forma interrupta. Os componentes Leds e rels so acionados com o recebimento de informaes vindas do Arduino. Nesse caso, o dispositivo Android (Arduino Manager) envia para a informao para o IP externo, o roteador roteia a informao para o Arduino e o mesmo envia a informao para os componentes mapeados no mesmo. No caso do sensor, o Arduino Manager envia um request (requisio) e recebe um response (resposta) com a temperatura detectada. Os dispositivos so mapeados nas portas do Arduino, que so digitais no caso dos atuadores e analgicas no caso do receptor (Sensor). Desta forma, o Arduino Manager envia

38

para o Arduino o comando que ser executado e qual o dispositivo que ir executar esse comando. Com isso, fica extremamente reduzida a possibilidade de uma interpretao errnea por parte do dispositivo Arduino dos comandos e informaes enviados para o mesmo, alm disso, caso o usurio informe um comando invlido ou um componente que no tem possibilidade de executar aquele comando, o Arduino ir simplesmente descartar essa informao, fazendo com que a soluo seja robusta a falhas e produza resultados que efetivamente sejam requeridos. O Arduino manager possui uma senha de acesso de at 12 caracteres, fornecendo uma segurana considervel em relao a acessos no autorizados. O custo desta soluo est condizente com a proposta, porm, deve-se considerar que a residncia j deve possuir um sistema de banda larga j instalada e um dispositivo mvel com sistema Android e conexo 3G ou WIFI para possibilitar a comunicao com o Arduino atravs da internet. Portanto, a arquitetura em questo est totalmente condizente com os objetivos deste trabalho, possibilitando robustez, flexibilidade, segurana e baixo custo.

3.3 Desenvolvimento dos softwares Para possibilitar a comunicao entre o Arduino e o Android, foi desenvolvido, um sistema projetado para ambiente Android chamado Arduino Manager, um protocolo de comunicao entre os mesmos, e um software para o Arduino cujo objetivo interpretar os comandos e enviar as informaes para o Arduino Manager.

3.3.1 Arduino Manager

39

Para executar os comandos e controlar os dispositivos mapeados no Arduino de forma flexvel e possibilitar mobilidade nesta comunicao, foi desenvolvido para um dispositivo mvel com sistema Android um sistema chamado Arduino Manager.

FIGURA 9 ARDUINO MANAGER

Fonte: Arduino Manager

O Arduino Manager um sistema desenvolvido com tecnologia Java e projetado para o sistema Android, cujo objetivo neste trabalho enviar e receber informaes da plataforma de prototipagem Arduino. Atravs de uma conexo 3G ou WIFI, o sistema Arduino Manager envia para um IP e uma Porta pr-configurada alguns comandos, comandos esses que sero interpretados pelo software inserido no Arduino e com isso possibilitar o acionamento dos dispositivos mapeados no mesmo. O Arduino Manager utiliza um banco de dados do dispositivo Android para armazenar vrias informaes sobre os dispositivos mapeados no Arduino, como por exemplo: Nome do dispositivo, Pino em qual o dispositivo est conectado e o Tipo do dispositivo. Alm disso, o Arduino Manager grava na memoria do sistema Android reservada aplicao em questo, as

40

informaes do Arduino, como IP e Porta, informaes estas que sero utilizadas no processo de sincronismo e no processo de envio e recebimento de informaes. Ao ser inicializado pela primeira vez, o Arduino Manager exibe duas opes para o usurio, Sincronizao e Adicionar. A sincronizao o processo que ir obter do Arduino uma lista de dispositivos mapeados no mesmo e inseri-los na base de dados interna do sistema Android, que neste caso o banco de dados SQLite. Desta forma, o Arduino Manager consegue capturar os dispositivos e seus respectivos pinos de conexo dispensando a necessidade de insero de um dispositivo manualmente. Porm, a opo de Adicionar utilizada para inserir um dispositivo que por ventura foi mapeado no Arduino em outra pinagem e tal dispositivo no tenha sido configurado no software desenvolvido no Arduino. Aps realizar o processo de sincronizao, o Arduino Manager j est apto a enviar informaes para o Arduino. exibida na tela principal uma lista com todos os dispositivos mapeados no Arduino, desta forma, possvel interagir com os mesmos atravs de um simples clique no dispositivo que o usurio quer controlar e selecionar a opo Controlar, neste caso, o Arduino Manager ir exibir uma tela apropriada para cada tipo de dispositivo, possibilitando um controle adequado daquele componente. Com isso, o Arduino Manager consegue se enviar as informaes e receber informaes de forma adequada para a plataforma de comunicao Arduino. Toda a comunicao em questo possvel atravs de do package java.net atravs da classe HttpUrlConnection que abre uma conexo HTTP onde possvel enviar requests GET e POST e receber o response via inputStream. Desta forma, o sistema Arduino Manager envia e recebe informaes do Arduino. No processo de sincronizao o Arduino Manager envia um comando GET com a mensagem all. Em seguida, o Arduino identifica a requisio enviada pelo Arduino Manager e responde a essa requisio com uma String com todos os dispositivos e seus respectivos pinos de conexo, assim o Arduino Manager recupera a String, quebra a mesma, separando os

41

dispositivos e seus pinos e insere no banco de dados SQLite. Assim, o Arduino Manager saber informar ao Arduino quais os dispositivos devem ser acionados. Ou seja, o Arduino Manager informa ao Arduino que o dispositivo LED que est no pino 3 deve acender ou desligar. O Arduino, atravs do software projetado neste trabalho, recebe a informao e executa o comando. Todo o armazenamento do Arduino Manager realizado com o SQLite, exceto o armazenamento de IP e porta, que neste caso, so armazenados na memria do sistema Android reservada para a aplicao Arduino Manager. Para que fosse possvel estabelecer um meio para que lista de dispositivos da tela principal capturasse os objetos armazenados no banco de dados SQLite, foi criada uma classe DispositivoAdapter cuja funo povoar a lista de dispositivos na tela principal com os dados armazenados no banco de dados alm de realizar suas atualizaes. Desta forma, o Arduino Manager persiste os dados da plataforma de prototipagem Arduino e realiza de forma precisa sua comunicao, alm de proporcional um ambiente seguro, o Arduino Manager evita os erros humanos e prov uma forma simples e prtica para a comunicao e envio de comandos para os dispositivos em uma residncia, possibilitando mobilidade e flexibilidade neste contexto.

3.3.2 Protocolo de comunicao

Alm do sistema Arduino Manager e o software desenvolvido para o Arduino, seria necessrio uma forma de comunicao entre estes dois dispositivos, como por exemplo, uma linguagem pela qual os dispositivos soubessem o que cada um quer um do outro. Neste caso, foi criado um protocolo de comunicao para que estes dispositivos pudessem se comunicar de forma simples e eficaz. Este protocolo se define principalmente no processo de sincronizao, onde necessrio enviar uma String informando quais os dispositivos esto mapeados no Arduino e quais so os pinos que os mesmos esto conectados. Assim foi criado o seguinte protocolo de comunicao:

42

{TIPO1, PINO1: TIPO2, PINO2: TIPO3, PINO3: TIPO4, PINO4:...: TIPOX, PINOX} O tipo o tipo do dispositivo mapeado, o pino o pino onde foi instalado o dispositivo no Arduino. Est string enviada da plataforma de prototipagem Arduino para o Arduino Manager, no momento em que o Arduino Manager envia um GET com o comando: dispositivos. Exemplo: http://ip:porta/?out=dispositivos Assim o Arduino sabe que tem que enviar para o Arduino Manager a lista formatada de acordo com o protocolo de comunicao. Outra forma de comunicao entre o Arduino Manager e o Arduino propriamente dito atravs da seguinte string de comando: http://ip:porta/?out=1&status=1 Este comando tambm enviado do Arduino Manager e significa que o dispositivo no pino digital 1 deve receber uma tenso eltrica de 5v (status=1). Neste caso, se existir no pino 1 um Led, o mesmo ir acender. Caso o comando fosse: http://ip:porta/?out=1&status=0 O Led iria desligar, uma vez que o (status=0) significa que o dispositivo no pino 1 no deve receber uma voltagem muito baixa e quase insignificante (LOW). Existe ainda outra forma de comando, no caso do sensor de temperatura, o comando o seguinte: http://ip:porta/?out=sensor O sensor um receptor de temperatura, ele conectado em um pino Analgico, desta forma, para receber os dados do sensor, no necessrio determinar uma porta e o status do mesmo, uma vez que, uma varivel float recebe as informaes do sensor. Para que o Arduino Manager

43

saiba qual a temperatura, ele envia o comando acima e solicita o valor da varivel, esse valor enviado para o Arduino Manager e o mesmo exibe o valor na tela. Portanto, o protocolo de comunicao entre o Arduino Manager e o Arduino se mostrou simples e de fcil transmisso (uma vez que, a informao trafegada bem pequena, no mximo 32 bytes), interpretao, entendimento, e se mostrou uma string de fcil fragmentao para ser trabalhada pelo Arduino Manager, desta forma, sendo segura e evitando possveis erros de interpretao.

3.3.3 Programao Arduino

A programao executada na plataforma de prototipao Arduino teve como objetivo mapear os dispositivos conectados alm de estabelecer os procedimentos de configurao e envio de informao para o Arduino Manager seguindo o protocolo de comunicao. Desta forma, o primeiro passo foi configurar o Arduino para a conexo atravs do Ethernet Shield, neste caso, foi necessrio a configurao das seguintes informaes:

TABELA 3 CONFIGURAO ARDUINO PARA ETHERNET SHIELD Nome da configurao Mac Address IP da rede Interna Gateway do roteador da rede Mscara de subrede Porta de comunicao Valor 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xBE 192.168.1.107 192.168.1.1 255.255.255.0 8080

O mac adresss o endereo fsico do Arduino, sendo necessrio para ser identificado, o IP configurado o IP interno da rede onde o Arduino est conectado. Para que o Arduino receba informaes de fora da rede interna, necessrio configurar um roteamento no roteador onde o Arduino est conectado. Dessa forma, o roteador receber as informaes no endereo externo e encaminhar para o IP do Arduino que foi configurado. Outra informao necessria,

44

foi o endereo do Gateway, necessrio para que o Arduino identifique o IP do roteador ao qual ele est conectado atravs do Ethernet Shield. Alm disso, a mscara de sub rede (usada para subdividir a rede interna, que neste caso, utilizada a mascara da rede interna j configurada) e a porta de comunicao tambm foram configuradas, a porta de comunicao 8080 foi utilizada para evitar problemas com firewall, uma vez que, a porta 80 costuma possuir esse tipo de proteo. Em seguida, foi necessrio mapear todos os dispositivos. Quase todos os dispositivos foram mapeados em portas digitais, exceto o sensor de temperatura, que foi mapeado em uma porta analgica. A Tabela 3 resume o mapeamento de dispositivos.

TABELA 4 MAPEAMENTO ARDUINO DE DISPOSITIVOS Dispositivo Rel 1 Rel 2 Led 1 (Amerelo) Led 2 (Vermelho) Led 3 (Verde) Sensor de temperatura Porta Digital 8 Digital 7 Digital 6 Digital 5 Digital 4 Analgica 0

Posteriormente, os dispositivos foram configurados com dispositivos de entrada (Receptores) e de sada (Atuadores). A forma como Arduino ir "conversar" com o Arduino Manager foi programada atravs de um case , quando o Arduino recebe um determinado comando, ele identifica qual o comando e aciona o case referente aquele comando da seguinte forma:

case acao_pino_desliga: digitalWrite(pinOutRelay, LOW); break; case acao_pino_liga:

45

digitalWrite(pinOutRelay, HIGH); break; Assim, o Arduino Manager informa para o Arduino qual pino deve ser ligado ou desligado. Atravs dos comandos descritos na seo de referente ao protocolo de comunicao, o Arduino identifica o comando e aciona o case responsvel por disparar o comando apropriado no pino certo e desta forma acionar o dispositivo mapeado.

3.4 Implantao e teste

Foram executados vrios testes, em toda a soluo, os quais tiveram como objetivo avaliar a robustez do sistema, ou seja, sua resistncia a falhas, evitar erros do usurio, verificar se a informao foi processada e executada corretamente alm de analisar os seus pontos mais sensveis a possveis falhas.

3.4.1 Primeiro Teste

O primeiro teste foi realizado o procedimento de mapeamento e sincronizao entre o Arduino Manager e o Arduino e o controle dos dispositivos mapeados, esse teste foi executado atravs dos seguintes passos: 1- Mapeamento dos dispositivos e configurao da string de comunicao entre a plataforma de prototipao Arduino e o sistema Arduino Manager para Android. 2- Configurao dos dados de acesso ao Arduino, IP e Porta, no Arduino Manager.

46

3- Sincronizao dos dispositivos Arduino Manager e Arduino alm da verificao se os dispositivos mapeados foram identificados corretamente. 4- Acesso aos dispositivos mapeados e verificao se as telas de comandos corretas foram acionadas para cada tipo de dispositivo. 5- Envio e recepo de dados e informaes entre os dispositivos e verificao se os dados no foram comprometidos no processo de sincronizao. 6- Verificao de os dados form bem interpretados e os comandos enviados foram executados corretamente. Todas as etapas realizadas nesse primeiro teste foram executadas com sucesso sem nenhuma falha ou erro, alm do sistema se mostrar bem rpido nas etapas de sincronizao, envio e recepo de dados e informaes. O sistema se mostrou tambm estvel, mesmo em momentos em que o acesso 3G estava com velocidade reduzida.

3.4.2 Segundo Teste

O segundo teste foi realizado para testar a insero manual das informaes dos dispositivos mapeados, acionando a opo no Arduino Manager denominada "Adicionar". Essa funcionalidade insere o dispositivo de forma manual no sistema, ou seja, sem o auxilio da sincronizao, uma vez que, o processo de sincronizao insere o dispositivo de forma automtica. As etapas foram as seguintes: 1- Adicionar os dispositivos com suas respectivas configuraes "manualmente". 2- Acesso aos dispositivos mapeados e verificao se as telas de comandos corretas foram acionadas para cada tipo de dispositivo. 3- Envio e recepo de dados e informaes entre os dispositivos e verificao se os dados no foram comprometidos.

47

4- Verificao de os dados form bem interpretados e os comandos enviados foram executados corretamente. O segundo teste foi finalizado com sucesso, uma vez que os dados do Arduino se mantiveram gravados na memria do sistema Android e a programao do Arduino no necessitou ser alterada, ou seja, duas etapas do processo foram economizadas.

3.4.3 Terceiro Teste

O terceito teste foi realizado objetivando detectar falhas em relao a possveis incidentes relacionados aos componentes do sistema, como por exemplo: 1- Teste de queda de conexo: O Arduino Manager, informa ao usurio que no foi possvel estabelecer uma conexo com o dispositivo Arduino, neste caso, a ao abortada e o sistema exibe a tela principal. 2- Teste de configurao invlida de IP ou Porta: O Arduino Manager, informa ao usurio que no foi possvel estabelecer uma conexo com o IP e Porta configurados em funo do timeout determinado para conexo. 3- Configurao Manual de dispositivos mapeados e envio de informao para os mesmos. Neste caso, o Arduino Manager no exibe nenhuma mensagem de erro ,ou seja, enviado o comando para o Arduino normalmente, porm, caso o pino esteja configurado no Arduino e no Arduino Manager com tipos distintos, a tela acionada no Arduino Manager para controle do dispositivo, pode no ser condizente com o dispositivo mapeado no Arduino. Por exemplo: O dispositivo mapeado no Arduino um atuador e no Arduino Manager um receptor. Neste caso, no ser possvel estabelecer uma comunicao correta entre os dispositivos, porm, no ocorrer nenhum erro que comprometa o sistema ou operao, no entanto, os dispositivos acionados no sero os dispositivos corretos.

48

4- Teste de robustez em funo do tempo de servio online e queda de energia: O sistema ficou online durante 5 dias sem nenhuma interrupo nos servios. Posteriormente foi executado um teste de queda de energia, onde a energia da residncia foi desligada e o sistema foi reiniciado. O que se observou foi que, aproximadamente 20 segundos aps a energia ser religada e o roteador voltar a operao, foi possvel enviar e receber informaes do Arduino.

3.4.4 Quarto Teste

O quarto teste teve como objetivo simular um acesso no autorizado ao sistema Arduino Manager e tentativa de manipulao dos dispositivos mapeados no Arduino. No entanto, no foi possvel acessar nem mesmo a tela principal do sistema, uma vez que, para acessar o Arduino Manager necessrio uma senha de no mnimo 5 dgitos e no mximo 10. Desta forma seria necessrio o seguinte clculo para analisar a probabilidade (senha de 5 a 10 caracteres, levando em considerao que para cada caractere da senha, 72 caracteres podem ser utilizados, entre caracteres especiais e os normais em caixa alta ou baixa): Arranjo com repetio:
AR(72, 5) + AR(72, 6) + AR(72, 7) + AR(72, 8) + AR(72, 9) + AR(72, 10); AR(72, 5) = 725= CALCULAR S = AR(72, 5) + AR(72, 6) + AR(72, 7) + AR(72, 8) + AR(72, 9) + AR(72, 10); Probabilidade = 1/S.

Desta forma, a chance de se descobrir a senha muito baixa, mesmo utilizando sistemas para descobrir senhas, seria uma grande quantidade de testes a serem realizados necessitando de muito tempo para ser realizado.

49

Portanto, todos os testes foram executados sem erro, nenhuma exceo foi acionada em funo dos mesmos, porm, na terceira etapa do terceiro teste, foi possvel identificar uma possvel vulnerabilidade, onde o usurio ao adicionar o dispositivo "manualmente", atravs da opo "Adicionar" do Sistema AM, pode vir a configurar de forma errada o mapeamento do dispositivo, podendo vir a acionar um dispositivo errado. No entanto, esta falha pode ser facilmente resolvida, fazendo uma pequena alterao no protocolo de comunicao. Na quarta etapa do terceiro teste foi realmente surpreendente a velocidade com que o sistema voltou a prover os servios. Poucos segundos aps o retorno da energia e inicializao do roteador, o sistema j estava totalmente em operao. Outro fator relevante identificado nos testes, foi a importncia da internet em todo o projeto. Caso a internet fique suspensa, o projeto fica impossibilitado de prover os servios, de forma que s seria possvel o controle do Arduino atravs do WIFI, ou seja, o dispositivo com Android dever estar conectado via WIFI rede local, reduzindo muito o poderio da soluo.

3.5 Como Usar o Arduino Manager

O Arduino Manger funciona em todos os dispositivos com sistema operacional Android 2.2 ou superior. Para instalar o AM nos dispositivos mencionados, necessrio executar o seu arquivo de instalao chamado "ArduinoManager.apk", desta forma, o sistema Android ir instalar o app e realizar todas as configuraes necessrias. Em seguida, o usurio deve executar o processo fsico de montagem do circuito no Arduino, com isso, ser necessrio as seguintes etapas: 1- Acoplar o Ethernet Shield, 2- Plugar os dispositivos em suas portas digitais ou analgicas 3- Conectar o circuito a um roteador com banda larga e configurar o roteador para que faa o direcionamento dos pacotes para o IP definido no Arduino.

50

Aps estas etapas, o AM estar instalado e o circuito montado, restando configurar o Arduino para enviar os mapeamentos dos dispositivos e configurar os seus mtodos para interpretar os comandos http enviados pelo AM. Esta etapa requer um conhecimento bsico de programao, uma vez que, caso o usurio queira inserir novos dispositivos alm dos j mapeados neste projeto, ele dever alterar o cdigo fonte do Arduino. A programao do Arduino deve seguir o padro estabelecido no protocolo, para que o AM saiba interpretar da forma correta as informaes enviadas pelo Arduino. Desta forma, alm de mapear os dispositivos no cdigo fonte do Arduino, o usurio dever alterar a seguinte linha de cdigo colocando os dispositivos e seus respectivos pinos onde foram mapeados: client.print("Led,6:Led,5:Led,4:Relay,8:Relay,7:Sensor,0"); Em seguida o usurio dever criar uma nova string de comando de acordo com o dispositivo que ele mapeou, da seguinte forma:

String r_pinOutRelay_down = "GET /?out=8&status=0 HTTP/1.1"; if(readString.startsWith(r_pinOutRelay_down)) { current_action = action_mypin_down; } case action_mypin_down: digitalWrite(pinOutRelay, LOW); break; Este segmento de cdigo do Arduino indica que ao receber o comando "GET" com status "0" e pino "8", o Arduino ir enviar um comando para a porta digital "8" com voltagem LOW para o dispositivo desligar. Com o Arduino programado e o AM instalado no dispositivo Android alm do circuito montado e online, o processo de uso do AM pode iniciar. O usurio dever acionar o AM no dispositivo Android, ao ser inicializado, o AM ir solicitar que uma senha seja definida, essa senha ser solicitada todas as vezes que o sistema for iniciado. O usurio ao terminar a definio da senha e logar no sistema, o Arduino Manager ir

51

exibir duas opes, "Adicionar" e "Sincronizar". A opo "Adicionar" serve para adicionar o dispositivo de forma "manual", ou seja, o usurio sabe a configurao do dispositivo no Arduino e quer inserir o dispositivo na base de dados para posteriormente control-lo.

FIGURA 10 - ADICIONAR O DISPOSITIVO "MANUALMENTE"

A opo "Sincronizar" realiza o processo de insero de todos os dispositivos mapeados no Arduino na base de dados do AM de forma automtica, ao selecionar essa opo, o usurio deve digitar o IP e a Porta onde o Arduino ir receber as requisies e acionar a opo "Sincronizar".

FIGURA 11 - SINCRONIZAR ARDUINO

52

Aps o trmino deste processo, AM ir preencher uma lista com todos os dispositivos mapeados no Arduino.

FIGURA 12 - DISPOSITIVO SINCRONIZADO

Para que o usurio controle os dispositivos, com apenas um clique no dispositivo e a seleo da opo "controlar" o usurio poder controlar o dispositivos de seu interesse. FIGURA 13 - CONTROLE DO DISPOSITIVO

A opo "Editar" permite que o usurio edite as configuraes do dispositivo armazenado e a opo "Excluir" permite excluir um dispositivo armazenado. Aps selecionar a

53

opo controlar, o AM ir acionar uma tela de controle apropriada para cada dispositivo de acordo com o seu tipo, exemplo:

FIGURA 14 - TELA DE CONTROLE DO DISPOSITIVO LED

Esta tela responsvel pelo controle de um dispositivo led, atravs da primeira opo, possvel ligar ou desligado o led. Portanto, o AM um software de estrema simplicidade, fcil de usar e muito intuitivo, possibilitando ao usurio o envio de informaes ao Arduino de forma rpida e precisa.

4 ANLISES E DISCUSSO Com os testes realizados foi possvel analisar vrios detalhes da soluo, suas principais vantagens e desvantagens alm de possibilitar identificar os componentes mais importantes e sensveis na arquitetura. A comear pela forma de acesso, a proposta uma soluo que prov acesso via internet, neste caso, caso o roteador cujo Arduino est conectado travar ou ficar inoperante, o servio estar comprometido at que o roteador seja reinicializado e volte ao funcionamento, alm disso, caso o aparelho mvel com dispositivo Android ou a residncia fique desprovida de acesso a internet, somente ser possvel o acesso e controle dos dispositivos

54

instalados no Arduino caso o aparelho esteja conectado via WIFI a rede local, desta forma, no seria necessrio uma conexo com a internet para possibilitar que os dispositivos se comuniquem. Outra questo que deve ser discutida a questo de lentido do servio 3G, apesar do trafego de informao entre o AM e o Arduino serem bem reduzido, caso o servio 3G apresente lentido, esse fator pode influenciar na velocidade de envio e recepo de informaes entre os dispositivos envolvidos e com isso, aumentar o tempo de execuo dos comandos nos dispositivos mapeados no Arduino. Outra fator que deve ser analisado o delay de comunicao entre os ns da rede, quanto mais distantes dois ns esto, maior o tempo de transferncia de informao entre eles, portanto, influenciando tambm no tempo de envio e recepo de informaes entre os dispositivos. Outros testes devem ser realizados com equipamentos reais, como por exemplo, lmpadas, portes eletrnicos, motores e eletrodomsticos para avaliar a eficcia da soluo, uma vez que, os testes realizados foram realizados com equipamentos que simulam estes dispositivos como leds e rels. No entanto, a soluo apresentou resultados condizentes com os esperados, alm de possibilitar uma grande flexibilidade em relao ao acesso e controle dos dispositivos, permitiu tambm mobilidade e um controle preciso dos recursos da residncia e de forma remota. No obstante, em trabalho futuros, tal soluo pode ser melhorada, a arquitetura pode ser modificada para a insero de um firewall e possibilitar uma segurana maior, o protocolo do AM e o Arduino pode ser alterado para responder a possveis erros de comunicao e o sistema AM pode ser alterado para suportar outros dispositivos como, por exemplo: sensor de presena, sensor de luminosidade, motor shield entre outros dispositivos que podem ser conectados ao Arduino.

55

5 CONCLUSES Em funo do projeto desenvolvido, que teve como objetivo o desenvolvimento de uma soluo robusta para automao residencial e cujo custo estivesse acessvel em relao s solues oferecidas no mercado atualmente, possvel constatar atravs deste trabalho que esse objetivo foi atingido em sua plenitude. Os testes nos mostraram que o sistema robusto, evitando erros por parte de usurio, principalmente quando se utiliza a opo de sincronizao. Alm disso, o sistema muito seguro, tendo em vista que, no quarto teste realizado, as possibilidades de acesso no autorizado so desprezveis. Alm disso, toda a soluo bastante resistente a falhas, conforme evidenciado no terceiro teste, no qual foi simulada uma queda de energia, onde o servio foi restabelecido 20 segundos aps a o retorno da energia. Entretanto, foi possvel identificar que o roteador uma pea extremamente crtica na soluo, pois caso haja um travamento do mesmo, todo o servio seria comprometido desta forma necessitando ser reinicializado. Foi possvel identificar tambm que caso a internet seja suspensa ou fique indisponvel, somente seria possvel o controle dos dispositivos conectados na rede local via WIFI, limitando o poderio da soluo. No entanto, a soluo se mostrou bem econmica, considerando as solues existentes atualmente. O custo total de todo o projeto foi de R$260,00, levando em considerao que a soluo com custo mais acessvel pesquisada no mercado atualmente tem o valor de 4 mil reais, o valor do projeto nos mostra uma economia de 3740 R$, tendo em vista que, a residncia possua internet banda larga e um aparelho celular com Android 2.2 ou superior. A soluo de 4 mil oferecida pela Kalatec Home, oferece ao cliente um table samsung com WIFI e com o sistema 3NYX e controle de iluminao da residncia, porm, o a soluo no oferece

automao via web e nem controle de controle de outros dispositivos como os simulados neste trabalho.

56

A arquitetura e as tecnologias empregadas no projeto so openSource possibilitando que o proprietrio possa alterar da forma que achar necessrio os componentes de forma a deixar mais condizente com a sua necessidade. Alm disso, fica evidenciado o poderio da soluo, uma vez que, todo o controle dos dispositivos pode ser realizado de qualquer lugar onde exista internet. Portanto, a soluo proposta condizente com os objetivos desse trabalho em todos os aspectos alm de ser realmente economicamente mais acessvel que outras solues pesquisadas, possibilitando uma popularizao do acesso a esse tipo de sistema.

5.1 Trabalhos Futuros

Como trabalhos futuros, uma grande variedade de melhorias poderiam ser realizadas em relao soluo proposta, mesmo porque, todas as tecnologias empregadas so livres. Podemos citar algumas melhorias tais como: -Modificao da arquitetura para a insero de um firewall e proporcionar possibilitar uma segurana maior de todo projeto; -O protocolo do AM e o Arduino podem ser alterados para responder a possveis erros de comunicao. -Alterao do sistema AM para suportar outros dispositivos como, por exemplo: sensor de presena, sensor de luminosidade, motor shield, dentre outros.

57

REFERNCIAS

MURATORI, Jos Roberto; FORTI, Jos Cndido; OMAI, Paulo. Associao Brasileira de Automao Residencial: Home Cabling Training Manual. 2004. BOLZANI, Caio Augustus M. Residncias Inteligentes. So Paulo: Livraria da Fsica, 2004. MEYER, Gordon. Smarth Home Hacks: Tips & Tools for Automating Your House. Sebastopol: OReilly Mdia, 2004. NOGUEIRA. Oracy. Pesquisa Social. So Paulo: Nacional, 1964. GIL, Antnio Carlos. Mtodos e Tcnicas de Pesquisa Social. So Paulo: Atlas, 1995. LACOMBE, Francisco Jos Masset. Dicionrio de Administrao. So Paulo: Saraiva, 2004. ELSENPETER, R. C.; VELTE, T. J. (2003) Build Your Own Smart Home, McGraw-Hill / Osborne. ABI RESEARCH. Home-Page. Disponvel em <http://www.abiresearch.com/products/market_research/Home_Automation_and_Control/> Acesso em 14 Abril. 2012. PEREIRA, Luiz Antnio de morais. Automao Residencial: rumo a um futuro pleno de novas solues, So Paulo, 2007. VARGAS, A. A. (2004) Estudo sobre Comunicao de Dados via Rede Eltrica para Aplicaes de Automao Residencial/Predial, Universidade Federal do Rio Grande do Sul. Projeto final de Graduao. TERUEL, Evandro Carlos, Automao residencial: pesquisa quantitativa para conhecer a necessidade do cliente, Anais do II Workshop de Ps- Graduao e pesquisa do CEETEPS, p. 2-4, 2007. SILVA, Lus Filipe Gomes, Automao em ambientes residenciais, Universidade de Aveiro 2008. WIKIPEDIA. Home-Page. Disponvel em <http://www.wikipedia.org/> Acesso em 12 de Abril. 2012. SPARKFUN, Home-Page. Disponvel em <http://www.sparkfun.com/> Acesso em 15 de Abril 2012.

58

TELECO. Home-Page. Disponvel em < http://www.teleco.com.br/ncel.asp> Acesso em 12 de Abril. 2012. ANATEL. Home-Page. Disponvel em < http://www.anatel.gov.br/> Acesso em 12 de Abril. 2012. AVELLAR DUARTE. Home-Page. Disponvel em < http://www.avellareduarte.com.br/projeto/dispositivosMoveis/dispositivosmoveis_estatisticas.ht m> Acesso em 12 de Abril. 2012. IDC. Home-Page. Disponvel em <http://www.idcbrasil.com.br/default2.asp?ctr=bra> Acesso em 14 de Abril. 2012. COMSCORE DATA MINE Home-Page. Disponvel em <http://www.comscoredatamine.com/2012/04/android-captures-majority-share-of-ussmartphone-market/> Acesso em 12 Abril. 2012. AURESIDE, Home-Page. Disponvel em <http://www.comscoredatamine.com/2012/04/android-captures-majority-share-of-ussmartphone-market/> Acesso em 12 Abril. 2012. TIC DOMICILIOS, Home-Page. Disponvel em <http://cetic.br/usuarios/tic/2010/apresentacao-tic-domicilios-2010.pdf> Acesso em 12 de Abril. 2012. PC WORLD, Home-Page Android Market Tops 400.000 Apps. Disponvel em <http://www.pcworld.com/> Acesso em 13 de Abril. 2012. PC WORLD BRASIL, Home-Page <http://pcworld.uol.com.br/reviews/2011/02/25/motorolaxoom-primeiro-tablet-com-android-3-0-impressiona/> Acessado em 20 de Abril, 2012. CORREIO DO ESTADO, Home-Page. Disponvel em <http://www.correiodoestado.com.br/noticias/ate-2014-40-milhoes-de-lares-terao-bandalarga_123199/> Acesso em 12 de Abril. 2012. BUSINESSWEEK, Home-Page. Google Buys Android for its Mobile Arsenal 2005-08-17. Disponvel em <http://www.businessweek.com/> Acesso em 13 de Abril. 2012. ANDROID DEVELOPER, Home-Page. Disponvel em <http://developer.android.com/index.html> Acesso em 22 de Abril. 2012. HTC, Home-Page. Disponvel em < http://www.htc.com/www/about/?id=66338&lang=1033> Acesso em 20 de Abril, 2012. DALVIK, Home-Page. Disponvel em <http://www.dalvik.com/> Acesso em 20 de Abril, 2012. PEROZZO, Reiner F; PEREIRA, C. E. Ambientes Inteligentes: uma arquitetura para cenrios de automao predial/residencial baseada em experincias. In: TIC 2007 - III Encontro de Tecnologia de Informao e Comunicao na Construo Civil, 2007, Porto Alegre. Anais do

59

TIC 2007 - III Encontro de Tecnologia de Informao e Comunicao na Construo Civil, 2007. EUZBIO, Michel Vinicius de Melo; PEREIRA, DroidLar - Automao residencial atravs de um celular Android. TCC UFSC , So Jos, SC agosto/2011. KALATEC HOME, Home-page. Disponvel em < http://www.kalatechome.com.br/ > Acesso em 22 de Abril de 2012.

APNDICE 1

Arduino Manager

Lista de requisitos funcionais RF01- O sistema deve permitir a persistncia de dispositivos Arduino cadastrados, assim como seus respectivos IPs e Portas de comunicao. RF02- O sistema deve permitir a persistncia de dispositivos mapeados no Arduino, assim como seus respectivos tipos e pinos digitais ou analgicos de comunicao. RF03- O sistema deve possibilitar o controle dos dispositivos mapeados no Arduino (Envio e recepo de dados em relao aos dispositivos). RF04- O sistema deve incluir uma opo de sincronismo com o Arduino, onde o sistema ir detectar os dispositivos mapeados no Arduino para possibilitar o controle dos mesmos. RF05- O sistema deve permitir a incluso, alterao e excluso manual de dispositivos j cadastrados e armazenados no sistema.

60

RF06- O sistema deve permitir a atualizao das informaes referentes aos dispositivos Arduino cadastrados no mesmo. RF07- O sistema deve possibilitar o controle de dispositivos receptores e atuadores. RF08- O sistema deve possibilitar o controle de pelo menos trs dispositivos distintos. RF09- O sistema deve disponibilizar na tela principal uma lista de todos os dispositivos disponveis para controle. RF10- O sistema deve promover um protocolo de comunicao com o Arduino.

Lista de requisitos no funcionais RNF01- O sistema deve ser desenvolvido para o sistema operacional Android 2.2. RNF02- O sistema deve utilizar o banco de dados SQLite do Android para possibilitar um ambiente de boa performance. RNF03- O sistema deve possibilitar o controle via 3G. RNF04- O sistema deve possibilitar o controle dos dispositivos via Internet e protocolo HTTP

Diagrama de Pacotes

61

class Design Model DAO HTTP

BaseDAO

Dispositiv oAdapter

ExecutaComandosHttp

Dispositiv oDAO

POJO

UI

Dispositiv o

ArduinoSyncUI

ControladorLedsUI

ControladorSensorUI

ControladorLedsUI

ControladorRelayUI

Main

Dispositiv oUI

Diagrama de Casos de Uso

62

uc Use Case Model

Adicionar Dispositiv os Manualmente

Exibir Lista de dispositiv os invokes

invokes

Sincronizar Arduino

invokes

User

invokes Controlar Dispositiv os invokes

invokes Excluir Dispositiv os

Editar Dispositiv o

Diagrama de classes

63

class Domain Obj ects

Dispositiv o use

use interface BaseAdapter use use

Dispositiv oDAO

Implements

use

BaseDAO DipositioAdapter

use

Dispositiv oUI

Main

use

ArduinoSyncUI

ControlarLedsUI

ControlarRelayUI

ControlarSensorUI

use

use

use

use

ExecutaComandosHttp

64

Detalhamento das Classes:

Dispositivo: Esta classe responsvel por criar uma abstrao do dispositivo mapeado no Arduino. Ela utilizada como um DTO (Data Transfer Object). DispositivoDAO: Classe responsvel pelo acesso ao banco de dados SQLite, atualizando, excluindo ou inserindo na base de dados alm de converter os dados da tabela em objetos. Interface Base Adapter: Esta interface fornecida pelo sistema Android, utilizada para facilitar o desenvolvimento das aplicaes que utilizam o SQLite atravs da implementao do padro de projeto Adapter. BaseDAO: Classe responsvel por criar a base de dados a as suas respectivas tabelas. DispositivoAdapter: Esta classe estende a classe BaseAdapter, ela cria um adaptador para a interao entre a lista de dispositivos da tela principal e os dados da tabela SQLite. Main: Classe principal do sistema, ela realiza o carregamento da tela principal e dos componentes , carrega a lista de dispositivos e chama as outras telas do sistema. DispositivoUI: Activy responsvel por controlar a tela para adicionar o dispositivo manualmente. ArduinoSyncUI: Activy responsvel por controlar a tela de sincronismo do Arduino Manager e o Arduino. ControlarLedsUI: Activy responsvel por controlar a tela de controle de leds. ControlarRelayUI: Activy responsvel por controlar a tela de controle do rel. ControlarSensorUI: Activy responsvel por controlar a tela de controle do Sensor. ExecutaComandosHttp: Classe responsvel por se comunicar com o Arduino, envia e recebe comandos via HttpUrlConection.

65

Detalhamento de casos de uso

Caso de uso Adicionar Dispositivo Manualmente: Este caso de uso viabiliza a insero na base de dados de um dispositivo que est mapeado no Arduino, de forma manual, ou seja, sem precisar sincronizar com o Arduino.

Tela:

Detalhamento:
1- O usurio entra com os valores: Nome:String , Tipo:String , Pino:String. 2- O usurio confirma ou cancela a insero do dispositivo no banco de dados. 2.1 - O usurio confirma a insero. 2.2- O sistema valida os dados. 2.3 O sistema insere o dispositivo na base de dados, atualiza a lista de dispositivos, fecha a activy e volta para a tela principal. 3- Caso o usurio cancela a insero, o sistema fecha a activy e volta para tela principal. 4- O caso de uso termina.

66

Caso de uso Exibir lista de dispositivos: Este caso de uso executado automaticamente no momento em que o usurio inicia a aplicao, ele exibe todos os dispositivos armazenados no banco de dados SQLite do Android, desta forma possvel visualizar na tela principal, os dispositivos mapeados no Arduino. Tela:

Detalhamento:
1- O usurio inicia o sistema. 2- O sistema recupera do banco de dados a lista de dispositivos armazenados 3- O sistema exibe na tela principal a lista de dispositivos 4- O caso de uso termina.

Caso de uso Sincronizar Arduino: Este principal caso de uso do sistema, consiste em um processo de sincronizao entre o sistema Android (Arduino Manager) e o Arduino. Ele recupera do Arduino uma lista de dispositivos armazenados, e em seguida, quebra a string separando os dispositivos e suas configuraes e insere no banco de dados esses dados.

67

Tela:

Detalhamento:
1- O usurio aciona a opo Sincronizar Arduino. 2- O sistema exibe tela solicitando informaes para o sincronismo. 3- O usurio entra com os dados solicitados, IP e Porta de comunicao com o Arduino. 4- O usurio confirma a sincronizao atravs da opo Sincronizar. 5- Caso o sistema possua uma lista de dispositivos no SQLite, ele deleta a lista atual. 6- Caso o sistema no possua ainda uma lista de dispositivos armazenados no SQLite, ele realiza o processo de sincronizao 7- O sistema envia uma requisio para o Arduino. 8- O Arduino, responde a requisio do Android enviando uma lista de seus dispositivos mapeados segundo um protocolo de comunicao estabelecido. 9- O sistema Android recupera a lista do Arduino. 10-O sistema Android valida e quebra a lista de dispositivos e organiza os dados para insero 11-O sistema insere no SQLite os dispositivos recuperados 12-O sistema atualiza a lista de dispositivos na tela principal. 13-O sistema fecha a activy de sincronismos e volta para a tela principal. 14-O sistema exibe mensagem informando que o sistema foi sincronizado com sucesso.

68

15-O caso de uso termina.

Caso de uso Controlar dispositivos: Este caso de uso responsvel por controlar os dispositivos no Arduino atravs do Android. Para cada tipo de dispositivos, exibe uma tela de controle apropriada. Com isso, o usurio pode interagir com os dispositivos do Arduino, acionando ou desligando os mesmos ou at mesmo receber informaes como o caso do sensor de temperatura.

Tela 1:

Tela 2:

69

Tela 3:

Tela 4:

Detalhamento:
1- No momento em que o usurio seleciona o dispositivo, o caso de uso inicializado. 2- O sistema recupera o dispositivo da lista de dispositivos. 3- O sistema exibe a tela de controle com as opes Controlar, Editar e Excluir. 4- Se o usurio selecionar controlar, o sistema valida o tipo de dispositivo e exibe a tela de acordo com o dispositivo selecionado. 5- Se for um sensor, a tela de controle a tela 2. 5.1- O sistema exibe uma tela com as opes Atualizar e Cancelar.

70

5.2- Caso o usurio selecione Atualizar, o sistema recupera a informao do sensor de temperatura e exibe na tela. 5.3- Caso o usurio acione o boto cancelar, o sistema fecha a tela de controle e volta para tela principal. 6- Se for um led, a tela de controle a tela 3. 6.1- O sistema exibe uma tela com as opes Ligar/Desligar e Cancelar. 6.2- Caso o usurio aciona o boto ligar/Desligar, o sistema envia o comando para o Arduino para o acionamento do dispositivo. 6.3- Caso o usurio acione o boto cancelar, o sistema fecha a tela de controle e volta para tela principal. 7- Se for um rele, a tela de controle a tela 4. 7.1- O sistema exibe uma tela com as opes Ligar/Desligar e Cancelar. 7.2- Caso o usurio aciona o boto ligar/Desligar, o sistema envia o comando para o Arduino para o acionamento do dispositivo. 7.3- Caso o usurio acione o boto cancelar, o sistema fecha a tela de controle e volta para tela principal.

Caso de uso Excluir: Este caso de uso exclui um dispositivo do SQLite do android. Tela:

Detalhamento:
1- Ao selecionar a opo Excluir na tela de controle, o caso de uso iniciado. 2- O sistema recupera os dados do dispositivo selecionado na lista de dispositivos da tela principal. 3- O sistema exclui o dispositivo do bando de dados SQLite.

71

4- O sistema atualiza a lista de dispositivos da tela principal. 5- O sistema fecha o popUp de controle. 6- O sistema volta para a tela principal. 7- O caso de uso termina.

Caso de uso Editar: Este caso de uso responsvel por possibilitar a edio dos dispositivos armazenados no SQLite do android. Tela:

Detalhamento:
1- Ao selecionar a opo Editar na tela de controle, o caso de uso iniciado. 2- O sistema recupera os dados do dispositivo selecionado na lista de dispositivos da tela principal. 3- O sistema aciona a tela do caso de uso Adicionar Dispositivos Manualmente. 4- O sistema preenche os campos da tela com os dados recuperados. 5- O usurio poder alterar os dados do dispositivo. 6- Caso o usurio selecione a opo confirmar, o sistema valida as informaes e em seguida ele atualiza o dispositivo na base de dados SQLite e fecha a tela de edio e volta para a tela principal. 7- Caso o usurio selecione a opo cancelar, o sistema fecha a tela de edio e volta para a tela principal. 8- O caso de uso termina.

72