Sistema de Seguridad con Arduino
El sistema estará compuesto por un sensor de movimiento, sensor de apertura de ventana, el RFID, alarma de sonido, un sistema para abrir la puerta y una pantalla LCD con adaptador de salida paralela a I2C para mostrar la información de los estados de la alarma.
Lo primero que hice fue buscar información sobre el sensor de movimiento y el Sistema RFID, buscando las librerías adecuadas para arduino.
La librería que estoy utilizando para el Sistema RFID es rfid-master, la librería podéis descargarla aquí.
Lo primero que hice fue crear un programa sencillo para leer el numero de la tarjeta o llavero, y que lo mostrara en el terminal Serial de Arduino.
Tras conocer el numero de la tarjeta, podemos decirle que si el numero se corresponde con el numero que tenemos guardado realice expresamente algo, por ejemplo encender un led verde y mostrar por el terminal que la tarjeta es la correcta, y si el numero no se corresponde con el numero guardado, puede encender un led rojo e indicar por el terminal que la tarjeta no es la correcta.
La conexión del sistema RFID con el arduino Mega 2650 es la siguiente:
RFID Arduino
SDA PIN 53
SCK PIN 52
MOSI PIN 51
MISO PIN 50
GND GND
RST PIN 5
3,3V 3,3V
La realización de la placa se a realizado por método fotográfico, en la fotoploter y con foto insolación. Incorporo los pasos realizados:
Eficiencia Energética
Vídeo del proyecto terminado
La librería que estoy utilizando para el Sistema RFID es rfid-master, la librería podéis descargarla aquí.
RFID
Lo primero que hice fue crear un programa sencillo para leer el numero de la tarjeta o llavero, y que lo mostrara en el terminal Serial de Arduino.
//**** Ejemplo de código de Arancha Requena
#include <SPI.h>
#include <MFRC522.h>
MFRC522 rfid(53, 5); //Pines 53 del SPI SS, y pin 5 del Reset
void setup () {
Serial.begin (9600);
SPI.begin ();
rfid.PCD_Init();
Serial.println("Init...");
}
void loop(){
if (rfid.PICC_IsNewCardPresent()){
Serial.println("");
Serial.println("New Card");
if (rfid.PICC_ReadCardSerial()){ // esto mostrará los 16 dígitos de la tarjeta
Serial.println ("");
Serial.println ("el numero de serie de la tarjeta es:");
Serial.print (rfid.uid.uidByte[0], DEC);
Serial.print (",");
Serial.print (rfid.uid.uidByte[1], DEC);
Serial.print (",");
Serial.print (rfid.uid.uidByte[2], DEC);
Serial.print (",");
Serial.print (rfid.uid.uidByte[3], DEC);
Serial.print (",");
Serial.print (rfid.uid.uidByte[4], DEC);
Serial.println ("");
delay(350);
}
}
}
Tras conocer el numero de la tarjeta, podemos decirle que si el numero se corresponde con el numero que tenemos guardado realice expresamente algo, por ejemplo encender un led verde y mostrar por el terminal que la tarjeta es la correcta, y si el numero no se corresponde con el numero guardado, puede encender un led rojo e indicar por el terminal que la tarjeta no es la correcta.
La conexión del sistema RFID con el arduino Mega 2650 es la siguiente:
RFID Arduino
SDA PIN 53
SCK PIN 52
MOSI PIN 51
MISO PIN 50
GND GND
RST PIN 5
3,3V 3,3V
Sensor Movimiento PIR
Para la detección de movimiento en este sistema de seguridad voy a utilizar un PIR Sensor el cual a través del cambio de calor mide el movimiento, este sensor es fácil de conectar con el Arduino solo tiene 3 patillas, una de alimentación a 5 voltios(VCC), la salida del sensor(OUT) y masa(GND).
El programa que hemos realizado en arduino para su comprobación es sencillo, diciéndole simplemente que cuando el sensor lea un 1 significa que hay movimiento y enciende un led para indicar el movimiento.
Sensor Pir y conexion a Arduino |
/************************************************************** Programa Arduino PIR SENSOR | BY Arancha Requena Perez **************************************************************/int ledPin = 8; // comprobacion con el pin 8int inputPin = 2; // entrada del sensor (PIR sensor)int val = 0; // variable para guardar la entrada de inputPinvoid setup() {pinMode(ledPin, OUTPUT); // ledPin salidapinMode(inputPin, INPUT); // inputPin entradaSerial.begin(9600);Serial.println("Init...");}void loop(){val = digitalRead(inputPin); // lee la entrada del sensor y la almacena en valif(val==HIGH){Serial.println("movimiento detectado");digitalWrite(ledPin, HIGH); // si val es igual a HIGH(alto) el pin 8 se pone en Alto}else{digitalWrite(ledPin,LOW);Serial.println("sin movimiento");}delay(250);}
Maqueta sensores
Para hacer los sensores de ventana, la alarma y el motor de la cerradura de la puerta, estoy realizando una maqueta en una placa, para saber que esta ocurriendo en el Sistema de Alarma, cuando se active uno de los sensores de ventana se encenderá un led indicando la apertura de esa ventana, lo mismo ocurrirá cuando se active el altavoz de aviso de intruso, e incluso con la apertura de la cerradura. He realizado un primer esquema en Ares proteus y quedara mas o menos así.
PCB(Ares) de la maqueta |
3D de la maqueta(Ares) |
Primer paso: Realizar el Negativo de la placa
Segundo paso: Ponerle el papel foto sensible a la placa de cobre
Tercer paso: Alinear el negativo y los agujeros de la placa
Cuarto paso: Foto insolación
Quinto paso: Revelador
Sexto paso: Horno para endurecer la placa
Séptimo paso: Cloruro Férrico
Octavo paso: Quita Film
A continuación para la mascara de soldadura se repite el proceso encima de las pistas, a excepción de que después del revelado no se introduce en el ácido, ni en el quita Film, dejando los huecos para poder soldar los componentes.
Depuración de programas |
Driver Motor
Puesto que nuestro sistema de Alarma sera controlado principalmente por el RFID, al desactivar la alarma también nos abrirá el cerrojo de la puerta, por lo que a nuestro sistema le vamos a incorpora un Driver para controlar un motor.
El proceso de creación va a ser el mismo que para la placa de la maqueta, por foto insolación.
Primero realizamos el PCB de la placa, la cual esta compuesta por una fuente conmutada de alimentación de 12v para alimentar el Driver(TC4422,Microchip),y el driver ataca a el transistor IRF540,ST que habilita la puesta en marcha del motor.
PCB(Ares) del Controlador Motor |
Driver Motor |
Serigrafia |
Driver motor montado |
Sensores Ventana
Tras realizar el driver del motor, he terminado de realizar el programa del sensor de las ventanas, depurandolo con la conexión a la maqueta. El código que pongo a continuación es tan solo el programa de la detección de ventana abierta o cerrada de la habitación y el salón, y el vídeo que pondré a continuación del código, es la unión de los programas en el principal del sistema de seguridad.
int salon=4,habitacion=5,ledsalon=6,ledhabitacion=7,rfid=8;int val=0,valsalon=0,valhabitacion=0;void setup(){pinMode(salon,INPUT);pinMode(habitacion,INPUT);pinMode(ledhabitacion,OUTPUT);pinMode(ledsalon,OUTPUT);pinMode(rfid,INPUT);Serial.begin(9600);digitalWrite(ledhabitacion,HIGH);digitalWrite(ledsalon,HIGH);Serial.println("init...");}void loop(){val=digitalRead(rfid);digitalWrite(ledhabitacion,HIGH);digitalWrite(ledsalon,HIGH);if(val==LOW){ //para aclararme simulo el estado de conexion o desconexion de la alarmaSerial.println("alarma activada");digitalWrite(ledsalon,LOW);digitalWrite(ledhabitacion,LOW);valhabitacion=digitalRead(habitacion);valsalon=digitalRead(salon);if(valhabitacion == HIGH){Serial.println("Ventana habitacion abierta");}else{Serial.println("Ventana habitacion cerrada");}if(valsalon==HIGH){Serial.println("Ventana salon abierta");}else{Serial.println("Ventana salon cerrada");}delay(500);}}
Comunicacion Arduino Mega y Arduino Uno
Tras tenerlo casi todo listo con el Arduino Mega, he realizado una comunicación con un Arduino Uno, el cual cuando recibe un comando del Arduino Mega este actúa en consecuencia.
En mi caso he incorporado una pantalla LCD de 16x2 por comunicación I2C, en la cual recordar hay que añadirle una resistencia de fin de bus en cada hilo de comunicación, este bus esta compuesto por 2 hilos, el SDA y el SCL, además de VCC y GND.
El Arduino Mega procesa toda la información que le llega de los sensores(sensor de movimiento, sensores de ventana y RFID) y actúa sobre los actuadores(altavoz de alarma y motor de cerradura). Esa información también se la paso al Arduino Uno haciendo este que se muestre por la pantalla LCD el estado de la Alarma.
Datos Sensores
Tras tener el Sistema completo, he realizado un seguimiento de los estados de la alarma, guardando así el estado de los sensores con la fecha y hora del momento en el que se produjo. Guardando así también la fecha y hora de activación o desactivación de la alarma y que persona fue la que dio esas ordenes. El sistema de guardado se realiza a través de la programación con Processing leyendo del puerto serie los datos que manda el arduino y almacenándolos en un archivo txt.
Eficiencia Energética
En este proyecto hemos pensado también en la eficiencia energética, como el control de nuestro motor para abrir la cerradura, puesto que cuando pasas la tarjeta por primera vez que te identifica tras desactivar la alarma, el motor se pone en marcha, pero si vuelves a pasar la tarjeta en repetidas ocasiones, el motor no se volverá a encender.
Nuestra maqueta utiliza leds de bajo consumo.
El altavoz esta programado para un sonido intermitente, y que así no se caliente y no consuma mas.
Fuente de alimentación con un 88% de alta eficiencia.
Fuente de alimentación con un 88% de alta eficiencia.
Diagrama de estados
Vídeo del proyecto terminado
Gantt Proyect
¿Se podrá consultar el estado de la alarma por Internet?
ResponderEliminar¿Y el Gantt?
ResponderEliminarYa lo e incorporado, lo quite para actualizarlo.
EliminarHola, oye que librerias usaste para la comunicacion i2c con el lcd , por que mira que he buscado como loco y no encuentro dar con el programa adecuado , tutorial o libreria que funcione ese modulo (y me compre el mismo al que tomaste foto ). Me podrias ayudar
ResponderEliminarmi pana gracias x este gran aporte, quiero usar un modulo de GSM en me envie un msj de texto, dando las alertas de cada evento ocurrido. Gracias.
ResponderEliminar