You are on page 1of 15

Proyecto Arduino

SISTEMA SEGURIDAD CAJA FUERTE


1

INDICE
1.-OBJETIVO 2
2.-JUSTIFICACIN 2
3.-DESARROLLO DEL PROYECTO... 3
3.1.-Materiales necesarios 3
3.2.-Montaje Prototpo 4
3.3.-Programacin.. 6
3.4.-Montaje de maqueta. 11
4.-PRESUPUESTO. 12
5.-NOTACIN BIBLIOGRAFICA.14



















2

1.-OBJETIVO
El objetvo de este proyecto es un sistema de seguridad de una caja fuerte controlado
por una pantalla LCD y un teclado matricial 4x4.
El proyecto presenta un men por pantalla desde el cual debemos introducir la
contrasea para actvar el servo que nos permite abrir y cerrar la puerta.
A travs de este men podemos visualizar mediante la pantalla controlada por el
teclado el estado de nuestro sensor de temperatura, sensor de vibracin, comprobar y
borrar datos introducidos y desbloquear el programa, que se bloqueara al introducir 3
veces de manera incorrecta la contrasea.








2.-JUSTIFICACIN
La principal justfcacin es crear un sistema de seguridad efcaz, que bloque todo el
programa al cometer un mnimo de errores y que nos alerte cuando la caja fuerte sea
sometda a vibraciones altas o altas temperaturas.














3

3.-DESARROLLO DEL PROYECTO
3.1.-Materiales necesarios
-Arduino Uno SMD
- Modulo LCD I2C Serie 2 x 16.
-Teclado matricial 4 x 4.
- Sensor de Vibracin.
- Servomotor.
-Zumbador.
- 3 LEDs de 5 mm.
-3 resistencias de 220 , 470 y 10k.
-Placa Protoboard.
-Cables conectores.
-Sensor de temperatura.
-Caja de madera.















4

3.2.-Montaje Prototpo
Para el montaje de nuestro prototpo hemos utlizado Arduino UNO SMD, es una
modifcacin del Arduino UNO cuya principal diferencia es el tpo de encapsulado que
ofrece.
El esquema del montaje sera el siguiente:


En dicho esquema se pueden aprecia todas las conexiones realizadas para cada uno de
los LEDs, el sensor de temperatura (LM35), el zumbador, el servo, el sensor de
vibarcin y el tecaldo matricial.








5


Las siguientes fotos muestran el montaje real:






6



3.3.-Programacin.
Hemos realizado la programacin de nuestro prototpo con el programa arduino
1.0.1 que podemos descargar de la propia web de arduino.
Hemos utlizado nmeros libreiras:
.-Password.h. Necesaria para establecer una contrasea e utlizar diveras funciones
incluidas en ella.
.-Keypad.h. Es la librera para el teclado matriciail.
.-Wire.h. Permite comunicar con dispositvos I2C.
.-LiquidCrystal_I2C.h. Es la librera de nuestro LCD.
.-Servo.h. Librera utlizada para el funcionamiento del servomotor.

El programa se basa principalmente en un men mostrado por el LCD a travs del cual
podemos visualizar el estado de nuestros sensores as como la actvacin de nuestro
servo mediante contrasea.
Las teclas numricas se reservan nicamente para los dgitos de la contrasea.
La tecla F nos muestra por pantalla la temperatura a la que se encuentra la caja fuerte.
La tecla E nos muestra el valor de vibracin que tenemos actualmente.
La tecla C nos permite comprobar la contrasea introducida, si fuera correcta nos
abrira la puerta mediante el servo, si fuera incorrecta nos pedira una nueva
introduccin sumando un error a la cuenta. Si fallamos tres veces el sistema se
bloqueara, nos pedira una contrasea de desbloqueo que debemos de comprobar
con la tecla A.
La tecla D nos permitra borrar los dgitos introducidos en el caso de que nos
equivocramos.
La tecla C nos permite cerrar la puerta una vez abierta.
Si se sobrepasa la temperatura lmite o se comete error en la introduccin de la
contrasea, el diodo LED rojo y el zumbador se actvaran.
Si los niveles de vibracin sobrepasas el lmite establecido se encendera el LED
amarillo.
Si introducimos la contrasea correcta y actvamos el Servo, se enciende el LED verde.

