Escolar Documentos
Profissional Documentos
Cultura Documentos
LOJA
La Universidad Catlica de Loja
Sistemas Embebidos
INTEGRANTES
Paola Cecibel Chamba Agila
Bryan Antonio Gordillo Poma
Leonardo Antonio Jaramillo Rodrguez
Santiago Ren Sarmiento Sotomayor
Jason Mauricio Tituaa Castillo
Jos David Ziga Vivanco
TUTOR
Ing. Christian Lojn Herrera
Justificacin de la investigacin
Actualmente las personas requieren de sistemas que proporcionen comodidad
y eficiencia energtica para sus hogares, oficinas, estudios de cualquier lugar
en donde se encuentren. Gracias a la innovacin de sistemas de domtica, es
posible obtener tecnologas de control de dispositivos electrnicos sin la
necesidad de la presencia de un usuario, o, con su consentimiento para
establecer caractersticas del dispositivo a su agrado.
Sin duda estos sistemas de control de luminaria ofrecen ms comodidad,
permitiendo regular la intensidad luminosa de todo su hogar segn el sector en
el que se encuentre, manual o automticamente. Como consecuencia de una
atenuacin automtica, el sistema har eficiente el consumo energtico del
lugar donde sea instalado.
Domtica es una de las reas que facilita los procesos de automatizacin y
operacin de mecanismos electrnicos, logrando de esa manera una unin de
las diferentes tecnologas que nos permiten mejorar de cierta forma nuestro
estilo de vida, es por esta razn que se busca implementar un sistema
domtico que contribuya con la eficiencia energtica mediante la opcin de
Objetivos de la investigacin
Objetivo Principal
Objetivos Especficos
HARDWARE
Atmega 328P
Sensor LDR
Ethernet Shield
LED's 12V (tira)
Diagramas de flujo:
Esquematizacin de funcionamiento.
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <SPI.h>
#include <Ethernet.h>
LiquidCrystal_I2C lcd(0x27,16,2);
int piso=0;
//Programa teclado
const int entrada_analogica_teclado = A1;
int valor_analogico_teclado = 0;
int boton = 99;
int numero = 0;
//Variables globales
int transistorPin=5;//Por defecto se inicia en planta baja
int cont = 0;
int valor[]={0,0,0};
int aux = 0;
int atenuacion_planta_alta=0;
int atenuacion_planta_baja=0;
int estado=0;//52-1 manual
//51-0 automatico
Cdigo:
boton=99;
break;
}
}}
while(1){//Condicion no sirve
numero=lectura_teclado();
if ((boton!=99)&&(numero>=0)){//Condicion evita entrar al codigo sin presionar un
boton
if(numero==51){
lcd.clear();
lcd.print("Auto. ON");
estado=0;//modo auto
digitalWrite(LED_estado1, HIGH);//Indica estado auto
break;
}
else if(numero==52){
lcd.clear();
lcd.print("Manual ON");
estado=1;//modo manual
digitalWrite(LED_estado2, HIGH);//Indica estado manual
break;
}
}
}//Fin while 1
lcd.setCursor(0,1);
lcd.print("Selec. Enter(*)");
numero=lectura_teclado();
while(numero!=41)//Debe pulsar el boton (*) para seguir
numero = lectura_teclado();
}//Fin
//Permite la seleccion del sector para inicializar
void Selec_sector(){
lcd.clear();
lcd.print("Planta Alta (C)");
lcd.setCursor(0,1);
lcd.print("Planta Baja (D)");
void Inicializacion(){
while(1){//53 boton C........54 boton D
lcd.print("Instrucciones");
numero=lectura_teclado();
delay(1000);
if ((boton!=99)&&(numero>=0)){//Condicion evita entrar al codigo sin presionar
Selec_modo();//Funcion para seleccionar modo auto o manual
un boton
if(estado==1)//Si es manual debe seleccionar sector
if(numero==53){
Selec_sector();//Funcion para seleccionar el sector
lcd.clear();
lcd.clear();
lcd.print("Planta Alta");
lcd.print("Continue");
transistorPin=6;
lcd.setCursor(0,1);
break;
lcd.print("Selec. Enter(*)");
}
while(numero!=41)//Debe pulsar el boton (*) para seguir
else if(numero==54){
numero = lectura_teclado();
lcd.clear();
if(piso==53)
lcd.print("Planta Baja");
LCD_PlantaAlta(atenuacion_planta_alta);
if(piso==54)
transistorPin=5;
LCD_PlantaBaja(atenuacion_planta_baja);
break;
}
//Funcion de escritura a LCD
}
void LCD_PlantaAlta(int
atenuacion_PA){
lcd.clear();
}
lcd.print("Planta Alta");
lcd.setCursor(0,1);
boton=99;
lcd.print("Atenuacion");
}
lcd.setCursor(11,1);
lcd.print(atenuacion_PA);
piso=numero;
lcd.setCursor(14, 1);
lcd.print("%");
lcd.setCursor(0,1);
Serial.println("Funcion LCD");
lcd.print("Selec. Enter(*)");
Serial.println("Planta
Alta");
Serial.println("Atenuacion");
while(numero!=41)//Debe pulsar el boton (*) para seguir
Serial.print(atenuacion_PA);
Serial.println("
%");
numero = lectura_teclado();
}
}
Serial.print(atenuacion_PA);
Serial.println(" %");
}
void LCD_PlantaBaja(int atenuacion_PB){
lcd.clear();
lcd.print("Planta Baja");
lcd.setCursor(0,1);
lcd.print("Atenuacion");
lcd.setCursor(11,1);
lcd.print(atenuacion_PB);
lcd.setCursor(14, 1);
lcd.print("%");
Serial.println("Funcion LCD");
Serial.println("Planta Baja");
Serial.println("Atenuacion");
Serial.print(atenuacion_PB);
Serial.println(" %");
}
//Funcion sensor de movimiento
void Pir(){//Lectura sensor PIR
val = digitalRead(pirPin1); // Pir 1
val2= digitalRead(pirPin2); // Pir 2
if (val == HIGH) {
// check if the input is HIGH
LDR();
//digitalWrite(ledPin, HIGH); // turn LED ON
pirState = HIGH;
Serial.println("Planta baja ON");
}
if (valor_analogico_teclado<=(643+tolerancia) &&
valor_analogico_teclado>=(643-tolerancia)) boton = 2;
if (valor_analogico_teclado<=(501+tolerancia) &&
else if(val == LOW) {
valor_analogico_teclado>=(501-tolerancia)) boton = 3;
digitalWrite(ledPin, LOW); // turn LED OFF
if (valor_analogico_teclado<=(799+tolerancia) &&
valor_analogico_teclado>=(799-tolerancia))
boton = 4;
pirState = LOW;
if
(valor_analogico_teclado<=(610+tolerancia)
&&
Serial.println("Planta
baja OFF");
valor_analogico_teclado>=(610-tolerancia)) boton = 5;
}
if (valor_analogico_teclado<=(480+tolerancia) &&
if (val2 == HIGH) {
// check if the input
is HIGH
valor_analogico_teclado>=(480-tolerancia))
boton
= 6;
LDR2();
if
(valor_analogico_teclado<=(730+tolerancia)
&&
//digitalWrite(ledPin2,
HIGH); // turn LED ON
valor_analogico_teclado>=(730-tolerancia))
boton = 7;
pirState2 = HIGH;
Serial.println("Planta alta ON");
if (valor_analogico_teclado<=(569+tolerancia) &&
}
valor_analogico_teclado>=(569-tolerancia)) boton = 8;
else if(val2 == LOW) {
if (valor_analogico_teclado<=(454+tolerancia) &&
valor_analogico_teclado>=(454-tolerancia))
digitalWrite(ledPin2, LOW); // turn LED OFFboton = 9;
if
(valor_analogico_teclado<=(691+tolerancia)
&&
pirState2
= LOW;
valor_analogico_teclado>=(691-tolerancia)) boton = 41; //*
Serial.println("Planta alta OFF");
if (valor_analogico_teclado<=(439+tolerancia) &&
}
valor_analogico_teclado>=(439-tolerancia))
boton = 42; //#
} if (valor_analogico_teclado<=(336+tolerancia2) &&
valor_analogico_teclado>=(336-tolerancia2)) boton = 51; //(A) estado automatico
//Funcion teclado
intiflectura_teclado(){
(valor_analogico_teclado<=(326+tolerancia2) &&
if(analogRead(entrada_analogica_teclado)>10){
valor_analogico_teclado>=(326-tolerancia2))
boton = 52; //(B) estado manual
valor_analogico_teclado = analogRead(entrada_analogica_teclado);
if
(valor_analogico_teclado<=(315+tolerancia2) &&delay(1);
while(analogRead(entrada_analogica_teclado)>10)
valor_analogico_teclado>=(315-tolerancia2))
boton = 53; //C planta alta
int tolerancia = 10;
int tolerancia2 = 5;
if (valor_analogico_teclado<=(306+tolerancia2) &&
if (valor_analogico_teclado<=(545+tolerancia) &&
valor_analogico_teclado>=(306-tolerancia2)) boton = 54; //D planta baja
valor_analogico_teclado>=(545-tolerancia)) boton = 0;
if (valor_analogico_teclado<=(857+tolerancia)
&&
return
boton;
valor_analogico_teclado>=(857-tolerancia))
boton = 1;
}
}
//Funcion LDR
void LDR() {
sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
sensorValue = map(sensorValue, 1023, 300 , 0, 255);
if(sensorValue <=41)
sensorValue=0;
if(sensorValue >=255)
sensorValue=255;
analogWrite(ledPin, sensorValue);
}
//Funcion LDR2
void LDR2() {
sensorValue2 = analogRead(sensorPin2);
sensorValue2 = map(sensorValue2, 1023, 300 , 0, 255);
if(sensorValue2 <=41)
sensorValue2=0;
if(sensorValue2 >=255)
sensorValue2=255;
analogWrite(ledPin2, sensorValue2);
}
//Inicializacion internet
void inicio_internet(){
//Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
state="OFF";
state1="OFF";
}
//Programa internet
else if(readString.substring(LED,LED+5)=="LED=F"){
void internet(){
digitalWrite(PIN_LED,LOW);
// listen for incoming clients
if (PIN_LED==5)
EthernetClient client = server.available();
state="OFF";
if (client) {
else if (PIN_LED==6)
state1="OFF";
boolean currentLineIsBlank
= true;
}
while (client.connected())
{
// Programa para pagina
web
if (client.available())
{
client.println("HTTP/1.1
200 OK");
charclient.println("Content-Type:
c = client.read();
text/html");
if(readString.length()<30)
client.println();
{
client.println("<html>");
readString.concat(c);
client.println("Integrantes: Santiago Sarmiento, ");
}
client.println("
if (c ==
'\n' && currentLineIsBlank)
{
client.println("
Paola Chamba,
");
int LED=readString.indexOf("LED=");
client.println("
Leonardo Jaramillo, ");
int PIN=readString.indexOf("PIN=");
client.println("
Jason Tituana, ");
if(readString.substring(PIN,PIN+5)=="PIN=5"){
client.println("
Bryan Gordillo");
PIN_LED=5;
client.println("<title>Proyecto Sistemas Embebidos</title>");
} client.println("</head>");
else
if(readString.substring(PIN,PIN+5)=="PIN=6"){
client.println("<body
width=100% height=100%>");
PIN_LED=6;
client.println("<center>");
client.println("<h1>Proyecto Sistemas Embebidos</h1>");
}
client.println("<br><br>");
if(readString.substring(LED,LED+5)=="LED=T"){
client.println("Sector seleccionado: ");
digitalWrite(PIN_LED,HIGH);
if(PIN_LED==5)
if (PIN_LED==5)
client.println("Planta Baja");
state="ON";
if(PIN_LED==6)
else if (PIN_LED==6)
client.println("Planta Alta");
state1="ON";
//client.println(PIN_LED);
}
client.println("<br><br>");
client.println("<input type=submit value=Planta_Baja
style=width:175px;height:65px onClick=location.href='./?PIN=5\'>");
client.println("<input type=submit value=Planta_Alta
style=width:175px;height:65px onClick=location.href='./?PIN=6\'>");
client.println("<br><br><br>");
client.println("Estado de la lampara: ");
if(PIN_LED==5)
client.println(state);
else if (PIN_LED==6) //Borrar la condicion, es innecesaria
client.println(state1);
client.println("<br><br>");
client.println("<input type=submit value=ON style=width:200px;height:75px
onClick=location.href='./?LED=T\'>");
client.println("<input type=submit value=OFF
style=width:200px;height:75px onClick=location.href='./?LED=F\'>");
client.println("</center>");
client.println("</body>");
client.println("</html>");
client.stop();
readString="";
}
}
}
}
}
Proceso de fabricacin
Proyecto finalizado.
Presupuesto
A continuacin se describe cada uno de los materiales, costos y cantidad que
se ha usado para el desarrollo del proyecto:
Cantida
d
1
2
1
1
1
12
1
2
1
1
1
1
1
1
1
Descripcin
Maqueta
Sensor Pir Me003
Teclado matricial 4x4
Atmega 328P
Materiales arduino standalone
Resistores
LED's 12V (tira)
Zcalos
LCD 16x2
Cable gemelo
Transformador 110V-12V
(1A)
Regulador 7812
Regulador 7805
Capacitor 2200 uF
Ethernet Shield
TOTAL
Conclusiones
Precio
unitario
20,00
9,00
6,50
6,50
2,00
Total
20,00
18,00
6,50
6,50
2,00
0,05
3,00
0,90
7,00
0,30
0,60
3,00
1,80
7,00
0,30
8,00
8,00
2,00
2,00
0,60
28,00
2,00
2,00
0,60
28,00
$
106,30
Bibliografa consultada
[1] Adrian Javier Len; Honolulu; Hawai; 2007; LIGHTING [En lnea] Disponible
en:
http://www.aiu.edu/applications/DocumentLibraryManager/upload/Lighting
%20Adrian%20Leon.pdf [Consulta mayo 2014]
[2] lvarez, Holgun, Serrano; Guayaquil; Ecuador; 2007; Diseo de una
Instalacin Domtica en un Condominio para el Control de Seguridad e
Iluminacin mediante la Tecnologa LonWorks [En lnea] Disponible en:
http://www.cib.espol.edu.ec/digipath/d_tesis_pdf/d-35940.pdf
[Consulta
mayo 2014]