You are on page 1of 78

UNIVERSIDADE DE SO PAULO

ESCOLA DE ENGENHARIA DE SO CARLOS


DEPARTAMENTO DE ENGENHARIA ELTRICA

Automao Residencial de baixo custo por meio de


dispositivos mveis com sistema operacional
Android

Autor:

Lucas Bragazza Beghini

Orientador: Prof. Dr. Evandro L. L. Rodrigues

So Carlos
2013

Lucas Bragazza Beghini

Automao residencial de baixo


custo por meio de dispositivos
mveis com sistema operacional
Android

Trabalho de Concluso de Curso


apresentado Escola de Engenharia de So
Carlos, da Universidade de So Paulo

Curso de Engenharia Eltrica com nfase


em Eletrnica

ORIENTADOR: Prof. Dr. Evandro Lus Linhari Rodrigues

So Carlos
2013

AUTORIZO
A REPRODUO
TOTAL
OU
PARCIAL
DESTE
TRABALHO,
POR
QUALQUER
MEIO
CONVENCIONAL
OU
ELETRNICO, PARA FINS DE ESTUDO E PESQUISA, DESDE QUE
CITADA A FONTE.

Agradecimentos
A Deus, por sempre me dar foras para superar os obstculos encontrados.
A meus pais, pelo apoio incondicional em todos os momentos, e por terem
fornecido todo o suporte necessrio para minha formao.
A todos os meus familiares, em especial minha tia Lucia, pelos conselhos e
auxlio na reviso dos textos, e a meu tio Bruno, pelas discusses sempre pertinentes
sobre o tema e pelo emprstimo de sua cmera IP pessoal.
minha namorada, Samara, por todo o carinho e pelo auxlio com a reviso de
textos e formatao desta monografia.
A meu orientador, Evandro, pelos conselhos, cobranas e ensinamentos, e por
sua competncia em ministrar a matria "Aplicao de Microprocessadores II", que foi
de fundamental importncia para realizao deste trabalho.
A meus amigos, por tornarem esses 5 anos de graduao ainda mais
especiais.
A todos vocs, o meu sincero obrigado.

Resumo
O objetivo deste trabalho foi a implementao de um sistema de automao
residencial de baixo custo, utilizando um Arduino Uno como central de automao,
com acesso via internet de qualquer lugar mundo. Foi desenvolvido um aplicativo para
celulares com sistema operacional Android, capaz de controlar alguns processos de
uma residncia de acordo com as necessidades do usurio, tais como: controle de
alimentao de animais de estimao, sistemas de iluminao e alarme. Para criao
do aplicativo foi utilizado o App Inventor, que possui uma interface grfica de
programao, possibilitando aos usurios sem experincia com programao em
linguagem Java, o desenvolvimento de aplicativos. O binmio custo-benefcio foi
alcanado indicando que o valor agregado dos benefcios aos usurios tais como:
praticidade, segurana e simplicidade, na execuo das tarefas com baixo custo de
investimento, seja o principal estmulo para investimentos em melhorias na automao
residencial.

Palavras-chave: Automao Residencial, Arduino, Ethernet Shield, Android, App


Inventor

Abstract
The objective of this work was the implementation of a low cost home
automation system, using an Arduino Uno as central automation, with access through
the Internet from anywhere in the world. It was developed an application for mobile
phones with Android operating system, capable to control some processes of a
residence according to user needs, such as :control of feeding pets, lighting and alarm
systems. To create the application was used App Inventor, which has a graphical
interface programming, enabling users without programming experience in Java
language, application development. The cost-benefit was achieved indicating that the
value of user benefits such as convenience, security and simplicity, in performing the
tasks with low investment cost, be the main stimulus for investments and
improvements in home automation systems.

Keywords: Home Automation, Arduino, Ethernet Shield, Android, App Inventor

Lista de Figuras
Figura 2.1 - O projeto .................................................................................................. 21
Figura 2.2 - Arduino Uno............................................................................................. 22
Figura 2.3 - Arduino Uno e Ethernet Shield................................................................. 25
Figura 2.4 - Interface de Programao ....................................................................... 26
Figura 2.5 - Intranet e Internet .................................................................................... 27
Figura 2.6 - Hierarquia de domnios ............................................................................ 29
Figura 2.7 - Funcionamento do servidor...................................................................... 30
Figura 2.8 - Tela de desenvolvimento do aplicativo .................................................... 32
Figura 2.9 - Editor de blocos do App Inventor ............................................................. 33
Figura 2.10 a) Encapsulamento
b) Circuito integrado .......................... 35
Figura 2.11 - Representao do motor de passo unipolar ........................................... 36
Figura 2.12 - Representao do motor de passo bipolar ............................................. 37
Figura 2.13 - Constituio de motores de im permanente ......................................... 37
Figura 2.14 - Sequncias de acionamento .................................................................. 38
Figura 3.1 - Redirecionamento de fluxo pelo no-ip ...................................................... 40
Figura 3.2 - Regra de roteamento ............................................................................... 41
Figura 3.3 - Atualizao do DDNS .............................................................................. 41
Figura 3.4 - Circuito para controle de lmpadas.......................................................... 42
Figura 3.5 - Interruptor paralelo e rel ......................................................................... 43
Figura 3.6 - Circuito de implementao do alarme ...................................................... 44
Figura 3.7 - Fluxograma para alimentao via internet ............................................... 47
Figura 3.8 - Cmera IP ............................................................................................... 48
Figura 3.9 - Esquema de ligao motor de passo ....................................................... 49
Figura 3.10 - Desenho ilustrativo do sistema de alimentao ..................................... 49
Figura 3.11 - Telas de interao com o usurio .......................................................... 50
Figura 4.1 - Amostra da pgina ................................................................................... 55
Figura 4.2 - Aplicativo em funcionamento ................................................................... 57

Lista de Siglas
CLPs (Controladores Lgicos Programveis)
PC (Personal Computer)
LED (Light Emitting Diode)
LCD (Liquid Crystal Display)
KB (Kilobyte)
ARM (Advanced RISC Machine)
SRAM (Static Random Access Memory)
SPI (Serial Peripheral Interface)
TCP/IP (Transmission Control Protocol) / IP (Internet Protocol)
SMTP (Simple Mail Transfer Protocol)
FTP (File Transfer Protocol)
HTTP - (HyperText Transfer Protocol)
DNS (Domain Name System)
gTLDs (Generic Top Level Domains)
ccTLDs (Country Code Top Level Domains)
DDNS (Dynamic Domain Name System)
DHCP (Dynamic Host Configuration Protocol)
MIT (Massachusetts Institute of Technology)
USB (Universal Serial Bus)
PIR (Passive Infrared)
PIC (Peripherical Interface Controller)
SMS (Short Message Service)
IDE (Integrated Development Environment)

SMTP (Simple Mail Transfer Protocol)


TLS (Transport Layer Security)
SSL (Security Sockets Layer)
GSM (Global System for Mobile Communications)

Sumrio
1.Introduo................................................................................................................ 17
1.1

Objetivos ................................................................................................... 20

2. Embasamento Terico ............................................................................................ 21


2.1 Arduino.......................................................................................................... 21
2.2 Ethernet Shield.............................................................................................. 23
2.3 Interface de Programao ............................................................................. 25
2.4 Acesso externo ao Arduino ........................................................................... 26
2.4.1 Intranet e Internet ............................................................................... 26
2.4.2 DNS e DDNS...................................................................................... 27
2.5 App Inventor .................................................................................................. 31
2.6 Sensor PIR.................................................................................................... 34
2.7 Motores de passo.......................................................................................... 35
3.Metodologia ............................................................................................................. 39
3.1 Configurao para acesso via internet .......................................................... 39
3.2 Controle de lmpadas ................................................................................... 42
3.3 Alarme residencial ......................................................................................... 44
3.4 - Alimentao de animais de estimao ........................................................ 47
3.5 Criao do aplicativo ..................................................................................... 50
4. Resultados e Discusses ........................................................................................ 55
5.Concluses .............................................................................................................. 61
5.1 Trabalhos Futuros ......................................................................................... 61
Referncias ................................................................................................................ 63
Apndice A -Cdigo Arduino ....................................................................................... 66
Apndice B - Projeto no App Inventor ......................................................................... 71
Anexo A - Datasheet W5100....................................................................................... 75

1.Introduo
A automao residencial, tambm conhecida como domtica, corresponde a
utilizao

das

inovaes

tecnolgicas

para

satisfazer

as

necessidades

e,

principalmente, o conforto dos integrantes de determinada habitao. A palavra


domtica tem origem na palavra latina "Domus" que significa "Casa", unida a palavra
"Robtica", que a automatizao e controle de qualquer processo. A rea est em
crescente evoluo nas ltimas dcadas, auxilada pelo avano da tecnologia e
aproximao da mesma com atividades ligadas ao cotidiano. Tem como principal
origem

automao

industrial,

enriquecida

com

surgimento

dos

CLPs

(Controladores Lgicos Programveis) durante a dcada de 60. Dessa maneira, a


domtica permite ao usurio controlar dispositivos eletrnicos de sua residncia
atravs de interfaces de controle (EUZBIO, M. V.M. & MELLO, E. R., 2013).
Algumas

empresas

de

tecnologia

buscaram

transferir

crescente

desenvolvimento da microeletrnica para aplicaes em residncias de modo a


oferecer solues para automatizao de processos afetos a rea. Contudo,
perceberam que para a implementao da automao residencial imprescindvel que
todo o sistema funcione com bom nvel de robustez, principalmente com relao a
segurana, alm de oferecer uma interface simples e objetiva de comunicao com o
usurio, considerando que este no possui necessariamente conhecimento tcnico
para operar um sistema mais complexo. Devido a estes motivos, a rea da automao
residencial no acompanhou a evoluo da automao industrial, que acabou
desenvolvendo-se mais rapidamente. Segundo Bortoluzzi (2013), "a dcada de 70
pode ser considerada o marco inicial da automao residencial, quando foram
lanados nos EUA os primeiros mdulos inteligentes chamados X-10". O protocolo X10 foi desenvolvido para controle remoto de dispositivos utilizando a prpria rede
eltrica como canal de comunicao. Particularmente, esta era uma caracterstica
interessante do sistema, pois permitia o controle de dispositivos remotos sem que
fosse necessria uma alterao na infraestrutura eltrica da residncia.
Mais adiante, na dcada de 80, com a popularizao dos computadores
pessoais (PCs), pde-se pensar em um PC como central de automao. Entretanto, a
grande desvantagem desse sistema o elevado consumo, devido a necessidade de
manter o PC sempre ligado. A partir desse problema, partiu-se para o
desenvolvimento de dispositivos embarcados que os substitussem, atravs da
utilizao de microprocessadores e microcontroladores.

17

Desde ento, foram sendo incorporados alguns meios de comunicao com a


