Вы находитесь на странице: 1из 77

ALEX SOUZA SILVA

GABRIEL TORRES DA SILVA


GUILHERME CAVALCANTE DE MORAES E SILVA
HERYK PRADO MARTINS
RAFAEL GIALORENO SGOBBI

SMARTHOUSE

SO CARLOS
2014

ALEX SOUZA SILVA


GABRIEL TORRES DA SILVA
GUILHERME CAVALCANTE DE MORAES E SILVA
HERYK PRADO MARTINS
RAFAEL GIALORENO SGOBBI

SMARTHOUSE

Trabalho de Concluso de Curso apresentado ao


Centro Paula Souza ETEc Paulino Botelho para
obteno do ttulo de Tcnico em Mecatrnica.
Professor Responsvel: Frederico Jurgensen Junior.

Data da aprovao: __/__/2014.

_____________________________________________

Professor Unidade de Ensino

_____________________________________________

Professor Unidade de Ensino

_____________________________________________

Professor Unidade de Ensino

SO CARLOS
2014

DEDICATRIA

Aos nossos amigos, familiares e tambm aos professores que


de alguma forma nos ajudaram e nos deram confiana para
continuar e batalhar pelos nossos objetivos, e principalmente
ao nosso grupo pelo empenho, comprometimento, unio e
amizade.

AGRADECIMENTOS

Primeiramente a Deus aos nossos familiares, que sempre nos


apoiaram, e nos ajudaram a trilhar o caminho certo. escola
Etec Paulino Botelho pela oportunidade de um novo
aprendizado, e todo suporte. A todos os amigos, que fizeram
do curso ainda mais especial, e deixaro saudades. E aos
nossos professores, que se dedicaram em nos passar um
pouco de seus conhecimentos, orientaes e conselhos.

RESUMO
Nosso projeto foi desenvolvido com base na domtica, uma tecnologia
diretamente ligada ao ato de automatizar, ou seja, realizar aes rotineiras de uma
residncia de forma automtica. O projeto consiste em automatizar uma residncia
(maquete). Nosso projeto controlado atravs da internet, portanto possvel
control-lo, ao ser conectado ao servidor, utilizando computadores, tablet, celulares
que tenham conexo com a internet. Com o sistema pronto, possvel abrir o porto
da garagem, lmpadas, irrigao do jardim, ventilador, temperatura, umidade do ar,
consumo de energia eltrica e o sistema de segurana (cmera e alarme). Todavia o
projeto pode ser facilmente ampliado, tornando possvel o uso de vrios sensores,
alm da implantao de novas sadas, de acordo com cada necessidade.
Palavras chaves: automao, casa inteligente, tecnologia.

ABSTRACT
Our project was developed based on home automation, technology directly
linked to the act of automating, that is, being controlled automatically. The project
consists in automation of some of the residential areas. Much of our design is
controlled through the internet, so it is possible control it by connecting to the server,
using any type of device that has internet connection. Example: SmartPhone. With
the system ready, you can control your garage door, lights, garden irrigation, fan,
temperature, air humidity, consumption of electricity and the security system (camera
and alarm). However the project can be easily expanded, making possible the use of
several sensors, addition the implementation of new outlets, to suit every need.

Keywords: Automation, smart home technology.

LISTA DE ILUSTRAES

IMAGEM 1 - SISTEMA BIOLGICO VERSUS SISTEMA MECATRNICO ................................... 12


IMAGEM 2 - ARDUINOMEGA ......................................................................................... 15
IMAGEM 3 TELA DO SOFTWARE DO ARDUINO .............................................................. 17
IMAGEM 4 FRENTE DO ETHERNET SHIELD ................................................................... 21
IMAGEM 5 - SHIELD REL ............................................................................................. 22
IMAGEM 6 - SINAL DE SADA DE DADOS DO DHT11 ......................................................... 23
IMAGEM 7 - SENSOR DHT11 ....................................................................................... 24
IMAGEM 8 SENSOR PIR ........................................................................................... 25
IMAGEM 9 -BUZZER..................................................................................................... 25
IMAGEM 10 - SENSOR DE CORRENTE SCT013 .............................................................. 26
IMAGEM 11- REPRESENTAO DE PULSOS .................................................................... 27
IMAGEM 12 - MINI SERVO MOTOR SG90 ...................................................................... 28
IMAGEM 13 -MINI BOMBA ............................................................................................. 28
IMAGEM 14 - PLANTA DA MAQUETE .............................................................................. 30
IMAGEM 15 - BASE DA MAQUETE .................................................................................. 31
IMAGEM 16 - MONTAGEM DA MAQUETE ......................................................................... 31
IMAGEM 17 - FUNIL DO JARDIM ..................................................................................... 32
IMAGEM 18 - MAQUETE PRONTA SEM ACABAMENTO........................................................ 32
IMAGEM 19 - MAQUETE PRONTA ................................................................................... 33
IMAGEM 20 - TELA DO SISTEMA ONLINE ......................................................................... 67
IMAGEM 21 - MONTAGEM DO HARDWARE (FRITZING) ...................................................... 68
IMAGEM 22 - CIRCUITO IMPRESSO (FRITZING) ............................................................... 69
IMAGEM 23 - CIRCUITO IMPRESSO TRANSPORTADO PARA A PLACA ................................... 69
IMAGEM 24 - CORROENDO A PLACA COM CIDO PERCLORETO ......................................... 70
IMAGEM 25 - PLACA CORRODA .................................................................................... 70
IMAGEM 26 - IMAGEM DETALHADA DA MAQUETE ............................................................. 71
IMAGEM 27 - IMAGEM DETALHADA DA PLACA .................................................................. 72
IMAGEM 28 - TELA DO SISTEMA DETALHADO .................................................................. 72

SUMRIO

INTRODUO ........................................................................................................... 9
1

OBJETIVOS ...................................................................................................... 10
1.1

Objetivos Especficos ............................................................................... 10

FUNDAMENTAO TERICA ........................................................................ 10


2.1

Mecatrnica ............................................................................................... 10

2.3

Domtica.................................................................................................... 14

2.4

Plataforma De Desenvolvimento: Hardware Livre, ARDUINO................ 15

2.5

Software..................................................................................................... 17

2.6

Linguagem de programao voltada para web ....................................... 18

2.6.1

HTML .................................................................................................................. 18

2.6.2

CSS..................................................................................................................... 18

2.6.3

AJAX .................................................................................................................. 19

2.7

ETHERNET SHIELD W5100 ...................................................................... 19

2.8

Rel Shield................................................................................................. 21

2.9

Sensor DHT11 ........................................................................................... 22

2.10 Sensor PIR ................................................................................................. 24


2.11 Buzzer Arduino.......................................................................................... 25
2.12 Sensor de Corrente SCT013 ..................................................................... 26
2.13 Servo Motor ............................................................................................... 27
2.14 Mini Bomba................................................................................................ 28
3

PROJETO ......................................................................................................... 29
3.1

Desenvolvimento do Projeto .................................................................... 29

3.2

A Maquete .................................................................................................. 30

3.3

Programao ............................................................................................. 33

3.4

Confeco da Placa .................................................................................. 68

3.5

Desenhos detalhados ............................................................................... 71

CONSIDERAES FINAIS .............................................................................. 74


4.1

Ensaios ...................................................................................................... 74

4.2

Concluso.................................................................................................. 74

4.3

Sugestes .................................................................................................. 74

BIBLIOGRAFIA ....................................................................................................... 75

INTRODUO
Desde a criao da roda (existem registros de que a humanidade j o utiliza
h mais de 7.500 anos), o homem sempre vem criando solues para facilitar a sua
vida. Um dos aspectos que diferenciam os humanos de outras criaturas do reino
animal a capacidade de lidar com situaes de maneira criativa. Com a chegada
da computao ajudou a evoluir ainda mais a vida do ser humano deixando-a mais
rpida e eficiente. Agora voc j se imaginou chegando em sua casa aps um dia de
trabalho, com um simples clique em seu smartphone, preparar seu banho ligando a
hidromassagem, deixando a gua com temperatura do seu agrado, ouvindo uma
msica ambiente podendo controlar o volume e mudando de msica com comandos
de voz, ao sair do banheiro, ligar o micro-ondas para esquentar o seu jantar, ligar e
desligar as luzes com o celular, seria timo no mesmo. um equvoco pensar
que tudo isso pura imaginao, mas hoje temos algumas tecnologias para
transformar algum desses pensamentos em realizada. O sistema que antes era
utilizado exclusivamente nos ambientes corporativos das indstrias passou a ser
projetados e utilizados tambm nos ambientes domsticos. Com a ajuda da
domtica, que uma nova tecnologia que consiste em um sistema nico capaz de
controlar todos os ambientes de uma casa atravs de um celular, computador ou
outro dispositivo, podendo controlar a luminosidade do ambiente, som, segurana,
obter temperatura e a umidade, entre outras. Tudo isso voltado para bem-estar e
conforto em uma residncia.

