Mostrando entradas con la etiqueta ALARMA. Mostrar todas las entradas
Mostrando entradas con la etiqueta ALARMA. Mostrar todas las entradas

jueves, 18 de enero de 2024

Dispositivo de asistencia en el aparcamiento y evacuación de gases inflamables



Alumno: D. David García Martín

Asignatura: Innovación Docente de la Especialidad de Tecnología.

Máster: Máster Universitario en Profesor de Educación Secundaria Obligatoria y Bachillerato, Formación Profesional y Enseñanza de Idiomas

Centro: Universidad de Salamanca.

Curso: 2023/24

PROYECTO




Descripción del proyecto:

El dispositivo que se ha creado tiene la finalidad de prestar asistencia en la maniobra de aparcamiento en de una plaza de garaje individual mediente la emisión de sonidos y luces diversas, así cómo la detección y evacuaciónde  gases inflamables que se encuentren en el habitáculo. La idea es que se encuentre intalado de forma fija en la plaza de garaje en cuestión, con el sensor de ultrasonidos apuntando al morro del coche y la pantalla LCD a una altura suficiente como para que la distancia al obstáculo, que en esta se muestra en todo momento, pueda ser visualizada sin probelmas por el conductor del vehículo. El motor de DC simula el funcionamiento de un ventilador más grande ubicado en el techo de la plaza de garaje.

Los dispositivos de entrada de información de este sistema son el sensor de ultrasonidos HC-SR04 y el sensor de gas MQ-2. En función de sus lecturas, el sistema electrónico realizará diferentes acciones.

  • Lectura del HC-SR04:

    1. Si la distancia al obstáculo (de ahora en adelante "d") es mayor de 50 cm, el LED verde permanecerá encendido y el buzzer no emitirá ningún sonido.
    2. Si 31 < d < 50 cm: el LED amarillo comenzará a parpadear a una velocidad derminada y el buzzer emitirá un sonido de 1600 Hz y 400 ms de duración.
    3. Si 10 < d < 30 cm: el LED rojo comenzará a parpadear a una velocidad más rápida que en el caso anterior y el buzzer emitirá un sonido de 1200 Hz y 150 ms de duración.
    4. Si 0 < d < 9 cm: todos los LED parpadearán al unísono a una velocidad mayor que en los casos anteriores y el buzzer emitirá un sonido de 800 Hz y 50 ms de duración.
  • Lectura del MQ-2: Si el nivel de gas supera un umbral determinado por la calibración del propio sensor, éste emitirá una señal digital del tipo LOW al Arduino. Cuando esto suceda el motor DC se pondrá en marcha a una velocidad constante (señal PWM de 200), de manera que evacuará el gas inflamable del habitáculo. Una vez que la concentración del gas haya disminuido lo suficiente como para que no se active el sensor MQ-2, el motor se parará.


Componentes:

x1 Arduino MEGA 2560

x1 motor DC

x1 transistor NPN PN2222

x1 diodo rectificador

x1 resistencia de 330 Ω

x1 sensor de ultrasonidos HC-SR04

x1 buzzer pasivo

x1 pantalla LCD de 16x2

x1 sensor de gas MQ-2

x3 LED (rojo, amarillo y verde)

x1 potenciómetro de 10 kΩ

x3 resistencias de 220 Ω

Cables macho - macho y protoboard.


ESQUEMA DE CONEXIONES






CÓDIGO ARDUINO


/*Trabajo autónomo Innovación Docente  | MUPES  | Curso 2023/24.
Título: SENSOR DE APARCAMIENTO CON DETECCIÓN DE GAS INFLAMABLE
AUTOR: DAVID GARCÍA MARTÍN   dagama@usal.es
*/

#include <LiquidCrystal.h> //Incluyo la librería correspondiente para utilizar la pantalla LCD.

//Defino los pines de la pantalla LCD de 16x2 y se asigna
const int rs = 5, en = 6, d4 = 7, d5 = 8, d6 = 9, d7 = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

//Inicializo constantes enteras globales que son el número al que se conecta el elemento que da nombre a la constante entera
const int pinTRIG =2;   //Al pin 2 conecto TRIGGER del sensor ultrasónico
const int pinECCO = 3;  //Al pin 3 conecto ECCO del sensor ultrasónico
const int ledVERDE = 22;  //Al pin 22 conecto el LED verde
const int ledAMARILLO = 23;   //Al pin 23 conecto el LED amarillo
const int ledROJO = 24;   //Al pin 24 conecto el LED rojo
const int buzzer = 4;   //Al pin 4 conecto el buzzer pasivo
const int motor = 11;   //Defino pin motor
const int pingas = 50;  //Defino pin del sensor de gas
//Defino las variables necersarias para el cálculo de la distancia con el sensor ultrasónico
long duracion;  //Variable numérica global de tipo long
int distancia;  //Variable numérica global de tipo entera


