Persiana automática con sensor de luz controlada con Arduino.

Hola de nuevo! este es un proyecto que tiene su trabajo pero después de ver el resultado final merece la pena.

Las persianas del salón funcionan con motor, tiene dos botones para subir o bajar, no como la típica tira que puedes encontrar en la mayoría de las casas. El invento esta bien pero quise mejorarlo un poco siendo automático (a las visitas les encanta) y otra parte interesante que da seguridad a tu casa, ¿dirás como es eso? fácil! es una gran ayuda para asustar a los cacos, ponte en situación, te vas de vacaciones y desde la calle pueden pensar que la casa esta ocupada al ver que las persianas no están siempre en la misma posición, fácil y barato LO HACES TU MISMO! DIY!!

Quiero incorporar mejoras, añadir un modulo de temperatura para el verano, por ejemplo si  en la calle hace mucho calor mas de 30º pues que baje la persiana un poco, o los días de lluvia, un modulo de humedad que si llueve baje la persiana para que no se manchen los cristales 😀

Al final de la página dejaré el código del arduino

Materiales:

  • Para hacer las pruebas utilice un Arduino Uno (original o copia compatible funcionan los dos igual de bien) , luego para dejarlo todo bonito y  que ocupará menos espacio utilicé un Arduino nano, las conexiones serán las mismas.

dsc_0526.jpg

  • Sensor luz para arduino , lo venden en tiendas de electronica, en china mas barato o ebay.
  • cableado para conectar el arduino y los modulos, si tenéis en casa algun cable de red rj45 que no os valga, por ejemplo los dan con los routers de adsl o fibra que te da tu operador, pues si tienes  uno de estos aprox. de 1 metro o lo que sea tienes cable para aburrir.             cat-6-cable-connectors-l-f699a9ebc745d3f3
  • Termoretráctil.
  • Estaño
  • Soldador te servirá para futuros proyectos. JBC es una marca muy conocida de soldadores y no te defraudará.
  • relé arduino
  • Caja empotrada de registro
  • Aplicación para configurar el arduino: ARDUINO 1.6.11

Os recomiendo que si os gusta cacharrear y si queréis hacer mas proyectos con arduino, miréis este kit: trae el arduino (uno compatible), todo tipo de cables, los sensores de luz, sensor de temperatura, el sensor IR por si quieres manejar las persianas con un mando a distancia, bueno de todo!, el kit esta muy bien y para empezar esta muy completo.

kit arduino

Os dejo el esquema de conexiones:

diseñopersianas

Sensor de luz en el puerto analógico a0, Botón arriba puerto digital 1, Botón abajo puerto digital 0, Relé arriba puerto digital 9, Relé abajo puerto digital 8

En los botones tenemos que colocar una resistencia de  10 Koms (café, negro, naranja) entre la pata del boton y  del negativo, ejemplo:

resistenciaboton.JPG

Aquí tenéis una prueba sustituyendo los motores por leds:

Realizando pruebas conectando el motor de las persianas a los relés:

Con un taper, podemos realizar un caja temporal y comprobar unos días que funciona correctamente, comprobar sobre que hora sube la persiana o baja, los segundos que queremos que este en funcionamiento, etc. Tener un acceso fácil al arduino por si tenemos que cambiar algo.

Después de unos días comprobando que todo funciona correctamente ya podemos realizar la instalación final, guardar toda la electrónica en a la caja de registro y encastrarla en la pared.

 

Instalación final y funcionamiento

Código:

/*** Included libraries ***/
#include <SoftwareSerial.h>
#include <BitbloqSoftwareSerial.h>
#include <IRremote.h>
/*** Global variables and function definition ***/
int boton_amarillo_baja = 0;
int boton_rojo_sube = 1;
int RECV_PIN = 7; // pin conectado sensor ir
int relebaja = 8; // pin conectado rele para bajar persiana
int relesube = 9; // pin conectado rele para subir persiana
int itsONled[] = {0,0,0,0};
int sensor_de_luz_0 = A2;
bqSoftwareSerial puerto_serie_0(0, 1, 9600);
float valorLuz = analogRead(A0);
#define code1 57375 // codigo mando para bajar persiana
#define code2 43095 // codigo mando para subir persiana
IRrecv irrecv(RECV_PIN);