10

1 OBJETIVOS

O desenvolvimento do projeto tem o objetivo de facilitar a vida de pessoas


que passam muito tempo ocupadas com a rotina diria e cansativa.

1.1

Objetivos Especficos
O projeto tem como principal finalidade de ser implantado em residncias,

com ajuda da internet, onde ser possvel automatizar alguns ambientes,


controlando luzes, porto da garagem, ventilador entre outras tambm possvel
coletar informao de temperatura e consumo de energia, tudo em tempo real e em
qualquer lugar.

2 FUNDAMENTAO TERICA
2.1

Mecatrnica
O nome vem da unio das palavras mecnica e eletrnica, e de fato, a

mecatrnica a unio da tecnologia mecnica com a eletrnica, com um pequeno


toque de informtica.
Segundo o Comit Assessor para Pesquisa e Desenvolvimento Industrial da
Comunidade Europeia (IRDAC), "Mecatrnica a integrao sinergtica da
engenharia mecnica com a eletrnica e o controle inteligente por computador no
projeto de processos e de manufatura de produtos". Dessa forma, a mecatrnica
enfatiza o gerenciamento e o controle da complexidade dos processos de indstrias
que exigem ferramentas sofisticadas para gerar em tempo real seus diversos
processos integrados.
A mecatrnica j est sendo considerada cincia e com ela podemos
automatizar diversos processos manuais, ou at mesmo melhorar outros. Como
envolve a mecnica, ela est diretamente ligada hidrulica e pneumtica.
Uma de suas grandes vantagens so a versatilidade, e a combinao de
processos mecnicos com eletrnicos abre um grande leque de possibilidades e

11

utilizao em diversas reas, principalmente na indstria. E claro que no


podemos esquecer a robtica.
Um engenheiro, ou tcnico, mecatrnico tem uma boa escolha de onde, e
com o que, trabalhar, ainda mais com o mercado em expanso. Engenheiros
mecatrnicos podem at mesmo servir como um trunfo: antes onde era necessrio
um mecnico e um eletrnico, agora podem ser substitudos por apenas um
mecatrnico,

que

faz determinadas

empresas

preferirem

contratar

um

engenheiro/tcnico dessa rea.


A atuao no mercado de trabalho normalmente em indstrias,
automatizando processos, melhorando outros ou com a manuteno das mquinas.
Alguns podem at ser mais ousados, ou espertos, e no se limitar a isso: eles
prprios decidem criar suas mquinas, mecanismos, dispositivos, etc. Criando-se
algo realmente necessrio e til, pode fazer o Engenheiro/tcnico vender sua ideia
por muito dinheiro!

12

Imagem 1 - Sistema biolgico versus sistema mecatrnico (Fonte:


www.ebah.com.br/content/ABAAAAT88AA/apostila-robotica )

2.2 Automao
Resumidamente

automao

sistema

de

aplicaes

tcnicas,

computadorizadas, ou mecnicas, que diminui a mo-de-obra e aumenta a


produtividade, reduzindo custos e mais eficaz principalmente numa linha de
produo.
Tambm pode ser definida como um conjunto de tcnicas que podem ser
aplicadas sobre um processo objetivando torn-lo mais eficiente, ou seja
maximizando a produo com menor consumo de energia, menor emisso de
resduos e melhores condies de segurana, tanto humana e material quanto das
informaes inerentes ao processo.
A automao pode ser dividida em alguns ramos principais:
Automao industrial - A automao industrial de uma mquina/processo
consiste essencialmente em escolher, de entre as diversas tecnologias que se

13

encontram ao nosso dispor, as que melhor se adaptam ao processo a desenvolver e


a melhor maneira de as interligar para garantir sempre a melhor relao
custo/benefcio. A automao industrial normalmente dividida em 3 nveis:

Nvel de Campo - constitudo pelos elementos a controlar (ex:Motores) e


pelos elementos de deteco (ex:Sensores)

Nvel de Controlo - Como o prprio nome indica, o nvel onde se encontram


os elementos que vo controlar o processo (ex: Autmatos)

