Escolar Documentos
Profissional Documentos
Cultura Documentos
DE
ELECTRNI
CA
Sistema de
Alarma
1
Francisco Javier Lpez Alcarria
2
NDICE
- Objetivo:................................................................................................ 3
- Justificacin:.......................................................................................... 3
- Plan de trabajo:.................................................................................... 3
B) Programacin:................................................................................... 6
- La pantalla LCD:............................................................................. 6
- El teclado:........................................................................................ 7
- El zumbador:................................................................................... 8
1- Declaracin de variables..............................................................9
2- La funcin setup:............................................................................9
3- La funcin modo_inicio:...............................................................10
4- La funcin modo_verde:..............................................................13
5- La funcin modo_naranja:...........................................................13
6- La funcin modo_rojo:.................................................................14
7- La funcin loop:............................................................................ 17
- Presupuesto:....................................................................................... 18
3
- Objetivo:
El Objetivo principal de este proyecto es realizar un sistema de alarma
controlado manualmente. Dispondr de varios modos con los que nos
moveremos por el programa (alarma apagada, encendida, etc.), de
contrasea (la cual designaremos cuando arranque el programa), de una
temporizacin para la activacin de la alarma, de un dispositivo de sonido
como un zumbador y de una pantalla LCD en la que se nos mostrar la
informacin necesaria para interactuar con el programa.
- Justificacin:
Realizar un sistema de alarma barato, fcil de usar y con una contrasea
que podremoscambiar cuando deseemos.
- Plan de trabajo:
El plan de trabajo ser dividido en varias etapas:
sta ser la primera fase del proyecto, realizar el circuito del proyecto
usando las placas prototipo, conociendo en todo momento las entradas y
salidas que usaremos en el arduino, para una programacin correcta. Para
ello usaremos los siguientes materiales:
4
Para el montaje del circuito podemos seguir el siguiente esquema:
Nuestra pantalla LCD slo tiene 4 patillas: VCC, GND, SCL y SDA. La
patilla SCL la conectaremos a la entrada analgica A5 del Arduino, y la SDA
a la A4
5
6
El teclado requiere de 8 patillas digitales del arduino normalmente,
pero podemos utilizar solo una entrada analgica, si usamos un divisor de
tensin para cada tecla y un mtodo en la programacin que explicaremos
ms tarde, ahorrando un gran nmero de patillas, sin las que nos sera
imposible realizar el proyecto. Lo conectaremos de la siguiente manera:
7
B) Programacin:
- La pantalla LCD:
Para conectar la pantalla al Arduino, debemos conectar la patilla SCL
a la entrada analgica A5 y SDA la conectaremos a la A4.
Para poder usar la pantalla LCD en el compilador tenemos que poner
esta librera:
Con esto ya podremos usar la LCD, para ello se usarn los siguientes
comandos:
8
- El teclado:
Para poder conectar el teclado al Arduino usando slo una entrada
analgica, lo haremos con el divisor de tensin que hemos explicado
anteriormente. De esta manera cada tecla nos enviar una seal
analgica distinta de las otras, por lo tanto mediante los rangos de la
seal podremos asignar cada valor a un nmero del teclado. Lo
podremos hacer de esta forma:
do
{
int numero2= analogRead (teclado);
if ((numero2 > 845) && (numero2 < 865))
{
nf = 1;
x ++;
}
else if ((numero2 > 635) && (numero2 < 655))
{
nf = 2;
x ++;
}
else if ((numero2 > 503) && (numero2 < 520))
{
nf = 3;
x ++;
}
else if ((numero2 > 785) && (numero2 < 805))
{
nf = 4;
x ++;
}
else if ((numero2 > 600) && (numero2 < 620))
{
nf = 5;
x ++;
}
else if ((numero2 > 480) && (numero2 < 495))
{
nf = 6;
x ++;
}
else if ((numero2 > 720) && (numero2 < 740))
{
nf = 7;
x ++;
}
else if ((numero2 > 560) && (numero2 < 580))
{
nf = 8;
x ++;
}
else if ((numero2 > 460) && (numero2 < 475))
{
9
nf = 9;
x ++;
}
else if ((numero2 > 545) && (numero2 < 555))
{
nf = 0;
x ++;
}
- El zumbador:
El zumbador es un dispositivo para crear sonidos. El tono del sonido lo
podemos regular usando distintas frecuencias. Tambin podemos
controlar su intermitencia con el uso de la funcin delay(). Ejemplo:
10
PROGRAMACIN POR PARTES:
1- Declaracin de variables.
Lo primero ser declarar las variables y entradas que usaremos en el
programa:
2- La funcin setup:
Aqu asignaremos las entradas o salidas y activaremos la pantalla
LCD:
void setup()
{
lcd.init ();
lcd.backlight ();
pinMode (verde, OUTPUT);
pinMode (naranja, OUTPUT);
pinMode (rojo, OUTPUT);
pinMode (zumbador, OUTPUT);
pinMode (pulsador_verde, INPUT);
pinMode (pulsador_naranja, INPUT);
pinMode (sensor_mov, INPUT);
pinMode (analog, INPUT);
Serial.begin (9600);
}
11
3- La funcin modo_inicio:
Esta funcin se activar siempre que se inicie el programa o cuando
pulsemos el boton_inicio. Sirve para designar la contrasea (ser
siempre de 6 dgitos) que queremos usar para desactivar la alarma
usando el teclado y para regular el tiempo de activacin de sta
mediante un potencimetro. Despus de este modo solo podremos
pasar al modo_verde:
void modo_inicio()
{
lcd.clear ();
digitalWrite (verde, LOW);
digitalWrite (naranja, LOW);
digitalWrite (rojo, LOW);
lcd.print ("Introducir pass: ");
lcd.setCursor (3,1);
i=0;
do
{
int numero2= analogRead (teclado);
if ((numero2 > 845) && (numero2 < 865))
{
nf = 1;
x ++;
}
else if ((numero2 > 635) && (numero2 < 655))
{
nf = 2;
x ++;
}
else if ((numero2 > 503) && (numero2 < 520))
{
nf = 3;
x ++;
}
else if ((numero2 > 785) && (numero2 < 805))
{
nf = 4;
x ++;
}
else if ((numero2 > 600) && (numero2 < 620))
{
nf = 5;
x ++;
}
else if ((numero2 > 480) && (numero2 < 495))
{
nf = 6;
x ++;
}
else if ((numero2 > 720) && (numero2 < 740))
{
12
nf = 7;
x ++;
}
else if ((numero2 > 560) && (numero2 < 580))
{
nf = 8;
x ++;
}
else if ((numero2 > 460) && (numero2 < 475))
{
nf = 9;
x ++;
}
else if ((numero2 > 545) && (numero2 < 555))
{
nf = 0;
x ++;
}
if (ultnum != nf)
{
x = 0;
Serial.print ("tecla ");
Serial.println (nf);
lcd.print (nf);
tone (zumbador, 4000);
delay (100);
noTone (zumbador);
delay (400);
ultnum = nf;
pass1 [i] = nf;
i++;
}
lcd.clear ();
lcd.print ("la pass es: ");
lcd.setCursor (3,1);
lcd.print (pass1[0]);
13
lcd.print (pass1[1]);
lcd.print (pass1[2]);
lcd.print (pass1[3]);
lcd.print (pass1[4]);
lcd.print (pass1[5]);
delay (5000);
lcd.clear ();
do
{
temporizador = analogRead (analog);
temporizador = map (temporizador, 0, 1023, 15, 4);
Serial.println (temporizador);
lcd.print ("Introducir temp:");
lcd.setCursor (3,1);
lcd.print (temporizador);
lcd.print (" segundos ");
}
while (digitalRead (pulsador_verde) == LOW);
inicio = 1;
nivel = 1;
}
14
4- La funcin modo_verde:
Cuando se activa esta funcin se enciende el led verde y nos indica
que la alarma est desactivada pero lista para usarse, con la
contrasea y el tiempo de activacin ya determinados. Desde esta
funcin puede pasarse al modo_inicio o modo_naranja:
void modo_verde()
{
lcd.clear();
lcd.print ("Alarma OFF");
digitalWrite (verde, HIGH);
digitalWrite (naranja, LOW);
digitalWrite (rojo, LOW);
nivel = 1;
}
5- La funcin modo_naranja:
Al activarse esta funcin comienza la temporizacin para la activacin
de la alarma, mostrndonos en la LCD el tiempo restante y con el led
naranja y el zumbador activndose de manera intermitente. Una vez
esta temporizacin acabe el led naranja se quedar fijo y la alarma
activa, pasando al modo_rojo si sta detecta movimiento:
void modo_naranja()
{
lcd.clear();
digitalWrite (verde, LOW);
digitalWrite (naranja, LOW);
digitalWrite (rojo, LOW);
temp2 = temporizador;
for (int i=0; i<temporizador; i++)
{
lcd.print ("Tiempo restante:");
lcd.setCursor (3,1);
lcd.print (temp2);
lcd.print (" segundos ");
tone (zumbador, 1000);
digitalWrite (naranja, HIGH);
delay (150);
noTone (zumbador);
digitalWrite (naranja, LOW);
delay (850);
temp2--;
}
tone (zumbador, 2500);
digitalWrite (naranja, HIGH);
delay (150);
noTone (zumbador);
lcd.clear();
lcd.print ("Alarma ON");
nivel = 2;
15
}
6- La funcin modo_rojo:
Una vez se active este modo, el led rojo y el zumbador se activarn y
quedarn fijos, con una pequea intermitencia al principio. Tambin
se nos pedir una contrasea de 6 dgitos, si introducimos la correcta
el zumbador se desactivar y el programa pasar al modo_verde, si
sta es incorrecta el modo_rojo se volver a activar otra vez:
void modo_rojo()
{
lcd.clear ();
digitalWrite (verde, LOW);
digitalWrite (naranja, LOW);
digitalWrite (rojo, HIGH);
digitalWrite (zumbador, HIGH);
delay (100);
digitalWrite (zumbador, LOW);
delay (100);
digitalWrite (zumbador, HIGH);
delay (100);
digitalWrite (zumbador, LOW);
delay (100);
digitalWrite (zumbador, HIGH);
lcd.print ("Introducir pass: ");
lcd.setCursor (3,1);
i=0;
do
{
int numero2= analogRead (teclado);
if ((numero2 > 845) && (numero2 < 865))
{
nf = 1;
x ++;
}
else if ((numero2 > 635) && (numero2 < 655))
{
nf = 2;
x ++;
}
else if ((numero2 > 503) && (numero2 < 520))
{
nf = 3;
x ++;
}
else if ((numero2 > 785) && (numero2 < 805))
{
nf = 4;
x ++;
}
else if ((numero2 > 600) && (numero2 < 620))
{
16
nf = 5;
x ++;
}
else if ((numero2 > 480) && (numero2 < 495))
{
nf = 6;
x ++;
}
else if ((numero2 > 720) && (numero2 < 740))
{
nf = 7;
x ++;
}
else if ((numero2 > 560) && (numero2 < 580))
{
nf = 8;
x ++;
}
else if ((numero2 > 460) && (numero2 < 475))
{
nf = 9;
x ++;
}
else if ((numero2 > 545) && (numero2 < 555))
{
nf = 0;
x ++;
}
if (ultnum != nf)
{
x = 0;
Serial.print ("tecla ");
Serial.println (nf);
lcd.print (nf);
delay (500);
ultnum = nf;
pass2 [i] = nf;
i++;
}
if (correcta == 1)
{
Serial.println ("Pass CORRECTA. ");
lcd.clear ();
lcd.print ("Pass CORRECTA. ");
digitalWrite (zumbador, LOW);
delay(5000);
modo_verde();
}
else
{
Serial.println ("Pass INCORRECTA. ");
lcd.clear ();
lcd.print ("Pass INCORRECTA. ");
delay (5000);
modo_rojo();
}
nivel = 0;
}
7- La funcin loop:
Es la ltima parte y el bucle principal del programa. En este caso ser
la funcin encargada de mover el programa por los distintos modos
del sistema de alarma. Para ello se usan los pulsadores y unas
variables (inicio y nivel) que irn cambiando segn se activen los
distintos modos:
void loop()
{
if ((digitalRead (pulsador_inicio) == HIGH) || (inicio == 0))
{
modo_inicio();
modo_verde();
}
18
{
modo_naranja();
}
19
- Presupuesto:
Placa Arduino UNO: 27
Teclado: 6
Pantalla LCD: 12
Sensor de movimiento: 9
Potencimetro: 2
Zumbador: 1
4 leds: 4
15 resistencias: 0,45
20