CERRADURA CON TARJETAS TELEFONICAS
Hola amigos de TODOPIC quiero compartirles este proyecto que realice ha ce un buen tiempo en la escuela espero que le sirva.
Este es un proyecto que realice cuando estudiaba en el tecnológico, y se trata de reutilizar las tarjetas telefónicas dándole otra utilidad en este caso las utilizamos como llaves de acceso electrónico.
Este proyecto lleva varias modificaciones y por el momento es mas complejo ya que ahora cuenta con un display y un teclado matricial, pero la intención de este tutorial no es ofrecer todas estas características si no mas bien explicar la teoría para poder realizar un proyecto igual e incluso mas complejo que el que he realizado, y también dar la herramientas necesarias para la comprensión del funcionamiento de dichas tarjetas.
Teoría
Las tarjetas telefónicas tienen en su interior, un microprocesador en el cual con sólo 128 bits, el teléfono es capaz de identificar información como por ejemplo: país, fabricante de la tarjeta y saldo de la tarjeta.
Para poder leer la tarjeta, el teléfono necesita sincronizar señales eléctricas digitales en cada uno de los contactos de la tarjeta.
Existen distintas rutinas para la operación de las tarjetas, por ejemplo, para poder descontar saldo se hace una rutina diferente que la rutina para realizar la lectura de cada uno de los bits, hay otra rutina que se encarga de resetear la tarjeta y así diversas rutinas encargadas de hacer verificaciones, validaciones y otras cuestiones de seguridad.
Contactos del chip según norma ISO-7816:
Características generales:
-Chip tipo SLE4436
-Alimentación: +5V.
-Tipo de memoria: EPROM
-Mapa de memoria: 64 bytes (512 bits).
-Pin I/O en configuración colector abierto.
-Los datos salen en cada flanco de bajada de la señal CLK
Protocolo de Comunicación:
La comunicación con la tarjeta se hace sobre 3 cables: RST, CLK e I/O. Las líneas de RST y de CLK se denominan de control. El cable de I/O está reflejando el estado de la célula de memoria en la EPROM, la cual señala el contador de direcciones. El contador de dirección se podía incrementar solamente o resetear a 0. Es imposible la recarga de la tarjeta, puede borrar bits solo en las área del contador octal y áreas de usuario I y II
Operaciones posibles:
Setear a 0 el contador de direcciones:
levantar y bajar CLK mientras que RST es 1.
Incrementar el contador de direcciones:
levantar y bajar CLK mientras que RST es 0.
Mapa de las tarjetas telefónicas
Para leer la tarjeta se le aplica la rutina “reset” para que el contador se posicione en el BIT cero del mapa, desde ese momento se puede leer el primer BIT de el mapa por el pin “I/O”, posteriormente se baja el pin “RST”, y por cada pulso de “CLK” el siguiente BIT del mapa se puede leer por el pin “I/O”
Cabecera:
La cabecera consiste en 64 bits, que son libremente programables por el fabricante de la tarjeta. Esta área contiene generalmente los datos de identificación y del tipo de tarjeta, fabricante del chip y número de serie de la tarjeta. La cabecera en este caso esta dada de la siguiente manera:
E8 2B 66 10: datos del fabricante del chip
E2 A0 18 68: numero de serie de la tarjeta
Lo que interesa para hacer la cerradura es el número de serie de la tarjeta, este se almacena previamente en el microcontrolador, y solo cuando se lee la tarjeta correcta da el acceso.
La duración del puso de CLK en este ejemplo es de 15 micro segundos, con esto la tarjeta responde perfectamente.
Circuito del Lector
PCB
Instrucciones de uso:
Se debe conectar el PCB a una fuente regulada de 5 Vcd., el circuito tiene tres Leas, (rojo azul y amarillo) y un botón.
Para programar una tarjeta se oprime el botón, y luego se inserta la tarjeta, una vez que el numero de serie de la tarjeta este grabada en el PIC, se encenderá el LED amarillo indicando que la tarjeta esta dad de alta en la memoria del PIC, debemos retirar la tarjeta.
Cuando introduzcamos la tarjeta correcta en el socket el LED verde deberá encender, si insertamos una tarjeta incorrecta encenderá el LED rojo.
En el conector 2 se activa la señal la cual puede utilizarse para conectar un relevador o conectarla con un transistor dependiendo de lo que queramos controlar, la salida hacia este conector solo esta en serie con un resistor de 270 Homs hacia el pin del microcontrolador, por lo que si se desea conectar a otro dispositivo de control debemos de tener cuidado con la corriente que se va a manejar para no dañarlo, para esto debe utilizarse transistores diodos, etc. dependiendo de la corriente y tipo de dispositivo.
Cuidados al graba la tarjeta:
Si revisan la el código del micro, podrán ver que no esta aplicado ninguna condición para grabar el numero de serie en la eeprom, es decir que si metemos la tarjeta al revés el pin IO solo leerá (1’s) ya que dicho pin esta con una resistencia a pullup interna en este caso el numero de serie almacenado en hexadecimal será: “0xFF 0xFF 0xFF 0xFF”, por lo tanto si se mete cualquier tarjeta al revés o incluso cualquier objeto que active el switch del socket, el PIC volverá a leer “0xFF 0xFF 0xFF 0xFF” y al compararlo con la eeprom dará el acceso, para solucionar este problema deben programar el PIC para que cuando lea puros unos no almacene dicho numero de serie. O si no quieren programar mas, solo verifiquen que cuando metan la tarjeta al revés no les de el acceso.
En el proyecto que tengo actualmente en desarrollo he cuidado mas cosas, como por ejemplo he puesto rutinas que leen la velocidad con la que responde la tarjeta, también verifico que si escribe en el área que esta permitido escribir en una tarjeta original y que no escribe donde no debe permitir no le de acceso.
Recuerden que el lo único que debe estar en el exterior es la ranura para introducir la tarjeta, pueden también modificar el código para que almacene mas tarjetas, hacer una tarjeta maestra para dar de baja una o dar de alta otra, borrar todas o alguna de ella etc., etc. todo es cuestión de creatividad.
Conclusiones
Quiero aclarar que este sistema puede ser tan seguro como se programe, en este caso solo se validan cuatro bytes correspondientes al numero de serie de la tarjeta, pero en la zona que esta de color violeta se puede modificar esos valores, con otra rutina llamada “WRITE” la cual explicare de manera mas detallada en otro post, y esa zona es la que se puede utilizar para validar la tarjeta.
Hay cosas muy interesantes como por ejemplo a los cuatro bytes leídos del número de serie se les aplica una formula matemática y nos da como resultado el número de serie que esta impreso al reverso de la tarjeta.
Aquí adjunto los archivos necesarios para la cerradura, consta de el código en CCS, y el diagrama en ISIS, y el PCB en ARES, también he desarrollado este proyecto con un AVR (ATMEGA 8 ) después pondré el código.
Espero que les guste este proyecto y que le puedan hacer modificaciones yo subiré un video y si alguno de ustedes lo lleva a cabo suban imágenes y video de ello.
Saludos.
Links de este mismo proyecto en otras paginas:
https://www.underground.org.mx/index.php?topic=17553.0http://www.clubse.com.ar/download/pdf/notasrevistas16/nota04.htmhttp://www.xbot.es/ezkybel/cerradura/