Nvel de Superviso - composto pelos programas de interface homemmquina e aquisio de dados (este Outro ponto importante quando se faz a
automao de uma mquina/processo pensar no futuro, pensar que as
funcionalidades iniciais de uma mquina/processo, na maioria dos casos,
podem estar muito longe das que esta vai ter no futuro.
Automao comercial - Ramo da automao onde ocorre a aplicao de

tcnicas especficas na otimizao de processos comerciais, geralmente utilizandose mais software do que hardware, tais como: sistemas controle de estoques, contas
a pagar e receber, folha de pagamentos, identificao de mercadorias por cdigos
de barras ou por rdio frequncia RFID, etc.
Automao Residencial - Aplicao das tcnicas de automao para
melhoria no conforto e segurana de residncias e conjuntos habitacionais, tais
como: Controle de acesso por biometria, porteiro e portes eletrnicos, circuitos
Fechados de Televiso (CFTV), controle de luminosidade de ambientes, controle de
umidade, temperatura e ar condicionado (HVAC), etc.
Atualmente, a automao est presente em diferentes nveis de atividades do
homem, desde as residncias, no trnsito, atravs de sistemas de controle de
trfego e sinalizao, nos edifcios comerciais, processos de compra, venda e
transporte de bens, processos industriais primrios e secundrios, e at nas
jornadas espaciais.

14

2.3 Domtica
Domtica uma tecnologia recente e responsvel pela gesto de todos os
recursos habitacionais. Este termo nasceu da fuso da palavra Domus (latim), que
significa casa, com a palavra Robtica, que est ligada ao ato de automatizar, isto
, realizar aes de forma automtica.
Esse conceito de automao, vem no seguimento de encontrar solues que
deem respostas necessidade do homem de querer realizar o mnimo esforo nas
atividades dirias e rotineiras. Assim a domtica, para alm de introduzir conforto e
melhoria de vida aos seus utilizadores, introduz ainda novos conceitos, tais como
comunicao e segurana.
Naturalmente que este melhoramento de vida e comodidade apenas se
consegue associando tecnologia. Mas tambm importante que a utilizao dessa
tecnologia seja fcil ao utilizador comum.
A domtica consegue ir de encontro a essa linha de raciocnio, tendo dado
grandes passos para melhorar a vida do ser humano.
Apesar de ainda ser pouco conhecida e divulgada, pelo conforto e
comodidade que pode proporcionar, a domtica promete vir a ter muitos adeptos
face ao crescimento de projetos com estas solues de automatizao.
A domtica utiliza e associa as vantagens dos meios eletrnicos e
informticos, de forma a obter uma utilizao e uma gesto integrada dos diversos
equipamentos de um edifcio, quer seja residencial ou comercial. Para o
manuseamento do sistema poder faz-lo de acordo com as suas prprias
necessidades ou poder optar por um manuseamento mais ou menos automtico.
No funcionamento passivo, um elemento reage s quando lhe transmitida
uma ordem, dada diretamente pelo utilizador, utilizando por isso os recursos
disponveis: boto de presso, painis tcteis, telecomandos.
No funcionamento automtico, mais avanado e com mais inteligncia, o
sistema no s interpreta parmetros, como reage s circunstncias (informao
que transmitida pelos sensores), por exemplo, detectar que uma janela est aberta
e avisa o utilizador, ou que a temperatura est a diminuir e ligar o aquecimento.
Por fim, a facilidade do controle remoto e do acesso s funes vitais da casa,
atravs da Internet ou do celular deixa de ser uma utopia para ser uma realidade dos
nossos dias.

15

Os benefcios de ter Domtica em sua casa com valncias modernas e


eficazes, alm de estar a aumentar o seu nvel de conforto est a valorizar o seu
empreendimento, quer como construtor para vender ou no mnimo ter uma prinstalao que permite oferecer essa opo aos seus residentes. Os predicados da
domtica permitem que a sua casa seja:

Mais moderna;

Mais prtica e fcil de usar;

Mais fcil de controla;

Mais econmica energeticamente;

Mais segura.

2.4

Plataforma De Desenvolvimento: Hardware Livre, ARDUINO

Imagem 2 - ArduinoMega (Fonte: www.arduino.cc )

O que arduino?

Arduino uma plataforma de prototipagem eletrnica open source (o


software, hardware e todo material so livres), criado por Massimo Banzi e David
Cuartielles em 2005 com objetivo de permitir o desenvolvimento de controle de

16

sistemas interativos, de baixo custo e acessvel a todos. O projeto foi criado


pensando em artistas e amadores, ou seja, no necessrio ter conhecimentos
prvios em eletrnica ou programao para iniciar-se no mundo Arduino.
Com o Arduino possvel tambm enviar e receber informaes de
praticamente qualquer outro sistema eletrnico. Existe diversos modelos de arduino,
como o arduinoduemilanove, arduinomega 2560.

Arduino mega 2560


O ArduinoMega 2560 uma placa de micro controlador baseada no
ATmega2560 (datasheet). Ele possui 54 pinos de entradas/sadas digitais, 16
entradas analgicas, 4 UARTs (portas seriais de hardware), um oscilador de cristal
de 16 MHz, uma conexo USB, uma entrada de alimentao, uma conexo ICSP e
um boto de reset. Ele contm tudo o que necessrio para dar suporte ao micro
controlador; basta conectar a um computador com um cabo USB ou a uma fonte de
alimentao e j est pronto para comear. O mega compatvel com a maioria dos
shields desenhados para os Arduino Uno, Duemilanove e para o Diecimila. Possui
ainda o dobro de memria do antigo ArduinoMega.

Especificaes tcnicas

MicrocontroladorATmega1280
Tenso de funcionamento 5V
Tenso de entrada (recomendado)
7-12V
Tenso de entrada (limites)
6-20V
Digital I / O pins
54 (dos quais 15 oferecem sada PWM)
Pinos de entrada analgica
16
Corrente DC por I / O Pin 40 mA
Corrente DC 3.3V para Pin
50 mA
Memria Flash
128 KB dos quais 4 KB usados pelo bootloader
SRAM8 KB
EEPROM
4 KB
Velocidade do relgio
16 MHz

17

2.5 Software
Quando tratamos de software na plataforma do Arduino, podemos referir-nos:
ao ambiente de desenvolvimento integrado do Arduino e ao software desenvolvido
por ns para enviar para a nossa placa. O ambiente de desenvolvimento do Arduino
um compilador gcc (C e C++) que usa uma interface grfica construda em Java.
Basicamente se resume a um programa IDE muito simples de se utilizar e de
estender com bibliotecas que podem ser facilmente encontradas. As funes da IDE
do Arduino so basicamente duas: Permitir o desenvolvimento de um software e
envi-lo placa para que possa ser executado. O software pode ser baixado
diretamente do site arduino.cc, por ser open source, gratuito.

Imagem 3 Tela do Software do Arduino (Fonte: www.codingcolor.com)

18

2.6

Linguagem de programao voltada para web

2.6.1 HTML
HTML uma das linguagens que utilizamos para desenvolver websites. O
acrnimo HTML vem do ingls e significa Hypertext Markup Language ou em
portugus Linguagem de Marcao de Hipertexto.
O HTML a linguagem base da internet. Foi criada para ser de fcil
entendimento por seres humanos e tambm por mquinas, como por exemplo o
Google ou outros sistemas que percorrem a internet capturando informao.

2.6.2 CSS
CSS o acrnimo de Cascading Style Sheets que em portugus seria algo
como folhas de estilo em cascata. uma especificao que define como os
elementos que compem uma pgina, um documento ou aplicao Web sero
exibidos.
Quando falamos de acessibilidade, performance e manuteno, tem-se como
princpio fazer separao do contedo, da interatividade e da apresentao de um
site ou aplicao web. O CSS desempenha um grande papel na camada da
apresentao.
A forma certa de publicar um documento web seguindo uma estrutura
semntica. O CSS traz toda a informao do layout, isto , cores, posicionamento,
fontes, tamanhos e imagens de fundo, enquanto o HTML deve fornecer uma
arquitetura para o contedo. O suporte a CSS pelos navegadores de hoje bem
slido, mas teve um incio tmido, sendo inicialmente suportado pelo navegador
Netscape. A primeira verso da especificao foi lanada em 1996 e uma segunda
verso publicada em 1998 mas at 2009 nem todos os navegadores em uso
suportavam plenamente seus recursos. Uma nova verso da especificao est em
desenvolvimento e felizmente os navegadores mais recentes j esto testando-a.
Como o navegador Internet Explorer demorou a suportar todos os recursos do
CSS, web developers e web designers utilizavam tabelas para montar a estrutura
das pginas e toda a informao de estilo ficava junto do contedo. Com a melhoria
das velocidades de internet (em tempos de conexo discada), foi possvel adotar

19

layouts mais complexos e modernos, ainda usando tabelas. Criou-se um mito de que
projetos utilizando CSS eram muito simples, limpos e quadrados. Este mito foi
desvendado quando outros navegadores entraram em uso e o suporte s novas
especificaes foi implementado no Internet Explorer. Outro fator que contribuiu
muito para a adoo das novas tecnologias para CSS foi o crescimento no uso de
internet mobile em que as pginas precisam ser leves e o contedo apresentado de
forma correta em diferentes dispositivos, o que no seria possvel com tabelas.

2.6.3 AJAX
AJAX acrnimo em lngua inglesa de "Asynchronous Javascript and XML",
que em portugus significa "Javascript e XML Assncronos". Designa um conjunto de
tcnicas para programao e desenvolvimento web que utiliza tecnologias como
Javascript e XML para carregar informaes de forma assncrona.
O desenvolvimento em AJAX permite a criao de pginas mais criativas e
com maior interao com o usurio. A sua utilizao foi importante para a criao do
conceito Web 2.0. que tornou a experincia do usurio mais interessante e
proveitosa.
Alguns servios do Google como o Gmail, Google Earth e Google Maps
fazem uso das ferramentas AJAX.
Ao usar AJAX no desenvolvimento de servios para web, a informao
carregada de maneira mais simples e precisa. O usurio no precisa aguardar que a
pgina seja totalmente recarregada quando faz uma requisio, pois o servidor s
ir retornar os dados relevantes, reduzindo o trfego de dados pela rede.

2.7

Ethernet Shield W5100


O Arduino Ethernet Shield conecta o Arduino internet em poucos

minutos. Basta ligar este mdulo a sua placa Arduino, conecte-o sua rede com
um RJ45 (cabo) e seguir algumas instrues simples para comear a controlar
atravs da internet. Como sempre acontece com Arduino, cada elemento da
plataforma - hardware, software e documentao - est disponvel gratuitamente e
de cdigo aberto. Isso significa que voc pode saber exatamente como ele feito e
usar o seu projeto como ponto de partida para os seus prprios circuitos.

20

O Arduino Ethernet Shield baseia-se na Wiznet W5100chip de ethernet. Ele


suporta at quatro conexes de soquete simultneas. O escudo ethernet conecta a
uma placa Arduino usando fios de finalizao longos que se estendem atravs do
escudo. Isso mantm a pinagem intacto e permite que outro escudo possa ser
empilhado em cima.
A mais recente reviso da placa expe a pinagem 1.0 em rev 3 da placa
Arduino UNO.
H um slot para carto micro-SD de bordo, que pode ser usado para
armazenar arquivos para servir atravs da rede. compatvel com a Arduino Uno e
mega. O leitor de carto microSD acessvel atravs da Biblioteca SD.
O escudo tambm inclui um controlador de reposio, para garantir que o
mdulo Ethernet W5100 seja redefinida corretamente em alta voltagem. O escudo
atual tem um poder Ethernet (mais PoE mdulo) projetado para extrair energia a
partir de um cabo Ethernet convencional par tranado.
Caractersticas:

Requer uma placa Arduino


5V Tenso de operao
Controlador Ethernet: W5100 com buffer interno 16K
Velocidade de conexo: 10/100 Mb
Conexo com o Arduino na porta SPI
Baixa ondulao de sada e rudo (100mVpp)
O Arduino se comunica tanto com o W5100 e o carto SD usando o

barramento SPI. Esta nos pinos digitais 10, 11, 12 e 13 no Uno e pinos 50, 51 e 52
sobre os mega. Em ambas as placas, pino 10 usado para selecionar o W5100 e o
pino 4 para o carto SD. Estes pinos no podem ser utilizados. Sobre os mega, o
pino SS hardware, pino 53, no usado para selecionar o W5100 ou o carto SD,
mas deve ser mantido como uma sada ou a interface SPI no vai funcionar.
Com o compartilhamento de W5100 e SD card do barramento SPI, somente
um pode estar ativo de cada vez. Se voc estiver usando ambos os perifricos em
seu programa, eles devem ser cuidados pelas bibliotecas correspondentes. Se voc
no est usando um dos perifricos em seu programa, no entanto, voc vai precisar
para desmarc-la explicitamente. Para fazer isso com o carto SD, coloque o pino 4
como uma sada e escrever uma alta para ele. Para o W5100, definir pino digital 10
como uma sada de alta.

21

O Ethernet Shield utiliza das seguintes portas do arduino:


Porta 0 e 1 - TX e RX
Porta 4 - Comunicao Micro SD
Porta 10 - usado para selecionar o W5100
Porta 11 - bus SPI (atravs do ICSP)
Porta 12 - bus SPI (atravs do ICSP)
Porta 13 - bus SPI (atravs do ICSP)

Imagem 4 Frente do Ethernet shield ( Fonte: www.arduino.cc )

2.8

Rel Shield
O Shield Rel um mdulo compatvel com Arduino, possui 4 rels

mecnicos que fornecem uma maneira fcil de controlar altas tenses. O shield rel
pode ser controlado diretamente pelo Arduino.
Funcionamento:
Alimente com tenso positiva 5VDC o pino VCC e ligue o GND ao terra
(Comum/Negativo).

22

O Mdulo possui quatro entradas: IN1, IN2, IN3 e IN4 cada uma controla um
rel, e para aciona-lo, basta aplicar um pulso de nvel TTL (5V) na entrada
correspondente ao rel desejado.

Imagem 5 - Shield rel (Fonte: www.msseletronica.com)

2.9

Sensor DHT11
O DHT11 um sensor de temperatura e umidade que permite fazer leituras de

temperaturas entre 0 a 50 Celsius e umidade entre 20 a 90%, muito usado para projetos
com Arduino.
O elemento sensor de temperatura um termistor do tipo NTC e o sensor de
Umidade do tipo HR202, o circuito interno faz a leitura dos sensores e se comunica a um
microcontrolador atravs de um sinal serial de uma via.

Especificaes:

Modelo: DHT11
Faixa de medio de umidade: 20 a 90% UR
Faixa de medio de temperatura: 0 a 50C
Alimentao: 3-5VDC (5,5VDC mximo)
Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA
Preciso de umidade de medio: 5,0% UR
Preciso de medio de temperatura: 2.0 C
Tempo de resposta: 2s

23

Imagem 6 - Sinal de sada de dados do DHT11 ( Fonte: www.filipeflop.com)

Especificaes:

Modelo: DYP-ME003 (datasheet)


Sensor Infravermelho com controle na placa
Sensibilidade e tempo ajustvel
Tenso de Operao: 4,5-20V
Tenso Dados: 3,3V (Alto) - 0V (Baixo)
Distncia detectvel: 3-7m (Ajustvel)
Tempo de Delay: 5-200seg (Default: 5seg)
Tempo de Bloqueio: 2,5seg (Default)
Trigger: (L)-No Repetvel (H)-Repetvel (Default: H)
Temperatura de Trabalho: -20 ~ +80C
Dimenses: 3,2 x 2,4 x 1,8cm
Peso: 7g

24

Imagem 7 - Sensor DHT11(Fonte: www.mlb-s2-p.mlstatic.com)

2.10 Sensor PIR


O Sensor de Movimento PIR DYP-ME003 consegue detectar o movimento de
objetos que estejam em uma rea de at 7 metros! Caso algo ou algum se
movimentar nesta rea o pino de alarme ativo.
possvel ajustar a durao do tempo de espera para estabilizao do PIR
atravs do potencimetro amarelo em baixo do sensor bem como sua sensibilidade.
A estabilizao pode variar entre 5-200 seg.
Conecte uma fonte de 5v ao GND e VCC. O pino DADOS refere-se ao sinal
de sada que ser 'Alto' indicando movimento ou 'Baixo' indicando nenhuma
movimentao.
Quando a sada acionada pelo movimento detectado esta ficar em alto por
um curto perodo de tempo, mesmo se no haja mais movimento. O tempo em alto
pode ser setado variando o potencimetro 'Time', sendo que o outro altera a
sensibilidade.

25

Imagem 8 Sensor PIR (Fonte: www.filipeflop.com)

2.11 Buzzer Arduino


O buzzer um pequeno alto-falante alimentado com tenso de 5 volts, capaz
de emitir sons em diversas frequncias. O buzzer normalmente usado em projetos
que necessitam de avisos sonoros, relgios com alarme, e at para reproduzir
msicas.
O primeiro pino do buzzerarduino o positivo, o segundo pino a sada de
sinal e o terceiro pino o negativo.

Imagem 9 - Buzzer (Fonte: www.dx.com)

26

2.12 Sensor de Corrente SCT013


Esse sensor usado para medir a corrente alternada, ele no invasivo no
a necessidade de cortar o fio para realizar a medio.
Onde sua entrada permite uma variao no range de 0 30 A. Tem uma
sada de, no mximo, 1 Volt. Sua resistncia de amostragem de 62 ohms e sua
rigidez dieltrica de sada de 1500 VAC. A tenso de sada proporcional
corrente que passa atravs do condutor.

Imagem 10 - Sensor de Corrente SCT013 (Fonte: http://mlb-s1-p.mlstatic.com)

27

2.13 Servo Motor


Servo motores so dispositivos de malha fechada, ou seja, recebem um sinal
de controle; verificam a posio atual; atuam no sistema indo para a posio
desejada.
Em contraste com os motores contnuos que giram indefinidamente, o eixo do
servo motores possui a liberdade de at cerca de 180 graus mas so precisos
quanto posio.
A caracterstica mais marcante de um servo a sua capacidade de
movimentar o seu brao at uma posio e mant-lo l, mesmo que este seja
forado em outra direo.
Para fazer um servo funcionar voc deve lig-lo a um receptor (RX) e este
receptor deve estar ligado a uma bateria que fornea no mnimo 4,8volts (no
discutiremos aqui uma ligao com SpeedControl). Este receptor deve estar
sintonizado a um rdio (TX). Em geral um receptor para um aeromodelo eltrico
deve ter no mnimo 3 canais (sendo mais comum encontrarmos os receptores de 4
canais), mas para os aeromodelos mais simples usamos s 2 servos. Cada servo
ligado a um canal diferente do receptor e recebe um sinal no formato PWM
(PulseWidthModulation). Este sinal pode ter 0Volts ou 5Volts. O circuito de controle
do servo fica monitorando este sinal em intervalos de 20ms (mili segundos), se
dentro deste intervalo ele percebe uma alterao do sinal de 0v para 5v durante 1ms
at 2ms ele altera a posio do seu eixo para coincidir com o sinal que recebeu.
Um sinal de 1ms corresponde a uma posio do brao do servo todo a
esquerda ou 0
Um sinal de 1,5ms o que chamamos de posio central do servo ou 90
Um sinal de 2ms corresponde a uma posio do brao do servo todo a direita
ou 180. Veja na imagem:

Imagem 11- Representao de pulsos (Fonte: www.pictronics.com.br)

28

Imagem 12 - Mini Servo Motor SG90(Fonte: www.weiku.com)

2.14 Mini Bomba


Mini bomba compatvel com arduino, o tipo de alimentao eltrica 12v. Sua
aplicao deve ser Submersa: gua. Onde sua taxa de fluxo de gua de 4L por
minuto, podendo operar at 60.

Imagem 13 -Mini bomba (Fonte: www.mercadolivre.com.br)

29

3 PROJETO

Cronograma
Julho
2 S 3 S

1S
Relatorio
Programaao X
Desenho
Construao
Pesquisa X
Planejamento X

X
X

4 S
X
X
X
X

1S
X
X
X
X

X
X
X
X
X
X

Agosto
2 S 3 S
X
X
X
X
X
X
X
X

4 S

1S
X
X
X
X

X
X
X
X

Cronograma
Setembro
2 S 3 S
X
X
X
X
X
X
X
X

4 S

1S
X
X
X
X

X
X
X
X

Outubro
2 S 3 S
X
X
X
X
X
X
X

4 S

Novembro
2 S 3 S

1S
X
X

X
X

Nosso projeto, foi desenvolvido com a inteno de facilitar a vida das pessoas
em suas residncias. O projeto consiste em automatizar algumas funes de uma
residncia, como por exemplo: porto da garagem, lmpadas, irrigao de jardim,
ventilador, coletar informao como temperatura e humidade, e o consumo de
energia e sistema de segurana (cmera e alarme). Tudo isso controlado via
internet, ou seja, qualquer dispositivo, conectado internet, pode control-la se
conectando ao servidor. O sistema pode ser facilmente ampliado, possvel utilizar
vrios sensores, criar novas sadas, isso ir da necessidade de cada aplicao.

3.1

Desenvolvimento do Projeto
O projeto foi realizado a partir de reunies dentro e fora da escola, e tambm

utilizamos as Redes Sociais como meio de comunicao durante o desenvolvimento


do projeto.
Dividimos o desenvolvimento do projeto em 3 partes sendo:

1 Parte fsica (Maquete)


2 Programao
3 Confeco da placa.

4 S

30

3.2

A Maquete
A maquete do nosso projeto foi criada com materiais reaproveitados, ou seja,

utilizamos madeiras, peas de computadores e at reciclveis para realizar nossas


ideias. Utilizamos o software SolidWorks para desenvolver a planta.
A base da nossa maquete tem 66 cm de comprimento, 48 cm de largura e 9,5
de altura. Entretanto a parte superior da maquete, onde localiza-se a residncia,
possui comprimento de 95 cm, largura de 51 cm e altura de 10 cm.
A residncia por sua vez tem comprimento total de 38 cm, altura total de 40
cm e largura de 15 cm. Cada andar da residncia possui19 cm de comprimento,
20cm de altura e 15cm de largura.

Imagem 14 - Planta da Maquete

31

Imagem 15 - Base da Maquete

Imagem 16 - Montagem da maquete

32

Imagem 17 - Funil do jardim

Imagem 18 - Maquete pronta sem acabamento

33

Imagem 19 - Maquete pronta

3.3

Programao

Nossa programao foi dividida em 2 partes sendo:

1 Microcontrolador: Utilizamos o Arduino Mega 2560 (C e C++).

Cdigo Fonte utilizado:

//Ethernet
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
// Sensor de Temperatura e Humidade
#include <dht.h>

// Biblioteca DHT11

#define dht_dpin A9 // Sinal DHT11 ligado a porta Analogica A3


dht DHT;

//Inicializao do sensor

//Servo motor
#include <Servo.h>
Servo myservo;
int pos = 0;

34

// Alarme
int LDR_pin = A11; // Sinal LDR ligado a porta Ananlogica A5
int LDR_val = 0; // Variavel onde armazena o valor do LDR
int buzina = 21; //Sinal da buzina ligada ao pino 21
// Tamanho do tampo utilizado para capturar os pedidos HTTP
#define REQ_BUF_SZ 60
// Endereo MAC de Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0,177); // Endereo IP
EthernetServer server(8888); // Criar um servidor na porta 8888
File webFile;

// Puxa o arquivo web ( htm ) dentro do carto SD

char HTTP_req[REQ_BUF_SZ] = {0}; // Solicitao HTTP buffer armazenado como nulo string
terminada
char req_index = 0;

// ndice em buffer HTTP_req

boolean LED_state[6] = {0}; // Armazena os estados dos LEDs


// Sensor de Corrente
#include "EmonLib.h"
#include <avr/eeprom.h>
#define eeprom_read_to(dst_p, eeprom_field, dst_size) eeprom_read_block(dst_p, (void
*)offsetof(__eeprom_data, eeprom_field), MIN(dst_size, sizeof((__eeprom_data*)0)->eeprom_field))
#define eeprom_read(dst, eeprom_field) eeprom_read_to(&dst, eeprom_field, sizeof(dst))
#define eeprom_write_from(src_p, eeprom_field, src_size) eeprom_write_block(src_p, (void
*)offsetof(__eeprom_data, eeprom_field), MIN(src_size, sizeof((__eeprom_data*)0)->eeprom_field))
#define eeprom_write(src, eeprom_field) { typeof(src) x = src; eeprom_write_from(&x, eeprom_field,
sizeof(x)); }
#define MIN(x,y) ( x > y ? y : x )
/*
* __eeprom_data is the magic name that maps all of the data we are
* storing in our EEPROM
*/
struct __eeprom_data {
double flash_kwhtotal;
};
EnergyMonitor emon1;