central de automao, constituda por um microcontrolador atuando em um sistema
embarcado. Com a popularizao da internet de banda larga, essa tecnologia passou
a ser altamente explorada, possibilitando tambm tcnicas de monitoramento no s
presenciais, mas tambm distncia, sendo possvel dessa forma controlar a
residncia atravs de uma Web page (CRUZ,2009). Outros meios, como por exemplo
o Bluetooth, padro de comunicao desenvolvido para integrao entre celulares e
perifricos, tambm foram incorporados, com o objetivo de, por exemplo, controlar
lmpadas pequena distncia (SILVA, B.C.R & CNDIDO, L.A.A, 2011).
Atualmente possvel compor sistemas para automao residencial com bom
nvel de controle, intermediado por sistemas embarcados cada vez mais poderosos,
com acesso remoto via internet ou via sistema de telefonia mvel. Com a crescente
popularizao de smartphones, cada vez mais estimulante a criao de aplicativos,
atravs de ferramentas acessveis ao usurio, para se controlar os processos
residenciais sem a necessidade da utilizao de um navegador para abertura de uma
Web page.
Alm disso, a integrao entre os processos a serem controlados e o
aproveitamento total da central de automao, em questo de capacidade do sistema,
so fatores importantes a serem considerados, visto que necessrio apenas uma
central para controlar vrias aplicaes, o que determina um melhor custo-benefcio do
que implement-las separadamente.
Neste contexto, a proposta deste trabalho o controle de alguns processos
residenciais escolhidos que esto presentes no dia-a-dia dos habitantes de uma
residncia, como por exemplo: controle de lmpadas, alarme e alimentao de
animais de estimao, tudo por meio de um smartphone.
O controle de lmpadas tem como principal objetivo satisfazer o conforto dos
integrantes de determinada habitao, eliminando a necessidade de se utilizar o
interruptor para tal tarefa. Ademais, pode ser utilizado tambm por questes de
segurana, acendendo a lmpada em determinada ocasio onde essa ao se faa
necessria, principalmente quando o morador se encontra ausente.
J o sistema de alarme para segurana de residncias vem ganhando bastante
mercado nos ltimos tempos devido ao aumento da violncia, principalmente nos
grandes centros urbanos. Desta forma, este trabalho prope o desenvolvimento de um
sistema de alarme residencial de baixo custo, funcionando em conjunto com as outras
18

aplicaes, e que informe ao usurio, imediatamente, em seu celular, quando houver


algum movimento suspeito no momento em que o alarme estiver ativado, alm de
disparar uma sirene de segurana.Tambm possvel ativar ou desativar este mesmo
alarme de qualquer lugar do mundo, via internet.
A terceira e ltima aplicao desenvolvida para esta monografia um sistema
de alimentao canina, ou de qualquer outro animal de estimao, via internet. A
motivao para o desenvolvimento desse sistema permitir ao dono do animal em
questo, monitor-lo a distncia e aliment-lo de acordo com a necessidade aps a
verificao, em tempo real, da quantidade de comida que ainda resta no recipiente
atravs de uma cmera.
Em Maro do ano de 2012 o americano Nat Morris criou um mecanismo de
alimentao canina via internet por intermdio do Twitter (DAILYMAIL,2012). O
sistema era composto por um microprocessador Nanode (um microprocessador de
cdigo aberto com conexo com a internet integrada, da mesma famlia do Arduino e
que utiliza tambm o ATMega328 como microcontrolador) e um motor de passo de
uma impressora HP Deskjet 500. Para que o co fosse alimentado era necessrio
apenas enviar um comando para a conta @FeedToby noTwitter. Porm, como tal
comando poderia ser enviado por qualquer pessoa, rapidamente o americano passou
a ter problemas com quantidades ilimitadas de comida, o que o obrigou a limitar as
pores em duas vezes ao dia. H tambm no mercado alimentadores baseados em
temporizadores, que, de tempo em tempo, alimentam o animal. Eles tem como
desvantagem a ausncia de um sistema de monitoramento que informe o usurio se
h comida disponvel, ou se o co est de fato se alimentando, alm de serem
alternativas de alto custo.
Portanto, a idia deste trabalho integrar o mdulo de alimentao canina
central de automao, funcionando em conjunto com as outras aplicaes, e acionado
por meio de um aplicativo prprio, controlado somente pelo seu dono e monitorado por
uma cmera que se mantm todo o tempo conectada internet. A aplicao citada, no
entanto, no foi construda, foi desenvolvida apenas a idia para a soluo.

19

1.1 Objetivos
Aproveitando a popularizao dos smartphones e tablets e as facilidades a eles
agregadas, como acesso a internet e suporte de aplicativos, o objetivo do projeto o
controle de processos residenciais, tais como: iluminao, alarme e alimentao de
animais, com baixo custo de implementao, por meio de dispositivos mveis que
utilizem o sistema operacional Android. O sistema em questo foi desenvolvido pela
Google e tem como principal vantagem o acesso livre do usurio a hardware e
software, permitindo a criao de aplicativos que atendam a uma necessidade
especfica. Tal caracterstica foi aproveitada no projeto com a criao de um aplicativo,
atravs de uma ferramenta de fcil acesso ao usurio, o App Inventor, que, em
comunicao com uma plataforma de hardware e atuadores, controle determinados
processos de uma residncia, de acordo com as necessidades do habitante.

20

2. Embasamento Terico
Neste captulo ser apresentada toda a fundamentao terica necessria para
o desenvolvimento desta monografia, bem como alguns componentes que foram
utilizados e que merecem um maior aprofundamento terico a respeito de sua
composio e funcionamento. O diagrama de blocos do sistema completo pode ser
verificado na Figura 2.1.

Figura 2.1 - O projeto

2.1 Arduino
Segundo McRoberts (2011,p.22), "O Arduino o que chamamos de plataforma
de computao fsica ou embarcada, ou seja, um sistema que pode interagir com seu
ambiente por meio de hardware e software."

Graas a esta caracterstica, sua aplicabilidade no mundo eletrnico muito


vasta, sendo possvel o controle de uma srie de dispositivos, os quais podemos citar:
sensores, motores eltricos, LEDS, displays LCD, chaveamento de transistores, dentre
outros.
21

O Arduino surgiu em 2005, na Itlia, criado por um professor chamado


Massimo Banzi, que desejava ensinar a seus alunos um pouco de eletrnica e
programao de dispositivos. Como seus alunos eram de um curso de Design, ensinlos eletrnica sem uma base construda no era uma tarefa simples. A inexistncia de
algo barato no mercado e que tivesse ferramentas poderosas, tambm dificultavam as
idias de Massimo. Devido a esses fatores, o professor, com auxlio de David
Cuartielles, decidiram criar sua prpria placa, com a ajuda do aluno de Massimo,
David Mellis, que ficou responsvel por criar a linguagem de programao do Arduino
(BOEIRA, 2013). Assim, apareceu para o mundo uma das mais populares aplicaes
de eletrnica de hoje em dia e que tem se espalhado rapidamente pelo planeta.
O fato que mais chama ateno em relao ao Arduino a liberdade dada ao
usurio. Tanto o software quanto o hardware so livres, de modo que qualquer pessoa
tenha acesso. Inclusive qualquer usurio pode desenvolver seu prprio Arduino,com a
ressalva de que no use este mesmo nome em sua placa de circuito impresso.
A Figura 2.2 mostra o Arduino Uno, um dos modelos mais simples de Arduino
existentes no mercado e utilizado neste trabalho.

Figura 2.2 - Arduino Uno (McROBERTS,2011)

22

As caractersticas do sistema so as seguintes, seguindo o site oficial do


produto (ARDUINO-1, 2013).
-Microcontrolador: ATmega328
-Tenso de operao: 5V
-Tenso de entrada(recomendada): 7-12V
-Tenso de entrada (limites): 6-20V
-Pinos de entrada/sada digitais: 14 (6 podem fornecer sada PWM (Modulao por
Largura de Pulso) )
-Pinos de entrada analogica: 6
-Corrente DC por pino de E/S: 40 mA
-Memria Flash: 32 KB
-SRAM: 2 KB
-EEPROM: 1 KB
-Frequncia de clock : 16 MHz
Embora seja limitado para aplicaes consideradas de grande porte, devido a
pouca capacidade de processamento e o baixo nmero de portas digitais e analgicas
disponveis, o Arduino Uno ainda uma ferramenta poderosa para vrios tipos de
aplicaes, alm de se tratar de uma opo vivel no mercado em termos financeiros.

2.2 Ethernet Shield


Outra vantagem do Arduino a existncia de vrios shields que permitem ao
usurio estender a capacidade do sistema ou especificar uma aplicao desejada. Os
shields so placas de circuito impresso que so encaixados placa principal e
cumprem funo especfica no sistema.
Dentro desse contexto, o Ethernet Shield, compatvel com Arduino Uno,
responsvel por fazer a conexo do Arduino com a internet, atravs de um cabo de
rede. Segundo o site oficial (ARDUINO-2, 2013), a forma de comunicao com a placa
principal feita utilizando o barramento SPI (Serial Peripheral Interface), atravs dos
pinos 10, 11, 12 e 13. No pino 10 feita a seleo do W5100, chip da WIZnet. Ele
23

fornece o protocolo TCP/IP para o Arduino na rede, possibilitando toda a comunicao


com outro dispositivo via internet (para mais detalhes ver datasheet no Anexo A).
O protocolo TCP/IP o principal protocolo de envio e recebimento de dados via
internet. Por se tratar na verdade de um conjunto de protocolos integrados, pode
tambm ser conhecido como "Pilha de Protocolos". dividido em 4 camadas distintas,
de forma a garantir a integridade dos dados que trafegam pela rede (TECHMUNDO,
2013). So as seguintes:
Camada de Aplicao: Trata-se da camada mais prxima ao usurio. Essa
camada utilizada para enviar ou receber informaes de outros programas atravs
da rede. Nesta mesma, possvel encontrar outros tipos de protocolos como SMTP
(para email), FTP (transferncia de arquivos) e o mais conhecido, HTTP (para navegar
na internet). Uma vez que os dados tenham sido processados pela camada de
aplicao, eles so enviados para a camada de transporte.
Camada de transporte: Tem por funo principal receber os dados
provenientes da camada anterior e dividi-los em blocos de dados, tambm conhecidos
como pacotes.
Camada de rede: Feita a diviso, os dados empacotados so recebidos e
anexados ao endereo virtual (IP) do dispositivo remetente e do destinatrio.
Camada de Interface: Tem por funo especificar os detalhes de como os
dados so enviados fisicamente pela rede.Os protocolos utilizados nessa camada
dependem do tipo de rede que est sendo utilizada. O tipo mais comum utilizado
atualmente o Ethernet.
Em suma, estes so os processos que ocorrem no W5100 para se receber ou
enviar um dado via internet.
Para montagem do sistema, basta encaixar o Ethernet Shield no Arduino Uno,
nos terminais correspondentes, e ligar o cabo de rede proveniente do roteador na
entrada RJ45 do shield. A Figura 2.3 ilustra o sistema j montado:

24

Figura 2.3 - Arduino Uno e Ethernet Shield (ARDUINOECIA,2013)

Pode-se observar na Figura 2.3 o Ethernet Shield encaixado sobre a placa de


Arduino Uno. Cabe ressaltar que este encaixe, conforme visto anteriormente, acaba
ocupando 4 pinos digitais do Arduino, diminuindo para 10 portas digitais disponveis a
capacidade do sistema, no caso do Arduino Uno.
O restante do processo feito via software. necessrio a incluso da
biblioteca Ethernet no cdigo e a configurao do IP que o Arduino ter na rede.

2.3 Interface de Programao


Mais uma vantagem do Arduino a interface amigvel de programao e
comunicao com o microcontrolador. A conexo feita do computador com o Arduino
via USB, permitindo o upload de programas para o AtMega328. A interface disponvel
pode ser verificada na Figura 2.4.

