MONTAJE / El Cajero Automático

Autor: Miguel A. Uroz Sorroche*

INTRODUCCIÓN

En la sociedad actual, el ritmo de vida hace que la búsqueda de la rapidez en todas las actividades cotidianas sea un objetivo prioritario. Entre ellas están las gestiones de tipo bancario.

Son muy numerosos los casos, en los que aprovechando los recursos que pone a nuestra disposición la electrónica, podemos hacer que una sencilla operación pase de ocupar un gran espacio de tiempo a menos de un minuto. Aquí es dónde entra en juego una importantísima labor realizada a través de las nuevas tecnologías, dirigida a agilizar estos trámites, y que pretende mejorar el servicio de los bancos, ofreciendo otras alternativas a aquellas personas que por problemas de tiempo, se piensan mucho acudir a una sucursal bancaria.

En el presente artículo, se muestra una solución que resuelve el problema de hacer largas esperas en el banco, en filas interminables de personas, que  dificultan debido al tiempo de espera, poder realizar operaciones bancarias como retiradas de efectivo, una simple consulta del saldo de nuestra cuenta bancaria, o un cambio de nuestro código PIN. Además de contar con una disponibilidad total de acceso a dichos servicios: 24 horas al día los 365 días del año.

Para conseguir resolver el problema planteado se ha diseñado un “Cajero Automático”, basado en un microcontrolador PIC y en la nueva tecnología de tarjetas inteligentes, con capacidad de operar en tiempo real.

Para los bancos un cajero automático representa un excelente intermediario, ya que además de brindarle atención a sus clientes, ofrece una gran seguridad en el manejo “a distancia” de muchos de sus servicios.

El prototipo diseñado se compone de dos placas electrónicas, una de control y otra de alimentación o potencia, conectadas mediante un conector aéreo.

La ventaja de implementar el circuito eléctrico en dos placas distintas, es que el sistema de control puede seguir trabajando en caso de avería de la fuente original, mediante otra fuente auxiliar, o bien con una batería en caso de corte en la red eléctrica. Además de la modularidad que presenta el diseño.

De las características del Cajero Automático diseñado mencionaremos las más importantes:

· Pantalla LCD con ajuste de contraste y retroiluminación.

· Funcionamiento con tecnología de tipo Smart Card.

· Control de Acceso a operaciones mediante una tarjeta y un código PIN.

· Comunicación directa con una base de datos y actualización en tiempo real.

· Impresión de comprobante de operaciones.

· Acceso a contadores de efectivo en modo programación.

· Implementación económica del sistema.

 

CONSIDERACIONES DE DISEÑO

Una de las dificultades que aparece a la hora de realizar este trabajo es el diseño del circuito, así como elegir los dispositivos electrónicos más adecuados. Los microcontroladores reúnen en un solo chip: microprocesador, memoria de programa, memoria de datos y puertos E/S. También suelen disponer de otras características especiales como: puertos serie, comparadores, convertidores analógicodigital, etc.

Para este proyecto se ha optado por el uso de un microcontrolador PIC 18F452 de la casa Microchip Technology. Este dispositivo se encarga de leer la  información de los periféricos de entrada, realizar las operaciones matemáticas oportunas y activar los puertos de salida.

Para el microcontrolador se ha desarrollado un programa en lenguaje ensamblador bajo el entorno de programación MPLAB.

La empresa Microchip ofrece variadas herramientas que se pueden descargar gratuitamente de su página web <http://www.Microchip.com>. Una vez diseñado el circuito con todos los dispositivos que llevará incorporado el Cajero Automático, y para tener una visión generalizada del conjunto del sistema, se procede a comunicar al microcontrolador del Cajero Automático, que actúa como Cliente, con un ordenador principal que ejerce la tarea de Servidor.

Siguiendo este planteamiento, también se ha confeccionado un Software para PC, diseñado en Visual Basic, para que administre una base de datos, y se comunique con el μC PIC18F452 mediante el protocolo RS232. Las peticiones que se hagan por parte del Cajero hacia el Servidor, estarán basadas en otros elementos externos al mismo, como pueden ser: los datos introducidos por la persona que utilice el servicio o características de su tarjeta electrónica.

Figura 2. Esquema Eléctrico del Circuito

