Autor Tema: Help! Trama Lector de Huellas dactilares.  (Leído 3528 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Help! Trama Lector de Huellas dactilares.
« en: 28 de Julio de 2008, 13:51:03 »
Buenas a todos.

Tengo un inconveniente específico. quisiera realizar el control de un sistema de acceso con huellas dactilares. El proceso es parecido al descrito en este tema de nuestro amigo Diego hace ya un buen tiempo:

http://www.todopic.com.ar/foros/index.php?topic=17845.0

Sin embargo, no se como detectar la trama de bits que vienen del lector de huellas. es decir... porque se que tomando solo los datos no me servirá pues no se que protocolo utilizan este tipo de sensores. Específicamente estoy trabajando con este lector:

http://www.crossmatch.com/Verifier_E.html

No se como hacer ps. Les pido alguna sugerencia. Y les doy infinitas gracias de antemano.
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #1 en: 04 de Agosto de 2008, 12:01:07 »
Bueno he decidido dejar este de un lado. sin embargo me siguió con la duda y comencé a hacer una visión de la estructura del programa para realizar el control de acceso. Peeeeeeeeeero, tengo una pequeña duda que me gustaría, de no ser mucha molestia, me ayudara quien pudiera.

¿Cómo puedo hacer para que mientras el controlador permite el acceso de personal por un determinado tiempo (3 segundos por ejemplo) al mismo tiempo esté revisando si alguien más está intentando acceder?. Es decir que la permición del acceso no interrumpa durante ese tiempo el estado de chequeo. Sería más o menos asi:

 1-) Controlador espera bit de autorización para el acceso.
 2-) Recibe el bit de autorización y enciende la salida para permitir acceso.
 3-) Acceso permanece habilitado por 3 segundos mientras que = punto 1.)
 4-) Pasados los 3 segundos apaga salida restringiendo el acceso y regresa a punto 1

A ver si en esto alguien me puede dar alguna guia. Lo principal es saber ¿cómo puedo llevar la temporización al mismo tiempo que hago el chequeo de la entrada? Estaba pensando en utilizar el TMR0 Para eso pero . . . . ps eso. No se como activar el temporizador para que pasen los 3 segundos y mientras tanto seguir con la rutina de chequeo... Me imagino que sería con algún proceso aleatorio o . . .bueno no se.
muchas gracias de antemano por la asesoría que puedan darme de no ser molestia.
« Última modificación: 04 de Agosto de 2008, 12:09:59 por Hadreth »
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #2 en: 04 de Agosto de 2008, 12:17:43 »
Hola.

Efectivamente debes usar las interrupciones para eso. Configurar el Timer es sencillo, debes tener en cuenta el valor del cristal que estas usando en tu oscilador para saber cuanto tarda el ciclo de maquina y de esta manera saber cuanto es el tiempo de desbordamiento del Timer.

Por ejemplo, para un oscilador XT a 4MHz, el ciclo de maquina es 1uS, por lo que el timer0 se desborda cada 256uS, si multiplicamos por 32, el desbordamiento seria a los 8.192mS. Si contamos 122 desbordamientos del timer tendriamos un flag de aviso cada 999mS La configuracion en CCS seria:

Código: [Seleccionar]
setup_timer_0(RTCC_INTERNAL | RTCC_8_BIT | RTCC_DIV_32);

y en la gestion de interrupciones podria ser asi:

Código: [Seleccionar]
#int_TIMER0
void reloj_isr(void)
{
 ++ints_timer0;
 if(ints_timer0>=122)
 {
  ints_timer0=0;
  flag_segundo=true;
  ++segundos;
 }
}

Saludos
El papel lo aguanta todo

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #3 en: 04 de Agosto de 2008, 13:45:51 »
Muchas gracias por la Información  :) MLO_.
Sin embargo, leyendo por ahí me dieron ganas de intentar solucionar el problema utilizando el WDT, ya que con el puedo habilitar interrupciones o trabajar en el modo de temporización por intervalos, mientras el programa sigue con su curso ordinario, lo cual es principalmente lo que quisiera realizar. Lo único es que nunca antes he trabajdo con este WDT, así que no se si la operación de temporizador por intervalos sea la más aconsejable o la otra.

Ps ahí si alguien me puede dar luces en esto le estaría muy agradecido.  :oops:
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #4 en: 04 de Agosto de 2008, 14:24:39 »
Hola.

El WDT es un timer para reiniciar el micro, es decir lo resetea por soft cada cierto tiempo. La temporizacion por intervalos la puedes hacer con cualquier timer, lo que debes verificar en el programa principal es el flagg que activas en la funcion de interrupcion.

Los microcontroladores se programan secuencialmente, es decir, no se pueden tener dos procesos corriendo simultaneamente, pero si se puede, mediante interrupciones, gestionar los procesos en funcion de su prioridad.

Saludos
El papel lo aguanta todo

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #5 en: 05 de Agosto de 2008, 11:06:57 »
Buenas!
Bueno aquí con la importante ayuda de MLO_ salió este .asm que pretende detectar el bit de permicíón de acceso, comenzar el bit de salida que dure 2,5segundos mientras chequea si existe otro bit de acceso durante esos 2,5segundos. De ser así, comienza de nuevo la cuenta de los 2,5segundos.