25

Figura 2.4 - Interface de Programao

A interface da Figura 2.4, alm das caractersticas j citadas, permite a


compilao do programa, incluso de bibliotecas e alguns exemplos de aplicaes.
Ademais, tambm permite um monitoramento da comunicao serial (Serial Monitor),
muito til para identificao de erros no cdigo, observao do comportamento do
sistema e at mesmo envio de comandos por este meio em determinada aplicao. A
linguagem de programao utilizada a linguagem C.

2.4 Acesso externo ao Arduino


A forma de acesso externo ao Arduino no um processo simples e requer
alguns conhecimentos que sero expostos a seguir.

2.4.1 Intranet e Internet

Intranet uma rede privada de uso exclusivo em determinado local, ou seja, de


acesso restrito. Pode ser usada em empresas e em residncias. Constituem a
tradicional rede local e portanto no permite acesso externo.

26

Internet a rede mundial de computadores e portanto um conglomerado de


redes locais. No possui acesso restrito e possvel acess-la externamente de
qualquer lugar do mundo.
Portanto, acessar qualquer dispositivo pela intranet ou pela internet so
processos totalmente distintos. A Figura 2.5 ilustra o processo.

Figura 2.5 - Intranet e Internet

O acesso pela Intranet exemplificado na cor vermelha, ou seja, a partir de um


computador ou dispositivo mvel, acessa-se a rede local conectando-se ao roteador,
que por sua vez envia o comando ao Arduino.
J o exemplo destacado na cor verde, um acesso pela Internet. De qualquer
lugar do mundo possvel acessar o roteador, que por sua vez envia os comandos
dados ao Arduino. Entretanto, necessrio saber qual IP o roteador e o servidor ou
domnio ligado a ele possui na rede. Esta ser uma questo abordada nos prximos
tpicos.

2.4.2 DNS e DDNS

O servio DNS (Domain Name System) utilizado para a converso de


endereos IP a partir de nomes de domnio que possuem formato numrico. Ele
elimina a necessidade de se ter que lembrar um determinado nmero para o endereo
de um site, basta lembrar o endereo tradicional, com letras do alfabeto. Em outras
palavras, h duas formas de acessar uma pgina na internet: pelo nome de domnio
ou pelo endereo IP dos servidores nos quais ela est hospedada. Para tornar
27

desnecessria a digitalizao da sequncia numrica no navegador sempre que se


quiser visitar um site, o DNS realiza a tarefa de traduzir as palavras que compem a
URL para o endereo IP do servidor, direcionando assim, o usurio para o local
desejado.
A forma de se implementar este servio ocorre por meio de vrios bancos de
dados espalhados ao redor do mundo, de forma que, quando se digita algum endereo
no navegador, solicita-se aos servidores de DNS do respectivo provedor de internet
(ou outros que se tenha especificado) que encontre o endereo IP associado ao
referido domnio. Caso estes servidores no tenham esta informao, eles se
comunicam com outros que possam ter.
Com o objetivo de tornar esse processo de busca mais prtico, foram criados
nveis hierrquicos para os domnios. O primeiro nvel, e mais importante, o
chamado Servidor Raiz (Root Server). A sua funo responder diretamente s
requisies de registros da zona raiz, retornando uma lista dos servidores de nome
designados para o domnio apropriado. Atualmente, existem 13 servidores deste tipo
no mundo inteiro, sendo que 10 deles esto nos Estados Unidos ( 2 na Europa e 1 na
sia). Em caso de falha de algum deles, os outros garantem a integridade do sistema.
A hierarquia seguida com domnios que apresentam extenses grafadas como:
.com, .net, .org, .info, .edu e outros. Estas so chamadas de gTLDs (Generic Top
Level Domains).H tambm terminaes relacionadas a pases, chamadas de ccTLDs
(Country Code Top Level Domains)I, como por exemplo: .br para o Brasil, .ar para a
Argentina, .fr para a Frana e assim por diante (INFOWESTER,2013). A Figura 2.6
ilustra o nvel hierrquico mencionado e o exemplo da posio no organograma do site
(REGISTRO, 2013).

28

Figura 2.6 - Hierarquia de domnios (REGISTRO, 2013)

Dessa forma, caso o servio de DNS do provedor de internet no encontre o


domnio desejado, ele direcionar a busca a um Servidor Raiz que, por sua vez,
direcionar ao nvel hierrquico imediatamente inferior, e assim sucessivamente at
encontrar o domnio especificado. O servio do provedor de internet ento armazena
esse endereo em um cache de DNS. Assim no necessrio fazer uma nova busca
caso solicitado novamente o mesmo domnio.
Um outro fator a ser considerado que, geralmente, clientes de provedores de
internet no possuem IP fixo. Essa uma exclusividade de empresas,instituies de
ensino ou de outras entidades que necessitam deste fator. O problema que sem um
IP fixo, impossvel o acesso externo (via internet), j que o servidor DNS aponta para
um IP especfico e se este mudar constantemente, os dados DNS deixam de ser
vlidos. A soluo para este impasse o uso do DDNS (Dynamic Domain Name
System).

29

O funcionamento do DDNS ocorre da mesma forma que o servidor


DNS,fornecendo um banco de dados contendo as relaes entre o domnio e os
endereos numricos. A diferena que agora este banco de dados pode ser
atualizado a pedido do proprietrio do domnio. O proprietrio do domnio acessa o
servidor DDNS que por sua vez envia informaes do IP do domnio ao servidor DNS.
Analisando sob outro ponto de vista, o servidor DDNS uma ponte entre o
cliente e o domnio a ser acessado, no caso deste trabalho, gerado pelo Arduino, que
viabiliza o acesso pela internet a esse dispositivo. A Figura 2.7, retirada do site
(DIPOL, 2013), ilustra bem o processo.

Figura 2.7 - Funcionamento do servidor DDNS (DIPOL,2013)

O DHCP (Dynamic Host Configuration Protocol) um protocolo cliente/servidor


que fornece automaticamente um host de IP com seu endereo IP e outras
informaes de configurao relacionados, como o gateway padro e mscara de sub-

30

rede. Em redes domsticas, configurado no roteador e fornece um endereo de IP


exclusivo para acessar aquela rede especfica.Neste trabalho, assim como no exemplo
da Figura 2.6, o servidor DDNS usado proveniente do no-ip.
O no-ip um site onde possvel alocar servidores DDNS gratuitamente. Basta
fazer o cadastro e configurar o servidor de maneira que atenda as necessidades do
usurio. Feito isso, basta acessar no navegador o endereo configurado para o
servidor criado no site e o trfego ser direcionado ao domnio gerado pela sua rede
domstica, que neste caso contemplada pelo Arduino e o Ethernet Shield.

2.5 App Inventor


O App Inventor uma ferramenta para criao de aplicativos que possui uma
interface grfica de programao, possibilitando ao usurio sem experincia com
programao em linguagem Java, desenvolver aplicaes para dispositivos com
sistema operacional Android. Foi originalmente colocado a disposio pela Google em
Dezembro de 2010 e repassada ao MIT (Massachusetts Institute of Technology), que
responsvel por manter o sistema ativo desde Dezembro de 2011.
A interface utiliza a biblioteca Java de cdigo aberto Open Blocks para criao
de um ambiente visual de programao, semelhante a um diagrama de blocos. A
biblioteca citada acima distribuda pelo MIT e proveniente das teses de mestrado de
Ricarose Roque, Professor Eric Klopfer e Daniel Wendel. O compilador que traduz a
linguagem de blocos visual para aplicao em Android utiliza a estrutura de linguagem
Kawa (linguagem de programao para plataforma Java), dentre outros dialetos da
mesma (APPINVENTOR, 2013).
Seguindo Wolber et al. (2011) o objetivo do usurio unir esses blocos em
uma espcie de "quebra-cabeas", de modo a satisfazer sua necessidade de
aplicao. Essa uma caracterstica importante do sistema, pois no permite a
alocao de determinados blocos onde no seria possvel aloc-los. A justificativa dos
criadores para o desenvolvimento da ferramenta a utilizao do sistema para se
engajar idias poderosas atravs da aprendizagem rpida e contnua.
Embora parea intuitivo, a utilizao do App Inventor ainda requer
conhecimentos bsicos de lgica de programao e um estudo detalhado dos blocos
que compem o sistema, principalmente para aplicaes com elevado grau de
complexidade.
31

Para dar incio a criao de um novo aplicativo basta acessar o site


(APPINVENTOR) e clicar na aba "Invent". Os projetos ficam hospedados na nuvem e
podem ser acessados de qualquer lugar, sendo apenas necessrio fazer login em sua
conta do Google. Na mesma pgina, pode-se ainda acessar tutoriais de
desenvolvimento, guias de iniciao, alm de um frum entre os usurios, todos estes
disponveis somente na lngua inglesa.
Aps a criao de um novo projeto, a tela inicial de desenvolvimento aparece
como na Figura 2.8. nesta onde se comea a criao do aplicativo. possvel
customizar o seu app de acordo com sua criatividade incluindo botes, imagens,
cores, telas secundrias e outros recursos que desejar. Alm disso, necessrio
incluir elementos que no esto diretamente ligados ao design do aplicativo, mas que
sero utilizados futuramente na montagem do diagrama de blocos do sistema, como
por exemplo, para o caso deste trabalho, o componente "Web" (que fornece funes
para HTTP GET) e o "TinyWebDb" (componente que se comunica com um servidor
Web para armezenar,transferir ou recuperar informaes). S possvel tratar todos
esses elementos no-visveis na montagem do diagrama de blocos, se os mesmos
tiverem sido includos nesta tela de desenvolvimento.

Figura 2.8 - Tela de desenvolvimento do aplicativo

32

Aps desenvolvida a primeira parte preciso construir o diagrama de blocos do


aplicativo, atravs da aba "Open Blocks Editor". Cada tela de desenvolvimento criada,
corresponde a uma aplicao que precisa ser desenvolvida no Editor de Blocos.
necessrio que o programa Java esteja instalado no computador. A Figura 2.9 ilustra o
ambiente de desenvolvimento.

Figura 2.9 - Editor de blocos do App Inventor

Na aba "Built-in" encontram-se todos os elementos genricos para criao da


aplicao, separados por cores de acordo com o tipo de dado para facilitar o
entendimento do usurio. Na aba "MyBlocks" esto todos os blocos referentes aos
elementos que o usurio incluiu na tela inicial de desenvolvimento. Cabe ao usurio
montar esses blocos, respeitando suas funcionalidades, para concluir a aplicao.
Aps construda a aplicao, o usurio tem duas opes para test-la. A
primeira a utilizao do emulador disponvel no prprio programa. A segunda fazer
a comunicao com o celular via USB. Neste ltimo caso, necessrio fazer o
download do aplicativo MIT AICompanion, disponvel gratuitamente na Play Store, e
pare-lo, atravs de um cdigo de segurana, com o computador.Uma vez
estabelecida a comunicao, possvel alterar o aplicativo criado no computador e
este ser modificado em tempo real no celular, otimizando os processos de testes.

33