Figura 3. Bloques del Sistema

El Cajero Automático posee distintos puertos de E/S que hacen posible la comunicación con el exterior. La placa de control posee un lector de tarjetas, en el cual el cliente introduce su tarjeta para ser identificado. En el conector DB25, se ofrece la posibilidad de conectar una impresora compatible con protocolo Centronics para imprimir recibos. En el conector DB9 se conectará, a través de un cable RS232, un ordenador con sistema operativo Windows.

En el ordenador se ejecuta el programa de gestión de la base de datos, eligiendo el puerto COM y mediante la pulsación del botón <Conectar> se abre el mismo, quedando el programa preparado para trabajar. La aplicación será la encargada de administrar la información relativa a los clientes. Su interface gráfica muestra datos y operaciones que se están realizando en tiempo real, tal y como se observa en la figura 4.

Figura 4. Interface gráfica de la aplicación Clientes

En último lugar, se coloca el interruptor de la fuente de alimentación en la posición ON, para que suministre la energía a los dispositivos electrónicos de la placa de control. El software del Cajero Automático comenzará a ejecutarse y se observan los primeros mensajes de texto a través de la pantalla LCD.

 

FUNCIONAMIENTO

Al cliente que utilice el cajero se le permite acceder a datos pertenecientes a su cuenta, disponer de dinero en efectivo, cambiar su código PIN e imprimir comprobantes. El mecanismo utilizado para permitir el acceso a estos servicios es un control de identificación básico, así se controla qué usuarios son verdaderamente clientes de la empresa. Al sistema diseñado se le imponen unos requisitos mínimos de seguridad, como son el uso de una tarjeta electrónica y un código de acceso PIN.

Se ha previsto que el Cajero, además de dar el servicio previsto a los clientes de la empresa, lo utilicen personas autorizadas en labores de mantenimiento. Por lo tanto, se han añadido nuevas instrucciones de código al microcontrolador que ofrecen funciones de mantenimiento, como por ejemplo, poder visualizar y/o actualizar los contadores internos de los distintos selectores de efectivo, que se encuentran en la memoria EEPROM del microcontrolador. Estas funciones están “ocultas” para los clientes, sólo podrán acceder a ellas personal autorizado, mediante un pulsador y una clave de acceso.

Cuándo se pone en funcionamiento, el sistema queda en espera de recibir un cliente. El cliente inserta su tarjeta en el lector del Cajero y se procede a validarla.

Figura 5. Diagrama de Bloques del Software

El programa pasa al menú “clave” donde se le indica al usuario que inserte su código de cuatro dígitos. Se valida la clave introducida, comparándola con la que contiene la base de datos, y se muestra el menú principal de operaciones. El usuario elige la operación que quiere realizar y acepta y a continuación, se muestra el menú específico de la operación.

Puede ser necesario introducir datos adicionales, por ejemplo, para la retirada de fondos y cambio de PIN, mientras que en la petición de saldo no será necesario.

Después se procesa la transacción y se valida, si los datos son correctos se ejecutará finalmente. Si en algún momento no hubiera comunicación entre el Cajero y el Servidor, éste notificará a través del LCD el mensaje “Error en la conexión”, para informar de la imposibilidad de operar temporalmente.

El sistema diseñado para este proyecto es el indicado en la figura 6, y los componentes que lo integran son los siguientes:

Figura 6. Componentes que integran el sistema.

1) Un dispositivo microcontrolador: el cual se encarga de ejecutar el código de programa y gobernar todos los dispositivos de la placa de control.

2) Un teclado numérico: permite al usuario introducir datos e indicarle al sistema las funciones que quiere realizar en los distintos menús y opciones disponibles.

3) Un dispositivo de salida de efectivo: encargado de poner a disposición del cliente el dinero solicitado, cuando la operación correspondiente desde el control así lo indique.

4) Una pantalla para visualizar las operaciones: necesaria para visualizar mensajes de texto informativos y datos numéricos correspondientes al usuario del sistema.

5) Un ordenador personal: se comunica directamente con el Cajero Automático y actúa a modo de servidor de datos, suministrando información relativa a los clientes.

6) Una tarjeta de cliente: permite acceder a la utilización del sistema. Cada cliente debe disponer de una tarjeta de identificación exclusiva.