A ver qué opinan o si encuentran algun error :P

Código: [Seleccionar]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Programa para el control de acceso;;
;;con temporización y chequeo de pto;;
;;simultáneos.                      ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

list P=16F877A

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

porta                        equ            0x05
portb                        equ            0x06
status                       equ            0x03
option_reg                equ            0x01
addcon1                   equ            0x9f
trisa                         equ            0x85
trisb                         equ            0x86
regi_n                      equ            0x20
tmr0                        equ            0x01
intcon                      equ            0x0b

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

org                        00h
goto                       inicio
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;; Inicio del programa ;;;;;;;;;

inicio
                        bsf                        status,5
                        movlw                   0x20
                        movwf                   trisa                        ;Bit RA5 como entrada
                        clrf                        trisb                        ;Puerto B como salida
                        movlw                   0x07
                        movwf                   addcon1                   ;Entradas digitales
                        movwf                   option_reg                ;Prescaler de 256 al TMR0
                        bcf                        status,5
                        bcf                        intcon,2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Comienza espera del pulso de entrada ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

start
                        btfsc                        intcon,2                        ;Consulta si terminó temp.
                        goto                        recarga
                        btfss                        porta,5                         ;Confirma pulso de acceso.
                        goto                         start
                        nop
pre_a                movlw                     .50                               ;Carga registro para la temp de 2,5seg
                        movwf                     regi_n
pre_b                movlw                     .60                               ;Precarga del TMR0
                        movwf                     tmr0
                        bsf                          portb,7
                        goto                        start

recarga             bcf                          intcon,2
                        decfsz                     regi_n
                        goto                        pre_b
                        bcf                          portb,7
                        goto                        start

                        END

Se ve resencillo :(...
« Última modificación: 05 de Agosto de 2008, 15:45:00 por Hadreth »
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado Slalen

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1079
    • Página web personal de Guillermo Herrero González
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #6 en: 05 de Agosto de 2008, 17:47:31 »
Como comunicas el micro con el lector???


Si no he entendido mal el pdf del enlace que pusiste es por TCP/IP.

Para capturar tramas del puerto ethernet te recomiendo http://www.wireshark.org/ este programa. Puedes encontrar muchos tutoriales en internet.

Puedes buscar por wireshark o ethereal (que era como se llamaba en la versión anterior)

Suerte!!!

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #7 en: 08 de Agosto de 2008, 00:37:39 »
Hola a todos. ^^

A pesar que la lectora usa comunicación con puertos Ethernet , lo único que necesito es el bit de aprobación de acceso que me manda el programa qeu guarda la base de datos de las personas  registradas en el sistema. Es decir no es necesario el módulo para ethernet. Simplemente se chequea la lectura del bit de permición del acceso.

Gracias por los datos  :mrgreen:
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #8 en: 08 de Agosto de 2008, 17:12:04 »
Hola.

El codigo seria el siguiente:

Código: C
  1. #include<16F84A.h>
  2. #fuses XT, PROTECT
  3. #use delay(clock=4M)
  4.  
  5. #define demo
  6. #define on              output_high
  7. #define off             output_low
  8. #define salida  pin_b7
  9.  
  10. //Variables de la interrupcion externa
  11. int1 in_pulso = 0;
  12.  
  13.  
  14. #int_EXT
  15. void entrada_pulsos_isr(void)
  16. {
  17.         in_pulso = true;
  18. }
  19.  
  20. void main(void)
  21. {
  22.         setup_timer_0(RTCC_INTERNAL|RTCC_DIV_8|RTCC_8_BIT);
  23.         ext_int_edge(L_TO_H);
  24.         enable_interrupts(INT_EXT);
  25.         enable_interrupts(GLOBAL);
  26.         while(true)
  27.         {
  28.                 if(in_pulso)
  29.                 {
  30.                         in_pulso=false;
  31.                         on(salida);
  32.                         delay_ms(2500);
  33.                         off(salida);
  34.                         delay_ms(1);
  35.                 }
  36.         }
  37. }

El programa lo que haria es seguir el pulso de entrada, y a la salida se tendria un pulso de 2,5 segundos. Si se presentara un nuevo pulso de inico durante ese tiempo, esperaria a finalizar el pulso de 2,5 seg quedaria 1mS en bajo y pasaria a alto otra vez.

Saludos
El papel lo aguanta todo

Desconectado Hadreth

  • PIC10
  • *
  • Mensajes: 9
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #9 en: 14 de Agosto de 2008, 02:54:01 »
Listo! :) muchas gracias por el prog viejo Migue. Por ahí estamos en contacto. =3
Espero todo esté bien.
Alex

<< Todo lo puedo en Cristo que me fortalece >>

Desconectado joseydoris

  • PIC12
  • **
  • Mensajes: 58
Re: Help! Trama Lector de Huellas dactilares.
« Respuesta #10 en: 25 de Marzo de 2012, 23:17:53 »
Como no encuentro mucha información sobre el detector de huellas con pic, pregunto:¿como interpretar el dato emitido por el detector,pasarlo a un numero y compararlo con un pic?,o alguna forma sencilla.Simplemente es para abrir una puerta.Cualquier informacion  lo agradeceria.