Realizados os testes, o usurio tem mais uma vez duas opes para transferir
a aplicao definitivamente para seu smartphone. Ambas ocorrem atravs da aba
"Package for Phone" na tela inicial de desenvolvimento (Figura 2.8). A primeira
mediante a utilizao da porta USB do PC diretamente, sendo necessrio, neste caso,
estabelecer a conexo com o aplicativo MIT AICompanion, conforme descrito no
pargrafo anterior. A outra fazer o download para o computador do arquivo com
extenso ".apk" e transferir ao smartphone via Bluetooth, Email ou qualquer outro meio
de comunicao possvel entre os dois. Cabe ressaltar que ao instalar no celular o
aplicativo possvel que as configuraes de segurana do celular o bloqueiem, visto
que ele no um aplicativo proveniente da Play Store. Neste caso, ser necessrio
alterar as configuraes de segurana do celular, permitindo a instalao de
aplicativos que no so do Android Market.
De fato, o App Inventor uma ferramenta poderosa para criao de aplicativos
dos mais variados tipos. O editor de blocos contempla quase todas as caractersticas
necessrias para criao de aplicativos dos mais simples aos mais complexos. Alm
disso, a interface amigvel com o usurio constitui uma importante caracterstica do
sistema, principalmente para usurios sem experincia com programao em
linguagem Java.

2.6 Sensor PIR


O Sensor PIR (Passive Infrared Sensor) um sensor de movimento capaz de
detectar nveis de radiao infravermelha. A radiao infravermelha existe no espectro
eletromagntico com um comprimento de onda maior do que a luz visvel ao ser
humano. Portanto ela no pode ser vista, mas pode ser detectada. Objetos que geram
calor tambm geram radiao infravermelha e a estes objetos pode-se incluir animais
e o prprio corpo humano. O termo "passivo" refere-se ao fato do sensor no gerar e
nem irradiar alguma energia para o propsito de deteco.
O Sensor PIR possui um circuito integrado que tem por funo amplificar os
sinais analgicos de deteco e modular, a partir dele, um sinal de sada em nvel
digital. Assim, quando detectada a presena de um intruso, este sinal de sada
permanece em nvel alto por um determinado tempo. Caso contrrio, ele permanece
em nvel baixo. Este mesmo sinal vai para a entrada do microcontrolador, que vai
interpret-lo adequadamente. As Figuras 2.10 a) e 2.10 b) ilustram, respectivamente, o

34

encapsulamento do sensor e o circuito mencionado acima, representado pelo chip


BISS0001.

Figura 2.10 a) Encapsulamento

b) Circuito integrado

(LADYADA,2013)

Trata-se de um componente de baixo custo e alta eficincia, possuindo um


alcance de at 7 metros e um ngulo de abrangncia para deteco de movimento
superior a 100. Alm disso, por no necessitar de uma alta tenso de alimentao (de
3 a 5V) ideal para utilizao com microcontroladores PIC ou outros dispositivos do
gnero, que trabalham com tenso de aproximadamente 5V, assim como o Arduino.

2.7 Motores de passo


O motor de passo pode ser definido como um transdutor, que converte pulsos
eltricos em movimento mecnico de rotao. A rotao do eixo do motor
caracterizada por um ngulo incremental de passo, para cada pulso de excitao.
Esse ngulo incremental (que corresponde a um passo) geralmente especificado na
folha de dados do motor e repetido precisamente a cada pulso, que, por sua vez, pode
ser gerado por um circuito externo ou por um microcontrolador. O erro que possa
existir num determinado ngulo incremental, geralmente menor que 5%, e no
acumulativo.
Motores deste tipo so comumente utilizados quando a aplicao requer uma
grande preciso de posio do eixo do motor.O motor de passo possibilita um controle
de velocidade, direo e distncia, podendo em certas ocasies, dispensar-se o
controle em malha fechada (ou realimentao), bastando para tal que o torque
35

produzido pelo motor seja suficiente para movimentar a carga acoplada. O circuito
responsvel pela atuao constitudo por um circuito sequencial (controlador) e um
estgio amplificador de sada (driver).
De acordo com Jones (1998), motores de passo podem ser classificados em
dois tipos, em relao existncia ou no de derivao central nas bobinas que
compem seu enrolamento:
Unipolar : Os motores de passo unipolares so reconhecidos pela derivao central
em cada uma das bobinas que o constituem. O nmero de fases corresponde a duas
vezes o nmero de bobinas, uma vez que cada bobina se encontra dividida em duas.
Na Figura 2.11, encontra-se a representao de um motor de passo unipolar de 4
fases (1a, 2a, 1b e 2b).

Figura 2.11 - Representao do motor de passo unipolar (JONES,1998)

Normalmente, a derivao central das bobinas ligada ao positivo da fonte de


alimentao e os extremos de cada bobina so ligados seqencialmente ao terra por
um circuito apropriado (controlador mais driver), conforme o modo de acionamento
adotado, para se produzir um movimento contnuo de rotao.
Bipolar : Os motores bipolares so constitudos por bobinas sem derivao central.
Por este fato, estas bobinas devem ser energizadas de tal forma que a corrente
eltrica flua na direo inversa a cada dois passos para permitir o movimento contnuo
do rotor.Em outras palavras, a polaridade deve ser invertida durante o funcionamento
do motor, o que requer um controle apropriado e um pouco mais complexo,
geralmente realizado atravs de um circuito conhecido como Ponte H. De forma geral,
este circuito eletrnico constitudo por 4 chaves que so acionadas de modo
alternado, com a finalidade de permitir que haja a inverso de polaridade.

36

Na Figura 2.12, representa a configurao das bobinas nos motores bipolares.


Nota-se que agora tem-se o nmero de fases igual ao nmero de bobinas que
compem o enrolamento do motor.

Figura 2.12 - Representao do motor de passo bipolar (JONES,1998)

Os

motores

de

passo

bipolares

so

conhecidos

por

sua

relao

tamanho/torque: eles proporcionam um maior torque (aproximadamente 40% a mais),


comparativamente a um motor unipolar de mesmas dimenses. Tal questo se deve
ao fato de que quando se energiza uma fase, magnetiza-se ambos os plos em que a
fase (ou bobina) est instalada. Assim, o rotor sofre a ao de foras magnticas de
ambos os plos, ao invs de apenas um, como acontece no motor unipolar.
O funcionamento bsico de um motor de passo de m permanente, dispositivo
de baixo custo altamente utilizado em aplicaes no industriais, condicionado
energizao sequencial das bobinas que o constituem, conforme mencionado
anteriormente. Na Figura 2.13, observa-se a constituio de motores deste tipo.

Figura 2.13 - Constituio de motores de im permanente (KEMPER, 2013)

37

Ao energizar-se uma bobina, cria-se um campo magntico que atrai o plo


magntico contrrio do im localizado no rotor. Quando se desliga essa primeira
bobina e energiza-se a prxima, o im do rotor segue esse campo magntico e d um
passo no sentido desejado. H ainda outras alternativas de controle, ao invs de
apenas se energizar uma bobina por vez, como por exemplo a tcnica de meio passo
(Half Step). Na Figura 2.14, ilustra-se a sequncia de acionamento por meio passo e
passo inteiro para motores bipolares e unipolares.

Figura 2.14 - Sequncias de acionamento (BRITES, F.G & SANTOS, V.P.A, 2008)

Existem tambm outros tipos de motores de passo diferentes do motor de im


permanente, como o motor de relutncia varivel e o motor de passo hbrido, que no
sero abordados nesta monografia.

38

3.Metodologia
Para as aplicaes descritas nessa seo, foi inicialmente construda uma
pgina, desenvolvida diretamente na interface de programao do Arduino, em
linguagem HTML, para ilustrar e implementar a aplicao de um controle de lmpadas,
com botes de controle, de forma a ligar/desligar cada uma delas por meio da intranet
e, posteriormente, da internet. O intuito principal da criao desta pgina foi obter uma
maior familiarizao com o Arduino e compreender as dificuldades envolvidas no
processo de execuo de comandos e respostas por meio da internet. Entretanto, este
no o objetivo principal desta monografia, e, aps validadas as questes j citadas,
foi desenvolvido um aplicativo para Android objetivando no somente o controle de
lmpadas, j implementado anteriormente, como tambm o controle de outros dois
processos de uma residncia: alarme e alimentao de animais de estimao, de
acordo com a necessidade do usurio.
O conceito principal de funcionalidade do sistema, de forma geral, simples:
cada boto de controle, inserido no aplicativo, controla, de qualquer lugar do mundo,
uma ou mais sadas digitais do Arduino que, com auxlio de circuitos auxiliares,
realizam a ao desejada. Alm disso, o Arduino envia feedbacks ao usurio,
informando qual o estado atual de cada aplicao.
Nesta seo, sero aprofundados estes conceitos, descrevendo e detalhando os
mtodos utilizados para realizao das aplicaes mencionadas, bem como a forma
de configurao do no-ip e roteador para o acesso externo, alm da criao do
aplicativo com auxlio do App Inventor.
O software desenvolvido no Arduino e o projeto no App Inventor, encontram-se
nos Apndices A e B, respectivamente.

3.1 Configurao para acesso via internet


Para o acesso ao Arduino via internet com auxlio do no-ip necessria a
realizao de alguns passos que sero descritos a seguir. Primeiramente, importante
frisar que a porta recomendada pelo no-ip a porta 80, a padro de comunicao.
Contudo, alguns provedores de internet bloqueiam esta porta, justamente para que
no se possa armazenar sites em casa. Assim, caso esta no esteja disponvel,
necessrio redirecionar o fluxo de informaes para uma outra porta, que esteja

39

disponvel pelo provedor de internet. Para descobrir se uma porta est disponvel ou
no, pode-se acessar o site (CONYOUSEEME,2013) e testar a porta no espao
correspondente. O servio tentar ento "enxergar" o seu IP pblico atravs da porta
escolhida. Caso consiga, a porta est aberta pelo seu provedor de internet, caso
contrrio ser necessrio tentar uma outra porta, at que se obtenha sucesso. Aps
descoberta uma porta que esteja acessvel, executa-se o processo exemplificado na
Figura 3.1, onde o fluxo foi redirecionado para porta 8888 atravs da configurao no
site do no-ip.

Figura 3.1 - Redirecionamento de fluxo pelo no-ip

O "IP Address" o IP atual da rede domstica, descoberto automaticamente


pelo prprio site.
Aps a configurao do servidor como desejado, necessrio criar
manualmente uma regra de roteamento nas configuraes do roteador,atravs da
opo "Virtual Server". Toda informao que vier atravs da porta 8888,
redirecionada para o endereo de IP que foi configurado para o Arduino via software.
Na Figura 3.2 pode-se observar o ocorrido. O roteador utilizado foi o D-Link-524.

40

Figura 3.2 - Regra de roteamento

O endereo de IP 192.168.0.199 foi configurado no Arduino via software com


auxlio da biblioteca do Ethernet Shield, como pode ser observado no Apndice A.
Por ltimo, necessrio configurar o roteador como na Figura 3.3, para
atualizar o no-ip com o endereo de IP da rede onde se encontra o Arduino, evitando
que o acesso a ele seja bloqueado mesmo que este IP se altere.

Figura 3.3 - Atualizao do DDNS

41

Desta maneira, o roteador atualiza o no-ip periodicamente, informando qual o


IP necessrio para acess-lo.

3.2 Controle de lmpadas


Para o controle de lmpadas utilizou-se o circuito da Figura 3.4.

Figura 3.4 - Circuito para controle de lmpadas

