Detector de humo
Proyecto desarrollado por el grupo 1, formado por Rebeca Sanz Lozano de la asignatura Diseño de Sistemas Empotrados, curso 2021-2022 y grado en Ingeniería de Computadores.
LISTA DE MATERIALES
Componente | Precio |
Arduino nano | 5€ |
Placas PCB doble cara | 1€ |
Led azul | – |
Cables | – |
Cables 5 pines macho-hembra | – |
Buzzer | – |
Led infrarrojo | 0.50€ |
Fotodiodo receptor de infrarrojo | 2€ |
Resistencia 1 M | – |
Resistencia 220 Ω | – |
Resistencia 100 Ω | – |
Pila 9V | – |
Super Starter Kit UNO R3 Project | 40€ |
TOTAL | 48.5€ |
Impresora 3D Prusa Mini+ | 485€ |
Kit de soldador | 20€ |
PLA | 35€ |
TOTAL | 540€ |
Los materiales que aparecen en cursiva son opcionales, no son necesarios para la elaboración del proyecto pero para la impresión del gato así como de la recámara que contiene el fotodiodo y el infrarrojo, son necesarios.
INTRODUCCIÓN
El proyecto se ha basado en la dispersión de Rayleigh, fenómeno físico que explica la dispersión de la luz. Aplicado a este proyecto el led de infrarrojos va a emitir luz y en caso de que en ese momento haya humo va a chocar con las partículas del humo y esto podrá ser detectado por el fotodiodo, tal y como aparece en la siguiente fotografía.
HARDWARE
En primer lugar, había que decidir que material usar para la impresión del gato, lo cual supuso ciertos contratiempos que se explican en detalle en la memoria del proyecto. Una vez solucionado esto, se realizó el diseño 3D tanto de la recámara como del gato usando Fusion 360.
El hardware está dividido en dos partes. La parte de la cabeza del gato y el cuerpo.
CÓDIGO
const int buzzer = 12;
int sensorPin = A0;
int valores[10];
int i;
int media1, media2;
const int led = 3;
#define TIME 4000
void setup() {
Serial.begin(9600);
pinMode(buzzer, OUTPUT);
pinMode(led, OUTPUT);
media1 = calcularMedia();
delay(TIME);
}
void loop() {
media2 = calcularMedia();
Serial.println(media1);
Serial.println(media2);
if(media2 < media1 - 5){
tone (buzzer, 100);
digitalWrite(led, HIGH);
Serial.println("Alarma activada ");
} else {
media1 = media2;
noTone(buzzer);
digitalWrite(led, LOW);
Serial.println("Alarma no activada ");
}
delay(4000);
}
int calcularMedia(){
int media;
int sum = 0;
for(i = 0; i<10; i++){
valores[i] = analogRead(sensorPin);
sum+= valores[i];
/*Serial.print("Valor: ");
Serial.println(valores[i]);
Serial.print("Sum: ");
Serial.println(sum);*/
}
media = sum / 10;
return media;
}
VÍDEO DEMOSTRACIÓN
Enlace al vídeo : https://drive.google.com/file/d/13fGxk1w6zMrC96B8Z0jtaRJBnR9u6CqY/view?usp=sharing