//Cria variaveis globais

35

double kwhTotal;
double vlreais;
unsigned long ltmillis, tmillis, timems, previousMillis;
char charBuf[30];
// Fim sensor Corrente
void setup()
{
//Sensor Corrente
emon1.current(10, 64); // Current: input pin, calibration for 24 Ohms
eeprom_read(kwhTotal, flash_kwhtotal);
previousMillis = millis();
// Servo Motor
myservo.attach(20); // Sinal do servo motor ligado no pino 20
// Alarme
pinMode(buzina,OUTPUT);
// Desativar chip de Ethernet
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.begin(9600); // Para depurao
// Inicializar carto SD
Serial.println("Iniciao carto SD ...");
if (!SD.begin(4)) {
Serial.println("ERRO - Carto SD no iniciado!");
return;

// inicializao falhou

}
Serial.println("SUCESSO - Carto SD iniciado.");
//verificar a existncia de arquivo index.htm
if (!SD.exists("index.htm")) {
Serial.println("ERRO - Arquivo index.html no encontrado!");
return; // no pode encontrar o arquivo de ndice
}
Serial.println("SUCESSO - Arquivo index.html encontrado.");

// Declarao de interruptores

36

pinMode(48,INPUT); // Pino 5, interrupitor que mostra o estatos do alarme ligado em serie com o
SINAL do BUZZER.
digitalWrite(48,1);
// LEDs
pinMode(33, OUTPUT); // Pino 2 Liga/Desliga S1 ( Bomba Jardim ) LED 5
pinMode(53, OUTPUT); // Pino 3 Liga/Desliga S2 ( Ventilador ) LED 6
pinMode(35, OUTPUT); // Pino 6 Liga/Desliga S3 ( Lampada SALA) LED 1
pinMode(37, OUTPUT); // Pino 7 Liga/Desliga S4 ( Lampada QUATO 1) LED 2
pinMode(39, OUTPUT); // Pino 8 Liga/Desliga S5 ( Lampada QUARTO 2 ) LED 3
pinMode(20, OUTPUT); // Pino 9 Liga/Desliga S6 (Porto Garagem ) LED 4
pinMode(9, OUTPUT); // Pino 23 Liga/Desliga S7 ( Alarme ) LED 7
Ethernet.begin(mac, ip); // Inicializar dispositivo Ethernet
server.begin();

// Comear a comunicao com o server

}
void loop()
{
//Alarme
LDR_val = analogRead(LDR_pin); // Variavel onde l o valor do LDR
if(LDR_val >= 25){ // Se o movimento for menor ou igual a 25 ligar a buzina
digitalWrite(buzina,0);
//digitalWrite(48,1);
}
else
{
digitalWrite(buzina,1);
//digitalWrite(48,0);
}
//Incio Sensor Corrente
//Calculate amount of time since last realpower measurment.
ltmillis = tmillis;
tmillis = millis();
timems = tmillis - ltmillis;
double Irms = emon1.calcIrms(1480); // Calculate Irms only

37

//Calculate todays number of kwh consumed.


//kwhTotal = kwhTotal + ((realPower/1000.0) * 1.0/3600.0 * (timems/1000.0));
//Calculate todays number of kwh consumed.
kwhTotal = kwhTotal + (((Irms*127.0)/1000.0) * 1.0/3600.0 * (timems/1000.0));
// Serial.print("Watts: ");
//Serial.println(Irms*127.0);

// Apparent power

// Serial.print("Current: ");
//Serial.println(Irms);

// Irms

// Serial.print("kwhTotal: ");
printFloat(kwhTotal, 10);
// Serial.println("");
//grava na memoria a cada 1 minuto
if ((millis() - previousMillis)>4000)
{
Serial.println("Gravando na EEprom");
eeprom_write(kwhTotal, flash_kwhtotal);
previousMillis=millis();
}
//converter double em string
dtostrf(kwhTotal, 8, 7, charBuf);
//Multiplica pelo valor kilowatt hora R$ 0.35 Reais
vlreais = kwhTotal * 0.35;
dtostrf(vlreais, 8, 7, charBuf);
//Serial.print("VALOR EM REAL : ");
//Serial.println(vlreais);
//delay(2000);
}
void printFloat(float value, int places) {
// this is used to cast digits
int digit;
float tens = 0.1;
int tenscount = 0;
int i;
float tempfloat = value;

38

// make sure we round properly. this could use pow from <math.h>, but doesn't seem worth the
import
// if this rounding step isn't here, the value 54.321 prints as 54.3209
// calculate rounding term d: 0.5/pow(10,places)
float d = 0.5;
if (value < 0)
d *= -1.0;
// divide by ten for each decimal place
for (i = 0; i < places; i++)
d/= 10.0;
// this small addition, combined with truncation will round our values properly
tempfloat += d;
// first get value tens to be the large power of ten less than value
// tenscount isn't necessary but it would be useful if you wanted to know after this how many chars
the number will take
if (value < 0)
tempfloat *= -1.0;
while ((tens * 10.0) <= tempfloat) {
tens *= 10.0;
tenscount += 1;
}
// write out the negative if needed
if (value < 0)
Serial.print('-');
if (tenscount == 0)
Serial.print(0, DEC);
for (i=0; i< tenscount; i++) {
digit = (int) (tempfloat/tens);
Serial.print(digit, DEC);
tempfloat = tempfloat - ((float)digit * tens);
tens /= 10.0;
}
// if no places after decimal, stop now and return
if (places <= 0)
return;

39

// otherwise, write the point and continue on


// Serial.print('.');
// now write out each decimal place by shifting digits one by one into the ones place and writing the
truncated value
for (i = 0; i < places; i++) {
tempfloat *= 10.0;
digit = (int) tempfloat;
Serial.print(digit,DEC);
// once written, subtract off that digit
tempfloat = tempfloat - (float) digit;
}
//Final Sensor Corrte
EthernetClient client = server.available(); // Tentar obter cliente
if (client) { // Se encontrar cliente faa a comunicao.
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) { // Dados do cliente disponveis para leitura
char c = client.read(); // Ler 1 byte (caractere) de cliente
// Limitar o tamanho do pedido HTTP recebido armazenado
// Tampo primeira parte do pedido HTTP em ordem HTTP_req (string)
//Deixar ltimo elemento em array como 0 para nulo terminar string (REQ_BUF_SZ - 1)
if (req_index < (REQ_BUF_SZ - 1)) {
HTTP_req[req_index] = c;

// salvar HTTP carter pedido

req_index++;
}
// ltima linha da solicitao do cliente est em branco e termina com \ n
// Responder ao cliente somente aps a ltima linha recebida
if (c == '\n' && currentLineIsBlank) {
// enviar um cabealho de resposta HTTP padro
client.println("HTTP/1.1 200 OK");
// restante do cabealho segue abaixo, dependendo se
// pgina web ou XML pgina solicitada
// Solicitao Ajax - Enviar arquivo XML
if (StrContains(HTTP_req, "ajax_inputs")) {

40

// enviar resto do cabealho HTTP


client.println("Content-Type: text/xml");
client.println("Connection: keep-alive");
client.println();
SetLEDs();
// Enviar arquivo XML contendo estados de entrada
XML_response(client);
}
else { // solicitao de pgina web
// enviar resto do cabealho HTTP
client.println("Content-Type: text/html");
client.println("Connection: keep-alive");
client.println();
// enviar pgina web
webFile = SD.open("index.htm");

// Abre o arquivo index.htm dentro do carto SD

if (webFile) {
while(webFile.available()) {
client.write(webFile.read()); // Enviar pgina web para o cliente
}
webFile.close();
}
}
//exibio recebeu solicitao HTTP na porta de serial
Serial.print(HTTP_req);
// redefinir ndice tampo e todos os elementos de amortecimento a 0
req_index = 0;
StrClear(HTTP_req, REQ_BUF_SZ);
break;
}
// todas as linhas de texto recebido do cliente termina com \ r \ n
if (c == '\n') {
// ltimo caractere na linha de texto recebidas
// iniciar nova linha com o prximo caractere lido
currentLineIsBlank = true;

41

}
else if (c != '\r') {
// um caractere de texto foi recebida do cliente
currentLineIsBlank = false;
}
} // acabar if (client.available ())
} // final, enquanto (client.connected())
delay(1);

