cerradura electronica

12
Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Pérez PRACTICA: CERRADURA ELECTRONICA (PARTE 1) Objetivo: El estudiante aprendera de manera practica el manejo del lenguaje C mediante la implementacion real de un sistema de cerradura electronica. Los conseptos primordiales a aprender son: Estructura de un programa en C Diseño estructurado de un programa Metodologia del diseño de un programa Herramientas necesarias: PICC Compiler Proteus ISIS (Simulador) Teclado matricial 4X4 LCD 16X2 PIC18F4550 3 LED (VERDE, ROJO y otro color) 3 Resistencias de 330 Ohms 4 Resistencias de 10K Descripcion de la practica: Cerradura electrónica con clave de 4 digitos alfanuméricos , es decir, la clave puede ser con letras o números, usando teclado matricial y LCD. La cerradura contara con leds indicadores de puerta abierta y puerta cerrada y un led indicador de “alarma” que se activara después de 5 intentos de contraseña equivocados. Si el usuario introduce la contraseña correcta el sistema le da la “bienvenida” y da acceso al sistema pudiendo controlar la apertura y el cierre de la puerta y cambiar la clave.

description

z

Transcript of cerradura electronica

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    PRACTICA: CERRADURA ELECTRONICA (PARTE 1)

    Objetivo:

    El estudiante aprendera de manera practica el manejo del lenguaje C mediante la implementacion

    real de un sistema de cerradura electronica. Los conseptos primordiales a aprender son:

    Estructura de un programa en C

    Diseo estructurado de un programa

    Metodologia del diseo de un programa

    Herramientas necesarias:

    PICC Compiler

    Proteus ISIS (Simulador)

    Teclado matricial 4X4

    LCD 16X2

    PIC18F4550

    3 LED (VERDE, ROJO y otro color)

    3 Resistencias de 330 Ohms

    4 Resistencias de 10K

    Descripcion de la practica:

    Cerradura electrnica con clave de 4 digitos alfanumricos , es decir, la clave puede ser con letras

    o nmeros, usando teclado matricial y LCD. La cerradura contara con leds indicadores de puerta

    abierta y puerta cerrada y un led indicador de alarma que se activara despus de 5 intentos de

    contrasea equivocados.

    Si el usuario introduce la contrasea correcta el sistema le da la bienvenida y da acceso al

    sistema pudiendo controlar la apertura y el cierre de la puerta y cambiar la clave.

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    Desarrollo

    Dado que utilizamos el lenguaje C el cual es un lenguaje estructurado debemos aprovechar esta

    caracterstica y disear un programa bien estructurado, segmentado o dividido mediante

    funciones que nos permita hacer un cdigo INTELIGIBLE (fcil de leer y entender) de manera que

    nos permita posteriormente escalar el cdigo haciendo mejoras o aadiduras (nuevas versiones)

    sin tantos problemas. En este punto ni siquiera es necesario saber programar en C o en ningn

    lenguaje, es simplemente aplicar nuestra lgica a la resolucin de un proyecto.

    Dicho esto comenzaremos por definir como atacar el problema, utilizaremos la tcnica de divide

    y venceras, es decir, VISUALIZAREMOS el esquema global o general del proyecto y lo dividiremos

    en tareas simples que despus atacaremos individualmente una por una.

    DIAGRAMAS DE FLUJO

    MAIN

    CONDICIONES INICIALES -Mensaje de inicio

    -Asegurarse de cerrar la puerta

    CLAVE

    CORRECTA?

    PEDIR LA CLAVE -Leer el teclado

    -Ver si la clave es correcta

    CONTROL_DE_USUARIO -Abrir, Cerrar, Cambiar clave y salir

    del sistema -Resetear la cuenta de errores

    GESTOR_DE_ERRORES -Mostrar mensaje de error -Llevar la cuenta de errores

    -Activar ALARMA si es necesario

    SI NO

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    Observamos que tenemos un esquema general simple ya que esta dividido en varias tareas que

    resolveremos por separado posteriormente. Los bloques de CONDICIONES INICIALES y PEDIR LA

    CLAVE posiblemente son muy simples y posiblemente no se ejecuten en diversas partes del

    programa por lo que probablemente NO nos conviene hacerlos como funciones.

    En el caso de los bloques GESTOR_DE_ERRORES y CONTROL_DE_USUARIO son bloques que

    probablemente representen un cdigo largo, nos conviene hacerlos FUNCIONES ya que

    posteriormente podremos decidir que cambiar, aadir o mejorar en cada caso de manera

    individual evitando cambiar el esquema general del proyecto.

    GESTOR DE ERRORES

    Incrementar conta_errores

    Conta_errores >= 5?

    Mostrar mensaje de ERROR

    HACERLA DE TOS!! -Mostrar mensaje de ALARMA

    -Hacer parpadear un led o buzzer -Mostrar un mensaje disuasivo

    LLAMANDO A POLICIA -Todo esto unos segundos -Resetear conta_errores

    REGRESAR

    SI NO

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    CONTROL_DE_USUARIO

    MENSAJE DE BIENVENIDA AL SISTEMA

    Muestra MENU de opciones

    seleccionLee_teclado;

    Seleccin== A?

    Seleccin==B?

    Seleccin==C?

    Funcion ABRIR

    Funcion CERRAR

    Funcion CAMBIAR

    CLAVE

    Seleccin== F?

    Mostrar mensaje de despedida, cerrar puerta y

    resetear contador de errores

    REGRESAR

    SI

    SI

    SI

    SI

    NO

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    IMPLEMENTACION EN CODIGO C:

    1) La CABECERA, lo primero es aadir los archivos o libreras que usaremos en el programa:

    Vemos que se incluye la librera PICPLAY_18F4550.h la cual contiene TODAS las configuraciones

    bsicas para que el PIC funcione a la mxima velocidad de 48MHz, luego se incluyen las libreras de

    los dispositivos que se van a usar como el LCD y el Teclado matricial 4X4.

    2) Las variables globales, aqu declararemos las variables globales del programa, es decir, aquellas

    que pueden ser leidas y modificadas desde cualquier funcin del programa. Aqu ya tenemos las

    variables declaradas pero en la practica estas variables se van aadiendo conforme vamos

    diseando el programa.

    Como vemos las primeras dos variables declaradas son vectores de 4 elementos del tipo char

    (caracteres), en el caso del vector llamado contrasea observamos que lo inicializamos con los

    valores del 1 al 4 ya que esta ser la contrasea por default. Las dems variables se vera su utilidad

    mas adelante en el programa.

    3) Las definiciones, estas son aquellas que renombran palabras con la finalidad de facilitar el

    entendimiento del programa, por ejemplo, es mas lgico de entender:

    output_high(led_cerradura); que output_high(pin_b0);

    4) FUNCIONES, aqu vamos a declarar las funciones que hemos visto en los diagramas de flujo, las

    primeras funciones que haremos son ABRIR(), CERRAR() y CAMBIAR_CLAVE() y posteriormente las

    demas ya que estas funciones se utilizan dentro de la funcin CONTROL_DE_USUARIO() y por

    tanto deben definirse primero. Las funciones ABRIR() y CERRAR() simplemente muestran en

    pantalla un mensaje de ABRIENDO o CERRANDO y encienden/apagan los leds indicadores de

    puerta abierta y puerta cerrada, la funcin CAMBIAR_CLAVE(); prcticamente no hace nada ya que

    posteriormente se completara esta funcin en futuras prcticas.

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    Seguido de esto hacemos la funcin control_de_usuario(); como se muestra y como lo vimos en el

    diagrama de flujo, lo que hace esta funcin es darle al usuario el control sobre el sistema, abrir,

    cerrar y cambiar clave:

    (Primero muestra un mensaje de BIENVENIDO AL SISTEMA)

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    (Luego se inicia un ciclo DO-WHILE donde lo primero es mostrar el MENU de opciones y seguido se

    escanea el teclado con la funcin read_keypad_wait(); , el valor ascii de la tecla pulsada se

    almacenara en la variable seleccin.)

    (Seguido de esto mediante un SWITCH ejecutamos la funcin pertinente segn sea la seleccin del

    usuario)

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    (Y solo si la variable seleccin es igual a F entonces salimos del ciclo DO-WHILE y terminamos

    mostrando un mensaje de SALIENDO DEL SISTEMA)

    Ahora hacemos la funcin GESTOR_DE_ERRORES siguiendo o basndonos en el diagrama de flujo

    que hicimos en color rojo:

    LISTO Finalmente escribimos el cdigo del programa principal MAIN:

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    (Se inicia el programa MAIN con las condiciones INICIALES mostrando un mensaje inicial)

    (Se inicia el ciclo infinito donde lo primero que hacemos es escanear o leer el teclado 4 veces

    almacenando el valor de la tecla pulsada en cada elemento del vector clave[i])

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    (Lo siguiente es validar la clave, para esto simplemente hacemos uso de una bandera asumiendo

    que no habr error, comparamos uno a uno los elementos de los vectores clave[i] y contrasena[i]

    y en caso de que alguno de estos sea distinto levantaremos la bandera de error, si hubo error o no

    ejecutamos la funcin pertinente.)

  • Curso de Microcontroladores PIC en lenguaje C- Joel Oswaldo Campos Prez

    NOTAS:

    Para esta practica se hizo la siguiente modificacin a la librera de PICPLAY_4X4.c para adecuarla al

    teclado usado en la simulacin:

    Para esta practica tambin se modifico el archivo PICPLAY_LCD.c aadindole una nueva funcin

    llamada lcd_clear(); como se muestra a continuacin:

    En esta practica la funcin CAMBIAR_CLAVE(); esta inconclusa ya que la siguiente practica

    consistir en aprender a guardar datos en la EEPROM interna del PIC ya que esta memoria es NO

    voltil, es decir, conserva la informacin aun despus de haber encendido y apagado el PIC, de

    esta manera la nueva clave que hayamos grabado quedara intacta ante un reseteo del

    microcontrolador.