7) Una impresora de comprobantes: para obtener un justificante con el resultado de las operaciones efectuadas, en caso de requerirlo.

 

DESCRIPCIÓN DEL HARDWARE

Para la visualización de datos se emplea una pantalla LCD de 4 filas y 20 columnas. La elección ha sido motivada por su facilidad de uso, alta capacidad para visualizar caracteres alfanuméricos y su bajo coste. Para conectar el microcontrolador PIC y el dispositivo LCD hay varias maneras, dependiendo del tamaño del bus de datos: 8 ó 4 bits. El tipo de conexión por el que se ha optado en este trabajo es el que utiliza un menor número de líneas, 2 líneas para controlar el LCD y 4 líneas para el bus de datos, en total 6 líneas.

Figura 7. Conexión con el LCD

Al utilizar solamente 4 líneas de datos, para transmitir un carácter (8 bits) éste se deberá enviar en dos paquetes de 4 bits. Primero se envía el nibble de mayor peso y después el de menor peso.

El software se complica un poco, pero se compensa con un ahorro de 4 líneas de transmisión. Al LCD se le han conectado dos resistencias variables: para ajustar el contraste y la luminosidad de la pantalla (Backlight).

El prototipo cuenta con un teclado de doce teclas de tipo matricial 4×3 mediante el cual, la persona que acceda a los servicios podrá introducir los datos que el sistema le demande. También se le ha dado la función de permitir el desplazamiento por los menús de operaciones. La ventaja de utilizar este tipo de teclado es que a diferencia de otros, donde para cada tecla se necesita una línea del microcontrolador, con éste tan sólo se precisan 7 líneas del PIC.

En el software encargado de la lectura del teclado se ha implementado un tipo de funcionamiento antirrebotes, permitiendo con ello la lectura de datos de manera fiable. Para la parte de circuitería externa del teclado, se indica el empleo de cuatro resistencias “pull-up” que se conectan una a cada columna, y los cuatro diodos 1N4148 utilizados para asegurar el buen funcionamiento de las líneas que comparten el LCD y el teclado.

Figura 8. Conexión con el PC.

Para la conexión del PC, a través del puerto serie COM y el microcontrolador, se emplea un circuito MAX232 para adaptar los niveles de tensión TTL a RS232 y viceversa. La comunicación de datos utilizada es del tipo full duplex, mediante una línea se envían datos y mediante otra se reciben, a una velocidad de transmisión de 9600 bits/seg.

La tarjeta para la que está diseñada la comunicación con el sistema es del tipo inteligente, esto quiere decir que posee en su interior un microcontrolador capaz de procesar algoritmos complejos, pero presenta una limitación en cuanto a puertos de E/S se refiere.

Los datos se transmiten a través de una sola línea bidireccional (half duplex). Todo lo referente a este tipo de interface se describe en la norma ISO 7816-3. En la figura 9 se aprecia con mayor detalle la conexión entre la Smart Card y el μC.

Figura 9. Conexión con la Smart Card

Para el sistema de alimentación hay que tener en cuenta los consumos de corriente de los dispositivos. El consumo de energía varía según el modo de funcionamiento, produciéndose la máxima demanda (200 mA aprox.) cuando el circuito de Backlight de la pantalla se encuentra a la máxima iluminación (la resistencia limitadora al mínimo, RV2 = 0W).

Puesto que la alimentación que precisa el sistema no es excesivamente elevada se ha optado por diseñar una fuente de tensión tradicional (Transformador-Rectificador- Filtro-Regulador). La fuente cuenta con un regulador 7805 que permite adaptar los niveles superiores a 7,5V de tensión de entrada, a 5 V de tensión de salida, valor con el que trabajan los dispositivos de la placa de control.

 

PROGRAMA DEL MICROCONTROLADOR

El programa comienza ejecutándose en la dirección 0x0000 de la memoria de programa;en ella se encuentra una instrucción de salto que apunta a la rutina de RESET. En dicha rutina configura los puertos de Entrada/Salida, la interrupción externa INT0, los timers y la UART.