// dar tempo ao navegador para receber os dados

client.stop(); // fechar a conexo


} // acabam if (cliente)
}
// verifica se o pedido HTTP recebido ligar / desligar LEDs
// Tambm evita o estado dos LEDs
void SetLEDs(void){
// LED 1 (pin 6)
if (StrContains(HTTP_req, "LED1=1")) {
LED_state[0] = 1; // salvar o estado LED
digitalWrite(35, HIGH);
}
else if (StrContains(HTTP_req, "LED1=0") ) {
LED_state[0] = 0; // salvar o estado LED
digitalWrite(35, LOW);
}
// LED 2 (pin 7)
if (StrContains(HTTP_req, "LED2=1")) {
LED_state[1] = 1; // salvar o estado LED
digitalWrite(37, HIGH);
}
else if (StrContains(HTTP_req, "LED2=0")) {
LED_state[1] = 0; // salvar o estado LED
digitalWrite(37, LOW);
}
// LED 3 (pin 8)
if (StrContains(HTTP_req, "LED3=1")) {

42

LED_state[2] = 1; // salvar o estado LED


digitalWrite(33, HIGH);
}
else if (StrContains(HTTP_req, "LED3=0")) {
LED_state[2] = 0; // salvar o estado LED
digitalWrite(33, LOW);
}
// LED 4 (pin 9)
if (StrContains(HTTP_req, "LED4=1")) {
LED_state[3] = 1; // salvar o estado LED
pos = 90;
myservo.write(pos);
}
else if (StrContains(HTTP_req, "LED4=0")) {
LED_state[3] = 0; // salvar o estado LED
pos = 0;
myservo.write(pos);
}

// LED 5 (pin 2)
if (StrContains(HTTP_req, "LED5=1")) {
LED_state[4] = 1; // salvar o estado LED
digitalWrite(39, HIGH);
}
else if (StrContains(HTTP_req, "LED5=0")) {
LED_state[4] = 0; // salvar o estado LED
digitalWrite(39, LOW);
}

// LED 6 (pin 3)
if (StrContains(HTTP_req, "LED6=1")) {
LED_state[5] = 1; // salvar o estado LED
digitalWrite(53, HIGH);
}

43

else if (StrContains(HTTP_req, "LED6=0")) {


LED_state[5] = 0; // salvar o estado LED
digitalWrite(53, LOW);
}

// LED 7 (pin 23)


if (StrContains(HTTP_req, "LED7=1")) {
LED_state[6] = 1; // salvar o estado LED
digitalWrite(9, HIGH);
}
else if (StrContains(HTTP_req, "LED7=0")) {
LED_state[6] = 0; // salvar o estado LED
digitalWrite(9, LOW);
}
}