void setup() {//Pasos que se ejecutan en el arranque del Arduino MEGA
  // Inicializo los pines que voy a usar y los configuro como entradas o salidas según corresponda
  pinMode(pinTRIG, OUTPUT);   //Configuro el pin "pinTRIGG" como pin de salida
  pinMode(pinECCO, INPUT);    //Configuro el pin "pinECCO" como pin de entrada
  pinMode(ledVERDE, OUTPUT);    //Configuro el pin "ledVERDE" como pin de salida
  pinMode(ledAMARILLO, OUTPUT);   //Configuro el pin "ledAMARILLO" como pin de salida
  pinMode(ledROJO, OUTPUT);   //Configuro el pin "ledROJO" como pin de salida
  pinMode(buzzer, OUTPUT);    //Configuro el pin "buzzer" como pin de salida
  pinMode(pingas, INPUT);    //Configuro el pin "pingas" como pin de entrada
  pinMode(motor, OUTPUT);

  //Inicializo la pantalla LCD de 16x2
  lcd.begin(16, 2);
 
  /*Inicializo el puerto serie. Con este se podrá comprobar que las lecturas que
  devuleve la pantalla LCD son correctas.*/
  Serial.begin(9600);
  analogWrite(motor, 0);  //empieza el sketch con el motor parado
}

void loop() {//Bucle principal del programa

  /*Si detecta que hay gas inflamable, activa el ventilador
  para que se vaya el gas*/

  //Genero un pulso en el pin de trigger del sensor ultrasónico
  digitalWrite(pinTRIG, LOW);
  delayMicroseconds(2);
  digitalWrite(pinTRIG, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTRIG, LOW);
 

  //Mido la duración del eco del sensor ultrasónico y calculo la distancia
  duracion = pulseIn(pinECCO, HIGH);
  distancia = duracion * 0.034 / 2; //Fórmula para obtener la distancia en cm al obstáculo

  //Muestro en monitor serial la distancia medida por el sensor ultrasónico
  Serial.print("Distancia: ");
  Serial.println(distancia);

  //En la pantalla LCD se imprime lo siguiente:
  lcd.clear();
  lcd.print("Distancia:");
  lcd.setCursor(0, 1);
  lcd.print(distancia);
  lcd.print(" cm");
 

  //Programación del funcionamiento de los LEDs y del buzzer según la distancia que mide el sensor ultrasónico:
  switch(distancia){
    case 31 ... 50: //Si la distancia al obstáculo está dentro del intervalo [21,50] cm, realiza lo siguiente:
      digitalWrite(ledVERDE, LOW);
      digitalWrite(ledAMARILLO, HIGH);  //Enciende el LED amarillo y apaga el resto
      digitalWrite(ledROJO, LOW);
      tone(buzzer, 1600);  //Emite un sonido de 500 Hz durante 500ms. Posteriormente permanece callado 500ms.
      delay(400);
      noTone(buzzer);
      delay(300);
      digitalWrite(ledAMARILLO, LOW);
      delay(10);
      break;    //sale del caso

    case 10 ... 30: //Si la distancia al obstáculo está dentro del intervalo [0,20] cm, realiza lo siguiente:
      digitalWrite(ledVERDE, LOW);
      digitalWrite(ledAMARILLO, LOW);
      digitalWrite(ledROJO, HIGH);  //Enciende el LED rojo y apaga el resto
      tone(buzzer, 1200); //Emite un sonido de 1000 Hz durante 300ms. Posteriormente permanece callado 300ms.
      delay(150);
      noTone(buzzer);
      delay(50);
      digitalWrite(ledROJO, LOW);
      delay(10);
      break;    //sale del caso

    case 0 ... 9:
      digitalWrite(ledVERDE, HIGH);
      digitalWrite(ledAMARILLO, HIGH);
      digitalWrite(ledROJO, HIGH);  //Enciende todos los LED
      tone(buzzer, 800); //Emite un sonido de 1000 Hz durante 300ms. Posteriormente permanece callado 300ms.
      delay(100);
      noTone(buzzer);
      delay(50);
      digitalWrite(ledVERDE, LOW);
      digitalWrite(ledAMARILLO, LOW);
      digitalWrite(ledROJO, LOW);
      delay(5);
      break;  //sale del caso

    default:  /*Si la distancia al obstáculo es mayor que 50 cm, es decir que no es ninguno de
              los dos intervalos anteriores, realiza lo siguiente:*/
      digitalWrite(ledVERDE, HIGH); //Enciende el LED verde y los demás permanecen apagados
      digitalWrite(ledAMARILLO, LOW);
      digitalWrite(ledROJO, LOW);
      noTone(buzzer); //No genera pitido
      break;    //sale del caso
  }


  /*Introduzco una pequeña pausa antes de que se reinicie el bucle.
  De esta manera evito que trabaje a una velocidad excesivamente alta,
  además de que se podrán visualizar las medidas con más calma*/
  delay(100);

  int estado = digitalRead(pingas); //creo una valiable de estado que recoge la señal digital del MQ-2
  if (estado == LOW) {      ////del sesnor MQ-2. Como este trabaja con lógica inversa, el código queda así.
      analogWrite(motor, 200);
  } else {
    analogWrite(motor, 0);
  }

}   // Fin del bucle


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.