7



Visualizacin del programa:

#include <Password.h>
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27,16,2);

Password password = Password( "1234" );

int LM35= A0;
int TempH = 28 ;
foat Temp;
int Entrada=1;
foat Nivel;
int Lim=1000;
int salida=13;
Servo servo1;
int posicion;
int led = 13;
int led2= 3;
int led3=2;
int posi=0;
int i=0;
int pirPin = 7;
int p;
int x;
int errores;
const byte ROWS = 4;
const byte COLS = 4;
// Defne the Keymap
char keys*ROWS+*COLS+ = ,
,'1','2','3','F'-,
,'4','5','6','E'-,
,'7','8','9','D'-,
,'A','0','B','*'-
-;

byte rowPins*ROWS+ = , 7,6,5,4 -;
byte colPins*COLS+ = , 11,10,9,8, -;



void setup(),

Serial.begin(9600);
lcd.init();
lcd.backlight();
servo1.atach(12);
posicion = 800;
posicion = map(posicion, 0, 1023, 0,
179);
servo1.write(posicion); delay(150);
pinMode(led, OUTPUT);
pinMode(pirPin, INPUT);
digitalWrite(pirPin, LOW);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
keypad.addEventListener(keypadEvent);
char key = keypad.getKey();
-

void loop()
,

if(errores>=3),
password.set("4321");
lcd.setCursor(0,0);
lcd.print("Bloqueado");
char key = keypad.getKey();

if (key=='1' || key=='2' || key=='3' ||
key=='4' || key=='5' || key=='6' ||
key=='7' || key=='8' || key=='9' ||
key=='0'),
lcd.setCursor(5+i,1);
lcd.print("*");
i++;
-
else
if (key=='F' || key=='E' ||key=='D' ||
key=='C'|| key=='B')
,
lcd.print("");
8

Keypad keypad = Keypad(
makeKeymap(keys), rowPins, colPins,
ROWS, COLS );

else
,

Temp=(5*analogRead(A0)*100/1023.0);
Nivel = analogRead(Entrada);
lcd.setCursor(0,0);
if(Temp>TempH)
,
digitalWrite(salida,HIGH);
delay(1000);
digitalWrite(salida,LOW);
-
if(Nivel<Lim)
,
lcd.print("Vibracion
alta!!");digitalWrite(led3,HIGH);
delay(1000);
digitalWrite(led3,LOW);
password.reset();
i=0;
lcd.clear();

-

lcd.setCursor(0,0);
lcd.print("Password:");
char key = keypad.getKey();
if (key=='1' || key=='2' || key=='3' ||
key=='4' || key=='5' || key=='6' ||
key=='7' || key=='8' || key=='9' ||
key=='0') ,
lcd.setCursor(5+i,1);
lcd.print("*");
Serial.println("*");
i++;
-
-
-





lcd.clear();
-
-

switch (keypad.getState()),
case PRESSED:
switch (eKey),
case 'A':
if (password.evaluate()),
lcd.clear();
lcd.setCursor(0,0);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2,LOW);
delay(500);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led2,LOW);
delay(500);
lcd.print("Desbloqueado");
delay(500);
password.set("1234");
lcd.clear();
errores=0;
i=0;
password.reset();
-
else
,
lcd.clear();
lcd.setCursor(0,0);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
lcd.print("Error");
delay(500);
lcd.clear();
i=0;
password.reset();
-
break;

9



void keypadEvent(KeypadEvent eKey),

lcd.clear();
lcd.print("Puerta cerrada");
delay(750);
lcd.clear();
-

if(posicion<30),
lcd.setCursor(0,0);
lcd.print("Cerrando");
for(int i = 0; i < 4; i++),
lcd.print(".");
delay(750);
-
servo1.atach(12);
posicion = 800;
posicion = map(posicion, 0, 1023, 0,
179);
servo1.write(posicion); delay(150);
lcd.clear();


-
lcd.clear();
i=0;
password.reset(); break;
case 'E':
lcd.setCursor(0,0);
lcd.print("Vibracion:");
lcd.print(Nivel);
delay(1000);
i=0;
lcd.clear();
break;
case 'F':