decode_results results;

enum {INDETERMINADO,CERRADA,ABIERTA}estadoPersiana;

void bajarPersiana() {
digitalWrite(relebaja, LOW);
delay(5000);
digitalWrite(relebaja, HIGH);
puerto_serie_0.println(“Persiana parada”);
delay(500);
}
void subirPersiana() {

digitalWrite(relesube, LOW);
delay(5000);
digitalWrite(relesube, HIGH);
puerto_serie_0.println(“Persiana parada”);
delay(500);
}

void setup() {
pinMode(relebaja, OUTPUT);
pinMode(relesube, OUTPUT);
pinMode(sensor_de_luz_0, INPUT);
digitalWrite(relebaja, HIGH);
digitalWrite(relesube, HIGH);
irrecv.enableIRIn(); // Start the receiver
pinMode(boton_amarillo_baja, INPUT);
pinMode(boton_rojo_sube, INPUT);
}

/*** Loop ***/
void loop() {
valorLuz=analogRead(sensor_de_luz_0);
puerto_serie_0.println(analogRead(A0));
delay(500);

if (valorLuz <=95 && estadoPersiana != CERRADA) {
puerto_serie_0.println(“bajando persiana”);
delay(500);
bajarPersiana();
estadoPersiana = CERRADA;
} else if (valorLuz >= 120 && estadoPersiana != ABIERTA) {
puerto_serie_0.println(“subiendo persiana”);
delay(500);
subirPersiana();
estadoPersiana = ABIERTA;
}
if (digitalRead(9) == 0) {
digitalWrite(relebaja, LOW);
} else if (digitalRead(9) == 1) {
digitalWrite(relebaja, HIGH);
}
if (digitalRead(10) == 0) {
digitalWrite(relesube, LOW);
} else if (digitalRead(10) == 1) {
digitalWrite(relesube, HIGH);
}

}

Espero que os guste, comentar si tenéis alguna duda.

 

ale!

 

 

Anuncios

3 Comentarios Agrega el tuyo

  1. Carlos dice:

    Me gusta tu solución. Tengo en mente lo mismo pero ademas manejable desde fuera de casa. He estado mirando y hay un componente wifi esp8266 que creo que seria lo que necesito pero soy nuevo en esto y no se si sera muy complicado. ¿Como lo ves? Al tener pulsadores como tu me surge la duda de si alguien desde casa esta accionando la persiana y a la vez se mandara la orden via internet ¿que pasaria? Un saludo.

    Me gusta

    1. Man DIY dice:

      Hola, también pensé en instalar un modulo wifi, lo compré pero no conseguí que funcionara.

      Sobre los pulsadores, cuando detecta luz o se va la luz y se pone en marcha la persiana los botones no funcionan hasta que pare de subir o bajar la persiana, cuando no esta haciendo nada la persiana puedes subir y bajar al gusto con el código que colgué. Entiendo que sea fisicamente pulsando un boton, orden de cambio de luz o acceso por internet…mientras este ejecutando una orden no te dejará dar otra orden al arduino.

      Quiero poner dos modulos mas de temperatura y humedad, poner una pantalla para que me diga todos los datos, ultimamente estoy un poco liado espero ponerme y actualizaré con los nuevos cambios.

      Me gusta

  2. Manuel dice:

    Hola.
    Has hecho un buen trabajo y te mereces un especial agradecimiento por compartirlo.
    Voy a intentar implementarlo en una persiana, lo único es saber si se podría hacer que dependiendo de la época del año suba del todo las persianas o solo un poco. No se si me explico. Poner un módulo reloj con fecha (no se si existe) y por ejemplo que cuando da la orden de subir si es verano que solo suba las persianas hasta la mitad y si es invierno que las suba hasta arriba.
    Un saludo.

    Me gusta

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