Escolar Documentos
Profissional Documentos
Cultura Documentos
Autor:
So Carlos
2013
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.
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.
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)
Sumrio
1.Introduo................................................................................................................ 17
1.1
Objetivos ................................................................................................... 20
1.Introduo
A automao residencial, tambm conhecida como domtica, corresponde a
utilizao
das
inovaes
tecnolgicas
para
satisfazer
as
necessidades
e,
automao
industrial,
enriquecida
com
surgimento
dos
CLPs
empresas
de
tecnologia
buscaram
transferir
crescente
17
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.
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."
22
24
25
26
28
29
30
32
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.
34
b) Circuito integrado
(LADYADA,2013)
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).
36
Os
motores
de
passo
bipolares
so
conhecidos
por
sua
relao
37
Figura 2.14 - Sequncias de acionamento (BRITES, F.G & SANTOS, V.P.A, 2008)
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.
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.
40
41
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.
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
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
46
49
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
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.
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
56
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
61
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
64
65
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>
#include <Ethernet.h>
IPAddress ipAtual;
motor de passo
#include <Twitter.h>
IPAddress ipUltimo;
pinMode(7, OUTPUT);
#include <EEPROM.h>
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
IPAddress ip(192,168,0,199);
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,
gateway);
publico
server.begin();
passo
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-
Serial.print("O IP armazenado
na EEPROM eh: ");
};
xQI9XicACAYPxMMX3g9jJdV8X
Serial.println(ipUltimo);
5dWQSzxmfXVT");
void setup()
{
pinMode(2,INPUT); //sensor
alarme
pinMode(4, OUTPUT); // sada
lmpada
66
void loop()
Serial.println("OK.");
} else {
if(cont==0) {
Serial.println(status);
ipAtual = descobreIP(); //
if (sensorpir==HIGH){
} 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
no Twitter o novo Ip
sirene
if (twitter.post(msg)) { // posta
EEPROM.write(n,
if (status == 200) {
ipAtual[n]);}
Serial.println("OK.");
notificao no Twitter de
disparado
int status = twitter.wait();
} else {
ipUltimo = ipAtual;
if (status == 200) {
Serial.println("OK.");
Serial.println(status);
IPAddressConverter
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()) {
abre/fecha compartimento de
client.println("Content-
if (line.startsWith("tag", 0)) {
rao
Type: text/html");
String instrucao =
client.println();
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 {
Serial.println("Falha");
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);
70
Tela Config:
71
Tela Principal:
72
73
74
75
76