jueves, 6 de marzo de 2014

CASA INTELIGENTE REALIZADA CON ARDUINO

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);
 
}

 ESQUEMA DEL CIRCUITO REALIZADO CON FRITZING







lunes, 24 de febrero de 2014

PROYECTO PEAJE CON ARDUINO

PRESENTACIÓN.

El trabajo consiste en diseñar un peaje programado con Arduino, para poder desarrollarlo con alumnos de 3º de E.S.O. para la asignatura de Tecnología.
Se ha realizado la maqueta de un peaje a partir de los siguientes componentes de arduino:

- Placa Arduino:
- Breadboard:


 

- Servomotor:

- Dos fotoreceptores:




- Dos resistencias:




- Condensador:
- Cables para realizar las conexiones.



            Con este proyecto somos capaces de desarollar los objetivos, contenidos y criterios de evaluación de Educación Secundaria Obligatoria  descritos en el DECRETO 52/2007, 17 de mayo, (BOCYL 23 mayo 2007). Enmarcados para 3º de la E.S.O. Bloque nº 5 "Electricidad y electrónica" de dicho decreto.


VIDEOS  Y FOTOGRAFÍAS DEL PROYECTO.

A continuación os dejamos unos videos explicativos del proyecto acabado y en funcionamiento.

VIDEO - Funcionamiento del peaje - Arduino

En este vídeo se muestra el funcionamiento del proyecto realizado con arduino de un peaje activando un servomotor con sensores fotosensibles.



VIDEO - Componentes y elementos del proyecto - Arduino

En este vídeo se muestran y explican los componentes y conexiones del proyecto realizado con arduino de un peaje activando un servomotor con sensores fotosensibles.



FOTOGRAFÍAS  DEL MONTAJE.


Esta foto es de Arduino antes de instalarlo en la maqueta de nuestro proyecto con todos los elementos que hemos utilizado: placa Arduino, placa breadboard, resistencias, sensores fotoeléctricos, condensador, servomotor, condensador y cables de conexión.


En esta foto podemos ver la placa breadboard con los elementos necesarios para realizar el proyecto y la placa Arduino.


Una vez que hemos visto lo relacionado con Arduino las siguientes fotos se centran en la maqueta
del proyecto y de la funcionalidad.


El coche entraría por la carretera y al pasar por encima del primer sensor la barrera se elevaría.


La barrera se levanta...


...y no se cerrará hasta que el coche pase por encima del segundo sensor.






CÓDIGO PARA ARDUINO.

Este es el código comentado para el funcionamiento de la barrera del peaje y que podréis utilizar en vuestro Arduino (el código fuente está a continuación del comentado):



/*
Antonio Román Gallego
Alvaro Ferrero Alvarez
Daniel Fernandez
*/


//Libreria del servo y variables del servo
#include <Servo.h>


Incluimos la librería servo.h ya que vamos a trabajar con el servo motor.

Servo myServo; // objeto servo
int angle;
//Varibles para los sensores de luz
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;
int umbral0;
int umbral1;
int sensorValue2;
int sensorLow2 = 1023;
int sensorHigh2 = 0;
int potVal2;
int potVal;





Variable definidas: angle es el valor en grados para que se mueva el servo.  SensorValue, sensorLow y sensorHigh son para la calibración de los sensores por eso están por duplicado, low tiene un valor muy alto y high un valor muy bajo para para la efectividad de la calibración. Los potVal son para compararlos con umbral (definida su función más abajo) y en función de su comparación hacer actuar al servo de una u otra manera.

