Alarma de seguridad con arduino. Grupo 20 Móstoles

ALARMA DE SEGURIDAD CON ARDUINO

SISTEMAS EMPOTRADOS Y DE TIEMPO REAL

GRUPO 20:

FRANCISCO JAVIER HIGUERA MONTERO

MÓNICA RODRÍGUEZ PÉREZ

FÉLIX MUÑUMEL PIAYA

Índice:

1. Introducción.

2. Materiales.

3. Esquema de montaje.

4. Funcionamiento.

4.1. Teclado matricial 4×4.

4.2. Pantalla LCD.

4.3. Buzzer.

4.4. Sensor ultrasónico.

4.5. LEDs.

5. Problemas y mejoras.

5.1. Problemas.

5.2. Mejoras.

6. Código.

6.1. Declaración de variables.

6.2. void setup().

6.3. void loop().

6.4. long getDistancia().

7. Video demostrativo. 

1. Introducción

En la siguiente memoria, vamos a describir el sistema de seguridad que hemos realizado 
basado en Arduino e inspirado en una alarma convencional del hogar.
Después de analizar varios proyectos, decidimos quedarnos con este en concreto 
después de pasar por otros como: una batería solar para el teléfono y un brazo robótico 
para diseño gráfico. 
El primero no acababa de convencernos debido a que no presentaba una gran variedad 
de funcionalidades y siguiendo el consejo del profesor decidimos descartarlo. 
El segundo lo abandonamos debido a que presentaba una serie de dificultades 
que no supimos afrontar en un principio como el diseño de una placa personalizada.

En este proyecto hemos hecho uso de Arduino Mega debido a que desde el principio 
queríamos afrontar un desarrollo que tuviera un número considerable 
de elementos externos, como la pantalla LCD o el Keypad por nombrar algunos, 
por lo que era fundamental por la necesidad de tener más pines.
 

2. Materiales.

MATERIALES
IMAGEN
PLACA ARDUINO MEGA 2560
TECLADO MATRICIAL 4×4
PANTALLA LCD
BUZZER
SENSOR ULTRASÓNICO
PROTOBOARD
CABLE MACHO-HEMBRA
CABLE MACHO-MACHO
LEDS
CAJA CONEXIONES

3.      Esquema de montaje.

4.      Funcionamiento.

En esta sección, explicamos el funcionamiento de cada uno de los componentes de 
nuestro proyecto.

4.1.  Teclado matricial 4×4.

La función principal del teclado matricial 4×4, es interactuar con el Arduino
 mediante sus botones. Cada botón tiene una función.



Mediante los números se puede introducir la contraseña, para así poder desactivar 
la alarma y también se puede introducir la nueva contraseña. 
Para utilizar el teclado, es necesario introducir la librería Keypad.h 
y crear una matriz de char para inicializar el teclado:



//Columnas y Filas del Keypad 
const byte ROWS = 4; 
const byte COLS = 4; 
char tecla;

