Aplicación Práctica para RAHP
Computadora para Identificación Personal
Galindo Cohen Mauricio, Lozano Velásquez Ma. de Lourdes, Martínez Zavala Daniel, Naranjo Sandoval Martha, Muñoz Gutiérrez Andrea.
Colegio Carol Baur
A Quien Corresponda:
Un año de intenso trabajo arroja como resultado el proyecto que los alumnos del Colegio Carol Baur presentan en el encuentro de investigación del sistema incorporado 2007, estos alumnos resultaron ganadores del primer lugar el año pasado con el proyecto “RAHP” Red Accesible a Través de la Humedad de la Piel, el principio de funcionamiento es transmitir datos aprovechando la conductividad natural de la piel humana lo que se demostró como posible, viable y factible. En dicho trabajo, se propusieron múltiples aplicaciones del dispositivo, entre ellas, la seguridad.
El presente trabajo es el resultado de desarrollar en el ciclo escolar 2006-2007 tal aplicación, para ello, los alumnos aprendieron a programar usando lenguaje ensamblador PIC s (concretamente el 16f84A) y elaboraron diligentemente el dispositivo que habiendo sido probado, resultó de nuevo un éxito.
Ha sido para mi un orgullo asesorar dicho trabajo, doy fe que el compromiso y las habilidades de los alumnos autores del trabajo se han puesto en juego y han conseguido lo que considero un gran proyecto, con implicaciones profundas y utilidad indiscutible y que les han permitido continuar con una investigación previamente probada para plantear ahora una solución real a problemas comunes de la vida diaria.
Seguro que el esfuerzo combinado de nuestra Máxima casa de estudios con el de los estudiantes que forman su fuerza motriz, nuestro país tiene brillante futuro.
Atte.- Colegio Carol Baur
Ing. J. Antonio Romero Pliego
Profesor de Informática
Expediente 99054667
Resumen
La transmisión de datos por métodos comunes resulta cara, ineficiente y lenta,
Para evitar estos inconvenientes se propuso y construyó en el 2006 un dispositivo que transmitiera datos a través de la humedad de la piel eliminando la necesidad de cualquier otro dispositivo.
Éste año los miembros del Taller de Robótica del Colegio Carol Baur nos dimos a la tarea de desarrollar una aplicación práctica de el proyecto antes mencionado, la aplicación consiste en un dispositivo de seguridad instalado en las manijas de las puertas que reciba de un dispositivo de identificación personal instalado en el cinturón del usuario y conectado a su piel mediante un electrodo que permita el acceso de los trabajadores a las instalaciones. Para hacerlo se pensó en un dispositivo pequeño, de bajo costo económico, que fuera portátil , seguro, fácil de usar y que pueda transmitir datos a cualquier computadora. Después de analizar nuestros requerimientos, el asesor nos sugirió usar PICs para fabricar el dispositivo de identificación. Los PIC son dispositivos que cumplen con las características definidas para el desarrollo del proyecto, cuentan con puertos de entrada y salida, consumen poca energía, son económicos, fáciles de conseguir, programables y hay una gran cantidad de recursos de referencia para su uso. Usando PICS y un programa elaborado en Visual Basic, el 97% de las pruebas hechas dieron como resultado la transmisión correcta de la información del usuario al dispositivo de seguridad.
Aplicación Práctica de RAHP
Computadora para Identificación Personal
Introducción:
Planteamiento del problema:
La computadora requiere dispositivos (monitores, impresoras, etc.) para mostrar los resultados de procesos realizados en el CPU y transmitir información a otros dispositivos. Estos se conectan por medios que resultan caros e ineficientes (cables, antenas, etc.) limitando su funcionamiento.
Antecedentes:
En el Encuentro de investigación 2006 fue presentado el trabajo “Red Accesible A Través de la Humedad de la Piel” (RAHP) que permite la transmisión de información digital usando como conductor la piel humana. En él se hacían algunas propuestas de aplicación práctica y el proyecto que presentamos en esta ocasión es una computadora para Identificación Personal basada en el principio RAHP.
Propósito:
-Generar un dispositivo que permita al individuo identificarse. Este será:
a) Seguro, ya que si llegara a perder contacto con la piel se bloquearía automáticamente.
b) Práctico, ya que cualquier persona podría llegar a usarlo sin tener grandes conocimientos de computación.
c) Barato.
d) Portátil, ya que su tamaño no es mayor a la palma de una mano.
e) Portable, ya que podría llegar a trabajar con diferentes plataformas como Macintosh, Palm, etc.
d) Universal, porque uno de los propósitos de este dispositivo es almacenar todos los datos de una persona en un solo lugar.
Método:
Los materiales que usamos para el proyecto son:
- 6 caimanes
-2 placas de fenólica
-5 transistores
-1 PIC 16f84A
-1 pila de 9 volts
-Computadora
-1 Cristal de Cuarzo 4mhz
- Resistencias varias
La instrumentación que usamos fue:
Un multímetro
Una fuente de poder
Grabador de PIC
En este proyecto se usa un programa hecho en Visual Basic 6.0 que se basa en el programa expuesto el año pasado adaptado para trabajar en conjunto con un micro procesador llamado PIC (Peripherial Interface Controller o Controlador de Interfaz Periférica) y adecuado a la aplicación motivo de este trabajo, es decir, la seguridad de una empresa que permite el acceso a un empleado cuando este toca la perilla de una puerta siempre que el empleado se encuentre registrado en la base de datos y tenga acceso a la zona donde pretende entrar. Cada empleado se identifica mediante un número que se almacena en la memoria de un dispositivo que tiene en su cinturón conectado con un electrodo a su piel, este dispositivo transmite el número a través de la piel hacia una terminal que lo recibe, lo busca en una base de datos, lo valida y en caso que el empleado tenga el nivel de seguridad requerido, le permite el acceso..
Lo que hicimos fue:
1.- Elegir una aplicación práctica para RAHP, esta debía ser real, es decir, resolver un problema del mundo, el cual no debía tener soluciones sencillas o si las tenia que se pudieran mejorar usando nuestro sistema, la aplicación no debía implicar gastos excesivos y con la posibilidad de hacerla en el tiempo del curso escolar por lo que debíamos evaluar si se contaba con los recursos materiales, bibliográficos, técnicos y logísticos para completarla.
2.- Escogimos usar el PIC para elaborar el dispositivo personal de identificación porque cumplía con los requisitos planteados para la aplicación que son:
Es fácil de programar
Es fácil de conseguir
Es de uso general.
Es barato
3.- Creamos el protocolo de comunicación entre Computadora- PIC, los pasos para establecer comunicación entre los dos dispositivos son los siguientes:
|
Computadora |
PIC |
Paso 1 |
Manda 0 |
Espera a que se le envíe 1 |
Paso 2 |
Manda 1 |
Recibe 1 y Espera a recibir un 0 |
Paso3 |
Manda 0 |
Recibe 0 y Manda Bit n |
Paso 4 |
Recibe el Primer Bit y Manda 0 |
Incrementa el valor de n en 1 |
Paso 5 |
Manda 1 |
Espera a que se le envíe 0 |
Paso 6 |
Manda 0 |
Envía bit n, analiza si n=8, si esto es afirmativo, se apaga, si no, se repite el proceso desde el paso 3 |
4.- Tuvimos que cambiar uno de los circuitos. La comunicación no sería computadora-computadora si no computadora-PIC, en el proyecto anterior, la comunicación entre computadoras se daba enviando y recibiendo bits de información en distintos momentos, esto por que ambas máquinas debían estar atentas a recibir de la otra bits, por lo tanto, debían escuchar y también enviar. Esto, si no se tomaban precauciones, podía generar retroalimentación, es decir, que cuando una computadora enviara datos escuchara ella misma el dato que enviaba, para evitarlo, conectamos un transistor a cada una de las 2 patas de salida del puerto, con ello, se consiguió que cuando se habilitaba la pata 2 del puerto, la computadora enviara un bit, al habilitar la pata 3, la computadora habilitaba el transistor que permitía el paso de un bit hacia las patas de entrada del puerto paralelo permitiéndole escuchar la respuesta de la otra. Alternando la activación de ambas patas pudimos controlar la transmisión-recepción y eliminar el efecto retroalimentación. El circuito quedó como se muestra en la figura 1.
El PIC ejecuta los programas de manera secuencial, es decir, las instrucciones del programa se ejecutan de arriba hacia abajo y mientras la instrucción en la segunda línea no se ejecute, no se ejecutará la de la línea tres, por ello, no era necesario alternar el encendido de patas para enviar y recibir bits ya que cuando el PIC está enviando información, aunque tuviera un nivel alto en la pata de entrada, este dato es ignorado pues el programa todavía no llega a la rutina o sección de programa en la que se le indica qué es lo que debe hacer cuando detecte la presencia de tal BIT.
El circuito del PIC quedó como se muestra en la figura 2.
El circuito hace lo siguiente:
La computadora a través de la persona, activa al transistor Q2
Una pila activa al Master Clear del PIC y lo alimenta por la pata VDD(14), el mismo voltaje se pone al colector del transistor Q2 , cuando el transistor se activa por que en el colector recibe de la persona (la computadora) un bit alto, el transistor permite el paso de 5 voltios a la pata 17 del PIC avisándole que fue establecida la conexión con la computadora. Esto sirve para que el PIC se active y quede preparado para iniciar la transmisión del número de identificación del usuario, en tanto el pic perciba que existe un nivel alto en su pata 17 permanece a la expectativa pues la computadora todavía no está escuchándole, en cuanto deja de sensar el bit, el pic interpreta tal cambio como una indicación por parte de la computadora de que a partir de ese momento lo está escuchando y el pic, entonces, tomará el primer bit de 8 almacenados en uno de sus registros de trabajo y enviará un nivel alto si tal bit resulta ser un 1 y un nivel bajo si resulta ser un 0. este envío se efectua mientras el pic no sense en su pata de entrada un 1 que le indicará que debe dejar de transmitir el bit y prepararse para transmitir el siguiente lo que hará cuando la computadora deje de enviar el bit y esté escuchando. El proceso se repite hasta que el pic envía los 8 bits necesarios.
5.- Hicimos el programa del PIC. Este fue desarrollado en lenguaje ensamblador.
cblock 0x0c
endc
org 0
bsf 3,5
bcf 5,0
bsf 6,0
bcf 3,5
goto siguiente
cblock
r_conta
M
L
D
x
endc
siguiente movlw d'8'
movwf r_conta
movlw b'01010101'
movwf x
escucha btfss 6,0
goto escucha
clrf r_conta
escuchad bcf 5,0
btfsc 6,0
goto escuchad
enviabit btfss x , r_conta
goto escero
goto esuno
escero bcf 5,0
goto retardo
esuno bsf 5,0
retardo decf r_conta,r_conta
movlw 0x03
movwf M
movlw 0x18
movwf L
movlw 0x02
movwf D
Delay_0 decfsz M, f
goto $+2
decfsZ L, f
goto $+2
decfsz D, f
goto Delay_0
btfsc r_conta,0
goto escuchad
goto siguiente
end
6.-Hicimos el programa de la computadora. Este fue desarrollado en Visual Basic 6.0.
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean
Public a As Boolean
Public b
Private Sub Command1_Click()
Timer2.Enabled = True
a = False
End Sub
Private Sub Timer1_Timer()
Text1.Text = PortIn(&H379)
End Sub
Private Sub Timer2_Timer()
a = Not (a)
If a = True Then
PortOut (&H378), (2)
If p10_0 < 20 And p10_1 < 20 Then
Else
If p10_1 > p10_0 Then
Text2.Text = Text2.Text & "1"
Else
If Len(Text2.Text) > 0 Then
Text2.Text = Text2.Text & "0"
End If
End If
Else
PortOut (&H378), (1)
Timer3.Enabled = True
b = 0
End If
End Sub
Private Sub Timer3_Timer()
b = CDbl(b) + 1
If b < 500 Then
If GetPortBit(&H379, 6) = True Then
'true es no recbir nada
p10_0 = CDbl(p10_0) + 1
Else
p10_1 = CDbl(p10_1) + 1
End If
Else
Timer3.Enabled = False
End If
End Sub
El programa funciona así:
Cuando el pic envía un bit 1, la computadora lo sensa por el puerto paralelo, para garantizar que lo que la computadora sensa en el puerto no es interferencia u otra fuente de voltaje, se diseñó un contador llamado p10_0 y p10_1 los cuales se incrementan de acuerdo al dato que se recibe en el puerto paralelo, si p10_1 es mayor que p10_0, tenemos la certeza estadística que lo recibido por el puerto paralelo de la computadora es un 1 proveniente del pic, la computadora entonces agrega a una caja de texto un 1, a partir de ese momento y cada medio segundo, la computadora analiza el estado de la entrada en el puerto paralelo, si es 1, usando el mismo análisis estadístico, agregará otro 1, si no recibe nada o recibe mayoritariamente 0, la computadora agrega a la caja de texto un 0, cuando completa 0 bits, la computadora deja de leer el puerto y pasa al análisis del número recibido, con él, busca en una base de datos hecha con Access el número, lo relaciona con un usuario, analiza los privilegios de seguridad de ese usuario y le permite o impide el paso a una instalación determinada.
Resultados:
En el 97% de las pruebas (70 pruebas) la comunicación fue efectiva.
La pila del circuito se acababa muy rápido.
El circuito es sensible a la estática del ambiente si la computadora no se conecta correctamente a tierra física.
Si la persona está deshidratada la comunicación no será la adecuada.
El PIC es muy sensible por lo tanto si se tocan mucho sus patas, éste queda inservible.
El costo de RAHP es muy bajo aun cuando se le suma el PIC. Su costo total es de aproximadamente $350.
El costo de cada uno de los componentes es:
6 caimanes:$24
2 Placas de fenólica:$80
cable:$20
1 PIC 16f84A:$78
5 transistores:$50
2 juegos de estampas para circuito impreso:$10
1 pila de 9voltos:$40
Resistencias:$20
Cristal de Cuarzo 4 mhz:$13
Costo Total de los circuitos: $332
Costo de licencia y programa:
-Visual Basic: $3000
- Grabador de PIC: $200
- Tiempo de programación 100 horas: $20000
Costo total: $23532.
La producción en serie reduciría los costos y este podría llegar a costar aproximadamente $500
Discusión:
En algunas pruebas descubrimos que la comunicación entre nuestros dispositivos era inconsistente. En esto influía el medio en el que trabajaban los aparatos. Al comparar el ambiente en que funcionó bien con el que producía fallas, descubrimos que el entorno en el que funcionaba era un factor determinante en su desempeño.
Factores como una tierra física inadecuada y la presencia de alfombras altera el desempeño de los transistores y por consecuencia, de todo el circuito.
Este dispositivo (tanto el proyecto inicial como sus aplicaciones prácticas) es un proyecto viable, aunque necesita ser perfeccionado.
Las mejoras que le podríamos hacer a éste aparto son:
Poner una memoria interna para almacenar mas información en el dispositivo.
Ponerle batería recargable o una fuente de poder alternativo (solar).
Adaptarlo a funcionar con otros dispositivos (como celulares, otros dispositivos RAHP, reproductores de música, Palm, computadoras de escritorio y personales y computadoras Macintosh) y tecnologías (como bluetooth, infrarrojo y wi-fi)
Que pueda usarse en conjunto con otras aplicaciones para RAHP
Conclusiones:
Los circuitos de RAHP son sensibles a los factores ambientales antes mencionados y se debe trabajar en el aislamiento del circuito.
En caso de haber una pérdida física del dispositivo, éste será bloqueado automáticamente y se tendrá que acudir a un centro de atención a clientes para que sea sustituido con los mismos datos que estarían guardados en la base de datos de la empresa fabricante, el proceso logístico para lograrlo sería quizá complicado y haría al proyecto menos viable.
La tecnología usada en el desarrollo del presente proyecto es común y accesible para todos lo que puede propiciar plagios, una posible mejora es el desarrollo de tecnología que lo hagan seguro, infalsificable y confiable.
Referencias
Cornell, G. (1997). Manual de Visual Basic 5, Madrid. Osbone/MaGraw-Hill
Good, R., Corsi M. Redes De Banda Ancha Vía La Piel Humana: La Transmisión De Datos Utilizando El Cuerpo Está Próxima A Llegar, Febrero 20 del 2006 desde http://www.masternewmedia.org/es/2005/07/21/redes_de_banda_ancha_via.htm
Ident Tecnology, Skinplex, desde http://www.ident-technology.com/
Micorsoft Corporation. (1997). Microsoft Education and Certification: Mastering Microsoft Visual Basic 5.0 Fundamentals. United States of America, Microsoft Press.
Micorsoft Corporation. (1997). Microsoft Education and Certification: Mastering Microsoft Visual Basic 5.0 For Experienced Developers. United States of America, Microsoft Press.
Red Tacton, Han, desde http://www.redtacton.com/
Steren, Detector de Humedad, Noviembre 23 del 2006, desde http://www.steren.com.mx/diagramas/uploads/sensor1.jpg
Visual Basic, Utilerías de Visual Basic, desde http://www.geekhideout.com/iodll.shtml
Figuras
Figura 1
Figura 2