void setup() {



La función setup() se establece cuando se inicia un programa -sketch. Se emplea para iniciar variables, establecer el estado de los pins, etc. Esta función se ejecutará una única vez después de que se conecte la placa Arduino a la fuente de alimentación, o cuando se pulse el botón de reinicio de la placa.

myServo.attach(9);
Serial.begin(9600); 


Sirve para inicializar el modo monitor y así poder ver los valores que recogemos del exterior con los sensores.


// monitor
// calibracion primer sensor
 

while (millis() < 5000) {
sensorValue = analogRead(A0);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}




Estas 9 líneas de código las utilizamos para la calibración del primer sensor de luz que se llevara a cabo durante los 5 primeros segundos (5000 milisegundos) desde que arranca el programa. Leerá de A0 (entrada analógica) los datos procedentes del exterior y asignara el valor más alto de luz a sensorHigh y el valor más bajo a sensorLow.

Para la calibración del segundo sensor de luz el código será el mismo pero con variables distintas (sensorValue2, sensorHigh2 y sensorLow2) y en vez de 5 segundos 10, ya que los primeros cinco irán dedicados al primer sensor y los siguientes 5 irán al segundo.

Serial.println(sensorHigh);
Serial.println(sensorLow);
// calibracion del segundo sensor
while (millis() < 10000) {
// valor maximo
sensorValue2 = analogRead(A1);
if (sensorValue2 > sensorHigh2) {
sensorHigh2 = sensorValue2;
}
// valor minimo
if (sensorValue2 < sensorLow2) {
sensorLow2 = sensorValue2;
}
}
Serial.println(sensorHigh2);
Serial.println(sensorLow2);
umbral0 = sensorLow + ((sensorHigh - sensorLow) / 2) - 10;
umbral1 = sensorLow2 + ((sensorHigh2 - sensorLow2) / 2) - 10;




Asignamos a la variable umbral0 y a umbral2 el valor resultante de la operación de arriba que será un valor ligeramente menor a la mitad del valor más alto con el fin de que si el valor de luz que detecta del exterior es menor que este valor actuara el servomotor.

Serial.println(umbral0);
Serial.println(umbral1);
delay(10000);
}
void loop() {




La función loop(), se ejecuta consecutivamente, permitiéndole al programa variar y responder. Se usa para controlar de forma activa la placa Arduino.

//lectura in del exterior (luz)
potVal = analogRead(A0);
potVal2 = analogRead(A1);




Asignamos a las variables potVal y potVal2  lo datos recogidos por los sensores con las entradas analógicas de A0 y A1.

if(potVal < umbral0){
Serial.print("potVal: ");
Serial.print(potVal);
Serial.println(umbral0);
angle = 90;
Serial.print(", angle: ");
Serial.println(angle);
//posicion servo
myServo.write(angle);




Si potVal es menor que umbral0 le asignamos el valor 90 a la variable angle y por tanto más tarde mandamos al servomotor que se mueva de 0 a 90 grados. Hacemos lo mismo con lo que recoja el segundo sensor  pero a angle le asignamos el valor 0 para que el servo se mueva de 90 a 0 grados.

delay(300);
}
if(potVal2 < umbral1){
Serial.print("potVal2: ");
Serial.print(potVal2);
Serial.println(umbral1);
angle = 0;
Serial.print(", angle2: ");
Serial.println(angle);
// posicion servo
myServo.write(angle);
delay(300);
}
}





Código sin comentarios para incluir directamente en Arduino:

/*
Antonio Román Gallego
Alvaro Ferrero Alvarez
Daniel Fernandez
*/


//Libreria del servo y variables del servo
#include <Servo.h>


Servo myServo; // objeto servo
int angle;
//Varibles para los sensores de luz
int sensorValue;
int sensorLow = 1023;
int sensorHigh = 0;
int umbral0;
int umbral1;
int sensorValue2;
int sensorLow2 = 1023;
int sensorHigh2 = 0;
int potVal2;
int potVal;
void setup() {
myServo.attach(9);
Serial.begin(9600); // monitor
// calibracion primer sensor
while (millis() < 5000) {
sensorValue = analogRead(A0);
if (sensorValue > sensorHigh) {
sensorHigh = sensorValue;
}
if (sensorValue < sensorLow) {
sensorLow = sensorValue;
}
}
Serial.println(sensorHigh);
Serial.println(sensorLow);
// calibracion del segundo sensor
while (millis() < 10000) {
// valor maximo
sensorValue2 = analogRead(A1);
if (sensorValue2 > sensorHigh2) {
sensorHigh2 = sensorValue2;
}
// valor minimo
if (sensorValue2 < sensorLow2) {
sensorLow2 = sensorValue2;
}
}
Serial.println(sensorHigh2);
Serial.println(sensorLow2);
umbral0 = sensorLow + ((sensorHigh - sensorLow) / 2) - 10;
umbral1 = sensorLow2 + ((sensorHigh2 - sensorLow2) / 2) - 10;
Serial.println(umbral0);
Serial.println(umbral1);
delay(10000);
}
void loop() {
//lectura in del exterior (luz)
potVal = analogRead(A0);
potVal2 = analogRead(A1);
if(potVal < umbral0){
Serial.print("potVal: ");
Serial.print(potVal);
Serial.println(umbral0);
angle = 90;
Serial.print(", angle: ");
Serial.println(angle);
//posicion servo
myServo.write(angle);
delay(300);
}
if(potVal2 < umbral1){
Serial.print("potVal2: ");
Serial.print(potVal2);
Serial.println(umbral1);
angle = 0;
Serial.print(", angle2: ");
Serial.println(angle);
// posicion servo
myServo.write(angle);
delay(300);
}
}



ESQUEMAS FRITZING.

Estos son los esquemas del proyecto realizado, creemos que esto os será útil a la hora de realizar el proyecto.