//Keypad
char keyMap [ROWS][COLS] = {
    {‘1′,’2′,’3′,’A’},
    {‘4′,’5′,’6′,’B’},
    {‘7′,’8′,’9′,’C’},
    {‘*’,’0′,’#’,’D’}  
};



Después de inicializar el teclado, lo que tuvimos que hacer fue instanciarlo con el siguiente 
código:



Keypad teclado = Keypad( makeKeymap(keyMap), rowPins, colPins, ROWS,
COLS);

4.2 Pantalla LCD.

La pantalla LCD, es la encargada de mostrarnos en que parte del proceso nos 
encontramos, también muestra por pantalla las opciones que vamos seleccionando por 
teclado. Para utilizar la pantalla LCD es necesario introducir la librería LiquidCrystal.h 
y se deben introducir las entradas que van a ser distintas con respecto a las iniciales 
de la librería.

Declaración de variables que utilizan Pin:
int RS = 2; //Register Selector
int E = 3; //Enable
int D4 = 4; //Datos 1
int D5 = 5; //Datos 2
int D6 = 6; //Datos 3
int D7 = 7; //Datos 4
int V0 = 12; //Contraste

Declaración de Variables que no utilizan Pin:
VSS: Ground/Negativo
VDD: Positivo 5V (Resistencia antes)
Ánodo: Positivo 5V
Cátodo: Ground/Negativo
Además, solo será necesario utilizar 4 de las 8 entradas de datos disponibles en
la pantalla LCD debido al modelo de pantalla utilizado.

 4.3.  Buzzer.

Lo primero que se debe hacer es definir donde se ha conectado, e inicializarlo en 
el setup ():
                          const int buzzer = 8;
                          pinMode (buzzer, OUTPUT);

Gracias al buzzer podremos emitir sonidos mediante:
                          tone (buzzer, 700, 100);

En este ejemplo el valor “700” es la frecuencia en Hz y el 100 es la duración en 
milisegundos.

4.4.  Sensor ultrasónico.

El sensor ultrasónico no necesita ninguna librería para su uso, lo único que se necesita 
hacer es inicializar los pines del echo (Receptor) y del trigger (Emisor).
                          pinMode (trigpPin, OUTPUT);
                          pinMode (echopPIN, INPUT);
          
En la parte del loop (), se debe inicializar la distancia a la que se desea que la alarma 
se active. En este caso hemos creado una función que se invoca dentro de loop ();
long getDistancia(){     
digitalWrite(trigPin,LOW);      
delayMicroseconds(2);      
digitalWrite(trigPin,HIGH);     
delayMicroseconds(10);      
digitalWrite(trigPin,LOW);    
duracion = pulseIn(echoPin, HIGH);     
distancia = duracion * 0.034/2;
return distancia;
}

4.5.  LEDs.

Para el uso de LEDs no es necesario incluir ninguna librería, 
lo único que hay que hacer es inicializar los pines donde se van a localizar, 
esto se hace en la parte del setup ().
pinMode (ledVerde, OUTPUT);       
pinMode (ledRojo1, OUTPUT);        
pinMode (ledRojo2, OUTPUT);        
pinMode (ledRojo3, OUTPUT);



En el loop (), debemos de programar cuando queremos que se active cada led. 
En este caso hemos implementado que el led rojo se active con cada segundo de la cuenta 
atrás y se active cuando introduces la contraseña incorrecta. 
El led verde se encenderá cuando se introduzca la contraseña correcta. 
En estos dos últimos casos hemos introducido un delay de 2000 que es la duración de 
2 segundos que se mantendrá la luz encendida.

5.      Problemas y mejoras.

5.1. Problemas.

A lo largo del desarrollo del proyecto hemos encontrado varios problemas. 
La parte del desarrollo que más complicaciones nos ha presentado ha sido la inclusión 
de la pantalla LCD, debido al mal funcionamiento en algunas ocasiones por no poder 
representar de forma correcta el mensaje que queríamos transmitir. Este problema no lo 
hemos podido solucionar completamente, pero hemos podido reducir considerablemente 
el índice de errores.
También, hemos tenido problemas en la parte del desarrollo del software, principalmente 
con la implementación del comando lcd.clear(), ya que en algunas ocasiones no cumplía 
su función de forma correcta al no borrar la información cuando se precisaba.
Otro pequeño error, fue a la hora de implementar el código del teclado porque 
no lo declaramos de forma correcta y únicamente funcionaban los números.

5.2. Mejoras.

Como posible mejora vemos muy factible introducir cualquier sistema biométrico, 
pero este caso vemos una opción muy adecuado la inclusión del reconocimiento 
de huella dactilar, debido a su facilidad y extensión de uso y la fácil implementación 
en el diseño en sí de la alarma.

6. Código

6.1 Declaración de variables.

6.2 void setup().

6.3 void loop().

 

6.4 long getDistancia().

7. Video demostrativo.


También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *