Академический Документы
Профессиональный Документы
Культура Документы
SMARTHOUSE
SO CARLOS
2014
SMARTHOUSE
_____________________________________________
_____________________________________________
_____________________________________________
SO CARLOS
2014
DEDICATRIA
AGRADECIMENTOS
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.
LISTA DE ILUSTRAES
SUMRIO
INTRODUO ........................................................................................................... 9
1
OBJETIVOS ...................................................................................................... 10
1.1
Mecatrnica ............................................................................................... 10
2.3
Domtica.................................................................................................... 14
2.4
2.5
Software..................................................................................................... 17
2.6
2.6.1
HTML .................................................................................................................. 18
2.6.2
CSS..................................................................................................................... 18
2.6.3
AJAX .................................................................................................................. 19
2.7
2.8
Rel Shield................................................................................................. 21
2.9
PROJETO ......................................................................................................... 29
3.1
3.2
A Maquete .................................................................................................. 30
3.3
Programao ............................................................................................. 33
3.4
3.5
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
1.1
Objetivos Especficos
O projeto tem como principal finalidade de ser implantado em residncias,
2 FUNDAMENTAO TERICA
2.1
Mecatrnica
O nome vem da unio das palavras mecnica e eletrnica, e de fato, a
11
que
faz determinadas
empresas
preferirem
contratar
um
12
2.2 Automao
Resumidamente
automao
sistema
de
aplicaes
tcnicas,
13
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
Mais moderna;
Mais segura.
2.4
O que arduino?
16
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.
18
2.6
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
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
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
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.
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
Especificaes:
24
25
26
27
28
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
4 S
30
3.2
A Maquete
A maquete do nosso projeto foi criada com materiais reaproveitados, ou seja,
31
32
33
3.3
Programao
//Ethernet
#include <SPI.h>
#include <Ethernet.h>
#include <SD.h>
// Sensor de Temperatura e Humidade
#include <dht.h>
// Biblioteca DHT11
//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;
char HTTP_req[REQ_BUF_SZ] = {0}; // Solicitao HTTP buffer armazenado como nulo string
terminada
char req_index = 0;
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();
}
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
// 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
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
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);
42
// 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
// Envia o arquivo XML com os valores analgicos, estado dos botes e dos LEDS
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;
}
50
.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;
}
// 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">
61
62
<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>
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;
}
.sala {
border: 0px solid blue;
height: 48px;
width: 104px;
border-radius: 10px;
position : absolute;
left : 260px;
top : 210px;
}
.quarto1 {
64
.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
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.
69
70
71
3.5
Desenhos detalhados
72
73
Tabela de Preos
Componente
Quantidade
Preo
Casa (Maquete)
1 R$
76,00
ArduinoMega
1 R$
35,00
Shield Ethernet
1 R$
25,00
1 R$
30,00
Sensor DHT11
1 R$
11,00
Sensor PIR
1 R$
5,00
Buzzer
1 R$
5,00
1 R$
22,00
Servo Motor
1 R$
5,00
Mini bomba
1 R$
25,00
Lmpadas
3 R$
6,00
1 R$
6,70
Capacitor 10 MF
1 R$
0,12
1 R$
4,20
Barra de soquete 40
1 R$
1,90
Borne KRE 2
5 R$
5,00
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