Una vez se han inicializado los registros internos del microcontrolador, se llama a la rutina de inicialización del LCD, en ella se configura el tamaño del bus de datos a 4 bits, se desactiva la visualización del cursor de la pantalla y el modo de cómo se van a representar los caracteres en la pantalla (con desplazamiento del cursor de izquierda a derecha). A continuación, el sistema permanece en un bucle infinito en el cual, el LCD visualizará dos mensajes de texto alternativamente a la espera de que se produzca una interrupción de software o de hardware.

Para salir el programa del bucle infinito, se ha de producir la interrupción externa INT0 o bien la interrupción del TMR0.

Interrupción externa INT0

La primera interrupción INT0 atiende a la solicitud de una persona encargada del mantenimiento del cajero automático. Se produce cuando se presiona un pulsador, en ese momento el programa solicitará una clave de acceso para acceder al modo programación. Su función es la de mostrar el contenido de tres direcciones de memoria EEPROM. En ellas, está almacenado el número de billetes correspondientes a cada selector, que contiene el cajero automático respectivamente.

Otra función programada es la de dar opción de escribir en esas direcciones de EEPROM, cuando el técnico añada efectivo en los depósitos del Cajero.

Lectura del teclado

La técnica de programación usada para gobernar una matriz de teclas emplea tanto de entradas como de salidas.

Las filas están conectadas a las patillas de salida y las columnas a las de entrada. Se comienza colocando a ‘0’ la primera fila y las restantes a ‘1’. Si una tecla es pulsada en la columna, el ‘0’ lógico aparece en la intersección fila-columna. Las columnas son exploradas de forma secuencial comprobando si hay un ‘0’. Si no se encuentra un ‘0’, la fila siguiente se pone a ‘0’ y la anterior a ‘1’ pasando a comprobar nuevamente las columnas.

Si no es pulsada ninguna tecla en una fila, las entradas se encuentran en estado flotante, razón por la que son necesarias las resistencias de polarización, que mantienen las entradas del microcontrolador a nivel alto.

Después de la pulsación de la tecla, el programa lee el estado de los bits 0, 1, 2 del puerto RA para identificar qué tecla se pulsó, y espera hasta que la misma tecla pulsada sea soltada, chequeando el bit correspondiente para continuar. Esto se hace así para eliminar los posibles rebotes de contacto.

Autentificación del código PIN

El usuario introduce su código de cuatro cifras y acepta. Dicho código es almacenado en una dirección de la memoria RAM para comprobar posteriormente su autentificación, comparándolo con el código PIN almacenado en la base de datos del servidor.

A continuación, se envía la trama de datos al PC a la espera de una respuesta. Esta trama se compone de cinco bytes, el primer byte identifica al tipo de operación que se está tramitando, “C1” en este caso, y los cuatro bytes siguientes forman el campo de datos con la información introducida por el usuario.

Una vez que el PC responda, el microcontrolador está en disposición de comparar los dos códigos, el introducido por el usuario y el que le mandó el PC. Si el código PIN coincide, el programa pasará al menú principal mostrando las opciones disponibles del Cajero Automático. Si no coinciden se informa con un mensaje a través del LCD que el código es incorrecto, y se le pregunta al usuario si desea volver a intentarlo.

Suponiendo que el PIN introducido ha sido el correcto, se procede a verificar si la tarjeta sigue insertada como medida de control. Después el programa muestra por pantalla el menú principal de operaciones, con las tres funciones disponibles a utilizar por el cliente, y el programa sigue ejecutándose normalmente a la espera de ejecutar la nueva orden.

Interrupción del timer TMR0

La interrupción TMR0 se produce de manera cíclica cada cierto intervalo de tiempo cuando no hay clientes. En el momento en el que desborda la cuenta el registro interno de TMR0 y se produce la interrupción, el programa pasa a leer el bit RC1 del μC. Esta línea está conectada con el final de carrera del lector de tarjeta; en ausencia de tarjeta permanece a nivel alto y el led verde queda iluminado (figura 9).

Cuando se introduce la tarjeta el final de carrera abre el circuito del led y se apaga. El μC detecta un “0” lógico en la línea, el programa pasa a realizar una lectura de datos de la tarjeta. Si se detecta un “1” lógico en RC1, reinicia la cuenta de TMR0 y vuelve a la rutina inicial en espera de clientes.

