Vous êtes sur la page 1sur 8

Domitiza tu casa Da 1.

Planificacin
Deja una respuesta

Inicio este proyecto para domotizar una casa con Arduino (http://www.arduino.cc/es/). Barato, fcil, flexible, y al alcance de todos, qu ms podemos pedir? La idea inicial es crear un sistema para ir aadiendo sensores y actuadores a la casa e ir domotizndola. Todo el contenido aqu es de todos, as que utilizadlo si os sirve y disfrutarlo si os apetece. Empecemos! En una primera propuesta, el sistema debera controlara los siguientes sensores y actuadores: Cocina Deteccin de CO2 y Monoxido de carbono para evitar gases nocivos o posible incendio Comedor Escoger el color del ambiente del comedor Recibidor Si se abre la puerta, y se detecta movimiento estando la alarma conectada, activar la alarma en caso de que est activado el modo alarma Balcn Control de riego y ph de las plantas del balcn General Encender y apagar la calefaccin dependiendo de si se est por debajo de la temperatura mnima, apagar si se supera la mxima o si hay ventanas abiertas Bajar si es noche o si hace mucho calor, si es de dia y no hace mucho calor, subir. Creo que para empezar hay ms que de sobras,Algo ms que sea interesante controlar? De momento pensamos esta primera parte, y ms adelante ms detalles tcnicos. Hasta la prxima!

Domotiza tu casa Da 2. El hardware


Deja una respuesta

Ahora que ya sabemos qu queremos domotizar de nuestra casa, vamos a proponer cmo lo haremos y qu necesitaremos.
La idea principal es que el sistema sea lo ms independiente posible, que no dependa de tener un ordenador encendido en casa para recoger datos, mostrarlos, y sobretodo, que ocupe y consuma poco. La estructura ser de un arduino central, a los que los sensores sern por radiofrecuencia. Para ello, he elegido la placa Arduino Mega(http://arduino.cc/es/Main/ArduinoBoardMega) por su gran cantidad de entradas y salidas y potencia, en combinacin con una Ethernet Shield (http://www.arduino.cc/en/Main/ArduinoEthernetShield)

Placa Arduino Mega 2650

Placa Ethernet Shield Con esta Ethernet Shield, aadimos a las posibilidades de arduino, la capacidad de conectarse a la red mediante Ethernet. Lo que haremos ms adelante, es conectar nuestro arduino directamente al router para poder acceder a l desde cualquier lugar. Para los sensores, en cada sala en la que haya que interactuar, utilizar una sencilla placa Arduino Pro Mini (http://arduino.cc/en/Main/ArduinoBoardProMini) .

Placa Arduino Pro Mini Esta placa la podremos colocar en cualquier lugar discretamente grcias a su pequeo tamao, y tendremos un mnimo consumo. Podeis ver sus caractersticas en el link anterior. Estas placas se comunicarn por radiofrecuencia con un par de emisores y receptores RF a 433Mhz.

Kit Radio Frecuencia 433 Mhz Estos kits de radiofrecuencia son muy econmocos 10 15 y nos permitirn una comunicacin bsica, que alcanzar sobradamente en nuestra casa domotizada El prximo da empezaremos a programar!

Domotiza tu casa Da 3. Primeros pasos, el Servidor web I


Deja una respuesta

Esta semana vamos a ir finalizando la teora inicial, empezar a tocar componentes y hacer algo ms prctico. Vamos a montar el webserver en arduino. S seor, un servidor webpara que nuestro arduino pueda mostrarno datos, una sencilla aplicacin web. De momento, la aplicacin web que nos servir arduino ser sencilla, casi conceptual. La intencin del captulo de hoy es aprender a montar un servidor web con este ejemplo. Ms adelante lo iremos completando con ms opciones y estilos. Para empezar, si queremos conectar nuestro arduino a la red, lo mejor ser conectarla mediante la Ethernet + MicroSD Shield. Podeis encontrar informacin sobre ella en su webhttp://arduino.cc/en/Guide/ArduinoEthernetShield y en castellano, pero menos actualizado enhttp://arduino.cc/en/Guide/ArduinoEthernetShield. Conectarla a la placa de Arduino es sencillo, simplemente encajar encima de nuestra placa.

Arduino Ethernet Shield

Una vez insertada ya estamos listos para programar. Para ello, nos descargaremos el entorno de desarrollo de arduino, que lo podreis encontrar en su propia pgina webhttp://arduino.cc/es/Main/Software. Una vez descargado e instalado mediante su sencillo instalador, necesitaremos conectar la placa mediante un cable USB con conector tipo B (como el que utilizan las impresoras). Mediante este cable alimentaremos nuestra placa y nos comunicaremos con ella. Tambin deberemos conectar un cable ethernet que venga desde nuestro router a la placa ethernet Shield.

Ahora ya est todo instalado y listo para funcionar, as que vamos a empezar a programar. Os recomiendo que para ir practicando algo hagais este sencillo ejemplo que hace parpadear un led. Y vereis como funciona el lenguaje, etc http://arduino.cc/es/Tutorial/Blink Y la bsica referencia de funciones que iremos utilizando durante el tutorial la teneis aqu: http://arduino.cc/es/Reference/HomePage Echdle un vistazo que en el prximo captulo empezamos a programar! Cualquier duda o sugerencia, dejad un comentario y os responder con mucho gusto.

Esta entrada fue publicada en Arduino el 10 julio, 2011.

Domotiza tu casa Da 4. Primeros pasos, el Servidor web II


Deja una respuesta

Hoy vamos a hacer nuestro hola mundo de arduino con nuestro servidor web. Para que tengais una referencia de lo que vamos a hacer, conviene que tengais documentacin sobre la librera Ethernet donde se detalla el funcionamiento de las funciones usadas. (http://arduino.cc/en/Reference/Ethernet). Supongo que ya habreis visto como funciona arduino y su entorno de desarrollo, sin, es un buen momento para visitar el tutorial del da anterior (http://www.pedrocarrillo.es/?p=28). Vamos a empezar con el planteamiento del programa en pseudocdigo, fcil de entender para los humanos, y despus lo pasaremos a cdigo, para que lo entienda nuestro arduino. La estructura sera la siguiente: #includes y defines Configuracin de la ethernet void setup(){ Inicializar Serial; Inicializar Ethernet; } void loop() { Detectar cliente conectado; Leer peticin HTTP; Extraer de la peticin HTTP los parmetros que nos hagan llegar; Imprimir la web indicada en los parmetros; Detener cliente; } Ahora que habeis visto el esquema, escribo el cdigo comentado para facilitar su comprensin /******** INCLUDES **********/

//Fundamental incluir las libreras para poder utilizar las libreras de funciones que utilizaremos a continuacin #include <SPI.h> #include <Ethernet.h> /******** DEFINES **********/ #define BUFSIZ 100; /************ CONFIGURACION ETHERNET ************/ //Definimos la MAC, IP, y declaracin del server byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xFD, 0x60 }; byte ip[] = { 192, 168, 1, 26 }; String ipString = "192.168.1.26"; Server server = Server(80); // 80 es el puerto por el que nos llegan por defecto las peticiones http

void setup() { // Inicializando Serial para debug Serial.begin(9600); //Inicialiciando ethernet y server Ethernet.begin(mac, ip); server.begin(); }

void loop() { //Creamos un contador index, que ms adelante veremos para que sirve una variable clientline para almacenar la linea HTTP que nos llegar por cada peticin int index = 0; String clientline= ""; //Declaramos la variable cliente Client client = server.available(); //Si hay un cliente conectado empezamos a leer la entrada HTTP if(client) { //una peticion http termina con una linea en blanco boolean current_line_is_blank = true;

//reset el buffer de entrada index = 0; //mientras que el cliente est conectado y disponible, leemos la entrada while(client.connected()){ if(client.available()){ char c = client.read(); //Si no es una nueva linea, aade el caracter al buffer if(c!= 'n' && c != 'r') { clientline = clientline + c; index++; //si es demasiado grande para el buffer empieza a sacar fuera datos if(index >=100) index = BUFSIZ -1; //continua leyendo datos continue; } //si tenemos un n o un r, significa que el string est completo clientline[index] = 0; //****** Aqu haremos el filtrado de datos. Descartamos las partes que no nos interesan, y sacamos de la linea (clientline), el nombre del mdulo a mostrar, que es lo que nos interesa String params = clientline.substring(clientline.indexOf("GET /") + 5,clientline.indexOf(" HTTP/1.1")); String modulo = params.substring(0, params.indexOf("/")); //Utilizamos el puerto serie para debugar Serial.println ("Params: " + params + " Modulo: " + modulo); //Llamamos a una funcin para imprimir la cabecera de la web header(client, modulo); //Llamamos a una funcin para imprimir el cuerpo de la web body(client, modulo); //Llamamos a una funcin para imprimir el pir de la web pie(client); //paramos el cliente y dejamos un retardo de 1 segundo hasta que se vuelva a ejecutar este loop client.stop();

delay(1000); } } } }

//Funcin para imprimir la cabecera de nuestra web void header(Client client, String title){ client.print("<html><head><title>HouseBox " + title + "</title></head><body><h1>HouseBox</h1>" + modulos(client) + "<h2>" + title + "</h2>"); }

//Funcin para imprimir el men de secciones de nuestra web String modulos(Client client){ return ("<ul><li><a href="../Inicio">Inicio</a></li><li><a href="../Balcon">Balc&oacute;n</a></li><li><a href="../Cocina">Cocina</a></li><li><a href="../Comedor">Comedor</a></li><li><a href="../Recibidor">Recibidor</a></li><li><a href="../General">General</a></li></ul>"); }

//Funcin para escribir el cuerpo de la web void body(Client client, String modulo){ if (modulo == "Inicio"){ client.println("Bienvenido a Inicio"); } else if (modulo == "Balcon"){ client.println("<ul><li>Temperatura balc&oacute;n: XX oC</li><li>Luminosidad: XX</li><li>Humedad:XX</li><li>PH:XX</li><li>Riego programado de: XX a XX, y de YY a YY</li></ul>"); } else if (modulo == "Cocina"){ client.println("<ul><li>Temperatura cocina: XX oC</li><li>Niveles Gas Natural</li><li>Niveles Monoxido de Carbono</li><li>Dectecci&oacute;n agua en suelo</li></ul>"); } else if (modulo == "Comedor"){ client.println("<ul><li>Temperatura comedor: XX oC</li><li>Color ambiental</li></ul>");

} else if (modulo == "Recibidor"){ client.println("<ul><li>Temperatura recibidor: XX oC</li><li>Encender alarma puerta/volum&eacute;trico: <a href=#>ON</a> / <a href=#>OFF</a>"); } else if (modulo == "General"){ client.println("<ul><li>Calefacci&oacute;n: <a href=#>Apagar</a> / <a href=#>Encender</a></li><li>Persianas autom&aacute;ticas: <a href=#>ON</a> / <a href=#>OFF</a></li><li>Apagado autom&aacute;tico de calefacci&oacute;n(en caso de ventanas abiertas): <a href=#>ON</a> / <a href=#>OFF</a></li></ul>"); } else{ client.println("P&aacute;gina no encontrada"); } }

//Funcin para escribir el pie de la web void pie(Client client){ client.print("</body></html>"); }

Con esto, probadlo y os saldr una sencilla aplicacin web accediendo a la IP de arduino (en este ejemplo 192.168.1.117). Vereis algo como esto:

A partir de este sencillo desarrollo iremos mejorando e implementando los diversos mdulos. Espero que haya sido de vuestro agrado, y que cualquier sugerencia la comenteis. Hasta la semana que viene!

Esta entrada fue publicada en Arduino el 18 julio, 2013.

Vous aimerez peut-être aussi