Temp=(5*analogRead(A0)*100/1023.0);
lcd.setCursor(0,0);
lcd.print("Temperatura:");
lcd.print(Temp);
delay(1000);
lcd.clear();
i=0;
break;

case 'B':
Serial.println(posicion);
if ((posicion<150)&&(posicion>30)),
case 'D':

lcd.clear();
lcd.print("Borrando");
for(int i = 0; i < 4; i++),
lcd.print(".");
delay(750);
-
i=0;
password.reset();
lcd.clear();
break;
default: password.append(eKey);
-
-

-

void checkPassword(),
if (password.evaluate()),

lcd.clear();
lcd.print("Comprobando");
for(int i = 0; i < 4; i++),
lcd.print(".");
delay(750);
-
lcd.setCursor(5,1);
lcd.clear();
lcd.print("Password");
lcd.setCursor(5,1);
lcd.print("correcta");
lcd.setCursor(16,1);
digitalWrite(led2, HIGH);
delay(1000);
digitalWrite(led2,LOW);
lcd.clear();
posicion = 150;
posicion = map(posicion, 0, 1023, 0,
179);

lcd.print("Abriendo");

10

case '*':
checkPassword();i=0; break;
servo1.write(posicion); delay(2000);
lcd.clear();
lcd.print("Puerta abierta");
delay(2000);
lcd.clear();
errores=0;

-
else,

lcd.clear();
lcd.print("Comprobando");
for(int i = 0; i < 4; i++),
lcd.print(".");
delay(750);
-

lcd.clear();

digitalWrite(led, HIGH);
delay(1000);
digitalWrite(led,LOW);
lcd.print("Incorrecto");
lcd.setCursor(0,1);
lcd.print("Prueba otra vez");
lcd.setCursor(0,1);
delay(1000);
errores++;
password.reset();
lcd.clear();
-


-


for(int i = 0; i < 4; i++),
lcd.print(".");
delay(750);-








11


3.4.-Montaje de maqueta
Todo el prototpo se ha montado dentro de una caja de madera que simulara la forma
de una caja fuerte.
El montaje ha sido sencillo, se ha cortado la tapa de la caja a medida, se han hecho los
agujeros necesario para los LEDs y un pestllo que junto con el servo y la introduccin
de la contrasea abrira o no la puerta de la caja fuerte.























12





4.-PRESUPUESTO
Producto Nombre Referencia Unidade
s
Precio
Unida
d
Total

Arduino Uno
SMD
Cdigo: Arduino-
Uno-DMS


Pgina:
www.dieltron.com



1
26,56 26,56
Modulo LCD
I2C Serie 2 x 16
Cdigo: Q00615043

Pgina:
www.b2cqshop.com




1
17,26 17,26
Teclado
matricial 4 x 4
Cdigo: Q04915190

Pgina:
www.b2cqshop.com
1 3,30 3,30

Sensor de
Vibracin
Cdigo: DFR0027

Pag:
www.dfrobot.com
1 3,53 3,53
Micro Servo
Tower Pro
SG90
9grs
Cdigo:
E502

Pgina:
www.todomodel.es
1 4,60 4,60
13


35.085
Zumbador de
Electro DH

Cdigo:
644-35.085

Pgina:
www.dieltron.com
1 1,17 1,17
LED 5mm
10Kmcd
Transparente
12.675/5/R/C/
10K

Cdigo:
113-12.675-5RC10K

Pgina:
www.dieltron.com
3 0,17 0,51
Resistencias
220,
10k ,470
1/4W
Pgina:
www.dieltron.com
3 0,17
0,51
Placa
Protoboard y
cables de
conexin.
Cdigo:
Q00915023

Pgina:
www.b2cqshop.com
1 6,28 6,28
LM35 Sensor
de
Temperatura
Cdigo:
Q02315076

Pgina:
www.b2cqshop.com
1 2,67
2,67
Caja de
madera
Cdigo:
734

Pgina:
www.cajasestuches
madera.com
1 3,5 3,5
TOTAL= 69,89




14





5.-NOTACIN BIBLIOGRAFICA
.-www.arduinco.cc
.-www.dfrobots.com
.-www.bricogeek.com

You might also like