La rutina de lectura de la tarjeta electrónica comienza con el borrado del LCD; después se muestra el mensaje “Bienvenido al Cajero Automático” y se resetea la tarjeta mediante un flanco negativo, manteniendo la línea RC2 (RESET) del PORTC a nivel bajo durante 10 ms, después se vuelve a poner dicha línea a nivel alto.

Seguidamente, se prepara un puntero de dirección de memoria RAM donde  almacenar la información transmitida desde el pin 7 del SmartCard. Realizado el posicionamiento del puntero de memoria, el programa salta a la subrutina que lee la información de la línea de datos RC1 (I/O) del microcontrolador. Para la transmisión de datos usamos el protocolo RS232.

El programa envía la información correspondiente al PC a través de la línea TX (patilla 25 del PIC), activa la cuenta del TMR1 y salta a la rutina de lectura de datos del PC.

Si el TMR1 se desborda saltará la rutina de atención a dicha interrupción, en la que se muestra por pantalla el mensaje “No hay conexión con el banco”. Si no hay errores de conexión, el PC enviará una respuesta al μC.

El envío del valor 0x90 indica que la tarjeta es correcta y el programa continúa ejecutándose. El envío de un 0x00 indica que la tarjeta posiblemente está caducada, entonces se muestra el mensaje correspondiente por pantalla y se aborta la ejecución del programa.

Después de recibir un 0x90, el microcontrolador envía una trama de cinco bytes al PC, el cual identificará como una petición del código PIN contenido en la base de datos. El programa lee el PIN recibido y posteriormente muestra un mensaje de texto indicando al usuario que introduzca su PIN y lee el teclado.

Se comparan ambos códigos byte a byte y finalmente se muestra el menú con las funciones:

A.- Consultar saldo

B.- Retirar efectivo

C.- Cambiar el PIN

 

A continuación se describen brevemente dichas funciones:

A. Función CONSULTAR SALDO

Una vez que el usuario elige esta función, el programa carga en una dirección de RAM el código “31” asignado para esta función (petición de saldo), hace un pequeño retardo de tiempo para que los mensajes del LCD puedan ser leídos por el usuario, y muestra el mensaje “Consultando Saldo…”. Después se envía el código ”31” al PC, éste identifica la operación y responde en primer lugar con un byte que indica la longitud que tiene el saldo de la cuenta.

El μC se dispone a preparar un contador de longitud de cadena y recibe la trama de longitud indicada anteriormente, variará según el saldo de la cuenta a la que se esté accediendo.

El primer byte que encabeza la cadena con el saldo es el valor 0x34 (respuesta de saldo), el resto de bytes componen la información del saldo. El programa coloca la información recibida en memoria RAM, y seguidamente la manda por el bus de datos al LCD, para que el usuario vea su saldo. Se hace una demora de unos segundos, y a través de pantalla se pregunta al cliente si se desea imprimir un recibo.

 

B. Función RETIRAR EFECTIVO

Cuando se desea retirar efectivo, el Cajero manda una cadena de datos al PC. Está cadena está formada por código de operación (MSB) y un campo de datos. El primer byte para esta función es 0x32, los siguientes corresponden a la cantidad solicitada por el usuario.

Figura 10. Conexión con el teclado matricial

Antes de que se mande la orden de retirada de efectivo al PC, el Cajero comprueba que la cantidad está dentro de ciertos márgenes como son, que no sea superior a 300 € ni inferior a 10€. Después el algoritmo de retirada de efectivo (figura 10) calcula el número de billetes de cada selector que se han de dar para la cantidad solicitada y comprueba si hay suficiente efectivo en el Cajero, etc.

El PC recibe la petición de la cantidad solicitada, identificada por el código de operación 0x32. Según el saldo que se disponga en la cuenta a la que se esté accediendo, se informa al μC mediante el byte 0x90 de que hay fondos suficientes para ejecutar la operación. Entonces, el Cajero comprueba sus contadores internos de efectivo y se manda un nueva cadena de datos con el valor de la cantidad a retirar.

En esta ocasión, la cadena está compuesta por un encabezado con el código de operación 0x33. Esta información le indica al PC que la operación se realiza y que debe actualizar la cuenta del cliente en la base de datos.

