PUBLICADO POR : Unknown sábado, 19 de diciembre de 2015


(SISTEMA DE SEGURIDAD DOMICILIARIA):

En esta tercera entrega daré a conocer la conexión del tercer prototipo, de un sistema de seguridad, para eso utilizaré un sensor magnético, entonces al momento de romperse el campo magnético enviará una señal a través del arduino al relé, para que permita encender el foco, también utilizamos un LCD con el cual visualizamos el estado de la alarma, también se utilizó un teclado matricial el cual permitirá mediante una contraseña apagar el foco.

Para ello utilizaremos lo siguiente: 
PANTALLA DE CRISTAL LÍQUIDO (LCD).
Es una pantalla de panel plana, representación visual electrónica, o pantalla de vídeo que utiliza la luz modulación propiedades de los cristales líquidos. Los cristales líquidos no emiten luz directamente.
LCDs están disponibles para mostrar imágenes arbitrarias o imágenes fijas con bajo contenido de la información que pueden mostrarse u ocultarse, como palabras predefinidas, dígitos y 7 segmentos se muestra como en un reloj digital. Ellos usan la misma tecnología básica, excepto que las imágenes arbitrarias se componen de un gran número de pequeños píxeles, mientras que otras pantallas tienen elementos más grandes
.

PLACA ARDUINO UNO.
Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.
El hardware consiste en una placa con un microcontrolador y puertos de entrada y salida.Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programación que es ejecutado en la placa. Se programa en el ordenador para que la placa controle los componentes electrónicos.

EL PROTOBOARD: 
Es una especie de tablero con orificios, en la cual se pueden insertar componentes electrónicos y cables para armar circuitos. Como su nombre lo indica, esta tableta sirve para experimentar con circuitos electrónicos, con lo que se asegura el buen funcionamiento del mismo.

POTENCIÓMETRO:
Un potenciómetro es una Resistencia Variable. Así de sencillo, limitan el paso de la corriente eléctrica (Intensidad) provocando una caída de tensión en ellos al igual que en una resistencia, pero en este caso el valor de la corriente y la tensión en el potenciómetro las podemos variar solo con cambiar el valor de su resistencia.

SENSOR MAGNÉTICO: 
Reacciona ante la presencia de un campo magnético. En el caso que nos ocupa, permanece normalmente cerrado y cuando se le acerca un campo magnético, se abre. por tanto mientras ambas partes permanecen juntas, el interruptor queda abierto por culpa del imán y nada sucede, pero si se abre la puerta, ambas partes se separan, el interruptor se cierra al perder el campo magnético y enciende nuestro foco.

TECLADO MATRICIAL 4X4:
Un teclado matricial es un simple arreglo de botones conectados en filas y columnas, de modo que se pueden leer varios botones con el mismo número de pines requeridos. Un teclado matricial 4x4 solamente 4 líneas de un puerto para las filas y otras 4 líneas para las columnas, de este modo se pueden leer 16 teclas utilizando solamente 8 líneas de un microcontrolador.

MODULO RELÉ:
El relé es el elemento que necesitas si quieres gestionar grandes voltajes y corrientes (como los que pueden tener en la red eléctrica de tu casa). Se trata simplemente de un interruptor eléctrico que puedes encender y apagar enviando señales desde tu placa Arduino, o cualquier otro controlador . Esto te permite desde encender y apagar la luz de tu habitación cuando alguien entre, hasta hacer una casa domótica completa, el límite aquí es tu imaginación.
CIRCUITO COMPLETO
CÓDIGO: 
#include <Keypad.h>

#include <EEPROM.h>

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 10, 11 , 12, 13);



const byte filas=4; //cuatro filas

const byte columnas=4; //cuatro columnas

byte pinsFilas[filas] = {7,6,5,4};
byte pinsColumnas[columnas] = {3,2,1,0};
char teclas[filas][columnas] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
Keypad teclado = Keypad(makeKeymap(teclas), pinsFilas, pinsColumnas, filas, columnas);
char password[5];
char ingreso;
char passUser[4];
char confirmPass[4];

int i=0;
int a; //aux
int b;
const int buttonPin = A0; // Variable para el sensor magnetico
const int Rele = A3;
int buttonState = 0;
int ledverde = A1;
int ledrojo = A2;

void setup() {
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print(" BIENVENIDO");
lcd.setCursor(0, 1);
lcd.print("****************");
pinMode(ledverde, OUTPUT);
pinMode(ledrojo, OUTPUT);
pinMode(Rele, OUTPUT);
pinMode(buttonPin, INPUT);
digitalWrite(ledverde, HIGH);

if(EEPROM.read(4)!='Z'){
EEPROM.write(0,'4');
EEPROM.write(1,'5');
EEPROM.write(2,'6');
EEPROM.write(3,'7');
EEPROM.write(4,'Z');
}
for (int i = 0; i <= 4; i++) {
password[i] = EEPROM.read(i);
}
}
void loop() {
buttonState = digitalRead(buttonPin); // Almacena el valor de buttonPin
if (buttonState == HIGH) // Si buttonState == HIGH:
{
lcd.setCursor(0, 0);
lcd.print("**** ALERTA ****");
lcd.setCursor(0, 1);
lcd.print("-----____-------");
digitalWrite(Rele, HIGH); // enciende el foco
digitalWrite(ledverde, LOW);
digitalWrite(ledrojo, HIGH);
}
else // Caso contrario
{
leerIngreso(1);
}
}
void leerIngreso(int a) {
ingreso = teclado.getKey();
if (ingreso != NO_KEY)
switch (ingreso) {
case 'A': // es como el "enter" para introducir la password
if(evaluar(1)==1){
correcto();
}
else{
msgError();
}
reset();
break;
default: //si es un numero debe imprimirlo en el LCD y ademas guardarlo en el arreglo passUser
if(a==1){
passUser[i] = ingreso;
printPass(passUser[i], 5 + i, 1);
}
if(a==2){
confirmPass[i] = ingreso;
printPass(confirmPass[i], 5 + i, 1);
}
i++;
if (i > 3){
i = 0;
}
}
}
void correcto(){
lcd.setCursor(0, 1);
lcd.print(" DESACTIVADA ");
digitalWrite(Rele, LOW);
digitalWrite(ledverde, HIGH);
digitalWrite(ledrojo, LOW);
}
void printPass(char a, int columna, int fila ) {
lcd.setCursor(0, 1);
lcd.setCursor(columna, fila);
lcd.print(a);
delay(100);
lcd.setCursor(columna, fila);
lcd.print("*");
}
int evaluar(int a) {
int j = 0;
if (a==1){
for (int i = 0; i <= 3; i++) {
if (password[i] == passUser[i]) {
j++;
}
}
}
if(a==2){
for (int i = 0; i <= 3; i++) {
if (passUser[i] == confirmPass[i]) {
j++;
}
}
}
if (j == 4) {
return j=1;
}
else {
return j=0;
}
}
void reset() {
lcd.setCursor(0, 0);
lcd.print("**** ALERTA ****");
lcd.setCursor(0, 1);
lcd.print("");
for(int i =0;i<=3;i++){
passUser[i]=NO_KEY;
confirmPass[i]=NO_KEY;
}
i=0;
}
void msgError(){
lcd.setCursor(0, 0);
lcd.print(" ERROR ");
delay(500);
}

VIDEO DEMOSTRACIÓN:

Dejar un comentario

BIENVENIDO A MI BLOG

- Copyright © EL RACHO RUEDA TECNOLOGÍA Y MUCHO MAS -Robotic Notes- Powered by Blogger - Designed by Johanes Djogan -