PROYECTO DOMÓTICA SANTIAGO VALERO SÁNCHEZ JORGE GARCÍA MORENO Desarrollo de Equipos Electrónicos Albacete 1 1.-OBJETIVOS DEL PROYECTO……..………………………………………………………..3 2.-JUSTIFICACIÓN DEL PROYECTO…………………………………………………………3 3.-MATERIAL Y PRESUPUESTO………………………………………………………………4 4.-ELECCIÓN DEL DISEÑO DEL PROTOTIPO……………………………………………5 5.-CONSTRUCCIÓN DE LA MAQUETA…………………………………………………….6 6.-FUNCIONAMIENTO…………………………………………………………………………..11 7.-PROGRAMA……………………………………………………………………………………..12 8.-DATOS DE INTERÉS ………………………………………………………………………….20 9.-BIBLIOGRAFÍA…………………………………………………………………………………..20 2 1-OBJETIVOS DEL PROYECTO El objetivo de nuestro proyecto es hacer una casa en la cual tenemos un control total de las luces, del aire acondicionado y saber la temperatura de del interior del hogar desde un ordenador conectado a internet. 2-JUSTIFICACIÓN DEL PROYECTO La domótica viene de la idea de “una casa futurista inteligente”. Esta idea se ha ido desarrollando durante años pero actualmente no está muy extendida pero que poco a poco la domótica va haciéndose un hueco en nuestra vida cotidiana. El hogar inteligente suele concentrar las acciones en cuatro ámbitos diferenciados: confort, ahorro energético, comunicaciones y seguridad técnica y personal, cada uno de ellos con una buena variedad de equipamientos y servicios a tu disposición. Los beneficios fundamentales son los siguientes: - Ahorro: Ahorrarás tanto a nivel energético como económico, y es que ambas cosas están fuertemente vinculadas… En este sentido, la gestión tarifaria de sistemas y conjuntos podrá ser controlada de modo que la factura no sea tan escalofriante a fin de mes. Un buen ejemplo son los aparatos que controlan automáticamente los sistemas de climatización y las persianas, aprovechando al máximo las horas de sol. - Bienestar: Garantiza algunas cuestiones que sin duda nos harán vivir más tranquilos como por ejemplo la seguridad personal en el hogar así como la tele asistencia para las personas con movilidad reducida. 3 - Económico: Su instalación puede ser muy económica tanto en viviendas nuevas como en antiguas, pues se puede aprovechar la red eléctrica y las tecnologías sin cables como medio de transmisión. - Variedad: La oferta domótica se amplía cada día que pasa ofreciendo productos de más calidad, más fáciles de utilizar y a unos precios más al alcance que en años anteriores. Además de lo anterior, la domótica permite que todos los sistemas inteligentes puedan ser controlados por medio de redes desde dentro y fuera del hogar. 3.-MATERIAL Y PRESUPUESTO Material Madera aglomerada 30x60 Foto Lugar Leroy y Merlín Cantidad 2 Precio 1,80 x 2 = 3,60€ Spray de pintura azul Leroy Merlin 1 1,80€ Caja de madera para Arduino y Ethernet Portaled Leroy Merlin 1 1,60€ Dieltron 1 0,11€ x 8 = 0,88€ Led blanco Dieltron 8 0,67€ x 8 = 5,36€ Ventilador 5v Dieltron 1 5,65€ 4 Cola para madera Leroy Merlín 1 1,80€ Tira de regletas pequeñas Dieltron 1 1,72€ Cables www.dx.com 1 3,15€ Arduino Dieltron 1 25€ Ethernet Dieltron 1 37,75€ TOTAL: 88,31€ 4.-ELECCIÓN DEL DISEÑO DEL PROTOTIPO El prototipo elegido es una maqueta de una casa ya que queremos realizar “una casa inteligente”. Esta casa tendrá habitación, salón, cocina y jardín delantero. En cada habitación colocaremos varios leds que simularán las luces de una casa, un ventilador que simulara el aire acondicionado y un lm35 para saber la temperatura. 5 5.-CONSTRUCCIÓN DE LA MAQUETA Para construir nuestra maqueta utilizaremos algún material que sea barato, resistente y fácil de trabajar como puede ser la madera aglomerada. Los demás materiales utilizados están mencionados en el apartado anterior. A partir de aquí seguimos los siguientes pasos: - Un tozo de madera de unos 30x60 cm que utilizaremos como suelo de nuestra maqueta. - Cortaremos unas tiras de madera de aproximadamente 9.5 cm de ancho que las utilizaremos de paredes de nuestra casa. Imagen - Cortaremos estas tiras de madera con la longitud que sean necesarias para hacer cada habitación de la casa. - A estas tiras les hacemos unas ventanas y puertas para que sea más similar a una casa de verdad. 6 - Pegamos las tiras en el suelo con cola para madera y una vez estén bien pegadas reforzamos los bordes con silicona para darle más resistencia. - Una vez seco todo añadimos unas patas de madera para que podamos cablear todo bien por debajo y así quede mucho más presentable la maqueta. Ya tenemos la maqueta construida ahora procederemos a realizar todo el cableado de nuestro circuito basándonos en el siguiente el siguiente esquema: 7 Hemos colocado los leds en las distintas habitaciones simulando lamparas. En el salón 2, en la cocina 1, en la habitación 1 y 4 más fuera en el patio al lado del camino que lleva a la puerta. También hemos colocado un ventilador en el salón y un lm35 para saber la temperatura del salón como se muestra en la siguiente imagen: - Ventilador 8 - LM35 - Pegamos con silicona, en la parte inferior de la maqueta, los cables, la regleta, las resistencias…. y pasamos los cables al arduino que colocaremos en una cajita en el jardín como se muestra en la imagen: 9 Ya tenemos terminada nuestra maqueta solo nos quedaría decorarla con pintura azul claro. Imagen final del proyecto: 10 6.-FUNCIONAMIENTO Primero conectamos la alimentación para el Arduino y el cable Ethernet para la placa Ethernet Shield, éste debe llegar desde el router directo hasta la placa. Una vez conectado todo abrimos el navegador (explorer, chrome, mozilla…) y ponemos la dirección ip que le hemos asignado en el código seguido de dos puntos ( : ) y el puerto. 11 Presionamos enter y ya nos aparecerá página desde la cual podremos manejar todo. En la página salen una serie de botones que sirven para poder encender las luces de las partes de la casa que están disponibles. 7.-PROGRAMA #include <SPI.h> #include <Client.h> #include <Ethernet.h> #include <Server.h> #include <Udp.h> // Direccion MAC de la tarjeta ETHERNET byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //direccion ip desde la cual vamos a trabajar //IPAddress ip(192,168,1, 101);//casa IPAddress ip(192,168,10,150);//instituto 12 // Inicializamos la Ethernet y le asignamos el puerto EthernetServer server(88); // Declaramos las variables de las luces y aire int cocina= 3; int salon1= 4; int salon2= 5; int dormitorio= 6; int jardin= 7; int ventilador= 8; //declaramos variables para la temperatura int lm = A1; float Temp = 0; float Temp1 = 0; String readString = String(30); String state1=String(3); String state2=String(3); String state3=String(3); String state4=String(3); String state5=String(3); String state6=String(3); void setup() { // Abrimos la conexion y seleccionamos los pines de E/S 13 Ethernet.begin(mac, ip); server.begin(); pinMode(cocina,OUTPUT); pinMode(salon1,OUTPUT); pinMode(salon2,OUTPUT); pinMode(dormitorio,OUTPUT); pinMode(jardin,OUTPUT); pinMode(lm,INPUT); pinMode(ventilador,OUTPUT); state1="OFF"; state2="OFF"; state3="OFF"; state4="OFF"; state5="OFF"; state6="OFF"; } void loop() { //calculos de la temperatura Temp = analogRead(lm); Temp1 = (5.0 * Temp * 100.0)/1024.0; EthernetClient client = server.available(); if (client) { 14 ttrf boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (readString.length()<30) //leer peticion HTTP caracter por caracter { readString += c; } if (c=='\n') //Si la peticion HTTP ha finalizado { //Determinar lo que se recibe mediante GET para encender el Led o apagarlo if(readString.indexOf("Cocina=On")>0){ digitalWrite(cocina,HIGH); state1="ON"; } if(readString.indexOf("Cocina=Off")>0){ digitalWrite(cocina,LOW); state1="OFF"; } if(readString.indexOf("Salon1=On")>0){ digitalWrite(salon1,HIGH); state2="ON"; } if(readString.indexOf("Salon1=Off")>0){ digitalWrite(salon1,LOW); 15 state2="OFF"; } if(readString.indexOf("Salon2=On")>0){ digitalWrite(salon2,HIGH); state3="ON"; } if(readString.indexOf("Salon2=Off")>0){ digitalWrite(salon2,LOW); state3="OFF"; } if(readString.indexOf("Dormitorio=On")>0){ digitalWrite(dormitorio,HIGH); state4="ON"; } if(readString.indexOf("Dormitorio=Off")>0){ digitalWrite(dormitorio,LOW); state4="OFF"; } if(readString.indexOf("Jardin=On")>0){ digitalWrite(jardin,HIGH); state5="ON"; } if(readString.indexOf("Jardin=Off")>0){ digitalWrite(jardin,LOW); state5="OFF"; } 16 if(readString.indexOf("Aire=On")>0){ digitalWrite(ventilador,HIGH); state6="ON"; } if(readString.indexOf("Aire=Off")>0){ digitalWrite(ventilador,LOW); state6="OFF"; } readString=""; //Vaciar el string que se uso para la lectura //Enviar cabecera HTTP estandar client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); //Crear pagina web HTML client.println("<html>"); client.println("<head>"); client.println("<title>Control domestico</title>"); client.println("</head>"); client.println("<body>"); client.println("<h1>Control domestico</h1>"); client.println("<hr>"); client.println("<h3>Encendido/Apagado de luces</h3>"); client.println("<br>"); 17 client.println("<tr>Luz Cocina: </td><tr>"); client.println(state1); client.println("<tr><td><form method=get><input type=submit name=Cocina value=On>"); client.println("<tr><td><form method=get><input type=submit name=Cocina value=Off><td>"); client.println("<br><br><tr>Luz Salon1: </td><tr>"); client.println(state2); client.println("<br><form method=get><input type=submit name=Salon1 value=On>"); client.println("<form method=get><input type=submit name=Salon1 value=Off>"); client.println("<br><br><tr>Luz Salon2: </td><tr>"); client.println(state3); client.println("<br><form method=get><input type=submit name=Salon2 value=On>"); client.println("<form method=get><input type=submit name=Salon2 value=Off>"); client.println("<br><br><tr>Luz Dormitorio: </td><tr>"); client.println(state4); client.println("<br><tr><td><form method=get><input type=submit name=Dormitorio value=On>"); client.println("<tr><td><form method=get><input type=submit name=Dormitorio value=Off>"); client.println("<br><br><tr>Luz Jardin: </td><tr>"); client.println(state5); client.println("<br><tr><td><form method=get><input type=submit name=Jardin value=On>"); 18 client.println("<tr><td><form method=get><input type=submit name=Jardin value=Off>"); client.println("<br><br><tr>Aire Acondicionado: </td><tr>"); client.println(state6); client.println("<br><tr><td><form method=get><input type=submit name=Aire value=On>"); client.println("<tr><td><form method=get><input type=submit name=Aire value=Off>"); client.println("<br><br><tr>La temperatura es de: </td><tr>"); client.println(Temp1); client.println("<tr> grados</td><tr>"); client.println("</body>"); client.println("</html>"); client.stop(); } } } } } 19 8.-DATOS DE INTERÉS Una futura mejora para este proyecto sería añadirle una aplicación para android para poder controlar nuestro hogar desde cualquier lugar. 9.-BIBLIOGRAFIA http://arduino.cc/forum/index.php?PHPSESSID=1465a4f969ff5c751442f 1266c938413&topic=32397.15 http://unicarlos.com/pezazul/index.php?articulo=4 http://tdrobotica.co/proyectos/electronica/262 20