Na base de Q1 encontra-se uma sada digital do Arduino, acionada por um


boto via internet. Caso haja corrente na base do transistor (sada do Arduino em nvel
alto), este funciona como uma chave, ativando a bobina do rel U1, fechando o
contato auxiliar e, consequentemente, acendendo a lmpada. Caso contrrio, ela
permanece apagada. O diodo D1 protege o sistema contra fora-eletromotriz reversa.
O circuito da Figura 3.4 bastante comum em aplicaes envolvendo
microcontroladores. Ele permite que se controle dispositivos que demandem uma
corrente da ordem de 100 a 500 vezes maior (dependendo do ganho do transistor
utilizado) do que a corrente mxima de sada de uma porta digital do microcontrolador.
Para o caso do Arduino, por exemplo, e do BC547A, utilizado nesta monografia,
possvel controlar uma corrente de at aproximadamente 4A no coletor do transistor,
visto que cada porta digital demanda no mximo 40mA de corrente e o transistor
citado possui um ganho de corrente prximo a 100. Este fator aumenta muito a
quantidade e a variedade de aplicaes que o sistema pode suportar. Alm disso,o
42

uso deste circuito constitui tambm um importante fator de segurana, que impede um
possvel dano ao sistema. Como a tenso instantnea em uma bobina qualquer
dada pela indutncia da mesma multiplicada pela variao da corrente em funo do
tempo, e como a corrente varia muito rapidamente no indutor, esta tenso instantnea
pode assumir um valor muito grande, o que pode ocasionar os chamados surtos de
tenso, que por sua vez podem queimar o transistor ou afetar o microcontrolador. Por
isso, a utilizao do diodo D1, que impede que estes surtos cheguem ao circuito de
aplicao, mantendo sempre uma tenso de no mximo 0,7V (queda de tenso no
diodo) a mais que a fonte de alimentao na bobina, valor que o transistor suporta
sem maiores problemas.
Na prtica, recomendvel a utilizao do rel substituindo um interruptor
paralelo de forma que, ou um, ou outro, liguem ou desliguem o sistema quando for
desejado. Assim, possvel controlar as lmpadas pela internet ou da forma
convencional. O esquema de ligao proposto encontra-se na Figura 3.5.

Figura 3.5 - Interruptor paralelo e rel

Para este trabalho, foi construdo um circuito para apenas uma lmpada
independente. Contudo, o conceito extensvel a vrias lmpadas, caso este seja o
intuito do projeto.

43

3.3 Alarme residencial


O circuito utilizado para implementao do alarme pode ser observado na
Figura 3.6.

Figura 3.6 - Circuito de implementao do alarme

Para simulao de uma sirene utilizou-se um disco piezoeltrico. Trata-se de


um dispositivo simples, feito de uma fina camada de cermica, envolta por um disco
metlico. Materiais piezoeltricos, tem a capacidade produzir eletricidade quando a
eles aplicada alguma presso mecnica. O efeito contrrio tambm verdadeiro. Ao
se aplicar um campo eltrico em um material deste tipo, o mesmo muda de forma,
provocando um efeito sonoro audvel conforme o disco se deforma. Portanto, ao ser
aplicada uma tenso nos terminais de um objeto deste tipo,por meio de uma das
sadas digitais do Arduino, o disco passar a vibrar em uma nica frequncia,
produzindo sons.
Aps ter sido desenvolvido o circuito de aplicao e a parte de software para
comandar a leitura do sensor de movimento e ativao da sirene quando for detectada
a presena de intrusos, implementou-se as notificaes ao usurio quando o alarme
disparado. A priori, a inteno era utilizar as prprias notificaes do aplicativo, da
mesma forma que outros aplicativos conhecidos utilizam, como o Facebook e o

44

Whatsapp, por exemplo. Porm, embora seja uma requisio constante dos usurios
nos fruns especializados, o App Inventor ainda no possui uma forma de gerar
notificaes em tempo real. Ele no tem a capacidade de manter as aplicaes "vivas"
enquanto o celular no est sendo utilizado. Dessa forma, caso o usurio no esteja
utilizando o aparelho mvel, ele no verificaria o disparo do alarme em tempo real,
mas somente quando voltasse a utiliz-lo. Partiu-se ento para uma outra soluo que
resolvesse este impasse e o mtodo escolhido foi a utilizao do Twitter.
O Twitter uma rede social e servidor para microblogging, que permite aos
usurios o envio e recebimento das atualizaes pessoais de outros contatos (em
textos de at 140 caracteres, conhecidos como "tweets"), por meio do website do
servio, por SMS e por softwares especficos de gerenciamento. O servio gratuito
pela internet e qualquer usurio com acesso a rede ou a algum dispositivo mvel com
essa funcionalidade pode criar uma conta e usufruir do sistema sem nus financeiro.
Estima-se que atualmente cerca de 500 milhes de pessoas ao redor do mundo
utilizem a rede social.
No segundo semestre deste ano de 2013 o Twitter atualizou seu sistema para
aplicaes de celular implementando as "Notificaes Push" (em tempo real), assim
como outros aplicativos j utilizavam. Ademais, ele possui a interessante caracterstica
de poder enviar SMS do servidor diretamente para celulares tambm de forma gratuita
(por enquanto somente para as operadoras TIM e Nextel, pois as outras s permitem o
envio do SMS do celular para o Twitter, e no ao contrrio), em situaes especficas
que o usurio pode configurar dentro do prprio microblog (como menes ou tweet de
algum amigo especfico). Particularmente, esta uma caracterstica importante para a
aplicao desejada, pois elimina a necessidade de estar em um local com acesso a
internet para receber a notificao proveniente do alarme, visto que ela pode ser feita
via mensagem SMS.
Embora seja uma ferramenta interessante, o acesso ao Twitter por meio do
Arduino no um processo fcil e foi mudado recentemente. Segundo McRoberts
(2011,p.420),
A partir de 31 de agosto de 2010, o Twitter alterou sua poltica no que
se refere ao acesso ao site utilizando aplicativos de terceiros. Um
mtodo de autenticao, conhecido como OAuth, agora utilizado,
tornando muito mais difcil "twittar" diretamente a partir de um
Arduino; antes dessa alterao, esse processo era muito mais fcil.
Enviar mensagens pelo Twitter, neste momento, s possvel

45

utilizando um recurso externo. Em outras palavras, necessrio


enviar o tweet para um site, ou proxy, que twittar em seu nome,
utilizando o token OAuth (cdigo de acesso).

O protocolo OAuth fornece uma forma padronizada de acessar dados


protegidos. De fato, a biblioteca do Twitter e o cdigo exemplo, que vem inseridos com
a IDE (interface de programao) ao baix-la, no funcionam mais por esse motivo.
Assim, utilizou-se um servidor proxy para tornar possvel as postagens por meio do
Twitter.
Servidor proxy um servidor que atende a requisies repassando os dados
do cliente a frente. Um usurio conecta-se a ele, requisitando algum servio (neste
caso o acesso ao servidor do Twitter) e este repassa a requisio para o servidor
destinatrio. Um servidor proxy pode, opcionalmente, alterar a requisio do cliente ou
a resposta do servidor e, algumas vezes, pode disponibilizar este recurso sem nem
mesmo se conectar ao servidor especificado. Em redes de computadores, pode
tambm atuar como um servidor que armazena dados em forma de cache, guardando
informaes para melhorar a rapidez de conexo a servidores que j foram acessados
anteriormente.
O servidor citado como proxy o (ARDUINOTWEET,2013). O site foi
desenvolvido por um usurio do Arduino, denominado Neocat, e que utiliza seu
domnio para enviar o tweet com o protocolo de autenticao OAuth. Para enviar um
"tweet" necessrio instalar a biblioteca Twitter.h, desenvolvida por ele, substituir a
anterior e obter um token (verso criptografada do seu nome de usurio e senha),
ambos disponveis em seu site. Ainda h um exemplo de cdigo a se implementar
para "twittar". Embora dezenas de usurios utilizem este mesmo caminho para
"twittar", recomenda-se, por questes de segurana ao utilizar um servidor proxy, a
criao de um novo perfil annimo no Twitter apenas com o intuito de monitoramento
de sua residncia, assim como foi feito neste trabalho.
Realizada a conexo, configurou-se dentro do prprio Twitter a obteno de
notificaes toda vez que o perfil casamonitor, criado exclusivamente para este
projeto, mencionar o perfil pessoal do autor desta monografia. Assim, basta configurar,
via software, na IDE do Arduino, a mensagem a ser "twittada" como uma meno ao
perfil que se deseja notificar. A forma de fazer isso atravs do Twitter "@ + nome do
usurio".

46

Finalmente, necessrio baixar o aplicativo do Twitter em seu celular Android,


cadastrar sua conta pessoal no mesmo e ativar a sincronizao de conta para permitir
tambm as notificaes em tempo real.

3.4 - Alimentao de animais de estimao


Para viabilizar o desenvolvimento do sistema de alimentao via internet,
simulou-se o uso do motor de passo unipolar Mitsumi M42SP-5 (ou similar),controlado
pelo Arduino, que responsvel por abrir e fechar o compartimento onde fica
armazenada a comida do animal, despejando a mesma no recipiente adequado, a
partir de um comando dado pelo usurio ao aplicativo instalado em seu celular. Um
outro comando dado para fechar o compartimento e interromper a alimentao. Alm
disso, utilizou-se uma Cmera IP para se obter imagens do recipiente de comida,
indicando se h ou no algum alimento no mesmo. O fluxograma representado na
Figura 3.7.

Figura 3.7 - Fluxograma para alimentao via internet

Uma Cmera IP um dispositivo capaz de transmitir imagens e receber


informaes atravs da internet. Ela conectada ao roteador via Wireless (existem
tambm modelos que so conectadas por cabo de rede) e portanto tambm possui um
47

IP na rede. Conforme j foi discutido na Seo 2.4, para acess-la externamente


necessrio a utilizao de um servidor DDNS, que pode ser disponibilizado pelo no-ip.
Dessa forma, utilizou-se para acesso a cmera o mesmo procedimento descrito na
Seo 3.1, criando-se um novo Host denominado (cameracanil.zapto.org) e utilizandose, desta vez, a porta 8080 de comunicao. Portanto possvel acessar as imagens
do local onde a cmera se encontra de qualquer dispositivo que tenha conexo com a
internet, como por exemplo um smartphone, bastando acessar o domnio descrito
acima atravs do navegador. O modelo de cmera utilizado foi a Edimax IC-3110W,
semelhante ilustrada na Figura 3.8.

Figura 3.8 - Cmera IP (STARDOT,2013)

Para simulao do motor de passo, foi selecionado um motor com configurao


unipolar, que possui um controle mais fcil de ser implementado, por no necessitar
de inverso de polaridade das bobinas, conforme explicado na Seo 2.7. Foram
ligados 4 Leds, cada um a uma sada digital do Arduino, simulando as 4 bobinas de
um motor de passo, que, energizadas sequencialmente, so responsveis pelo
movimento do mesmo. Quando for necessria a troca de sentido, basta inverter a
sequncia. Entretanto, cabe ressaltar que na prtica no possvel ligar os 4 fios
provenientes das bobinas do motor direto na sada do microprocessador por questes
j apontadas anteriormente. necessrio um circuito de acionamento semelhante ao
da Figura 3.4 para cada bobina ou seno um driver que o substitua, como por exemplo
o CI ULN2003. A Figura 3.9 mostra a ligao do motor de passo Mitsumi M42SP-5
juntamente com o ULN2003. Tambm necessria uma fonte de alimentao externa
para alimentar o motor de 12 a 24VDC.
48