// Envia o arquivo XML com os valores analgicos, estado dos botes e dos LEDS

void XML_response(EthernetClient cl)


{
int analog_val;
int count;

// Lojas valor lido a partir de entradas analgicas


// Usado por 'para' laos

int sw_arr[] = {48}; //pinos sendo interruptores

cl.print("<?xml version = \"1.0\" ?>");


cl.print("<inputs>");
// ler entradas analgicas

/* for (count = 2; count <= 5; count++) { // A2 at A5


analog_val = analogRead(count);
cl.print("<analog>");
cl.print(analog_val);
cl.println("</analog>");
}

44

*/

// Ler temperatura
DHT.read11(dht_dpin);

cl.print("<temper>");
cl.print(DHT.temperature);
cl.println("</temper>");

cl.print("<humi>");
cl.print(DHT.humidity);
cl.println("</humi>");

// Sensor de Corrente
cl.print("<kwh>");
cl.print(kwhTotal);
cl.println("</kwh>");

cl.print("<valoreal>");
cl.print(vlreais);
cl.println("</valoreal>");

cl.print("<corrente>");
cl.print(emon1.calcIrms(1480));
cl.println("</corrente>");

cl.print("<potencia>");
cl.print(emon1.calcIrms(1480) * 127);
cl.println("</potencia>");
// Leia interruptores
for (count = 0; count < 3; count++) {
cl.print("<switch>");
if (digitalRead(sw_arr[count])) {
cl.print("Desligado");

45

}
else {
cl.print("Ligado");
}
cl.println("</switch>");
}
// checkbox LED estados
// LED1
cl.print("<LED>");
if (LED_state[0]) {
cl.print("on");
}
else {
cl.print("off");
}
cl.println("</LED>");
// LED2
cl.print("<LED>");
if (LED_state[1]) {
cl.print("on");
}
else {
cl.print("o");
}
cl.println("</LED>");
// boto LED estados
// LED3
cl.print("<LED>");
if (LED_state[2]) {
cl.print("on");
}
else {
cl.print("off");
}

46

cl.println("</LED>");
// LED4
cl.print("<LED>");
if (LED_state[3]) {
cl.print("on");
}
else {
cl.print("off");
}
cl.println("</LED>");

// LED5
cl.print("<LED>");
if (LED_state[4]) {
cl.print("on");
}
else {
cl.print("off");
}
cl.println("</LED>");
// LED6
cl.print("<LED>");
if (LED_state[5]) {
cl.print("on");
}
else {
cl.print("off");
}
cl.println("</LED>");
// LED7
cl.print("<LED>");
if (LED_state[6]) {
cl.print("on");
}

47

else {
cl.print("off");
}
cl.println("</LED>");
cl.print("</inputs>");
}
//define cada elemento de str a 0 (limpa matriz)
void StrClear(char *str, char length)
{
for (int i = 0; i < length; i++) {
str[i] = 0;
}
}
// Procura o sfind corda na string str
// Retorna 1 se a cadeia encontrada
// Retorna 0 se a cadeia no encontrado
char StrContains(char *str, char *sfind)
{
char found = 0;
char index = 0;
char len;
len = strlen(str);
if (strlen(sfind) > len) {
return 0;
}
while (index < len) {
if (str[index] == sfind[found]) {
found++;
if (strlen(sfind) == found) {
return 1;
}
}
else {
found = 0;

48

}
index++;
}
return 0;
}

2 Sistema Online: Utilizamos linguagens voltada para WEB ( HTML, CSS e AJAX)
HTML + AJAX