El objetivo de este algoritmo es ver cuántos billetes de 50, 20 y 10€ tendrá que dar el Cajero en función del Importe a retirar por el usuario. Con un ejemplo práctico  se podrá comprender mejor el diagrama de flujo de la figura 10. En primer lugar, tendremos que tener una idea clara de algunas variables utilizadas, estas son:

IMPORTE: Corresponde a la cantidad que el usuario desea retirar de su cuenta.

B50: Nº de billetes de 50 € que se deben dar al usuario, siempre que hayan disponibles.

B50_E2p: Nº de billetes de 50 € que hay en el depósito del Cajero Automático

 

Importe2: Corresponde a la parte de Importe que falta por desglosar en billetes de 20 y 10 €.

B20: Nº de billetes de 20 € que se deben dar al usuario, siempre que hayan  disponibles.

B20_E2p: Nº de billetes de 20 € que hay en el depósito del Cajero Automático

 

Importe3: Corresponde a la parte de Importe que falta por desglosar en billetes de 10€.

B10: Nº de billetes de 10 € que se deben dar al usuario, siempre que hayan disponibles.

B10_E2p: Nº de billetes de 10 € que hay en el depósito del Cajero Automático

 

Valores Iniciales:

IMPORTE= 300€

B50_E2p=5

B20_E2p=3

B10_E2p=2

 

C. Función CAMBIAR PIN

El código PIN es un código de identificación personal de cuatro números. Observe que cuando intenta introducir cualquier PIN distinto de cuatro dígitos el programa lo notifica. La función para cambiar el código PIN, comienza representando en pantalla un  mensaje de petición dirigido al usuario, para que introduzca el PIN actual de su cuenta. Una vez se accede a esta función desde el menú principal, el programa del microcontrolador envía una cadena con cabecera “0xC1”; este dato indica al PC que es una petición para conocer el PIN contenido en su base de datos. El PC envía la respuesta siguiente de cinco bytes al microcontrolador. El primer byte es 0x0E y los 4 siguientes pertenecen al código PIN.

A continuación, el programa del microcontrolador procede a la comparación de los dos códigos. Para ello posiciona un puntero de memoria RAM, el cual apunta a una dirección libre, donde se guardará la información recibida por el puerto serie. Después, el programa salta a la rutina de atención del teclado para identificar el número de PIN introducido. Este número se guarda en memoria codificado en  ASCII. Por ejemplo, el usuario teclea su código “2310”, este valor se representa en decimal por pantalla, pero se guarda como “32 33 31 30” en la memoria de datos. Después se utilizan dos punteros de memoria, uno para recorrer la dirección donde está el PIN tecleado por el usuario (dirección RAM 0x1F) y otro para el PIN mandado por el PC (dirección RAM 0x2B), se comprueba si se corresponden ambos números. Para ello, se comienza con el primer digito, si es correcto, se incrementan los punteros y se pasa a comprobar el segundo dígito, así con cada uno.

Una vez hecha la comparación, se pueden dar dos casos, que el PIN sea correcto o que sea diferente. En caso afirmativo, se muestra por pantalla el mensaje  “Introduzca el nuevo PIN”, indicando al usuario que la operación es admitida. En el momento que un byte no coincida se aborta el proceso. En caso positivo, el programa salta nuevamente a la rutina de lectura del teclado, y queda esperando a que el usuario introduzca su nuevo código.

Una vez completada la lectura del nuevo código PIN desde teclado, el programa envía una trama de cinco bytes por el puerto serie al PC. Esta trama se compone  de cinco bytes, el primero es el valor 0xC3 e indica el tipo de operación (Cambio de PIN), los cuatro restantes pertenecen al valor del nuevo código. El programa del PC identifica la operación “0xC3” y se dispone a actualizar la información correspondiente en la base de datos. Completada la última tarea, desde el PC se envía el valor 0x90 al programa del microcontrolador. Este valor indica que la escritura ha finalizado sin errores. Después se envía la información al dispositivo LCD para que muestre al usuario el mensaje correspondiente.

* Proyecto de la Universidad de Jaén (1996)

Compartir:
(1 votes, average: 5,00 out of 5)
Loading...

De momento, no hay comentarios.

Escribe un comentario

*