Esperamos que os haya gustado nuestra propuesta y que os animéis a realizarla.


Realizado por Antonio Román Gallego, Álvaro Ferrero Álvarez y Daniel Fernández García para la asignatura de "Innovación en la especialidad de tecnología" del Master de Educación Secundaria. Universidad de Salamanca.

martes, 18 de febrero de 2014

CONSTRUCCIÓN ALARMA CON ARDUINO



1 INTRODUCCIÓN:

El proyecto consiste en diseñar un proyecto con Arduino, para poder desarrollarlo con alumnos de 4º de E.S.O.
Hemos diseñado una alarma que se active con un sensor  de movimiento, que activa una luz y un zumbador, apandolo con un pulsador

2 MARCO LEGISLATIVO:
            Con este proyecto somos capaces de desarollar los objetivos, contenidos y criterios de evaluación de Educación Secundaria Obligatoria  descritos en el DECRETO 52/2007, 17 de mayo, (BOCYL 23 mayo 2007). Enmarcados para 4ºde la E.S.O. son las siguientes:

2.1 Objetivos:

Objetivo 1. Abordar con autonomía y creatividad problemas tecnológicos trabajando de forma ordenada y metódica para estudiar el problema, recopilar y seleccionar información procedente de distintas fuentes, elaborar la documentación pertinente, concebir, diseñar, planificar y construir objetos o sistemas que resuelvan el problema estudiado y evaluar su idoneidad desde distintos puntos de vista.
Objetivo 2. Adquirir destrezas técnicas y conocimientos suficientes para el análisis, intervención, diseño, elaboración y manipulación de forma segura y precisa de materiales, objetos y sistemas tecnológicos.
Objetivo 3. Analizar los objetos y sistemas técnicos para comprender su funcionamiento, conocer sus elementos y las funciones que realizan, aprender la mejor forma de usarlos y controlarlos y entender las condiciones fundamentales que han intervenido en su diseño y construcción.
Objetivo 4. Expresar y comunicar ideas y soluciones técnicas, así como explorar su viabilidad y alcance utilizando los medios tecnológicos, recursos gráficos, la simbología y el vocabulario adecuados.
Objetivo 5. Adoptar actitudes favorables a la resolución de problemas técnicos, desarrollando interés y curiosidad hacia la actividad tecnológica, analizando y valorando críticamente la investigación y el desarrollo tecnológico y su influencia en la sociedad, en el medio ambiente, en la salud y en el bienestar personal y colectivo.
Objetivo 8. Actuar de forma dialogante, flexible y responsable en el trabajo en equipo, en la búsqueda de soluciones, en la toma de decisiones y en la ejecución de las tareas encomendadas con actitud de respeto, cooperación, tolerancia y solidaridad.
Objetivo 10. Desarrollar habilidades necesarias para manipular con precisión y seguridad herramientas, objetos y sistemas tecnológicos.

2.2 Contenidos:
Bloque 3. Electricidad y electrónica.
Bloque 3.1  Electrónica analógica. Componentes electrónicos básicos. Descripción y análisis de sistemas electrónicos por bloques: entrada, salida y proceso. Dispositivos de entrada: interruptores, resistencias que varían con la luz y la temperatura. Dispositivos de salida: zumbador, rele, led y otros. Dispositivos de proceso: los integrados. Aplicaciones en montajes básicos.

2.3 Criterios de evaluación
Criterio Evaluación 5. Describir el funcionamiento, aplicación y componentes elementales de un sistema electrónico real.
Criterio Evaluación 6. Diseñar, simular y montar circuitos electrónicos sencillos, utilizando la simbología adecuada.

3 EXPOSICIÓN DEL PROYECTO
El objetivo de este proyecto es conocer y aprender a manejar el Kit de Arduino Uno. Para una aplicación práctica en la asignatura de Tecnología de la E.S.O.
En la actividad que se desarrolle en 4º de la E.S.O. lo enfocamos como el diseño de un Proyecto Técnico, cuyos puntos se pueden resumir en:
     Anteproyecto
Exposición de la actividad de contrucción de alarma
Recopilar información y documentación de Internet respecto al tema
Plantear diferentes soluciones, con sus posibles ventajas e inconvenientes.

Diseño
Seleccionar la mejor opción del grupo de soluciones.
Representar gráficamente fitzing
Que materiales necesitamos
           
Planificación
Distribución de tareas.
Listado concreto de herramientas.
Estimación temporal.

Construcción/Ejecución (es una fase más, no la única!!)
Implementar la solución propuesta.
Anotar posibles incidencias y cómo se resolvieron.
Fabricar piezas/secciones y realizar control de calidad individual.

