Ampliación para el sistema domótico , Pulsador para persianas.

Un usuario, me ha comentado que quería controlar las persianas de la misma manera que las luces, pero tal y como estaba el sistema domótico no era posible, ya que todas las salidas están configuradas como interruptores, es decir, una pulsación enciende y otra apaga.

control domotico

Para el control de una persiana la pulsación tiene que estar controlada para poder dejar la persiana a la altura que queramos así que en esta entrada voy a hacer un ejemplo para el control de una persiana, así podréis añadirlo a vuestro proyecto y controlar todas las que queráis solo añadiendo mas…

En este caso he usado una placa Arduino Mega con una tarjeta ethernet, y dos led conectados a los pines 8, para bajar la persiana y 9 para subir la persiana… ( ambos led con una resistencia de 470 Ohm )

Creo que para este ejemplo no es necesario un esquema de montaje, solo son 2 led.

En el caso real de uso eso led se sustituirán por una placa de relé, para poder actuar directamente sobre una persiana de 220v.

Pues empecemos el ejemplo…

El Sketch para la placa arduino….

#include <SPI.h>
#include <Ethernet.h>
#include <HTTPClient.h>

#define BUFFER 15
byte mac[] = { 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5 };
byte ip[] = { 192, 168, 0, 150 }; // Aqui pon la ip que quieras darle a tu Arduino


EthernetServer servidorArduino(3200);


int SubirPersiana=9;
int BajarPersiana=8;
boolean EstadoSubirPersiana=0;
boolean EstadoBajarPersiana=0;

void setup()
{
  Ethernet.begin(mac, ip); 
  servidorArduino.begin(); 
  pinMode (SubirPersiana,OUTPUT);
  pinMode (BajarPersiana,OUTPUT);
  digitalWrite( SubirPersiana, LOW);
  digitalWrite( BajarPersiana, LOW); 
}

void loop()
{
int index = 0;
char comando[BUFFER];
  EthernetClient clienteApp = servidorArduino.available();
  if (clienteApp) {
if (clienteApp.connected()) {
          while (clienteApp.available()) {
          char caracter = clienteApp.read();
          if (caracter != '\n') {
            comando[index] = caracter;
            index++;
            if (index >= BUFFER) index = BUFFER -1;
            continue;
            }
            comando[index] = '';
            
            if (strstr(comando, "iniciandO")) {
            clienteApp.println("done");
            }

            if (strstr(comando, "PULSADOR_1_ON")) {
              if (EstadoBajarPersiana==0){
              digitalWrite (SubirPersiana,HIGH);
              EstadoSubirPersiana=1; 
              clienteApp.println("done"); 
              }
              else
              {
              clienteApp.println("done");
              }
            }
            
            if (strstr(comando, "PULSADOR_1_OFF")) {
            digitalWrite (SubirPersiana,LOW);
            EstadoSubirPersiana=0;
            clienteApp.println("done");
            }
            
            if (strstr(comando, "PULSADOR_2_ON")) {
              if (EstadoSubirPersiana==0){
              digitalWrite (BajarPersiana,HIGH);
              EstadoBajarPersiana=1; 
              clienteApp.println("done"); 
              }
              else
              {
              clienteApp.println("done");
              }
            }
            
          if (strstr(comando, "PULSADOR_2_OFF")) {
          digitalWrite (BajarPersiana,LOW);
          EstadoBajarPersiana=0; 
          clienteApp.println("done");
          }        
        }       
      }
    }
}

 

Ya tenemos el código para nuestra placa, ahora tendremos que crear la botonera para la aplicación NetIO, para ello iremos a la web y crearemos un proyecto nuevo.

En la pestaña GLOBAL, daremos un nombre al proyecto, seleccionaremos nuestro dispositivo y crearemos una nueva conexión de red llamada ” connection ” con la IP de nuestro arduino ” 192.168.0.150 ” o la que hayas puesto vosotros , el puerto ” 3200 ” .

También vamos a añadir el atributo ” initialsend ” para enviar una “contraseña” de conexión, es decir si en la petición de la conexión de la app, no respondemos desde Arduino al envío de esa palabra, no se realizara la conexión y no funcionara, así que le daremos el valor ” iniciandO”.

Captura de pantalla 2015-03-19 a las 9.10.02

Ahora en la pestaña PAGES , le daremos un nombre a la pagina  y le atribuiremos una conexión… ( la que hemos creado antes)

Captura de pantalla 2015-03-19 a las 9.12.36

Ahora solo tenemos que añadir dos botones, uno para subir la persiana y otro para bajarla y aquí es donde esta la diferencia con el proyecto anterior, es todo igual pero vamos a añadir un atributo mas a ese botón y es “release” para que cuando soltemos el botón también nos envíe un comando que leeremos desde la placa arduino…

Captura de pantalla 2015-03-19 a las 9.16.17 Captura de pantalla 2015-03-19 a las 9.16.44

Captura de pantalla 2015-03-19 a las 8.46.14

Al apretar el pulsador enviaremos ” PULSADOR_1_ON” o ” PULSADOR_2_ON” y al soltarlo enviaremos “PULSADOR_1_OFF” o ” PULSADOR_2_OFF” de esta manera controlaremos los dos estados…

También en el código de arduino, he añadido la opción de no hacer nada en caso de tener pulsado un pulsador y pulsar el otro, de forma que no se puedan activar las dos salidas a la vez.

Pues con este ejemplo ya podréis controlar una persiana o por ejemplo añadiendo un regulador de intensidad ( que funcionan con pulsación) la intensidad de las luces de casa o de una lámpara.

Podéis descargar el Sketch de arduino  desde AQUI, y  la botonera de NetIO desde AQUI.

DonacionPayPal

Anuncios

5 Respuestas a “Ampliación para el sistema domótico , Pulsador para persianas.

  1. hola lisergio te felicito y agradezco por que a los que no sabemos mucho nos ayudas bastante con tus ejemplos. ¿como puedo hacer un control para abrir el porton ya que este necesita solo de un pulso?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s