<!DOCTYPE html>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<html>
<link rel='stylesheet' href='css.css' type='text/css' media='all' />
<style type="text/css">
a:link {
color: #F5F5F8;
text-decoration: none;
}
a:visited {
text-decoration: none;
color: #F0F0F5;
}
a:hover {
text-decoration: none;
color: #E8E8ED;
}
a:active {
text-decoration: none;

49

@charset "utf-8";
body {
background-color: #302f2d;
}

.central {
position: absolute;
top: 1px;
left: 50%;
width:980px;
height: 900px;
padding: 20px;
margin-left: -500px; /* por causa do posicionamento absoluto temos que usar margem
negativa para centralizar o site */
background-image:
url("http://downloadsferoz.com.br/automacao_residencial/site_automacao.png");
background-repeat: no-repeat;

h1 {
font-size:19px;
color:#fff;
text-shadow: 2px -2px 10px #5993c3;
}
h2 {
font-size:0px;
color:#fff;
text-shadow: 2px -2px 10px #5993c3;
}

a:link {text-decoration: none;color: #000099}


a:active {text-decoration: none;}
a:visited {text-decoration: none;color: #000099}

50

a:hover {text-decoration: underline;color: #000099}

.sala {
border: 0px solid blue;
height: 48px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 210px;
}

.quarto1 {
border: 0px solid blue;
height: 48px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 366px;
}
.quarto2 {
border: 0px solid blue;
height: 49px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 503px;

.portao {
border: 0px solid blue;

51

height: 47px;
width: 103px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 752px;

.jardim {
border: 0px solid blue;
height: 43px;
width: 106px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 632px;

}
.ventilador {
border: 0px solid blue;
height: 43px;
width: 106px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 274px;

.temperatura {
border: 0px solid blue;
height: 110px;
width: 157px;

52

border-radius: 10px;
position : absolute;
left : 547px;
top : 109px;

}
.camera {
border: 0px solid blue;
height: 443px;
width: 571px;
border-radius: 10px;
position : absolute;
left : 402px;
top : 208px;
}

.button {
display: inline-block;
text-decoration: none;
color: #fff;
font-weight: bold;
background-color: #538fbe;
padding: 15px 30px;
font-size: 10px;
border: 1px solid #2d6898;
border-radius: 10px;
background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);

background-image: -webkit-gradient(
linear,

53

left bottom,
left top,
color-stop(0, rgb(73,132,180)),
color-stop(1, rgb(97,155,203))
);
}

.button:hover {
background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214)
100%);
background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214)
100%);
background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(79,142,191)),
color-stop(1, rgb(102,166,214))
);
font-size: 11px;
}

}
</style>
<head>
<title>Automao Redidncial</title>
<script>
strLED1 = "";
strLED2 = "";
strLED3 = "";
strLED4 = "";
strLED5 = "";

54

strLED6 = "";
var LED1_state = 0;
var LED2_state = 0;
var LED3_state = 0;
var LED4_state = 0;
var LED5_state = 0;
var LED6_state = 0;
function GetArduinoIO()
{
nocache = "&nocache=" + Math.random() * 1000000;
var request = new XMLHttpRequest();
request.onreadystatechange = function()
{
if (this.readyState == 4) {
if (this.status == 200) {
if (this.responseXML != null) {
// Arquivo XML recebido - contm valores
analgicos, valores de opo e estados do LED
var count;

// Temperatura
var num_an =
this.responseXML.getElementsByTagName('temper').length;
for (count = 0; count < num_an; count++) {
document.getElementsByClassName("temper")[count].innerHTML =
this.responseXML.getElementsByTagName('temper')[count].childNodes[0].nodeValue;
}

// Humidade
var num_an =
this.responseXML.getElementsByTagName('humi').length;
for (count = 0; count < num_an; count++) {

55

document.getElementsByClassName("humi")[count].innerHTML =
this.responseXML.getElementsByTagName('humi')[count].childNodes[0].nodeValue;
}

// obter entradas do interruptor


var num_an =
this.responseXML.getElementsByTagName('switch').length;
for (count = 0; count < num_an; count++) {
document.getElementsByClassName("switches")[count].innerHTML =
this.responseXML.getElementsByTagName('switch')[count].childNodes[0].nodeValue;
}

// LED 1
if
(this.responseXML.getElementsByTagName('LED')[0].childNodes[0].nodeValue === "on") {
document.getElementById("LED1").innerHTML = "DESLIGAR";
LED1_state = 1;
}
else {
document.getElementById("LED1").innerHTML = "LIGAR";
LED1_state = 0;
}

// LED 2
if
(this.responseXML.getElementsByTagName('LED')[1].childNodes[0].nodeValue === "on") {
document.getElementById("LED2").innerHTML = "DESLIGAR";
LED2_state = 1;
}
else {

56

document.getElementById("LED2").innerHTML = "LIGAR";
LED2_state = 0;
}

// LED 3
if
(this.responseXML.getElementsByTagName('LED')[2].childNodes[0].nodeValue === "on") {
document.getElementById("LED3").innerHTML = "DESLIGAR";
LED3_state = 1;
}
else {
document.getElementById("LED3").innerHTML = "LIGAR";
LED3_state = 0;
}
// LED 4
if
(this.responseXML.getElementsByTagName('LED')[3].childNodes[0].nodeValue === "on") {
document.getElementById("LED4").innerHTML = "DESLIGAR";
LED4_state = 1;
}
else {
document.getElementById("LED4").innerHTML = "LIGAR";
LED4_state = 0;
}
// LED 5
if
(this.responseXML.getElementsByTagName('LED')[4].childNodes[0].nodeValue === "on") {
document.getElementById("LED5").innerHTML = "DESLIGAR";
LED5_state = 1;
}
else {

57

document.getElementById("LED5").innerHTML = "LIGAR";
LED5_state = 0;
}

// LED 6
if
(this.responseXML.getElementsByTagName('LED')[5].childNodes[0].nodeValue === "on") {
document.getElementById("LED6").innerHTML = "DESLIGAR";
LED6_state = 1;
}
else {
document.getElementById("LED6").innerHTML = "LIGAR";
LED6_state = 0;
}
}
}
}
}
// enviar solicitao HTTP GET com LEDs para ligar / desligar, se qualquer
request.open("GET", "ajax_inputs" + strLED1 + strLED2 + strLED3 + strLED4
+ strLED5 + strLED6 + nocache, true);
request.send(null);
setTimeout('GetArduinoIO()', 1000);
strLED1 = "";
strLED2 = "";
strLED3 = "";
strLED4 = "";
strLED5 = "";
strLED6 = "";
}
// LEDs de servios quando caixa de seleo marcada / desmarcada
function GetCheck()
{

58

if (LED_form.LED2.checked) {
strLED2 = "&LED2=1";
}
else {
strLED2 = "&LED2=0";
}
}
function GetButton1()
{
if (LED3_state === 1) {
LED3_state = 0;
strLED3 = "&LED3=0";
}
else {
LED3_state = 1;
strLED3 = "&LED3=1";
}
}
function GetButton2()
{
if (LED4_state === 1) {
LED4_state = 0;
strLED4 = "&LED4=0";
}
else {
LED4_state = 1;
strLED4 = "&LED4=1";
}
}

function GetButton3()
{
if (LED1_state === 1) {
LED1_state = 0;

59

strLED1 = "&LED1=0";
}
else {
LED1_state = 1;
strLED1 = "&LED1=1";
}
}

function GetButton4()
{
if (LED2_state === 1) {
LED2_state = 0;
strLED2 = "&LED2=0";
}
else {
LED2_state = 1;
strLED2 = "&LED2=1";
}
}

function GetButton5()
{
if (LED5_state === 1) {
LED5_state = 0;
strLED5 = "&LED5=0";
}
else {
LED5_state = 1;
strLED5 = "&LED5=1";
}
}

function GetButton6()
{

60

if (LED6_state === 1) {
LED6_state = 0;
strLED6 = "&LED6=0";
}
else {
LED6_state = 1;
strLED6 = "&LED6=1";
}
}

</script>

</head>
<body onload="GetArduinoIO()">
<!-- -->
<!-- NICIO DIV CENTRARL -->
<div class="central">

<!-- NICIO DIV SALA -->


<div class="sala">
<button type="button" id="LED1" class="button" onclick="GetButton3()">LIGAR1</button><br /><br />
<!--ENTRADA D6 -->
</div> <!-- FIM DIV SALA -->

<!-- NICIO DIV QUATO 1 -->


<div class="quarto1">
<button type="button" id="LED2" class="button" onclick="GetButton4()">LIGAR2</button><br /><br />
<!-- ENTRADA D7 -->
</div><!-- FIM DIV QUATO 1 -->

<!-- NICIO DIV QUATO 2-->


<div class="quarto2">
<button type="button" id="LED3" class="button" onclick="GetButton1()">LIGAR3</button><br /><br
/><!--ENTRADA D8 -->

61

<form id="check_LEDs" name="LED_form">


<!--<input type="checkbox" name="LED1" value="0"
onclick="GetCheck()" />LED 1 (D6)<br /><br />
<input type="checkbox" name="LED2" value="0"
onclick="GetCheck()" />LED 2 (D7)<br /><br />-->
</form>
</div><!-- FIM DIV QUATO 2 -->

<!-- NICIO DIV PORTO -->


<div class="portao">
<button type="button" id="LED4" class="button" onclick="GetButton2()">LIGAR4</button><br /><br />
<!--ENTRADA D9 -->
</div> <!-- FIM DIV PORTO -->

<!-- NICIO DIV JARDIM -->


<div class="jardim">
<button type="button" id="LED5" class="button" onclick="GetButton5()">LIGAR5</button><br /><br />
<!-- BOTO ENTRADA D2 -->
</div><!-- FIM DIV JARDIM -->

<!-- NICIO DIV VENTILADOR -->


<div class="ventilador">
<button type="button" id="LED6" class="button" onclick="GetButton6()">LIGAR6</button><br /><br />
<!--ENTRADA D3 -->
</div> <!-- FIM DIV VENTILADOR -->

