En el siguiente artículo les muestro un sencillo proyecto donde muestro cómo elaborar un prototipo de un sistema de domótica en el cual registro datos de temperatura, humedad y luminosidad.
Dependiendo de la temperatura, Arduino puede decidir si encender un ventilador o no. Si la luminosidad desciende de cierto punto, entonces Arduino enciende una lámpara de 110 Voltios, 22 Watts para iluminar el área donde se encuentre el dispositivo.
La fuente que vemos en la foto es una que yo mismo diseñé para mis experimentos personales.
Es una fuente que entrega 24 voltios y posee un regulador de voltaje basado en un LM317. Posee un bypass transistorizado que le permite manejar altas corrientes.
Para ver como construir un regulador de voltaje con un LM317 visita:
Esta fuente proporciona 12 voltiospara alimentar a Arduino y al ventilador. Del interior de la fuente salen dos cables que están conectados directamente a la corriente alterna para alimentar la lámpara.
La interfaz entre Arduino y la lámpara se da a través del uso de un TRIAC con un optoacoplador.
En el siguiente artículo se muestra como construir dicha interfaz:
La interfaz para controlar el ventilador se da a través de un transistor NPN, procedimiento que se muestra en el siguiente artículo:
Para hacer lecturas de temperatura usamos un sensor de temperatura DHT11, cuya información podemos encontrar en el siguiente artículo:
Para leer el nivel de luminosidad usamos una fotoresistencia en serie con una resistencia de 100 K. Por Ley de Ohm sabemos que al variar la fotoresistencia su resistividad, cambiará la caída de voltaje en el nodo formado por las dos resistencias. Utilizando la función analogRead() leemos esta variación en el voltaje y la interpretamos como una variación en el nivel del voltaje.
Al final, si dicha variación cae bajo determinado nivel, Arduino encenderá la lámpara.
El diagrama pictórico de este diseño es el siguiente:
El sistema está basado en Arduino Nano.
El código utilizado para controlar el mismo es el siguiente:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
#include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); int input=0; int time=0; int h; int t; int c; int d; int u; int umbral; int luminosidad; boolean lum=true; boolean tem=true; void setup(){ pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); dht.begin(); } void loop(){ time++; if (Serial.available()>0){ input = Serial.read(); lum=false; tem=false; if (input=='1'){ digitalWrite(12, HIGH); } if (input=='2'){ digitalWrite(11, HIGH); } if (input=='3'){ digitalWrite(12, LOW); } if (input=='4'){ digitalWrite(11, LOW); } if (input=='5'){ lum=true; d = Serial.read(); delay(15); c = Serial.read(); delay(15); u = Serial.read(); luminosidad=(c*100)+(d*10)+c; } if (input=='6'){ tem=true; d = Serial.read(); delay(15); c = Serial.read(); umbral=(d*10)+c; } } if (lum==true){ if (analogRead(A0)>luminosidad){ digitalWrite(12, HIGH); } else { digitalWrite(12, LOW); } } if (time==5000){ time=0; h = dht.readHumidity(); t = dht.readTemperature(); Serial.println(t); delay(25); Serial.println(h); delay(25); } if (tem==true){ if (t>umbral){ digitalWrite(11, HIGH); } else { digitalWrite(11, LOW); } } } |
En el código se hace impresión de temperatura y de humedad y posee algunas sentencias para comunicarse con una aplicación que he preparado en Java.
Con esta aplicación podemos encender la lámpara o el ventilador a nuestro antojo o dejarle el trabajo a los sensores. Con los Slider regulamos los niveles de temperatura y humedad que queremos.
Este proyecto lo dejo disponible para ustedes en el siguiente enlace:
http://docs.google.com/file/d/0B0hsUkhqWH97eVV2ellLeGdieVU/edit?usp=sharing
Por último les muestro un video donde se muestra el funcionamiento del dispositivo en modo autónomo:
[youtube https://www.youtube.com/watch?v=lHZTnZJHSJ4]
Espero sus comentarios.
Saludos.
Felicidades Antony, muy buen proyecto.
Gracias profesor
Ummm!!!!
Me gusta.. yo tambien ando trasteando con el arduino para hacer un poco de domotica y tal.
Me gustaria que le dieras un vistazo a lo que tengo hecho a ver que te parece….y conocer tus opiniones claro
Puedes verlo en
Control domotica arduino
Por alguna razón no puedo entrar a tu página, no se que sucede
Hola, me gustaría saber que programa utilizas para hacer la simulación.
Gracias.
Por medio de Fritzing. Es gratuito
En código de java utilizas mode. Quisiera saber que es mode y para que la utilizas?
Creo que te refieres al código Arduino. El método pinMode establece cómo va a ser utilizado un determinado pin
Antony sirve igual para el Arduino uno R3? gracias
Si funciona con cualquier modelo
hola amigo perdón quiero hacer este proyecto pero en un arduino uno ,, crees q de resultado ,,???
y las conexiones varían?
Cual es el valor del Triac y del Transistor NPN?
Hola, como es esa formula que usas para calcular luminosidad y umbral? O.o
Una regla de 3
Regla de 3
hola disculpa funciona igual para arduino mega 2560
Hola
Quisiera poder hacer este proyecto pero tengo la duda de que si en ves de usar arduino se podria usar algun tipo de pic??
Gracias
Esto fue probado para Arduino y no para PIC. Pero si, sí podría funcionar
buenas noches amigo, que referencia de Arduino utilizo para el desarrollo de este proyecto?
Arduno UNO
hola amigxs quien puede ayudarme…
tengo los cogidos pero no puedo poner en marcha el sensor de tempertura,com le hago para que se activen de manera autonma en este caso que el sensor de temperatura lea obviamennte la temperaturapara asi encender el ventilador,esto desde java ayuda… 🙁
Disculpa porque me sale el siguiente error?
error: package Arduino does not exist import Arduino.Arduino;