Figura 3.9 - Esquema de ligao motor de passo

J a Figura 3.10, representa um desenho ilustrativo (fora de escala) do sistema


de alimentao, feito a mo livre e digitalizado posteriormente, onde a central de
automao corresponde ao Arduino e o Ethernet Shield.

Figura 3.10 - Desenho ilustrativo do sistema de alimentao

49

3.5 Criao do aplicativo


Por fim, desenvolveu-se um aplicativo capaz de comandar todas as aplicaes
descritas anteriormente. Utilizou-se neste processo o App Inventor, detalhado na
Seo 2.5. As 3 telas de interao com o usurio e os respectivos componentes
utilizados para posterior tratamento no Editor de Blocos, esto representados na
Figura 3.11

Figura 3.11 - Telas de interao com o usurio

A primeira tela a tela inicial, onde ser necessrio inserir a senha do usurio
para permitir o acesso s outras telas. Dessa forma, em caso de furto do celular ou em
outra circunstncia onde o smartphone possa ficar exposto a outros indivduos,
ningum estar apto a acessar a tela principal de controle da residncia, a menos que
possua a senha do aplicativo. A senha para acesso definida no Editor de Blocos, e
para o caso desta monografia foi definida como "tcc". Em caso de senha incorreta,
exibi-se uma notificao alertando para este fato. O boto "Sair" fecha a aplicao.
A tela "Config" a tela onde ser necessrio incluir o IP pblico da rede que
hospeda o Arduino. Inicialmente, tentou-se fazer esse acesso atravs dos mtodos j
citados nesta monografia, com auxlio do no-ip. Alguns problemas, que sero
discutidos no prximo o captulo, ocorreram e foi necessrio o desenvolvimento de um
outro mtodo para substituir o servio de DDNS fornecido pelo no-ip.
Para soluo deste impasse, foi elaborada uma soluo atravs do prprio
Arduino. A nova funo designada a este consiste em acessar um site especializado
50

em descobrir IP's, periodicamente, interpretar esse dado fornecido pelo site e verificar
se o mesmo igual ou diferente do dado armazenado na memria. Se for diferente,
significa que o IP da rede mudou, e ento novamente utiliza-se o Twitter para notificar
o usurio que o IP foi modificado e qual esse novo nmero. O usurio ento,
obtendo essa informao, acessa a tela de configuraes do aplicativo a atualiza o IP
da sua rede para esse novo nmero, inserindo-o e clicando em "Submit".
O site escolhido foi o (CHECKIP,2013). Ao acess-lo, obtm-se o seguinte
cabealho no formato HTML:
<html><head><title>CurrentIP Check</title></head><body>Current IP Address:
177.34.170.35</body></html>
que pode ser decifrado de modo a se obter somente o endereo numrico do IP. O
trecho

de

cdigo

correspondente

esta

funo

foi

adaptado

do

blog

(JOSEMATM,2013).
Interpretado o IP da rede, esse dado armazenado na memria de programa
do microcontrolador do Arduino, verificando, a cada acesso ao site, se o novo valor
obtido igual ou diferente do armazenado. Em caso de diferena, esse novo valor
ser armazenado na memria de programa, mas ser ainda necessria uma
converso de tipos de dados para transmiti-lo ao Twitter. O nmero de IP devolvido
pela funo um numro de 32 bits ou do tipo uint_32 . Portanto,ser necessrio
transform-lo em 4 vetores de 8 bits (ou uint_8) e depois imprim-lo em um vetor de
caracteres (atravs da funo sprintf) antes de transmit-lo com auxlio da biblioteca
Twitter.h.
Realizada a converso de dados e a transmisso, o usurio notificado e cabe
a ele acessar o aplicativo e atualizar esta informao. No necessrio colocar este
nmero todas as vezes que abrir o aplicativo. Este nmero de IP fica armazenado no
celular, a menos que se exclua os dados do aplicativo nas configuraes do aparelho
ou que se instale o mesmo novamente. Uma vez colocado o dado e em caso de no
se ter recebido notificaes, basta teclar "ok" quando acessar a tela "Config" que o
usurio ser direcionado tela principal.
Na tela principal, encontram-se todos os comandos para as 3 aplicaes
desenvolvidas. Os botes interpretam se as sadas do Arduino esto em nvel alto ou
baixo, indicando ao usurio, por meio de cores (verde para ligado e vermelho para
desligado), qual o status de determinada aplicao. O boto "Desligar" no somente
o boto que desliga a sirene do alarme, mas tambm um indicador de status se o
51

alarme est disparado ou se est desligado, mudando de cor e indicando visualmente


ambos os casos. Por fim, para a alimentao canina, possvel acessar a cmera
localizada no canil e visualizar se h comida ou no no recipiente ou tambm se no
h nada de errado com o animal. Caso o usurio necessitar alimentar o co, basta o
mesmo clicar na imagem indicada. Se o compartimento estiver fechado, o texto da
imagem permanecer pedindo por comida. Em contrapartida, se o mesmo estiver
aberto, o co exibe uma mensagem de agradecimento. O boto de configuraes
retorna para a tela "Config" caso seja necessria alguma alterao na mesma.
Segue abaixo uma descrio de todos os componentes do App Inventor
utilizados e suas funes dentro do sistema:
Notifier: Os blocos que esto presentes nesse componente so capazes de
exibir vrios tipos de notificaes ao usurio do aplicativo, incluindo mensagens SMS
ou simples alertas na forma de texto.Foi utilizado neste projeto com a finalidade de
notificar o usurio na tela inicial, no caso deste ter inserido uma senha incorreta para
tentar acessar o aplicativo.
Tiny DB: Permite que o usurio armazene informaes dentro do prprio
aplicativo e as recupere a qualquer momento. Este recurso foi utilizado para
armazenar a IP pblica do usurio na rede e repass-la varivel "ip", utilizada na
Tela Principal. Para utilizao deste componente em telas diferentes, como aconteceu
neste estudo, foi necessrio inclu-lo em ambas, conforme observado na Figura 3.11.
Clock: Fornece ao usurio a opo de criar eventos que executem
determinada ao em intervalos regulares de tempo definidos pelo usurio. Para este
trabalho, sua funo foi prover um intervalo de tempo de 1s para se acessar o domnio
onde se encontra o Arduino (com auxlio do componente Web), de forma a permitir a
obteno da resposta das portas digitais, fornecendo o feedback para o aplicativo
periodicamente. Esse componente s funciona quando o celular est ativo, e esta
justamente a questo determinante que inviabilizou as notificaes em tempo real pelo
App Inventor.
Web: Componente que fornece funes para requisio HTTP GET e HTTP
POST. Esse foi o componente utilizado para se fazer uma requisio e acessar o
domnio gerado pelo Arduino a partir da varivel "ip".
TinyWebDB: Componente que se comunica com um domnio na internet e tem
por funo transmitir, armazenar e recuperar informaes. Foi utilizado para passar as
intrues ao Arduino, via internet com auxlio do componente Web.
52

Activity Starter: Contm funes que conseguem iniciar atividades dentro do


aplicativo, como abertura de novos cones, acionamento da cmera do aparelho,
dentre outras. Foi utilizado como um boto com o link necessrio para se acessar a
Cmera IP a partir do navegador por meio do endereo que ela possui na internet,
gerado pelo no-ip.
O projeto para cada uma das telas, com as funes fornecidas pelos
componentes citados, encontra-se no Apndice B.

53

54

4. Resultados e Discusses
Uma amostra da pgina HTML construda para testes de comandos ao Arduino
atravs da internet, pode ser visualizada na Figura 4.1.

Figura 4.1 - Amostra da pgina

O acesso ao Arduino atravs dos botes da pgina HTML foi realizado com
sucesso, sendo testado na Intranet e tambm na Internet, esta ltima forma de acesso
realizada com auxlio do no-ip, atravs do domnio (tcclucas.zapto.org), aps todo o
procedimento descrito na seo 3.1. Implementou-se tambm o circuito da Figura 3.4
para testes do acionamento de lmpadas via internet, tambm realizado com sucesso.
A respeito da confeco da pgina, esta questo no foi aprofundada por no ser o
objetivo deste trabalho. Uma vez testada a conexo com o Arduino via internet para o
acionamento de lmpadas, foi dado prosseguimento ao trabalho com a criao do
aplicativo, este sim objetivo principal do mesmo.
A respeito da criao do aplicativo, o principal problema apresentado foi
justamente o acesso externo ao Arduino. Inicialmente, foi feita a tentativa de realiz-lo
atravs do acesso ao domnio gerado pelo no-ip, de maneira anloga realizada
atravs da pgina HTML. Dessa maneira, no seria necessrio saber qual o IP do
Arduino na rede, bastava decorar o endereo do domnio, mesmo que este mudasse
com decorrer do tempo, conforme foi exposto na Seo 2.4.2. Definiu-se ento uma
varivel "ip" no Editor de Blocos da Tela Principal do App Inventor e atribuiu-se a ela o
endereo do domnio (com letras do alfabeto). Toda vez que se precisasse fazer uma
requisio ao servidor (HTTP GET), essa varivel seria chamada. Todavia, no foi
55

possvel realizar a requisio desta forma, atravs do componente Web. O indicativo


do app era de que era impossvel a obteno de uma resposta do servidor requisitado,
embora o domnio apontasse para o endereo numrico do IP pblico da rede onde se
encontra a central de automao. No entanto, quando a varivel "ip" foi colocada
diretamente na forma numrica, com o IP da rede, a requisio foi feita com
sucesso.Tratou-se portanto de um problema de DNS, onde no foi possvel traduzir o
endereo com letras do alfabeto para o formato numrico, utilizando os blocos
disponveis no App Inventor. Aps muitas pesquisas, estudo de todos os componentes
do App Inventor e contato via internet com fruns e blogs especializados no assunto,
no foi possvel solucionar essa questo.
Foi implementada uma outra soluo, j descrita na Seo 3.5, para substituir o
servio de DDNS fornecido pelo no-ip. Inicialmente, essa soluo sobrecarregou o
sistema, pois agora o Arduino teria que acessar o site que identifica o IP pblico da
rede a cada execuo do cdigo, que fica em um loop infinito, o que acarretava em
uma requisio a cada 2 segundos, aproximadamente. Dessa forma, o tempo de
resposta do sistema para qualquer requisio proveniente do aplicativo, aumentou
cerca de alguns segundos para ser processada. A soluo para este caso foi inserir
uma varivel contadora ("cont") no cdigo do programa, de modo que o site s fosse
acessado aps esta atingir um valor determinado. Assim, a requisio agora feita de
cerca de 5 em 5 minutos, evitando a sobrecarga do sistema. Um outro problema
encontrado foi que, se em alguma requisio ao site, ocorresse algum problema, ou de
origem do provedor de internet ou do prprio servidor que hospeda o site, o valor
obtido para varivel que identifica o IP da rede ("ipAtual") era 0.0.0.0. Como essa
varivel diferente daquela que estava armazenada na memria de programa, era
postada uma notificao ao usurio, atravs do Twitter, informando que o IP havia
mudado e que o novo valor era 0.0.0.0, o que obviamente no se tratava se uma
informao verdadeira. Esse problema foi solucionado criando-se uma varivel
"ipnulo" e atribuindo-se a ela o valor do IP com os zeros, de forma a s enviar a
notificao ao usurio se a varivel obtida atravs do site fosse, no somente diferente
da varivel contida na memria de programa, mas tambm diferente da varivel
"ipnulo". Ademais, a soluo de notificao ao usurio funcionou corretamente, assim
como todas as outras funcionalidades do aplicativo. Na Figura 4.2, pode-se observar o
funcionamento do mesmo.