<!-- NICIO DIV TEMPERATURA -->


<div class="temperatura">
<h1><p>Temperatura: <span class="temper">...</span></p></h1>
<h1><p>Humidade: <span class="humi">...</span></p></h1>

<!-- <p class="small_text">D1: utilizado por srie TX</p> -->


<h2><p>Switch 1 (D2): <span class="switches">...</span></p>

62

<p>Switch 2 (D3): <span class="switches">...</span></p>


<!--<p class="small_text">D4:utilizado pelo escudo Ethernet</p>-->
<p>Switch 3 (D5): <span class="switches">...</span></p></h2>

</div><!-- FIM DIV TEMPERATURA -->

<div class="camera">
<iframe width='571' height='376' frameborder='0'
src='http://192.168.0.104:81/iphone.htm'></iframe>
<center><h3><a href="http://192.168.0.104:81/monitor2.htm" target="_blank"><strong>
Ampliar</strong></a></h3><center>

</div>

</div><!-- FIM DIV CENTRARL -->


</body>
</html>

CSS

@charset "utf-8";
body {
background-color: #302f2d;
}

.central {
position: absolute;
top: 1px;
left: 50%;
width:980px;
height: 900px;
padding: 20px;
margin-left: -500px; /* por causa do posicionamento absoluto temos que usar margem
negativa para centralizar o site */

63

background-image:
url("http://downloadsferoz.com.br/automacao_residencial/site_automacao.png");
background-repeat: no-repeat;

h1 {
font-size:19px;
color:#fff;
text-shadow: 2px -2px 10px #5993c3;
}
h2 {
font-size:0px;
color:#fff;
text-shadow: 2px -2px 10px #5993c3;
}

a:link {text-decoration: none;color: #000099}


a:active {text-decoration: none;}
a:visited {text-decoration: none;color: #000099}
a:hover {text-decoration: underline;color: #000099}

.sala {
border: 0px solid blue;
height: 48px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 210px;
}

.quarto1 {

64

border: 0px solid blue;


height: 48px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 366px;
}
.quarto2 {
border: 0px solid blue;
height: 49px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 503px;

.portao {
border: 0px solid blue;
height: 47px;
width: 103px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 752px;

.jardim {
border: 0px solid blue;
height: 43px;
width: 106px;

65

border-radius: 10px;
position : absolute;
left : 260px;
top : 632px;

}
.ventilador {
border: 0px solid blue;
height: 43px;
width: 106px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 274px;

.temperatura {
border: 0px solid blue;
height: 110px;
width: 157px;
border-radius: 10px;
position : absolute;
left : 547px;
top : 109px;

}
.camera {
border: 0px solid blue;
height: 443px;
width: 571px;
border-radius: 10px;
position : absolute;
left : 402px;

66

top : 208px;
}

.button {
display: inline-block;
text-decoration: none;
color: #fff;
font-weight: bold;
background-color: #538fbe;
padding: 15px 30px;
font-size: 10px;
border: 1px solid #2d6898;
border-radius: 10px;
background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);

background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(73,132,180)),
color-stop(1, rgb(97,155,203))
);
}

.button:hover {
background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214)
100%);
background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214)
100%);

67

background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);


background-image: -webkit-gradient(
linear,
left bottom,
left top,
color-stop(0, rgb(79,142,191)),
color-stop(1, rgb(102,166,214))
);
font-size: 11px;
}

Imagem 20 - Tela do sistema online

68

3.4

Confeco da Placa
Para a confeco da placa utilizamos uma placa de fenolite de 15 x 20,

criamos o circuito pelo software Fritzing Utilizando uma impressora a laser para
imprimir o circuito impresso. Usamos um ferro de passar roupa para aquecer a
impresso sobre a placa assim fazendo com que o circuito seja gravado na placa.
Utilizamos o cido percloreto de ferro, para corroer o cobre o qual no foi
protegido pela tinta da impresso.

Imagem 21 - Montagem do hardware (Fritzing)

69

Imagem 22 - Circuito Impresso (Fritzing)

Imagem 23 - Circuito impresso transportado para a placa

70

Imagem 24 - Corroendo a placa com cido percloreto

Imagem 25 - Placa corroda

71

Imagem 26 - Placa pronta com os componentes

3.5

Desenhos detalhados

Imagem 26 - Imagem detalhada da maquete

72

Imagem 27 - Imagem detalhada da placa

Imagem 28 - Tela do sistema detalhado

73

Tabela de Preos
Componente

Quantidade

Preo

Casa (Maquete)

1 R$

76,00

ArduinoMega

1 R$

35,00

Shield Ethernet

1 R$

25,00

Shield Rel 4 Sadas

1 R$

30,00

Sensor DHT11

1 R$

11,00

Sensor PIR

1 R$

5,00

Buzzer

1 R$

5,00

Sensor de Corrente SCT-013-000

1 R$

22,00

Servo Motor

1 R$

5,00

Mini bomba

1 R$

25,00

Lmpadas

3 R$

6,00

Placa Fenolite 15 x20

1 R$

6,70

Capacitor 10 MF

1 R$

0,12

Barra de pinos 180x40

1 R$

4,20

Barra de soquete 40

1 R$

1,90

Borne KRE 2

5 R$

5,00

Percloreto De Ferro Em P 250gr

1 R$

12,00

Broca 0.8 mm

1 R$

12,00

Cmera IP

1 Doao

Total

R$ 286,92

74

4 CONSIDERAES FINAIS

4.1 Ensaios
Comeamos a testar o projeto a partir de um protobord, obtivemos dificuldade
em interagir o sistema online com o arduno, devido a complexibilidade da
programao exigida. Depois da programao pronta, realizamos os testes com a
maquete, com os devidos componentes instalados. Todas as funes funcionaram
perfeitamente, exceto o sensor de correte que no conseguimos 100 % de eficcia.
Por ltimo confeccionamos a placa, e a partir desse ponto comeamos a realizar os
testes com ela, na qual, a princpio, apresentou um pequeno problema de curto, mas
conseguimos solucionar e tudo ficou funcionando.

4.2 Concluso
Aps muita dedicao e trabalho conseguimos realizar nosso propsito de
automatizar uma residncia desde a parte interna at o exterior, visando alm do
conforto a segurana e o bem estar das pessoas.

4.3 Sugestes
Fica disposio, para prximos grupos a ampliao do projeto, onde
possvel adicionar outros sensores, por exemplo, de gs, reconhecimento de voz,
msica ambiente, alimentador automtico para animais, a instalao de placas
solares para captao de energia, entre outras.

75

BIBLIOGRAFIA
www.seriallink.com.br/forum/viewtopic.php?f=90&t=2018&start=20#.VEACnfldWb9
Acessado em 05/07/2014
www.guiadoestudante.abril.com.br/profissoes/engenhariaproducao/mecatronica-602824.shtml
Acessado em 05/07/2014
www.ucp.br/index.php/graduacao/cec/engenharia/mecatronica
Acessado em 05/07/2014
www.esateceducacional.com.br/Cursos/Tecnico_Mecatronica/
Acessado em 05/07/2014
www.mecahoje.blogspot.com.br/2011/04/afinal-o-que-e-mecatronica.html
Acessado em 05/07/2014
ftp://ftp.demec.ufpr.br/disciplinas/TM265/Livro_Rosario/cap01.ppt
Acessado em 12/07/2014
www.automatecbrasil.comunidades.net/index.php?pagina=1579111567
Acessado em 12/07/2014
www.arq.ufsc.br/arq5661/trabalhos_20091/automacao_residencial/automacao_resid
encial.pdf
Acessado em 12/07/2014
www.luzesom.pt/dom_domotica_01.htm
Acessado em 12/07/2014
www.sislite.pt/domus.htm
Acessado em 19/07/2014
www.electronica-pt.com/content/view/67/
Acessado em 19/07/2014
www.projeto39.wordpress.com
Acessado em 19/07/2014
www.inf.ufes.br/~erus/arquivos/ERUS_minicurso%20arduino.pdf
Acessado em 20/07/2014

76

www.filipeflop.com/pd-6b8f7-sensor-de-umidade-e-temperatura-dht11.html
Acessado em 20/07/2014
www.puccampinas.edu.br/websist/Rep/Sic08/Resumo/2013819_155813_161531537
_resiaM.pdf
Acessado em 20/07/2014
www.elecrow.com/wiki/index.php?title=Relay_Shield
Acessado em 23/07/2014
www.startingelectronics.com/tutorials/arduino/ethernet-shield-web-server-tutorial/
Acessado em 23/07/2014
www.binarycodec.blogspot.com.br/2013/01/controle-de-rele-via-internet-com.html
Acessado em 03/08/2014
www.blog.concord.org/streaming-arduino-data-to-a-browser
Acessado em 03/08/2014
www.tableless.com.br/o-que-html-basico/
Acessado em 03/08/2014

Вам также может понравиться