Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo Cerradura Redes Completo Lunes
Trabajo Cerradura Redes Completo Lunes
CURSO DE:
de Internet.
SECCIÓN: 8513
TURNO: NOCHE
LIMA – PERÚ
2019
Contenido
4. Justificacion de la Investigacion................................................... 6
6. Marco Teorico.............................................................................. 8
resultados)..................................................................................... 16
Anexos .......................................................................................... 25
Pág.1
Resumen Ejecutivo
más control de dicho lugar. Para ello, se usará un método de seguridad, por
disponibles, este diseño pretende ser una solución para almacenes u oficinas
Pág.2
Identificación del Problema
contrario. Puesto que, cuando los vecinos notaron a los delincuentes sacando
los equipos tecnológicos del establecimiento, una de las vecinas del lugar, se
información que brindo el dueño del establecimiento, informo que dicho sujeto
era cliente recurrente por más de un año y por ello, se le dio la oportunidad de
con las que contaba el establecimiento, la policía informo que uno de los
delincuentes capturados, confeso que robaron las llaves del dueño y le sacaron
Pág.3
Fue por ello, que llegamos a la conclusión que la cerradura con la que contaba
forcejeo o con el robo de llaves como fue en este caso, por lo cual tenemos la
eléctrico Inalámbrico Asistido por una Aplicación Android y de esta manera poder
Pág.4
Planteamiento de Solución
para poder abrir o cerrar. Pero en este caso, decidimos utilizar colores como
métodos de seguridad.
El teclado sería una matriz de 2X2 compuesto por 4 Leds RGB con los colores
rojo, verde, azul y amarillo. Sobre ellos, habría un par de botones de 2X2, que,
además de fungir como botones, ayudarían a difundir mejor los colores de los
cerradura.
Pág.5
Justificación de la Investigación
El proyecto, que aquí se plantea, surge como una solución a los problemas más
Electrónica Inalámbrica asistida por una Aplicación Android. Este sistema, estará
contribuirá a tener un mejor control, donde el acceso deba estar muy restringido
Pág.6
Objetivo General
Objetivos Específicos:
Cerradura.
Pág.7
Marco Teórico
COMUNICACIÓN BLUETOOTH:
entre los dispositivos se utiliza una técnica llamada “espectro ensanchado por
Pág.8
MICROCONTROLADOR AVR ATMEGA328P-PU:
etc.
COMUNICACIÓN SERIAL:
Asíncrono, quiere decir que los datos son transferidos sin el apoyo de una señal
Pág.9
ANDROID:
Android fue construido desde cero para permitir a los desarrolladores crear
teléfono tiene para ofrecer; es un sistema operativo basado en java que corre
bajo el kernel de Linux. Para el desarrollo del proyecto se optó por utilizar esta
desarrollo MIT App Inventor4, ya que es una plataforma muy intuitiva y visual de
basados en Android.
Pág.10
DISEÑO DEL SISTEMA:
correcto funcionamiento del sistema, así como también las estrategias que se
tomaron para manejar los datos y la respuesta a las peticiones que el usuario
podría realizar.
Pág.11
Programación del ATMEGA328P-PU
básicas necesarias que debía cumplir el sistema, de tal manera que pudiera
Una vez cubiertas las funciones básicas de una cerradura, se agregaron otras
• Identificación de usuarios
• Creación de un administrador
• Salida de emergencia
Pág.12
Programación de la Aplicación Android:
• Identificación de usuarios
• Creación de un administrador
Pág.13
Pág.14
Ventajas
Desventajas
impidiendo el acceso.
Pág.15
Implementación de la solución planteada (evidencia
grafica con resultados)
Se comenzó por armar el circuito en un protoboard para ver que todo Funcionara
a la perfección (tanto las conexiones como cada uno de los Elementos). El primer
necesario para la operación de nuestra cerradura. Se probo con un led que esta
conectado el PIC a cada uno de los elementos con los cuales tenia que se
conectado, de tal forma que se nos simplificase la conexión del circuito. Esto se
tuvo que hacer un par de ocasiones, ya que al tener tantos cables por conectar
teclado en los lugares indicados (poniendo cada cable en el pin del teclado). De
en un solo circuito.
Pág.16
teclado para observar que todas las teclas funcionaran, y que los botones de
Pág.17
CONFIGURACIÓN Y USO DE LA APLICACIÓN:
en la aplicación. Esto se realiza sin mayor problema, sin embargo, una vez
sido satisfactoria, un botón cambia de color gris a color verde, como se presenta
en la figura.
Pág.18
Concerniente al registro de entradas y salidas, como depende de la conexión a
registro se lleva a cabo de forma aleatoria, subiendo los datos algunas veces y
algunas veces no. Por último, las acciones especiales que puede realizar el
logró corregir.
una luz roja indicando que la clave está mal. A los 10 intentos la cerradura
entrada, cambiar la clave de acceso con cierta regularidad de medio año o año
completo.
Pág.19
Pág.20
Conclusiones (respecto a los objetivos generales y
específicos)
Android.
las funciones que el entorno provee, esto debido al estilo que posee la
Pág.21
recepción de datos provenientes del microcontrolador al momento de
y horas de trabajo, considero que el mejor plan habría sido el de establecer las
Pág.22
Recomendaciones
sistema.
Incluir un sistema de recarga para las baterías con el fin de que estas
meses.
Diseñar el sistema para ocupar el menor tamaño posible y que todas las
Pág.23
Referencias Bibliográficas APA
Pág.24
Anexos
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
#include <stdbool.h>
#include <avr/wdt.h>
#include <avr/sleep.h>
#include <avr/interrupt.h>
char aux[14];
uint8_t cont = 0;
uint8_t auxInt[9];
float Vcc_value = 0;
Pág.25
bool battery_flag = false;
uint16_t pot = 0;
// Declaración de funciones
UDR0 = data;
void nombreBT()
uint8_t i,j;
administrador
USARTWriteChar('\r');
USARTWriteChar('\n');
cont = 0;
error = false;
void passwordBT()
uint8_t i;
Pág.26
for (i = 1;i <= (cont - 2);i++)
administrador
USARTWriteChar('\r');
USARTWriteChar('\n');
cont = 0;
71
void goToSleep()
if (nomBT)
nombreBT();
_delay_ms(100);
nomBT = false;
if (passBT)
passwordBT();
_delay_ms(100);
passBT = false;
sleepFlag = true;
ADC
Battery_flag = false;
Detector
sleep
ADCSRA = adcsra;
void battery_sampling()
//Se configure el registro del ADC para que tome como referencia el voltaje
uint8_t cont = 0;
Vcc_value = 0;
while (cont <= 100) //Ciclo para tomar un total de 100 muestras
cont++;
_delay_ms(10);
nivel crítico
else
PORTD |= (1 <<PORTD7);
battery_flag = true;
void abrir()
uint8_t tiempo = 0;
73
divisor de voltaje en el
pot
//Se cambia el registro del ADC para que la entrada sea a través del pin
asignado al ADC0;
while (1)
_delay_ms(10);
pot = ADCL + (ADCH * 256); //Se lee el nivel de voltaje correspondiente del
potencio metro
if (pot < 970) //Si el valor leído es menor a 970, se abre la cerradura
break;
PORTC &= ~(1 << PORTC3); //Se desactiva el divisor de voltaje del pot
while (!(PIND & (1 << PIND6))) //Mientras la puerta permanezca cerrada los
LEDs
_delay_ms(500);
_delay_ms(500);
cerradura
Pág.30
if (tiempo == 30) //Si el tiempo excede los 30 segundos se termina el método de
apertura
break;
_delay_ms(50);
void cerrar()
_delay_ms(200);
_delay_ms(200);
_delay_ms(1000);
voltaje en el pot
while (1)
_delay_ms(10);
if (pot > 550) //Si es mayor a 550 se active el motor para que cierre la
cerradura
Pág.31
PORTB |= (1 << PORTB4);
else
break;
_delay_ms(500);
UBRR0H = (unsigned char)(ubrr_value >> 8); //Se guardan los 4 bits más
significativos de
ubbr_value
significativos de
ubbr_value
76
Pág.32
while(!(UCSR0A & (1 << RXC0))) //Ciclo que espera a que la bandera de datos
if (!battery_flag)
al modo sleep
USART
void asignarId()
valor en la EEPROM
void convertir()
uint8_t i;
y desbloquear usuarios
void nuevoUsuario()
uint8_t i;
uint8_t no = 101;
error = true;
correcta
no = 7;
newPass = true; //Se configura la variable "newPass" para escribir una nueva
contraseña
correcta
no = 9;
no = 0;
Pág.34
//Se configura localidad de la EEPROM correspondiente al ID recibido para
desbloquearlo
void grabar()
el ID de la traza recibida
recibido
uint8_t yes = 1;
uint8_t no = 0;
switch (aux[0])
case '#':
Pág.35
USARTWriteByte(correct); //Se envía que fue correcto
EEPROM asignada
abrir = true;
break;
case ';':
break;
switch (aux[0])
case '#':
no = eeprom_read_byte((uint8_t*)(id + 601));
eeprom_update_byte((uint8_t*)(id + 601),no);
break;
case ';':
break;
void buscarID()
else if (op >= 5) //Si el número de errores del usuario es mayor o igual a 5
else{error = true;}
else{error = true;}
Pág.37
comparar(id);
void borrar()
el ID de la traza recibida
res = 5;
void emergencia()
el ID de la traza recibida
uint8_t i, res;
de usuarios registrados
res = 4;
diferente a la almacenada
res = 6;
emergencia
correcta
abrir = true;
else
void guardarPass()
if (newPass)
newPass = false;
void adc_init()
void reset_all()
cont = 0;
error = false;
newPass = false;
sleepFlag = false;
nomBT = false;
passBT = false;
Vcc_value = 0;
battery_flag = false;
pot = 0;
wdt_disable();
USARTInit(BRC);
adc_init();
DDRD = 0b10000000;
Pág.40
DDRB = 0b00111011;
PORTD = 0b01001000;
sei();
int main(void)
DDRD = 0b10000000; //Se configuran el puerto PD7 como salida y los demás
DDRB = 0b00111011; // Se configuran los puertos PB0 PB3, PB4, PB5 como
salidas
PD3
EIMSK = (1 << INT1) | (1 << INT0); //Se activa la interrupción externa INT0 e
INT1
EICRA = (1 << ISC11) | (1 << ISC01) | (1 << ISC00); //Se configura el modo de
activación rising edge para la interrupción INT0 y falling Edge para INT1
1 (power-down)
interrupciones globales
while (1)
Pág.41
aux[cont] = USARTReadChar(); //Se leen los datos recibidos y se almacenan
en un arreglo
nuevoUsuario();
cont = 0;
error = false;
{convertir();
grabar();
cont = 0;
error = false;}
cont = 0;
error = false;}
cont = 0;
error = false;}
guardarPass();
Pág.42
cont = 0;
error = false;
cont = 0;
error = false;}
cont = 0;
error = false;
{ convertir();
nuevoUsuario();
cont = 0;
nuevoUsuario();
cont = 0;
//Manejo de interrupciones
ISR(INT0_vect){if (sleepFlag)
Pág.43
//Si la variable "sleepFlag" es verdadera
{ sleepFlag = false;
}ISR (INT1_vect){
apertura
reset_all();
_delay_ms(200);
abrir();
cerrar();
goToSleep();
Pág.44