56

Figura 4.2 - Aplicativo em funcionamento

A respeito das aplicaes desenvolvidas, cabem algumas consideraes. Em


relao ao alarme, a soluo implementada por meio de notificaes via Twitter
mostrou-se eficaz, apontando todas as vezes que o alarme foi disparado,
imediatamente. Foi feita tambm a tentativa de fazer o sistema de notificaes via
email, atravs do protocolo SMTP (Simple Mail Transfer Protocol). Trata-se de um
protocolo padro de envios de emails atravs da internet, relativamente simples, onde
um ou vrios destinatrios so especificados e depois transfere-se a mensagem. A
conexo com o servidor de email destinatrio foi realizada com sucesso, mas a
mensagem no foi transferida. Isso ocorreu devido aos servidores de email usarem
atualmente o protocolo de autenticao TLS (Transport Layer Security) ou o seu
antecessor, o SSL (Security Sockets Layer) para receber e transmitir mensagens.
Os protocolos TLS/SSL so protocolos baseados em criptografia, que
estabelecem segurana de comunicao via internet para alguns servios especficos,
como email (SMTP), por exemplo. So protocolos complexos que, por serem
57

criptogrficos, exigem uma grande capacidade de processamento e, portanto, so de


impossvel realizao em um Arduino Uno ou em qualquer outro microcontrolador de 8
bits. Contudo, cabe ressaltar que a soluo por meio do Twitter atendeu
completamente s solicitaes e que tambm possvel configurar, dentro da prpria
rede social, o envio de emails toda vez que houver uma meno de perfil, se o usurio
julgar necessrio este recurso, alm das notificaes em tempo real atravs do
aplicativo.
Tratando-se ainda da questo das notificaes, o Twitter tambm capaz de
enviar mensagens SMS gratuitamente para o nmero de celular especificado nas
configuraes da rede social, conforme mencionado na Seo 3.3. Dentro desse
contexto, o Arduino tambm possui um shield especfico para enviar SMS para
celulares.Trata-se do Shield GSM. Para o envio de mensagens, necessrio o uso de
um chip para celulares, o que acarreta custos adicionais de acordo com a operadora
escolhida. Entretanto, o uso deste shield uma alternativa interessante, pois pode
funcionar como redundncia ao sistema, em caso de alguma falha proveniente do
Twitter ou do servidor proxy que faz a requisio a este servio para o envio das
notificaes,ou para simples envio de SMS, para usurios que no possuem celulares
das operadoras TIM ou Nextel (as nicas que suportam o servio de mensagens SMS
atravs do Twitter neste momento).J para os usurios que no possuem acesso a
internet pelo seu smartphone em tempo integral, este shield de fundamental
importncia, pois as notificaes no dependero mais do acesso rede.
Finalizando a discusso a respeito do alarme residencial, cabe ressaltar que o
disco piezoeltrico para produo de sons foi escolhido apenas para efeito de
simulao, no dispondo de uma capacidade sonora suficiente para ser aplicado a um
alarme residencial. Para um melhor desempenho deste tipo de dispositivo recomendase o uso de uma outra sirene mais potente, sendo necessrio o uso de circuitos
auxiliares para sua ativao, semelhantes ao da Figura 3.4, utilizado para controle de
lmpadas.
Em relao alimentao de animais de estimao, tambm importante fazer
algumas consideraes. A escolha da Cmera IP, deveu-se, sobretudo, a substituio
de todos os sensores que seriam necessrios para monitoramento da aplicao.
Graas a sua versatilidade, possvel monitorar no somente o animal, mas tambm
se h comida no recipiente de rao e se h comida no compartimento de
alimentao, substituindo eventuais sensores que teriam que ser utilizados para essas
finalidades.O modelo de cmera descrito neste trabalho no dispe de movimento
58

mecnico e rotativo controlado via internet, mas existem determinados modelos que
possuem essa funcionalidade, essencial para monitoramento dessa aplicao.
Ademais, tambm necessria uma ateno especial ao local onde a cmera est
instalada, pois ela no possui uma resoluo adequada longa distncia,
impossibilitando uma viso ntida do sistema como um todo nessa ocasio. Se no for
possvel instal-la em local adequado para suprir essa necessidade, ser necessrio
fazer um tratamento de imagem antes da mesma chegar a seu destino final, que o
celular. Mais uma vez, esbarra-se nas limitaes de capacidade do Arduino Uno para
realizar esta tarefa, impossibilitando o usurio de realiz-la atravs deste dispositivo.
Tambm foi considerada a possibilidade de fazer um monitoramento do
recipiente de comida por meio de um sensor de fora resistivo, que identificaria, a
partir da massa total do recipiente, se seria necessrio, ou no, a alimentao do
animal. Particularmente, seria um artifcio proveitoso, pois forneceria a possibilidade
de notificar o usurio na falta de alimento. Contudo, por necessitar de testes com um
prottipo construdo, este sistema no foi implementado. Ainda assim, seria
necessria sua atuao em conjunto com a cmera, para comprovar que a notificao
no estava sendo mascarada por um peso extra no recipiente, que pode ser inclusive
o prprio corpo do animal.
Por fim, importante destacar o papel do Arduino no sistema como um
componente totalmente passivo em relao ao aplicativo que o comanda. Embora o
mesmo identifique se as portas do Arduino esto em nvel alto ou baixo, informando ao
usurio qual o estado atual das aplicaes, a requisio sempre feita a partir do
celular e nunca da central de automao. Para o Arduino fazer uma requisio ao
aparelho, necessrio um servidor intermedirio, como no caso deste trabalho, o
Twitter. Isso se deve ao fato da inexistncia de um servidor presente no celular, que
possibilitaria a comunicao direta entre ambos. J existem alguns servidores para
Android desenvolvidos, e futuramente podem ser tornar alternativas interessantes na
questo da automao residencial.

59

60

5.Concluses
A partir dos fatos relatados e resultados expostos, conclui-se que foi possvel
realizar o objetivo deste projeto atravs dos mtodos propostos. No contexto atual do
controle

de

residncias

atravs

de

sistemas

embarcados,

utilizando

microprocessadores como central de automao, o Arduino Uno mostrou ser uma


ferramenta de fcil implementao e com uma boa relao custo-benefcio para o
controle de alguns processos residenciais, embora limitado em alguns aspectos, como
capacidade de processamento de dados e portas de sada disponveis. Alm disso, a
utilizao do App Inventor para criao de aplicativos mostrou ser uma alternativa
vivel para aproximar os usurios do sistema operacional Android, que no tem
experincia em programao Java, com a criao de aplicativos, rea cada vez mais
explorada com a popularizao de smartphones e tablets.
Ademais, a rea ligada a automao residencial est em crescente evoluo, e
a tendncia a utilizao de sistemas mais robustos e com maior capacidade de
processamento de dados, integrando o maior nmero possvel de aplicaes e
fazendo com que o binmio custo-benefcio tenha cada vez mais importncia.
Em linhas gerais pode-se concluir que os benefcios gerados pelo aplicativo
com baixo custo de investimentos apontam um cenrio de possibilidades que pode ser
extendido a outros segmentos, usando sistemas similares, como por exemplo o setor
de sade: monitoramento de pacientes, de crianas e idosos, adequando-os s
necessidades de cada usurio.

5.1 Trabalhos Futuros


Para trabalhos futuros, sugere-se a utilizao de uma ferramenta com mais
recursos que o Arduino Uno, como por exemplo o Arduino Mega, que possui mais
capacidade para processamento de dados e portas de sada, a fim de que se possa
controlar mais processos residenciais. Tambm para aplicaes consideradas de
grande porte, recomenda-se o uso do Wi-fi shield, onde no necessrio a conexo
diretamente com o cabo de rede, j que a mesma feita via Wireless. A conexo via
cabo de rede pode inviabilizar aplicaes onde o Arduino necessita ficar em uma
distncia muito grande do roteador.

61

Contudo, tambm merecem ser analisadas outras plataformas de hardware e


software atuando em sistemas embarcados, como por exemplo a RaspBerryPi,
principalmente atuando em conjunto com o Arduino na central de automao.
Entretanto, essa plataforma, embora seja uma ferramenta muito mais poderosa, exige
do desenvolvedor um pouco mais de experincia em programao e um conhecimento
de Linux.
Pode-se tambm construir o sistema de alimentao canina, verificando a
questo do sensoriamento por sensores de fora resistivos e implementando
notificaes ao usurio na ausncia de comida no recipiente.

62

Referncias
APPINVENTOR. Site oficial do App Inventor. Disponvel em:
<http://appinventor.mit.edu/ > Acesso em 20.Out. 2013
ARDUINOECIA. Arduino Uno e Ethernet Shield. Disponvel em:
<http://www.arduinoecia.com.br/2013/06/ethernet-shield-wiznet-w5100-parte-1.html>
Acesso em 10 Ago. 2013
ARDUINOTWEET. Post messages from Arduino and Ethernet Shield. Disponvel
em:
<http://arduino-tweet.appspot.com/> Acesso em: 20.Out.2013
ARDUINO-1. Arduino Uno. Disponvel
em:<http://arduino.cc/en/Main/ArduinoBoardUno> Acesso em 20 Out. 2013
ARDUINO-2. Arduino Ethernet Shiled. Disponvel em:
<http://arduino.cc/en/Main/ArduinoEthernetShield> Acesso em 20 Out. 2013
BOEIRA, Marcelo. 2013. O que Arduino? Disponvel em:
< http://blog.marceloboeira.com/arduino/o-que-e/> Acesso em: 22 Out .2013
BORTOLUZZI, Matias. Blog SRA Engenharia, Histrico da automao
residencial,2013 Disponvel
em:<http://sraengenharia.blogspot.com.br/2013/01/historico-da-automacaoresidencial_10.html>. Acesso em: 10 Set. 2013
BRITES, F.G & SANTOS, V.P.A,. Motores de Passo. Universidade Federal
Fluminense.Curso de engenharia de Telecomunicaes. Programa de Educao
Tutorial.Niteri,RJ,2008.
CANYOUSEEME. Open Port Check Tool. Disponvel em:
<http://www.canyouseeme.org/> Acesso em 20.Out.2013
CHECKIP. Indentify IP Adress. Disponvel em: <http://checkip.dyndns.com/>.
Acesso em: 20.Out. 2013.
CRUZ, Renan Pontes. Desenvolvimento de um Sistema de Superviso Via Web
Aplicado Automao Residencial. Universidade Federal do Rio Grande do Norte.
Trabalho de Concluso de Curso.Natal, RN, 2009.
DAILYMAIL, 2012. Meet the dog fed his 'Tweet Treats' by contraption controlled
remotely by Twitter. Disponvel em: <http://www.dailymail.co.uk/sciencetech/article2110427/IT-geek-invents-feeds-dog-Twitter.html#ixzz2jKP3OGDR> Acesso em:
03.Ago.2013
DATASHEET W5100. Disponvel em:
(<https://www.sparkfun.com/datasheets/DevTools/Arduino/W5100_Datasheet_v1_1_6.
pdf>). Acesso em 20.Out.2013
DIPOL. Funcionamento do DDNS. Disponvel em:
<http://www.dipol.pt/o_que_e_ddns_dynamic_domain_name_system_e_como_usalo__bib93.htm> Acesso em 15. Jun. 2013

