Cerradura Electronica con PIC

Embed Size (px)

Citation preview

  • 8/16/2019 Cerradura Electronica con PIC

    1/16

    1

    Iván López [email protected] 

    PROYECTO BASADO EN MICROCONTROLADOR.

    Descripción global del proyecto.

    El presente proyecto consiste en dar solución a la construcción de unsistema de control de un recinto, basado en acceso y seguridad.

    El sistema controlará el acceso al recinto mediante una base de datos deusuarios con capacidad de acceso. Estos deberán introducir una clave válida

    (por defecto se contemplan cuatro claves que son grabadas, teóricamente, enla memoria interna EEPROM   del microcontrolador durante el proceso defabricación) tanto para la apertura de una puerta motorizada , como para sucierre.El tiempo de funcionamiento del motor para la apertura de la puerta estácontrolado por un potenciómetro , con el que el usuario puede ajustar estavariable dentro del intervalo que va de 5 a 10 segundos. Durante el tiempo queel recinto permanezca abierto se activará un foco  para iluminar el mismo.Mediante, por defecto, una quinta clave especial podemos acceder a la lecturade la memoria EEPROM externa al microcontrolador. En esta memoria seregistrarán los diferentes accesos por parte de usuarios (clave utilizada, tipo de

    operación (apertura o cierre), fecha y hora).

    Aparte del acceso mediante claves autorizadas a usuarios, en el aspecto deseguridad del sistema se contempla la posible activación de una alarma  debidoa excesos de temperatura, detectados mediante un sensor (para evitar unposible riesgo de incendio), o debido a la apertura de alguna de las ventanasdel recinto (en este caso sólo se contempló la existencia de una).También, y debido a que la apertura y cierre de la puerta no son automáticos,se incluye una fotocélula   que detecta el posible paso de objetos o personasdurante la operación de cierre del recinto. En este caso, la puerta quedabloqueada hasta que un usuario autorizado la reactive mediante una claveválida, completándose una operación de apertura (operación que tarda encompletarse, como es lógico, el mismo tiempo que la puerta estuvocerrándose).

    Todo ello consta de una descripción hardware, dividida en elementos de controle interfaz de usuario, y software, que regirá el funcionamiento lógico delsistema. A continuación pasamos a ver la solución ofrecida.

  • 8/16/2019 Cerradura Electronica con PIC

    2/16

    2

    Descripción hardware.

    En este apartado realizaremos una breve descripción hardwareatendiendo, no a los elementos finales en su implementación, sino a losutilizados para diseño y simulación mediante computador. En este sentido, para

    la descripción previa del proyecto se prescindió de hacer uso de elementoscomo relés, foco de luz alimentado de la red eléctrica, fotocélula o motor real.En su lugar, para representar estos elementos se hizo uso de LEDs   (parasimulación de alarma, motor y foco del recinto) y pulsadores  (para simulaciónde pulso enviado por la fotocélula y como elemento mecánico de detección deapertura de ventana, aparte de servir de interfaz de usuario a fin de solicitaracceso al recinto).

    Aparte de los elementos comentados y los propios de conexionado e interfaz,alimentación, potenciómetro para la regulación del tiempo de apertura de lapuerta, teclado telefónico como interfaz de usuario, placa de circuito impreso o

    resistencias clásicas, de pull-up  y pull-down  entre otros, pasaremos a comentara continuación los bloques hardware más relevantes que conforman el sistema.

    MICROCONTROLADOR PIC18F4520

    Se seleccionó este dispositivo como corazón del sistema debido a susprestaciones, las cuales superan con creces los requerimientos establecidos.

    Por la topología software dada como solución resultaba imprescindible estaelección respecto de, por ejemplo, un microcontrolador de gama media de laserie PICF16XX , puesto que cualquier modelo de esta última, sólo permite unainterrupción externa (fueron necesarias dos: para el control de la alarma porapertura de ventana y para gestión de acceso al recinto).

    En cuanto a la memoria interna de programa se refiere, podrían haber servidoalgunos de los modelos de la serie PIC16FXX . Estos tienen un contador deprograma de 13 bits, lo que les permite direccionar hasta 8192 palabras dememoria de programa de 14 bits. No obstante, algunos de ellos, como elPIC16F84 , sólo implementan 1024 palabras de memoria de programa de 14bits, lo que, debido a lo comprobado durante la compilación del código, los

    hace absolutamente insuficientes. Sin embargo, el PIC utilizado presenta unamemoria de programa de 16384 palabras de 8 bits cada una, lo que permitecubrir con creces las necesidades de almacenamiento requeridas, dando unamplio desahogo al sistema.

  • 8/16/2019 Cerradura Electronica con PIC

    3/16

    3

    LCD LM016L

    Pantalla LCD que forma parte de la interfaz de usuario.

    MEMORIA EEPROM 24C32A

    Memoria externa EEPROM de 4MB (4096 palabras de 8 bits cada una).Permite, según la solución software dada, almacenar hasta 85 registros deacceso al recinto. Nos permite comunicarlo con el PIC haciendo uso de lainterfaz serie I2C.

    RELOJ-CALENDARIO PCF8583

    Dispositivo configurable que nos permite registrar la fecha y hora de losaccesos al recinto. Hace uso de la interfaz serie I2C.

    SENSOR DE TEMPERATURA DS18S20

    Sensor digital de temperatura con una resolución de 9 bits. Se comunicamediante bus 1-wire (sólo requiere una línea de datos). Opera en el rango de-55 ºC a +125ºC. Tiene una precisión de ±0.5ºC.

  • 8/16/2019 Cerradura Electronica con PIC

    4/16

    4

    A continuación se muestra el esquema hardware dado como solución.

    1. Pulsador de acceso al recinto. Al ser presionado se solicita una claveválida para apertura o cierre de la puerta. 

    2. Pulsador que simula el efecto del relé tras la apertura de una de lasventanas del recinto. 

    3. LED de alarma por exceso de temperatura y por apertura de ventana. 4. Luz del recinto. 5. LED que muestra el funcionamiento del motor de la puerta.

    Permanece tanto tiempo encendido como tiempo esté funcionando elmotor. 

    6. Pulsador que simula la señal enviada por una fotocélula al detectar elpaso de un objeto durante el cierre de la puerta del recinto. 

    7. Potenciómetro para regulación del tiempo de funcionamiento delmotor de la puerta. 

    8. Microcontrolador PIC18F4520. 9. Reloj-calendario PCF8583. 10.Memoria EEPROM externa 24C32A. 11.Teclado telefónico. 12.Sensor de temperatura DS18S20. 13.Display LCD LM016L. 

  • 8/16/2019 Cerradura Electronica con PIC

    5/16

    5

    Descripción software.

    El control lógico del sistema ha sido programado en lenguaje C   ycompilado mediante el software PIC C Compiler . Está basado en un diseñomodular, de modo que, según su aplicación, las funciones se agrupan en

    distintos ficheros de código C , los cuales son finalmente agrupados en un únicoarchivo, el cual desencadena y gestiona el funcionamiento lógico final delsistema.

    En total, el proyecto se compone de 10 ficheros. A continuación pasamos adescribir brevemente cada uno de ellos.

    1wire.C

    Se definen funciones básicas para comunicación con un solo sensor

    1-wire. Por defecto se define para el PIN A5  del microcontrolador, al cual seconecta el sensor de temperatura a fin de tomar la lectura de la misma.

    Acceso.C

    Código para la gestión de acceso al recinto. Contiene las siguientesfunciones:

    void entryAndExit()  Esta función gestiona la apertura de la puerta (motor) yencendido de la luz interior del recinto. También ofrece solución en el caso dedetección de paso de un objeto durante la operación de cierre de la puerta. Aesta función se accede siempre que se dé una clave de acceso válida desde lainterfaz de usuario (a excepción de con la clave especial para la lecturasecuencial de la memoria EEPROM externa).

    void  checkPass()   Dada una clave introducida mediante la interfaz deusuario, este método se encarga de la verificación de la misma. En el caso deque se encuentre en la memoria EEPROM interna inherente almicrocontrolador, se llamará a la función de gestión de apertura o cierreentryAndExit() y se procederá al grabado en memoria de los datos de acceso,

    llamando al método writeData() (contenido en el archivo Memoria.C ). Todo elloen el caso de que la clave introducida sea de acceso, puesto que en el caso deintroducir el password correspondiente a la lectura secuencial de la memoriaEEPROM externa, se procederá a la llamada del método readData() (tambiéncontenido en el fichero Memoria.C ).Si la clave introducida no es válida, simplemente se especifica a través del LCDy no se hace nada.

    void access()  Se encarga de leer una clave de acceso a través de tecladopara entrar o salir del recinto. Tras la confirmación de la clave introducida, estafunción llamará a checkPass(), método que será el encargado de verificar los

    datos introducidos. A la función access()  se accede mediante interrupciónexterna tras hacer uso del pulsador específico.

  • 8/16/2019 Cerradura Electronica con PIC

    6/16

    6

    Alarma.C

    Código para la gestión de la alarma del recinto, tanto por temperaturacomo por apertura de ventana. Contiene las siguientes funciones:

    void windowAlarm()  Controla la alarma por apertura de ventana. Medianteinterrupción externa procedente de un pulsador que simula dicha apertura, sepasa a la ejecución de la función en cuestión, donde se activa el LED dealarma y se muestra un aviso por LCD que bloquean el sistema hasta que sedé solución al problema.

    void fireAlarm()  Controla la alarma por exceso de temperatura. De nuevo,esta función activa el LED de alarma y muestra un aviso por LCD que bloqueanel sistema hasta que se dé solución al problema. La propia función compruebala temperatura y es llamada periódicamente tras el desbordamiento deltemporizador del watchdog, el cual saca al microcontrolador del modo de bajo

    consumo. Esta llamada se gestiona desde el fichero principal, el que aglutinatodos los módulos programados.

    ds1820.C

    Driver básico del sensor de temperatura. Realiza una secuenciacompleta de inicialización, conversión de temperatura y lectura del sensor detemperatura con alimentación externa.

    Inicializa.C

    Contiene funciones de inicialización del sistema: bienvenida, registro depasswords en la memoria EEPROM interna del microcontrolador y de ajuste,display y lectura de fecha y hora. Las funciones en cuestión son las siguientes:

    void welcome()  Función de bienvenida. Se encarga de displayar en el LCDun mensaje de bienvenida al sistema, llevando a cabo la inicialización delpropio LCD.

    void writePass()

     Realiza el grabado de las claves de acceso en la memoriaEEPROM interna. Esto debe venir hecho de fábrica, pero para el caso presenterealizaremos esta escritura al inicio de la simulación.

    void displayDate()  Muestra por el LCD en un instante dado la fecha y horasactuales.

    date_time_t returnDate() Devuelve la fecha y la hora.

    void adjustDate()  Esta función se encarga de permitirle al usuario el ajusteinicial de la fecha y la hora. Los datos son leídos desde teclado. La función

    también llama a displayDate(), permitiéndonos comprobar el ajuste realizadopara confirmación.

  • 8/16/2019 Cerradura Electronica con PIC

    7/16

    7

    LCDeasy.C

    Funciones para la gestión del display LCD de la EasyPIC3   con elcompilador de CCS.

    Memoria.C

    Fichero para la gestión del uso de la memoria EEPROM externa delmicrocontrolador. Contiene las siguientes funciones:

    void  WriteData()   Su utilidad es el registro de información acerca de losaccesos al recinto.

    void  readData()   Función para la lectura secuencial de la memoriaEEPROM, permitiéndonos, mediante una clave especial, acceder al registro de

    accesos al recinto.

    PCF8583.C

    Funciones para el RTC I2C: PCF8583. Incluye funciones de conversiónBCD-binario y de lectura/escritura a través de I2C.

    Proyecto.C

    Código que aglutina todos los módulos programados y que desencadenay gestiona el funcionamiento del sistema. Incluye parámetros y definicionesbásicas de funcionamiento (interrupciones, definición I2C, optimización defunciones de I/O…). Sólo se define la siguiente función:

    void main()  Graba los passwords en la memoria interna, da un mensaje debienvenida, solicita el ajuste de la fecha/hora por parte del usuario, habilitainterrupciones, pone en funcionamiento el watchdog así como el modo de bajoconsumo y finalmente habilita el acceso al recinto mediante interrupción yposibilita la comprobación de la temperatura tras el desbordamiento del

    temporizador asociado al watchdog, el cual saca al PIC del modo de bajoconsumo.

    Teclado.C

    Este fichero contiene una función denominada int leerTeclado(), la cualpermite controlar la lectura del teclado.

  • 8/16/2019 Cerradura Electronica con PIC

    8/16

    8

    Una vez descritos la agrupación y funcionamiento software del sistema, sepasa a mostrar un diagrama que ofrece una visión global del mismo.

  • 8/16/2019 Cerradura Electronica con PIC

    9/16

    9

    Funcionalidad.

    En este apartado describiremos a nivel usuario las funcionalidades delsistema.

    Tras ser arrancado, se muestra el siguiente mensaje de bienvenida:

    A continuación se nos indica que deberemos ajustar la fecha y hora delsistema. Para continuar, presionaremos cualquier tecla del keypad:

    La siguiente secuencia de capturas muestra el ajuste del reloj-calendario al

    viernes 07/08/09  a las 21:30:00. Tras terminar la configuración se pideintroducir a través del keypad un 1 en el caso de que los datos sean correctos,o un 0   a fin de reintroducir la información. Los datos se van introduciendosecuencialmente tal y como se van solicitando y no es necesario confirmarninguno de los pasos intermedios. Las cifras se introducen de izquierda aderecha, de modo que si queremos configurar el año 2009 , presionaremos enprimera instancia un 0  y luego un 9 . El formato de la fecha y hora es dd/mm/aahh/mm/ss . Finalmente se solicita el día de la semana; se introducirá un 0  parael domingo , un 1 para el lunes  y así sucesivamente hasta un 6  para el sábado .

  • 8/16/2019 Cerradura Electronica con PIC

    10/16

    10

    Se puede apreciar cómo los efectos han surtido efecto en el módulo delPCF8583, como se recoge en la siguiente captura:

    El LCD entonces no mostrará nada. Una vez finalizada la configuración inicialde rigor, podemos comenzar a usar el sistema. Cada cierto período de variossegundos se analiza la temperatura en la sala. Esto ocurre cuando eltemporizador del watchdog se desborda y saca al PIC del reposo. Si la

    temperatura es mayor de 40ºC, se enciende el LED de alarma y se muestra unmensaje en el LCD. Esto no ocurre así cuando el usuario bloquea dichafuncionalidad por una operación de acceso al recinto (apertura o cierre), o poruna lectura secuencial de la memoria EEPROM externa.

    Sin embargo, con la alarma por apertura de ventana ocurre algo ligeramentedistinto, puesto que esta actúa por interrupción, así que en el instante en el queel sistema sea inicialmente configurado y no se esté atendiendo ninguna otra(por ejemplo, la asociada al acceso al recinto), la alarma por apertura deventana saltará, encendiéndose el mismo LED de alarma, pero mostrándose unmensaje distinto por la pantalla LCD. Si, anteriormente, para simulaciónpodíamos alterar el valor de la temperatura sin más que clickar sobre lasflechas del módulo DS18S20, ahora deberemos actuar el pulsador numerado

  • 8/16/2019 Cerradura Electronica con PIC

    11/16

    11

    con la cifra 2 , tal y como se mostró en el esquema hardware incluido al final delapartado “Descripción hardware” .

    En cualquier momento tras el ajuste de la fecha y hora podremos presionar elpulsador de acceso al recinto. Actuaremos tantas veces en él como vecesqueramos abrir y cerrar la habitación. Una vez hecho esto se mostrará losiguiente en el display:

    Introduciremos 4 cifras consecutivas. Una vez leídas, sin necesidad depresionar ninguna otra tecla, el sistema mostrará el siguiente mensaje de

    confirmación:

    Presionaremos entonces un 1 si queremos confirmar los datos introducidos oun 0  si queremos, por haber habido un error durante el tecleo, volver a meter laclave. Supongamos entonces que hemos introducido una clave no válida. Elsistema mostrará lo siguiente a través del LCD, saliendo al punto de lectura de

    temperatura y llevando de nuevo al reposo al PIC hasta que el watchdog “ladre”  o se genere una interrupción externa:

    Presionando de nuevo el pulsador activaremos una petición de acceso. Ahoraintroduciremos una de las cuatro claves (una por cada usuario) que permiten la

    entrada al recinto. Estas cuatro claves son: 1302, 2502, 0475 y 2009.

  • 8/16/2019 Cerradura Electronica con PIC

    12/16

    12

    Tras confirmar la operación se nos mostrará lo siguiente:

    Seguidamente se procederá a, en este caso, la apertura del recinto,produciéndose un grabado del acceso en memoria. Ello se especificará en elLCD durante todo el tiempo de apertura, siendo este regulado a través delpotenciómetro marcado con el número 7  en el esquema hardware del apartado“Descripción hardware” . Cuando el valor de la resistencia es nulo, el tiempode apertura es de 10 segundos, mientras que es de 5 segundos si el valor esmáximo, en este caso, 1kΩ. Podemos regular, por tanto, dicho tiempo dentrode ese intervalo. Durante todo el proceso se activará el LED asociado al motor,el cual indica su funcionamiento y, además, se procederá al encendido de la luzdel recinto.

    Podemos ahora, por ejemplo, consultar cómo se ha grabado el acceso en lamemoria externa EEPROM sin más que volver a actuar sobre el pulsador de

  • 8/16/2019 Cerradura Electronica con PIC

    13/16

    13

    entrada al recinto. En este caso introduciremos la clave 2305. Tras confirmar suvalidez aparecerá el siguiente mensaje mientras que ninguno de losparámetros (como el de la luz del recinto) son modificados:

    A continuación se muestra una explicación de lo que secuencialmente se iráleyendo de la memoria y mostrando en el LCD. Si en el campo operación  semuestra un 1, se habrá realizado una apertura, mientras que si se muestra un0 , se habrá completado un cierre:

    Nosotros accedimos con el PIN 1302 . Fue mostrado lo siguiente:

    Una vez se haya completado la lectura de la memoria EEPROM, se mostrará através del LCD el siguiente mensaje:

    Sin más que accionar otra vez el pulsador de acceso, se nos solicitará denuevo la clave para, en este caso, cerrar el recinto. Al igual que para laapertura de la puerta, con el potenciómetro controlaremos el tiempo deoperación del motor. Si en este instante la fotocélula detecta el paso de algúnobjeto, la puerta quedará bloqueada y se solicitará de nuevo un password paracompletar una operación de apertura. El pulsador que simula el efecto de lafotocélula está numerado con la cifra 6  en el esquema hardware incluido al finaldel apartado “Descripción hardware” . En esta situación, el LCD mostrará elsiguiente mensaje:

  • 8/16/2019 Cerradura Electronica con PIC

    14/16

    14

    Problemas encontrados y soluciones aportadas.

    El principal y, realmente, único problema surge a raíz de laimplementación de la memoria EEPROM externa. Aun con una planificaciónorganizada y programación lógica no funcionó a priori tal y como se esperaba,

    necesitándose de varios cambios hasta conseguirse tal fin.

    El problema asociado al que le he tenido que dar una solución, bajo mi parecer,bastante insatisfactoria, ha sido el siguiente: me percaté de que el primerregistro de acceso al recinto lo hacía correctamente y, al leerlo, así secomprobaba. No obstante, al leer la memoria EEPROM una segunda vez, esteprimer registro quedaba modificado como si un nuevo acceso hubieracambiado el contenido de la memoria. Realizando sucesivos registros deacceso me percaté de que seguían una secuencia muy peculiar: el primero deellos estaba completamente corrompido a excepción de la hora, el segundosólo mostraba correctamente el tipo de operación y la fecha, el tercero

    mostraba todo bien a excepción de la hora y el cuarto se realizabacorrectamente. Este patrón se repetía, es decir, los registros cuarto, octavo,doceavo y sucesivos se realizaban de forma completamente correcta, por loque aprovecho únicamente estas posiciones de memoria para el registro de losaccesos, lo que implica un desaprovechamiento de más de tres cuartas partesdel dispositivo pero que, al menos, me permite cumplir la función de formacorrecta. Pasamos por tanto de poder realizar 341 registros de acceso aúnicamente 85.

  • 8/16/2019 Cerradura Electronica con PIC

    15/16

    15

    Presupuesto.

    A continuación se incluye una tabla con una lista de componentesnecesarios, su precio, cantidad usada y sitio de compra. Se despreciaron de lacontribución al presupuesto elementos como la placa del sistema o

    herramientas para su implementación. Tampoco se tienen en cuenta losposibles gastos de envío asociados al hecho de tener que realizar ciertospedidos a tiendas fuera del entorno.

    Elemento Marca yModelo

    PrecioUnidad

    Sitio deCompra

    Cantidad PrecioTotal

    Microcontrolador MicrochipPIC18F4520

    10.81€ Farnell ES x1 10.81€

    MemoriaEEPROM

    ISSI 24C32A 0.47€ Farnell UK x1 0.47€

    Sensor de

    Temperatura

    Dallas DS18S20 5.07€ Farnell UK x1 5.07€

    Reloj-Calendario NXP PCF8583 3.03€ Farnell UK x1 3.03€Pantalla LCD Hitachi LM016L* 221.62€ Icelect x1 221.62€TecladoTelefónico

    EAO ECO12150 5.18€ Farnell UK x1 5.18€

    Resistencia Pull-Up/Down yclásicas

    0.07€(Todo

    modelo)

    Farnell UK x11 0.77€

    Relé Reed (1) yclásicos (2)

    3.76€ Reed7.84€ Clás.

    Farnell ES x3 19.44€

    Potenciómetro Ajustable 1k 1.31€ Farnell ES x1 1.31€Foco de Luz SLB 150W 28.40€ Farnell ES x1 28.40€Motor AIRPAX 41.91€ Farnell ES x1 41.91€Alarma 110V 3W 32.61€ Farnell ES x1 32.61€Interruptor/Pulsador

    B3FS-1002 0.67€ Farnell ES x2 1.34€

    Fotocélula EMPC 16.38€ Farnell ES x1 16.38€TOTAL 388.34€

    *Nota: El modelo aparece como descatalogado o fue imposible localizarlo en otras tiendas decomponentes electrónicos, por lo que tuve que solicitar un presupuesto a Icelect, compañía que se dedicaa distribuir dispositivos de difícil localización o que, directamente, dejaron de fabricarse.

  • 8/16/2019 Cerradura Electronica con PIC

    16/16

    16

    Planificación.

    Debido a que el proyecto no es demasiado complejo, resultaríacontraproducente el dividir el trabajo en muchas etapas y entre un número,para el caso, relativamente alto de personas.

    Una primera etapa debería de consistir en dar una visión global del problema yofertar una primera solución base. Una vez hecho esto, parte del equipo habríade encargarse del diseño hardware, siendo este co-diseñado simultáneamentecon un equipo encargado de la parte software a fin de permitir la existencia defeedback  en tiempo real que permita la mayor agilidad posible en la realizacióndel proyecto.

    Finalmente se procede a simular el diseño y posteriormente, una vezsatisfechas todas las fases, a emular un prototipo a fin de realizar correccioneso mejoras o generar el sistema final.

    El tiempo inicial previsto para el desarrollo del trabajo fue de unasemana. Este tiempo no fue ajustado en función del proyecto en sí, sino enfunción de la disponibilidad y organización personal. No obstante, senecesitaron finalmente 10 días, con una media de aproximadamente 4 horasdiarias. El retraso en mayor medida fue debido a la generación del presenteguión y a la corrección de detalles.