INTRODUCCIÓN
El presente proyecto tiene por objeto la realización de una
vivienda inteligente utilizando Arduino. El proyecto consiste en una vivienda
con sensor de luz y de temperatura además de un display que va indicando la
situación de la vivienda cada cierto tiempo.
Este proyecto está pensado para realizarlo en clase en
grupos de alumnos de 3º de E.S.O.
FUNCIONAMIENTO
La vivienda que creamos detecta, mediante sensores la luz y
la temperatura a la que se encuentra, a través de la placa colocada en el
tejado. Si tapamos el foto sensor (como si fuera de noche) las luces de la
vivienda se encienden. La luz de la calefacción aparece encendida, pero si
apretamos el sensor de temperatura para aumentar la misma (como si hiciera
calor en el exterior) esta se apagaría.
El display nos marca en todo momento la temperatura a la que
se encuentra, alternando con la información acerca de las luces (si están
apagadas o encendidas).
MARCO LEGISLATIVO
Según el Real Decreto 52/2007, de 17 de mayo, por el que se
estable el currículo de Educación Secundaria Obligatoria en la Comunidad de
Castilla y León, con este proyecto se cumplen los siguientes objetivos,
contenidos y criterios de evaluación:
Objetivos:
1. Valorar y utilizar el proyecto técnico como instrumento
de resolución ordenada de necesidades.
2. Elaborar un plan de trabajo y realizar las operaciones
técnicas previstas con criterios de seguridad y valorando las condiciones del
entorno.
5. Emplear el ordenador como herramienta de trabajo con el
objeto de comunicar, localizar y manejar información de diversas fuentes. Conocer
y aplicar la terminología y procedimientos básicos de los programas de edición
de texto y presentaciones.
13. Utilizar adecuadamente las magnitudes básicas
eléctricas.
14. Valorar los efectos de la energía eléctrica y su
capacidad de conversión en otras manifestaciones energéticas.
15. Identificar y utilizar correctamente los elementos
fundamentales de un circuito eléctrico de corriente continua y comprender su
función dentro de él.
20. Valorar de forma critica el impacto del uso de la
energía eléctrica sobre el medio ambiente.
Contenidos:
Bloque 5. Electricidad y electrónica.
–Circuito
eléctrico de corriente continua: magnitudes eléctricas básicas. Simbología. Ley
de Ohm. Circuito en serie, paralelo, mixto.
– Corriente
continua y corriente alterna.
– Montajes
eléctricos sencillos: circuitos mixtos. Inversor del sentido de giro.
– Maquinas
eléctricas básicas: dinamos, motores y alternadores. Generación y
transformación de la corriente eléctrica.
– Introducción
a la electrónica básica. Componentes pasivos: condensadores y resistencias.
Componentes activos: diodos y transistores. Descripción de componentes y
montajes básicos.
– Análisis de
circuitos eléctricos y electrónicos característicos mediante programas de
simulación.
Criterios de evaluación:
1. Realizar un proyecto técnico, analizando el contexto,
proponiendo soluciones alternativas y desarrollando la más adecuada.
3. Realizar las operaciones técnicas previstas en el
proyecto técnico incorporando criterios de economía, sostenibilidad y
seguridad, valorando las condiciones del entorno de trabajo.
4. Utilizar las tecnologías de la información y la
comunicación para elaborar, desarrollar, publicar y difundir un proyecto
técnico.
5. Instalar programas y realizar tareas básicas de
mantenimiento informático. Utilizar y compartir recursos en redes locales.
12. Diseñar, simular y realizar montajes de circuitos
eléctricos sencillos en corriente continua, empleando pilas, interruptores,
resistencias, bombillas, motores y electroimanes, como respuesta a un fin
predeterminado.
13. Describir las partes y el funcionamiento de las maquinas
eléctricas básicas.
14. Describir y utilizar el electromagnetismo en
aplicaciones tecnológicas sencillas.
15. Utilizar correctamente las magnitudes eléctricas
básicas, sus instrumentos de medida y su simbología.
17. Emplear Internet como medio activo de comunicación
intergrupal y publicación de información.
24. Identificar automatismos en sistemas técnicos cotidianos
y describir la función que realizan.
26. Identificar los elementos básicos de un sistema de
control.
ELEMENTOS UTILIZADOS
Arduino Uno
Arduino es una plataforma de electrónica abierta para la
creación de prototipos basada en software y hardware flexibles y fáciles de
usar. Se creó para artistas, diseñadores, aficionados y cualquiera interesado
en crear entornos u objetos interactivos.
Protoboard
Resistencias
LEDs
Foto resistor
Sensor temperatura
Display
FOTOGRAFÍAS DE LA CASA INTELIGENTE
CÓDIGO UTILIZADO
/*Proyecto Arduino Casa
Inteligente
Laura Lavandera Mayo
Elena Vega Rodríguez
Paula Salicio Geanini
Elementos que vamos a
utilizar:
1 TMP36 sensor de temperatura
3 LEDs amarillos
1 LED rojo
1 fotorresistor (sensor
de luz)
1 Display
4 resistencias de 220
ohmios
1 resistencia de 10000
ohmios
1 resistencia variable de
10000 ohmios
*/
#include<LiquidCrystal.h>
//incluimos libreria LiquidCrystal para poder usar el display
LiquidCrystal
lcd(12,11,9,8,7,6); /*iniciamos la libreria con los numeros de los pines que va
utilizar el display*/
const int
sensorTemperatura=A0; /*establecemos una constante entera, el sensor de
temperatura va a la entrada analogica A0*/
const int sensorLuz=A1;
/*establecemos una constante entera, el sensor de luz va a la entrada analogica
A1*/
const int pin1=2; //los
led van a la salida digitales 2,3,4 y 5
const int pin2=3;
const int pin3=4;
const int pinChimenea=5;
float valorTemperatura=0;
//establecemos varialbes de tipo float para hacer calculos
float voltaje=0;
float temperatura=0;
float valorSensorLuz=0;
float valorLuz=0;
float sensorLow=1023;
float sensorHigh=0;
void setup() //funcion
setup, establecemos las condiciones iniciales
{
Serial.begin(9600); //Establecemos conexion
con el puerto Serial
while(millis()<5000) //hacemos una calibración del sensor de la
luz para su correcto funcionamiento
valorSensorLuz=analogRead(sensorLuz); //la
variable valorSensorLuz recibe el valor leido por el sensor de la luz
if(valorSensorLuz>sensorHigh) //si el
valor obtenido es mayor que 0
{
sensorHigh=valorSensorLuz; //establecemos el
valor de la variable sensorHigh como el valor leido por el sensor
}
if(valorSensorLuz<sensorLow) //si el
valor leido es menor que 1023
{
sensorLow=valorSensorLuz; //establecemos
el valor de la variable sensorLow como el valor leido por el sensor
}
}
lcd.begin(16,2); //establecemos que el display va a tener 16
caracteres y 2 filas para escribir
lcd.clear();
//limpiamos el contenido que pueda tener el display
lcd.setCursor(0,0); //establecemos la primera linea donde
empezariamos a escribir
lcd.print("Proyecto "); //escribimos en la primera linea la cadena de
texto Proyecto
lcd.setCursor(0,1); //establecemos la segundo linea donde
empezariamos a escribir
lcd.print("Casa inteligente"); //escribimos en la segunda linea una cadena
de texto
delay(3000); /*Establecemos un retraso de 3
segundos para que se pueda leer bien el texto
del display*/
}
void loop() //funcion
loop, que corresponde con un bucle infinito
{
int
valorTemperatura=analogRead(sensorTemperatura); //la variable entera
valorTemperatura lee el valor del sensor de tempeatura
float voltaje=(valorTemperatura/1024.0)*5.0;
//hacemos una conversion para convertir el valor leido a grados celsius
float temperatura=(voltaje-0.5)*100;
lcd.clear();//limpiamos el contenido que
pueda tener el display
lcd.setCursor(0,0);//establecemos la primera
linea donde empezariamos a escribir
lcd.print("La
temperatura");//escribimos en la primera linea
lcd.setCursor(0,1);//establecemos la segunda
linea donde empezariamos a escribir
lcd.print("es ");//escribimos en la
segunda linea una cadena de texto
int tempeInt=(int)temperatura; //hacemos un
casting para convertir un float a entero, para facilitar la lectura de la
temperatura
lcd.print(tempeInt,DEC); //escribimos en la
la temperatura en base decimal
lcd.print(" C"); //escribimos una C
que representa los grados celsius
delay(5000); //establecemos un retraso de 5
segundos para que se pueda leer bien el display
Serial.print("Temperatura: ");
//Tambien escribimos en el puerto serial la tempeatura
Serial.print(temperatura);
Serial.println();
valorSensorLuz=analogRead(sensorLuz); //la
variable valorSensorLuz recoge el valor leido por el sensor de la luz
Serial.print("valor luz: ");
//Escribimos en el puerto serial el valor leido
Serial.print(valorSensorLuz);
Serial.println();
if(valorSensorLuz<800.0) //si el valor
obtenido por el sensor de la luz es menor a 800, es decir hay poca luz
{
for(int i=2;i<=4;i++)
{
digitalWrite(i,HIGH); //encedemos los
leds del techo
}
lcd.clear();//limpiamos el contenido que
pueda tener el display
lcd.setCursor(0,0);//establecemos la
primera linea donde empezariamos a escribir
lcd.print("Luces de
casa");//Escribimos en el display que se han encendido las luces de la
casa
lcd.setCursor(0,1);
lcd.print("encendidas ");
delay(1000); //Establecemos un retraso de 1
segundo para que podamos leer el display
}
else //si el valor de la luz es mayor o igual
a 800
{
for(int i=2;i<=4;i++)
{
digitalWrite(i,LOW); //los leds del
techo permaneceran apagados
}
lcd.clear();//limpiamos el contenido que
pueda tener el display
lcd.setCursor(0,0);//establecemos la
primera linea donde empezariamos a escribir
lcd.print("Luces de
casa");//Escribimos en el display que se han apagado las luces de la casa
lcd.setCursor(0,1);
lcd.print("apagadas ");
delay(1000); //Establecemos un retraso de 1
segundo para que podamos leer el display
}
if(temperatura<=24.0) //Si la temperatura
es menor a 24
{
digitalWrite(5, HIGH); //encedemos el led
de la chimenea
Serial.println("Temperatura menor a
24"); //imprimimos por el puerto serial que la temperatura es menor a 24
delay(1000);
lcd.clear(); //limpiamos el contenido que
pueda tener el display
lcd.setCursor(0,0);//establecemos la
primera linea donde empezariamos a escribir
lcd.print("La
temperatura");//Escribimos en el display la temperatura que hay ahora
lcd.setCursor(0,1);
lcd.print("ahora es ");
int tempeInt=(int)temperatura; //hacemos
un casting para convertir un float a entero, para facilitar la lectura de la
temperatura
lcd.print(tempeInt,DEC); //escribimos en
la la temperatura en base decimal
//lcd.print(temperatura,DEC);
lcd.print(" C"); //escribimos
una C que representa los grados celsius
delay(5000); //retraso de 5 segundos para
leer bien el display
}
else //si la temperatura es mayor a 24ºC
{
digitalWrite(5, LOW); //apagamos el
led de la chimenea y mostramos la temperatura actual
delay(1000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("La
temperatura");
lcd.setCursor(0,1);
lcd.print("ahora es ");
int tempeInt=(int)temperatura;
lcd.print(tempeInt,DEC);
Serial.println("Temperatura
mayor a 24");
delay(1000);
}
delay(100);
}