63

EUZBIO, M. V.M. & MELLO, E. R. Droidlar- Automao Residencial atravs do


celular Android. Sistemas de Telecomunicaes, Instituto Federal de Santa
Catarina.So Jos, SC, 2011.
INFOWESTER,2013. O que DNS?. Disponvel em: <
http://www.infowester.com/dns.php>. Acesso em: 15 Out. 2013
JONES, Douglas W. Control of Stepping Motors A Tutorial.The University Of Iowa
.Department Of Computer Science, 1998. Disponvel em
:<,http://homepage.cs.uiowa.edu/~jones/step/types.html>Acesso em 05.Out.2013
JOSEMATM. Actualiza tu DDNS desde Arduino. Disponvel em:
<http://www.josematm.com/actualiza-tu-ddns-desde-arduino-dyndns/> Acesso em: 09
Set.2013

KEMPER. Entendendo motores de robs. Disponvel em:


<http://www.kemper.com.br/wordpress/2011/06/30/red-%E2%80%93-entendo-osmotores-do-robo-parte-3/> Acesso em: 12.Out.2013
LADYADA. Sensor Pir. Disponvel em:<http://www.ladyada.net/learn/sensors/pir.html>
Acesso em 20. Out. 2013
MCROBERTS, Michael. Arduino Bsico. Edio original em Ingls publicada pela
Apress Inc., Copyright 2010 pela Apress, Inc.. Edio em Portugus para o Brasil
copyright 2011 pela Novatec Editora.
NO-IP. Alocao de servidores DDNS. Disponvel em: <www.noip.com> Acesso em
13 Abr. 2013
REGISTRO. Hierarquia de Domnios. Disponvel em:
<www.registrodedominios.net.br> Acesso em 07 Set. 2013
SILVA, B.C.R & CNDIDO, L.A.A. Sistema de Controle Residencial baseado na
plataforma Arduino. Trabalho de Concluso de Curso (Bacharelado em Cincia da
Computao) Instituto Unificado de Ensino Superior Objetivo, Goinia,
2011.Disponvel em: <http://pt.scribd.com/doc/80802432/Sistema-de-ControleResidencial-Baseado-Na-Plataforma-Arduino> Acesso em: 15 Out. 2013
STARDOT. Cmera IP. Disponvel em:
<http://www.stardot.com.au/accessories/webcams/ipcams.html> Acesso em:
13.Ago.2013
TECHMUNDO, 2013. O que TCP/IP?. Disponvel
em:<http://www.tecmundo.com.br/o-que-e/780-o-que-e-tcp-ip-.html> Acesso em:
13.Ago. 2013
WOLBER et al. App Inventor- Create Your Own Android App. Published by OReilly
Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. First Edition,
2011.

64

65

Apndice A Cdigo Arduino

char msg2[]="@LucasBeghini,
atualize o ip no aplicativo!";

pinMode(5, OUTPUT);//
alimentao alarme

char servidorIP[] =
"checkip.dyndns.org"; // site de

pinMode(6, OUTPUT);//sirene
alarme

detecco do ip publico
#include <SPI.h>

pinMode(3, OUTPUT);// sadas

#include <Ethernet.h>

IPAddress ipAtual;

motor de passo

#include <Twitter.h>

IPAddress ipUltimo;

pinMode(7, OUTPUT);

#include <EEPROM.h>

IPAddress ipnulo (0,0,0,0);

pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

byte mac[] = { 0xDE, 0xAD,

int buffalarme=0; // controla se

0xBE, 0xEF, 0xFE, 0xED };

alarme est ligado ou desligado

IPAddress ip(192,168,0,199);

int buffdog=0; //controla se o

como resistor de pull-down para

//ip que o Arduino ter na

compartimento est aberto ou

o PIR

Intranet

fechado

IPAddress

int i=0,j=0,passos=10;

gateway(192,168,0,1); //ip do
roteador

digitalWrite(2, LOW);//Funciona

Serial.begin(9600);
long int cont=1000000; // variavel
Ethernet.begin(mac, ip,

contadora para requisio de ip

gateway);

publico

server.begin();

int motor[]= {3,7,8,9}; // vetor que


controla sadas para o motor de
EthernetServer server(8888);

passo

//porta de acesso ao servidor

delay(1000);

EthernetClient client;
union IPAddressConverter { //
conversor para uint8 do ip
// Token para Tweetar (

uint32_t ipInteger;

http://arduino-

// leitura da EEPROM

uint8_t ipArray[4];

tweet.appspot.com/)
Twitter twitter("1673941976-

for (byte n = 0; n <= 3; n++)


ipUltimo[n] = EEPROM.read(n);

Serial.print("O IP armazenado
na EEPROM eh: ");

};

xQI9XicACAYPxMMX3g9jJdV8X

Serial.println(ipUltimo);

5dWQSzxmfXVT");
void setup()
{

char msg[] = "@LucasBeghini o


alarme foi disparado"; //
mensagem quando se dispara o
alarme

pinMode(2,INPUT); //sensor

alarme
pinMode(4, OUTPUT); // sada
lmpada

66

void loop()

Serial.println("OK.");
} else {

int sensorpir = digitalRead(2);//

if(cont==0) {

Serial.print("failed : code ");

leitura do sensor de movimento


cont=1000000;

Serial.println(status);

ipAtual = descobreIP(); //
if (sensorpir==HIGH){

descobre o ip publico da rede


onde esta o Arduino

} else {

Serial.println("alarme
Serial.println("connection

disparado");

failed.");
Serial.println(buffalarme);

if (ipAtual!=ipnulo){ // se o IP no
for nulo

if (ipAtual != ipUltimo) { // se o ip

delay(10000);

if(buffalarme==0){

mudar

if (twitter.post(buf)) { // posta

digitalWrite(6, HIGH); // dispara

no Twitter o novo Ip

sirene

if (twitter.post(msg)) { // posta

for (byte n = 0; n <= 3; n++) {

int status = twitter.wait();

EEPROM.write(n,

if (status == 200) {

ipAtual[n]);}

Serial.println("OK.");

notificao no Twitter de
disparado
int status = twitter.wait();

} else {
ipUltimo = ipAtual;

Serial.print("failed : code ");

if (status == 200) {
Serial.println("OK.");

Serial.println(status);
IPAddressConverter

ipAddress; // transforma uint32


} else {

para uint8 para enviar por Twitter

Serial.print("failed : code ");

ipAddress.ipInteger = ipAtual;

Serial.println(status);

char buf[16];

}
} else {

} else {
Serial.println("connection
failed.");
}

sprintf(buf, "%d.%d.%d.%d",
ipAddress.ipArray[0],
ipAddress.ipArray[1],

Serial.println("connection
failed.");

ipAddress.ipArray[2],

Serial.print(ipAtual);

ipAddress.ipArray[3]);// imprime
o IP em uma string

buffalarme=1;
if (twitter.post(msg2)) { // posta
}

no Twitter a msg2
int status = twitter.wait();
delay(2000);

if (status == 200) {

67

else {
Serial.println("O IP no
mudou");

Serial.println(ipUltimo);

Serial.println(ipAtual);

if (c == '\n') {

digitalWrite(4, LOW);

newLine = true;

}
if (instrucao == "ativala") {
//ativa alarme

evaluateLine(line);
digitalWrite(5, HIGH);
}

line = "";
delay(3000);

Principal();

else if (c != '\r') {

digitalWrite(6, LOW);
}
void Principal()

newLine = false;

line += c;

if (instrucao == "desaala") {

cont--;

//desativa alarme

EthernetClient client =

digitalWrite(5, LOW);

delay(3000);

server.available();
evaluateLine(line);

if (client) {
if (instrucao == "deslala") {
boolean newLine = true;

//desliga alarme

delay(1);
String line = "";

digitalWrite(6, LOW);

client.stop();
while (client.connected() &&

char c = client.read();

buffalarme=0;

client.available()) {

if (c == '\n' && newLine) {


client.println("HTTP/1.1
200 OK");

void evaluateLine(String line)


if (instrucao == "aliment") { //

abre/fecha compartimento de
client.println("Content-

if (line.startsWith("tag", 0)) {

rao

Type: text/html");
String instrucao =
client.println();

line.substring(4, 11); // Pega as 7


letras da instruo vinda do App

client.println(digitalRead(4)); // l

Serial.print (line);

if (buffdog==0){

as portas do Arduino ou
variaveis para feedback do
aplicativo

abrir();

if (instrucao == "liglamp") {
//liga lampada

buffdog=1;

digitalWrite(4, HIGH);

client.println(digitalRead(5));

client.println(digitalRead(6));

else {

if (instrucao == "deslamp") {

fechar();

//desliga lampada
client.println(buffdog)

buffdog=0;

68

j++;
desde =

webIP.indexOf("Address: ") + 9;
}
ateh =
j=0;

webIP.indexOf("</body>");
IPAddress descobreIP() { //

descobre o ip da rede do
}

return

Arduino

ipAIPAddress(webIP.substring(d

esde, ateh));
void abrir() // abre

EthernetClient client;

compartimento
String webIP;

{
int desde, ateh;
while (j<passos) {

IPAddress ipAIPAddress(String

for(i=0;i<4;i++){
if (client.connect(servidorIP,

ipEnCadena){ // Interpreta o
HTML recebido e devolve

80)) {

somente o numero do IP
digitalWrite(motor[i], HIGH);
delay(500);
digitalWrite(motor[i], LOW);

client.println("GET /
IPAddress ipBytes;

HTTP/1.0");

char digitoIP[4];

client.println();

byte cursorDigito = 0;
j++;
byte cursorIP = 0;

webIP = "";

} else {

for (byte n = 0; n <

Serial.println("Falha");

void fechar() //fecha

ipEnCadena.length(); n++){

compartimento

}
if (ipEnCadena.charAt(n) != '.')

while (client.connected()) {
while (j<passos) {

{
digitoIP[cursorDigito] =

while (client.available()) {

ipEnCadena.charAt(n);
for(i=3;i>=0;i--){
cursorDigito++;

webIP.concat((char)client.read())
;

} else {
digitalWrite(motor[i], HIGH);
}
digitoIP[cursorDigito +1] =
delay(500);

'\n';

}
digitalWrite(motor[i], LOW);

ipBytes[cursorIP] =
atoi(digitoIP); // converte string

}
client.stop();

em numero inteiros

69

cursorDigito = 0;
memset(digitoIP, 0,
sizeof(digitoIP));
cursorIP++;
}
}
digitoIP[cursorDigito +1] = '\n';
ipBytes[cursorIP] =
atoi(digitoIP);

return ipBytes; //devolve IP em


Bytes
}

70

Apndice B - Projeto no App Inventor


Tela inicial:

Tela Config:

71

Tela Principal:

72

73

74

Anexo A - Datasheet W5100

75

76