Control de acceso
 

iButton

 

1.- Fundamentos

Vamos a realizar de manera sencilla un dispositivo de identificación para acceder a un programa de ordenador protegido con nuestro ibutton. De manera más simple se pordría usar para abrir una puerta mediante un puente Darlignton en una de las salidas TTL del pic e incluso para encender nuestro ordenador personal con el iButton, pero...¿ Qué es ibutton ?.

iButton es un chip de computador cerrado en una caja de acero inoxidable de 16mm. Este sirve para la realización de tareas multipropósito. Para ver más sobre este encantador dispositivo no dudeis en visitar el siguiente enlace:

iButton Touch The Future!

Este puede ser aplicado a diversas aplicaciones distintas, entre ellas están:

Seguridad.

Memoria no volatil.

DataLogger.

Relojes de tiempo real.

Identificadores.

La interface de comunicación es a través de un hilo (1-Wire), por tanto el ibutton tiene dos contactos, uno es masa o GND y el otro contacto es la comunicación. Siendo la masa el contorno exterior y la comunicación la parte interior, tal y como se muestra a continuación.

Nosotros vamos a usar el DS1993, el cual se usa como memorio no volatil aunque también puede ser usado como dispositivo de identificación, por lo que por falta de tiempo por el momento vamos a usarlo únicamente como dispositivo de comunicación.

 

2.- Funcionamiento iButton

Para no repetirnos, el funcionamiento del iButton para leer el identidicador de éste, viene claramente explicado en el Datasheet iButton 1990 en las páginas 5 y 6 que podéis descargar más abajo en download.

 

3.- Recogiendo los datos del iButton

Ahora vamos a recoger los datos del sensor y pasarlos al ordenador mediante usb a través de un microcontrolador de la casa de microchip. Para ello nos hemos basado en un artículo anterior para realizar la comunicación por usb. Es recomendable revisar dicho artículo si no se tiene conocimientos de usb en microcontroladores

Emulación CDC Pic USB

El esquemático y componentes necesarios para la realización de este tutorial es el siguiente.

ADVERTIR que al esquemático le falta las conexiones de las masas del pic y del ibutton a la masa común del conector usb.

La programación del pic se a realizado mediante el compilador CCS. Este ejemplo enviará una cadena de caracteres a nuestra aplicación realizada en Borland Delphi. Si el identificador de ibutton es el correcto, el pic enviará la cadena detexto "Dispositivo correctamente identificado", si es erroneo enviará la cadana de texto "Dispositivo desconocido". Al igual que se ha realizado una identificación visual sencilla en el que se encenderá el led verde si la identificación es correcta o se encenderá el led rojo de ser incorrecta.

 

El código fuente es el siguiente.

#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL3,
CPUDIV1,VREGEN
#use delay(clock=48000000)

#include <usb_cdc.h>//Siempre va antes del include usb_desc_cdc.h
#include <usb_desc_cdc.h>
#include <touch.c>

void main() {

BYTE buffer[8];
BYTE i;

usb_cdc_init();
usb_init(); //inicializamos el USB

output_high(PIN_B4);
output_low(PIN_B5);


//Se queda aquí mientras usb no esté conectado correctamente
while (!usb_cdc_connected()) {}
printf(usb_cdc_putc,"Usb correctamente conectado");

output_high(PIN_B5);//Se apaga el led
output_low(PIN_B4);//Se enciende el led [ 5V ---<|---- pin_b4 ]
delay_ms(5000);
output_high(PIN_B4);//Se apaga el led
output_high(PIN_B5);//Se apaga el led

while (true)
{
usb_task();
if(usb_enumerated())
{

//Se queda aquí mientras iButton no esté conectado
while(!touch_present()){} ;
delay_ms(200);

if(touch_present()) {
touch_write_byte(0x33);
for(i=0;i<8;++i)
buffer[i]=touch_read_byte();

if ((buffer[1]==0xF4)&&(buffer[2]==0xFC)&&(buffer[3]==0x48)&&
(buffer[4]==0x00)&&(buffer[5]==0x00)&&(buffer[6]==0x00))
{
usb_cdc_putc("Dispositivo correctamente identificado\r\n");
output_high(PIN_B5);
output_low(PIN_B4);
}
else
{
usb_cdc_putc("Dispositivo desconocido\r\n");
output_high(PIN_B4);
output_low(PIN_B5);
}
delay_ms(500);
}
output_high(PIN_B4);
output_high(PIN_B5);
}
}
}

 

4.- Programación PC

La realización de nuestro propio programa para comprobar el buen funcionamiento de éste.

El funcionamiento es muy sencillo, conectamos el pic al ordenador, pulsaremos iniciar, si todo es correcto no saltará ningún mensaje de error y en el log pondrá "Usb correctamente conectado". Más tarde el programa esperará hasta que conectemos el ibutton a su ranura.

 

5.- Download

Datasheet iButton DS1990.

Datasheet iButton DS1992 DS1993.

Datasheet Diode zener iButton.

Proyecto PIC en CCS & Driver USB.

Ejecutable iButton + PIC.

 

6.- Ejemplo visual de la aplicación

 
 



Inicio | Foro | FAQ | MapaWeb | BuscadorWeb