Evaluación
¿Se ha dado respuesta a la necesidad inicial?
Propuestas de mejora.
Resumen de conocimientos teórico-científicos aplicados y de las habilidades técnicas desarrolladas.

Memoria del proyecto
Debe informar al lector con detalle (importancia de dar a los alumnos un modelo o estructura de memoria).

La idea del proyecto ha sido la construcción de una alarma la cual se activa con un sensor de movimiento y activa un led (señal visual) y un zumbador o señal acústica, la alarma se para con un pulsador.

Para desarrollar el proyecto los materiales utilizados son los siguientes:

HARWARE:
·        Microprocesador Arduino UNO: Arduino puede ser utilizado para desarrollar objetos autónomos e interactivos, como prototipos o interactuar con software instalado en el ordenador. Dada su rápida curva de aprendizaje y su precio económico es ideal para educadores, diseñadores y cualquiera interesado en la electrónica y robótica.
·        Tableta: o Breadboard. Para realizar prototipos rápidos en poco espacio. Donde montaremos realizaremos parte de proyecto.




·        Leds: Será una de las salidas, cuando la alarma se active.



·        Zumbador: :  Permite emitir sonidos en el rango audible de 2 KHz Será otra de las salidas, cuando la alarma se active


·        2 resistencias 220 ohmnios.

·        Pulsador: Nos permitira apagar la alarma de manera manual

 
·        Detector Movimiento: Sensor PIR detecta el movimiento de cualquier objeto o persona en toda una habitación! Simplemente conectado y espera unos 2 segundos y estará listo. Cuando detecte algún movimiento, el pin de "alarma" pasará a nivel bajo.


·        Cables de conexión y conexión USB

SOFWARE

·        Arduino Ide. Programa utilizado para programar

/*
 * PIR sensor alarm by Oscar, Juan Antonio and Victor
 */

// Definicion de variables y de constantes para simplificar el codigo
int PinSensor = 13;                         // pin del sensor PIR
int PinLed = 8;                             // pin del LED
int PinPiezo = 4;                           // pin del PIEZO
int PinPulsador = 2;                        // pin del PULSADOR
int estado = 0;                             // estado del sensor de movimiento 0=reposo 1=movimiento
int contador = 0;                           // contador de mensajes 0=mensajereposo 1=mensajemovimiento
int tono = 1000;                            // tono del piezo
int parada;                                 // definicion de una variable auxiliar
int pitido;                                 // definicion de una variable auxiliar



// Preparacion del circuito = Setup del circuito
void setup()
{
  pinMode(PinSensor, INPUT);                // definicion del pin del sensor (pin 13) como entrada/input
  pinMode(PinLed, OUTPUT);                  // definicion del pin del led (pin 8) como salida/output
  pinMode(PinPiezo, OUTPUT);                // definicion del pin del piezo (pin 4) como salida
  pinMode(PinPulsador, INPUT);              // definicion del pin del pulsador (pin 2) como entrada
  Serial.begin(9600);                       // velocidad de comunicacion con el sensor
}

// Programa que se va a ejecutar
void loop()                            // Bucle para que el programa se ejecute continuamente
{
  estado = digitalRead(PinSensor);     // Variable que toma el valor que proporciona el sensor
 parada = digitalRead(PinPulsador);      // Variable que toma el valor que proporciona el pulsador
  if (estado == HIGH)                       // Condicional para cuando el estado sea 1=HIGH
  {
    digitalWrite(PinLed, HIGH);             // Encendido del Led
    if (contador == 0)                      // Condicional para cuando el mensaje actual es "Reposo"
    {
      Serial.println("Movimiento!!!");      // Nuevo mensaje
      contador = 1;                         // Actualizacion del contador de mensajes
      pitido = HIGH;                        // Segnal para que empiece el pitido
    }
  }
  if (estado == LOW)                        // Condicional para cuando el estado no es 1=HIGH
  {
    digitalWrite(PinLed, LOW);              // Apagado del Led
    if (contador == 1)                      // Condicional para cuando el mensaje actual es "Movimiento"
    {
      Serial.println("Reposo");             // Nuevo mensaje
      contador = 0;                         // Mensaje actualizado
    } 
  }
  if (pitido == HIGH)                       // Condicional para cuando el piezo tiene que pitar
  {
    tone(PinPiezo, tono, 200);              // Codigo del piezo para que pite
  }
  if (parada == HIGH)                       // Condicional para cuando el pulsador de parada ha sido activado
  {
    pitido = LOW;                           // Segnal para que pare el pitido
    delay (3000);                           // Margen de tiempo para "salir corriendo"
  }
}



·        Fritzing. Programa utilizar para dibujar el circuito.