Professional Documents
Culture Documents
UNIDAD CULHUACAN
TESINA
PRESENTA
ASESOR
Firma de revisión
___________________
1.1
1.2
1.3
1.4
1.5
2.1 Usuario…………………………………………………………………….......... 38
2.9 WhatsApp……………………………………………………………………….. 48
Bibliografía………………………………………………………………………. 53
Ciberografía……………………………………………………………….......... 54
Índice de Figuras
Figura Título Página
Como es bien sabido la delincuencia está a la orden del dia, pocas son las personas
que nunca han sufrido de un robo, por lo mismo es de suma importancia el tomar
medidas de prevención las cuales nos ayuden no solo a tener nuestras pertenencias
a salvo si no que también nos dé la certeza que nuestros seres queridos estén bien
de la seguridad que sientan en sus viviendas por lo mismo, muchas personas buscan
resguardar sus pertenencias mediante el uso de armas que más que mejorar el
de sus seres queridos por parte de algún ladrón o en caso contrario en contra de los
Durante los últimos años se han visto un gran avance en el área de seguridad, con el
Por lo mismo se ha buscado el desarrollo de cada una de las tecnologías que poseen
los mecanismos ya existentes, así como un mejor sistema de seguridad que estará
El periódico el Universal detalla que 75% de todos los delitos del Distrito Federal se
concentraron en Coyoacán, con 22%; Gustavo A. Madero, con 15%; Iztapalapa con
Hoy en día son cada vez más frecuentes los robos a casa habitación, por lo cual se
vivienda, vigilancia privada entre otras, cabe señalar que tienen altos costos y por si
fuera poco afecta la economía, pues no todas las persona puede pagar dichos
Por esta situación se busca implementar un sistema de seguridad que sea confiable
y a bajos costos por consiguiente al alcance de una mayor cantidad de familias, las
cuales podrán tener la certeza de que su patrimonio estará protegido cuando estén
fuera de casa.
Justificación
como en todas las casas habitación del Distrito Federal, se propone diseñar una
cerradura como sistema apertura, la cual contará con teclado matricial, circuitos
protectores y display LCD, que mostrará mensaje de bienvenida, esta tendrá una
contraseña numérica (puesta por el propietario) y alarma de 12V (tipo sirena) la cual
se programará en caso de que un intruso pretenda entrar a la casa, por otro lado,
El circuito consistirá en dos partes las cuales estarán comunicadas entre sí. El primer
la cerradura, mandará una señal para activar la alarma en caso de que la contraseña
sea incorrecta teniendo un límite de tres intentos, por otra parte, tendrá la capacidad
de activar El segundo módulo del sistema de seguridad. Ésta será una tarjeta
dueño o jefe de familia para informar que alguien intenta entrar a su casa.
Objetivo General
Diseñar e implementar un sistema de apertura para una puerta, activado por Arduino
Uno y mensaje de texto por WhatsApp desde una Raspberry pi3, para notificar al
Objetivos Específicos
teclado matricial, que al ser correcta active una contrachapa y al ingresar tres
Para realizar la cerradura se necesita como material principal, un Arduino Uno y una
Raspberry pi3, que serán la estructura principal para la activación de cada uno de los
y una sirena eléctrica de 12V, las cuales serán activadas desde los puertos del
Arduino Uno con la ayuda de una fuente externa y dos relevadores a 5V.
La Raspberry pi3, contiene una librería de nombre Yowsup sirve para el uso de
WhatsApp, con el uso de esta aplicación se puede enviar un mensaje de texto para
La conexión de las dos tarjetas será a través de puertos de entrada y salida por parte
para el envió de pulsos que servirán para activar las funciones de pantalla,
Impacto social
WhatsApp.
Impacto económico
Mientras que la instalación de una cerradura que solo contiene bloqueo y apertura de
Impacto tecnológico
partes del mundo ya se observa el monitoreo de una casa desde una Tablet, un
es de ayuda para aquellas personas que no cuenten con el dinero suficiente para
de control de acceso.
cerradura tiene su origen en España según patentes adquiridas en los años 2014 por
Fuente:
12
las tarjetas anteriores las cuales tenían que ser usadas con antenas conectadas a
Fuente:
Proyectos relacionados
13
Proyecto R.A.S.H. Raspberry & Arduino Smart Home Este proyecto consiste en el
control de una casa mediante cualquier dispositivo, por una página web, comandos
todos los focos de su casa, controla una función de pánico y alarma. También se
librería Yowsup, para el uso de WhatsApp, la cual será utilizada para las
14
CAPÍTULO II
MARCO TEÓRICO
En el siguiente capítulo contendrá las características técnicas y el uso exclusivo de
implementación.
conectados a la misma.
Arduino cuenta con pines analógicos y digitales que se pueden utilizar como
externos sin necesidad de alterar el diseño original de esta placa, esto le permite
conectarse por medio de un cable USB a una computadora para poder trabajar
con ella desde nivel software, ya que es dónde se le darán las funciones que
Microcontrolador ATmega328
Voltaje de operación 5V
36
Corriente DC para puertos 3.3V 50 mA
SRAM 2KB(ATmega328)
EEPROM 1KB(ATmega328)
Fuente:
de las cuales ofrecen 10 bits de resolución (es decir, 1024 estados). Por defecto,
Arduino posee 6 salidas con PWM, “el cual consiste en obtener una señal
alto que puede cambiar. El porcentaje de tiempo que la señal está a nivel alto se
37
Figura 2.1. Ubicación de puertos de Arduino
Uno
Fuente:
Conexión de puertos
Los puertos analógicos (A0, A1, A2, A3, A4, A5) de Arduino tienen la opción de
Los puertos digitales 5, 6, 7, 8, 9, 10, 11 serán usados como entradas para el uso
del teclado matricial de 3X4, los puertos 12 y 13 serán usadas como salidas, para
38
El uso de Arduino Uno se da por la necesidad de la protección de la
posibilidad de poder activar cada uno de los componentes con un fácil manejo, en
caso de que el circuito sufra un daño por el uso de algún puerto solo será
más elevado.
39
La pantalla LCD 16 puertos los cuales tienen diferentes funciones la Tabla 2,2
menús, así como las instrucciones que el usuario debe seguir para accionar la
y 4 para el uso de las filas, así mismo los pines 5, 6, 7 para el uso de columnas.
Existe un cable que conecta la primera fila, es decir, los botones 1, 2 y 3. Este
cable llega al pin 1. Es un simple cable. Otro cable une los botones de la primera
40
columna, es decir, los números 1, 4, 7 y * (Figura 2.2). Este cable acaba en el pin
5. Cuando pulsas el botón 1 del teclado, lo que haces en realidad es unir el pin1 y
41
estar en dos formas (normalmente abierto o normalmente cerrado). La parte
inducirle una corriente de hasta 2A a un voltaje de 12V, esta a su vez atrae una
desde el Arduino de tipo PWM ayudado de un relevador para el uso de una fuente
42
2.5. Sirena Eléctrica de 12V
dB, a partir de un voltaje de 12V a 250 mA, su uso más frecuente es para notificar
melodías sonoras.
La tarjeta Arduino activara la sirena eléctrica en caso de que se excedan los tres
relevador de 12V, para que se pueda alimentar por una fuente externa.
ARMv7, el cual se puede ejecutar con toda la gama de distribuciones ARM GNU /
Linux, sus sistema operativo Raspbian está basado en Linux, el cual es compatible
con Python y por lo mismo sirve de gran facilidad para su fácil programación
Raspberry Pi3 trabaja 900MHz CPU de cuatro núcleos ARM Cortex-A7 y tiene 1
4 puertos USB
40 pines GPIO
Puerto Ethernet
43
conector de audio de 3.5 mm combinado y vídeo compuesto
Bluetooth
WiFi incluido
conectada al Arduino para enviar y recibir datos (puertos GPIO) los cuales
procesara para tomar foto o enviar mensaje de WhatsApp, para esto se necesitara
comparación del Modelo B de la placa Raspberry Pi2 anterior que se tenía que
conectar un adaptador de red por puerto USB, 4 puertos USB, que facilita la
cantidad de memoria RAM (1Gb), teniendo en cuenta que la anterior solo contaba
44
2.7. WhatsApp
WhatsApp es una de las aplicaciones más fáciles de utilizar, además que está
mayoría de los teléfonos, las únicas condiciones son; tener un número telefónico y
Tiene una plataforma amigable, con herramientas para cuidar la privacidad del
usuario, ocupa poco espacio en el dispositivo, tiene un bajo costo (15 pesos por
año), es una aplicación que se liga a la agenda del teléfono, tiene la facilidad de
tiene la librería “Yowsup” que permite interactuar con WhatsApp para conectarse a
45
CAPÍTULO III
DISEÑO E
IMPLEMENTACIÓN
46
En el presente capitulo se presentaran los distintos diagramas que representaran
47
3.1 El Diagrama a bloques
La Raspberry pi3 sera alimentada por una fuente de 5V a 2A, tambien sera
placa Arduino tendra conectada una pantalla LCD de 16X2 la cual proporsionara
un menu escrito, con un teclado que servira para introducir de una clave de
48
Etapa 3 Etapa logica de control
puertos GPIO.
Esta etapa sera manejada por la Raspberry pi3 una vez que la contraseña halla
utilizando una red WIFI instalada en la casa, para notificar la apertura o bloqueo
de la cerradura.
En esta etapa se podra visualizar en la pantalla del celular el mensaje enviado por
49
Figura 3.3 Diagrama de flujo apertura por teclado
50
Apertura por teclado (Figura 3.3)
enviara un pulso mediante un puerto GPIO a la Raspberry para que este enviara la
notificando apertura
Algoritmo de funcionamiento
51
1 metro
Puerta
Cámara
Fuentes de
2 metros
Alimentación
Raspberry USB
Contrachapa
LCD
Arduino
Arduino Uno
Relevadores
18x13cm
Raspberry pi3
teclado
5.6x8.6cm
Teclado matricial
5x5cm
de los elementos que conformaran la cerradura, asi como sus distintas conexiones
apetura .
53
El siguiente diagrama contiene cada una de las conexiones que conformara la
componentes como lo son una sirena electrica lacual sera activada por
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Este codigo tiene como objetivo el configurar la tarjeta arduino para el uso de
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Figura 3.5 Diagrama eléctrico de cerradura
54
#include <Keypad.h> // libreria para teclado matricial
const byte rows=3; // declaracion de filas para teclado
const byte cols=4; // declaracion de columnas para teclado
char keys[rows][cols]= // crear el teclado como en fisico
{
{'1','4','7','*'}, // mapa de teclado matricial
{'2','5','8','0'},
{'3','6','9','#'}
};
byte rowpins[rows] = {5, 6, 7};// F1, F2, F3 declaracion de puertos conectados a
teclado
byte colpins[cols] = {8, 9, 10, 11}; // C1, C2, C3, C4 //crea y nombra el teclado
Keypad kpd=Keypad(makeKeymap(keys),rowpins,colpins,rows,cols);
// asignacion de variables de teclado
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); //Crea un Objeto LC. Parametros:
(rs, enable, d4, d5, d6, d7)
char pss1[4] = {'1', '2', '3', '4'}; // clave de entrada
char pss2[4]; // variable que guardara clave ingresada
int apertura= 13; // puerto para activacion de contrachapa electrica
int alarma = 12; //puerto para activacion de alarma
int dist = 4;
int abrio = 2;
int noabrio =3;
void setup() //inicio de programa y puertos
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
FUNCIÓN EXTERNA PARA APERTURA A DISTANCIA EN CUALQUIER
MOMENTO
55
El codigo de abajo servira para el encendido de la apertura a distancia es
RISING declarando que cuando el puerto digital numero 4 este en estado alto se
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
{
attachInterrupt(1, estado, RISING); // declaracion de interruocion externa
Serial.begin(9600); // comunicacion con computadora
pinMode(apertura,OUTPUT); // declaracion de puerto de contrachapa como
salida
pinMode(alarma,OUTPUT); //declaracion de puerto de alarma como salida
lcd.begin(16,2); //iniciamos pantalla LCD 16X2
}
void estado() //codigo en caso de interrupcion
{
lcd.clear(); // limpiamos pantalla LCD
digitalWrite(apertura,HIGH); // activamos contrachapa electrica
lcd.setCursor(1,0); // colocamos cursor de LCD en columna 1 fila 0
lcd.print("CLAVE CORRECTA"); // imprimimos mensaje en LCD
lcd.setCursor(0,1); // colocamos cursor de LCD en columna 0 fila 1
lcd.print("ACCESO PERMITIDO"); // imprimimos mensaje en LCD
delay(10000); // esperamos un tiempo de 10 seundos
lcd.clear(); // limpiamos pantalla LCD
digitalWrite(apertura,LOW); // desactivamos contrachapa
} //acaba interrupcion externa
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
56
PROGRAMA PRINCIPAL
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lcd.setCursor(1,0); // colocamos cursor de LCD en columna 0 fila 1
lcd.print("BIENVENIDO"); // imprimimos mensaje de Bienvenida en LCD
lcd.setCursor(1,1); // colocamos cursor de LCD en columna 1 fila 1
lcd.print("INGRESE CLAVE"); // pedimos el ingreso de clave de acceso
delay(2500); // esperamos un tiempo de 2.5 segundos
lcd.clear(); // limpiamos pantalla LCD
delay(50); // esperamos un tiempo de 50 milisegundos
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
CODIGO PARA INTENTOS DE CLAVE
en caso de que se ingrese una clave erronea por 3 vez consecutiva se pasara a la
57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
INGRESADO
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
for(j=0;j<=3;j++) {
pss2[j]=kpd.waitForKey(); //guardamos caracter ingresados en matriz pss2
lcd.setCursor(j,1); // fijamos el cursor en la fila dependiendo el caracter
presionado
lcd.print("*"); // y escribimos un asterisco por cada caracter presionado
} // acaba bucle de ingreso de clave
58
delay(50); //espera 50 milisegundos
//verifica si los caracteres correctos
w=0;
for(k=0;k<=3;k++) // inicilizamos variable en 0
{
if(pss1[k]==pss2[k]) //compara clave ingresada con clave original
{
w++; // si el caracter es correcto prosigue con siguiente carácter
} // fin de comparacion
} // acaba bucle para comparar clave
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
APERTURA DE PUERTA
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
59
delay(2000);
digitalWrite(abrio,LOW);
f=0; // inicia variable de bucle para intento
} else // si la clave es incorrecta
{
lcd.clear(); //limpia pantalla LCD
lcd.setCursor(1,0); // cursor de LCD en columna 0 fila 1
lcd.print("ERROR DE CLAVE"); // imprime que la clave es incorrecta
lcd.setCursor(0,1); // cursor de LCD en columna 0 fila 1
lcd.print("INTENTE DE NUEVO"); // ingresar nueva clave
delay(2000); //espera 2 segundos
lcd.clear(); //limpia pantalla LCD
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ACTIVACIÓN DE ALARMA
en caso de que la clave ingresada por tercera vez sea erronea, primero se
puerto
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
lcd.clear(); //limpia pantalla LCD
lcd.setCursor(0,0); // cursor de LCD en columna 0 fila0
lcd.print("SISTEMABLOQUEADO"); // imprime en LCD que la cerradura se ha
60
bloqueado
lcd.setCursor(0,1); // cursor de LCD en columna 0 fila 1
lcd.print("ESPERE 5 MIN"); // bloqueo de cerradura durante 5 minutos
digitalWrite(alarma,HIGH); // se activa alarma
delay(300000); //espera 5
minutos
digitalWrite(alarma,LOW); // desactiva alarma despues de 5
minutos
} // acaba codigo de ingreso de
clave
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(14, GPIO.OUT) #puerto 14 como salida
61
import AvailablePresenceProtocolEntity #en linea
from yowsup.layers.protocol_presence.protocolentities
import UnavailablePresenceProtocolEntity #fuera de linea
from yowsup.layers.protocol_presence.protocolentities
import PresenceProtocolEntity #presencia de nombre
from yowsup.layers.protocol_chatstate.protocolentities
import OutgoingChatstateProtocolEntity #is writing, writing pause
from yowsup.common.tools
import Jid #is writing, writing pause
name = "DUEÑO"
print "Bienvenido, ya puede empezar a escribir !"
class EchoLayer(YowInterfaceLayer):
@ProtocolEntityCallback("message")
def onMessage(self, messageProtocolEntity):
if messageProtocolEntity.getType() == 'text':
time.sleep(0.5)
self.toLower(messageProtocolEntity.ack()) #Set received (double v)
time.sleep(0.5)
self.toLower(PresenceProtocolEntity(name = name)) #Set name Presence
time.sleep(0.5)
self.toLower(AvailablePresenceProtocolEntity()) #Set online
time.sleep(0.5)
self.toLower(messageProtocolEntity.ack(True)) #Set read (double v blue)
time.sleep(0.5)
self.toLower(OutgoingChatstateProtocolEntity(OutgoingChatstateProtocolEntity.ST
62
ATE_TYPING, Jid.normalize(messageProtocolEntity.getFrom(False)) )) #Set is
writing
time.sleep(1)
self.toLower(OutgoingChatstateProtocolEntity(OutgoingChatstateProtocolEntity.ST
ATE_PAUSED, Jid.normalize(messageProtocolEntity.getFrom(False)) )) #Set no is
writing
time.sleep(1)
self.onTextMessage(messageProtocolEntity) #Send the answer
time.sleep(1)
self.toLower(UnavailablePresenceProtocolEntity()) #Set offline
63
print answer
64
self.toLower(textmsg(answer, to = recipient ))
print answer
CAPÍTULO IV
PRUEBAS Y
RESULTADOS
65
Introducción
así como el ensamblaje de cada una de las partes que conforman el circuito
Interfaz electrónica:
Etapa de detección.
incorrecta
Etapa de Alimentación
y sirena eléctrica
66
Alimentación de Arduino conectado a fuente por puerto USB.
cerradura.
ingreso.
67
En esta etapa de prueba se obtiene que la contrachapa necesita un
sistema fue probado con leds para probar el funcionamiento del código.
68
mismo se implementa el uso de una fuente eterna de 12V a 250 mA.
70
1.6 Uso general del sistema
configuración.
E
Figura 4.8 ensamble de circuito obtenido
71
ANEXOS
72
Viabilidad
Estudio de Mercado
zonas departamentales, también podrá ser adquirida por cualquier persona que
quiera obtener un sistema de seguridad eficaz a bajo costo, debido a que será
compatible con cualquier puerta, ya que solo necesitara de una red de internet
Con esto se busca ampliar el campo de ventas ya que esta cerradura podrá
tener un costo parecido o un poco más bajo que los sistemas de seguridad
del mercado, además de tener servicios que en la actualidad son más caros
Estudio Técnico
73
Otro conocimiento que se ha tenido que adquirir es utilización de circuitos
de la cerradura.
Estudio Financiero
Los circuitos usados son muy fáciles de conseguir, gracias a que existen una gran
cerradura será que contaremos con el financiamiento por parte del dueño de un
mismo hemos hecho un recorrido en varias tiendas para comparar costos de cada
Factibilidad
Acrónimos
INT/OUT: Entrada/Salida
Glosario
74
WIRELESS: comunicación inalámbrica o sin cables.
75
6+
pi2
de 12v
Cautín $80
TOTAL $4080
76
Bibliografía
77
Ciberografía
http://archivo.eluniversal.com.mx/ciudad-metropoli/2015/en-5-delegaciones-
75-de-delitos-de-alto-impacto-1090121.html
78