Tabla de contenido:

Billetera electrónica: 3 pasos
Billetera electrónica: 3 pasos

Video: Billetera electrónica: 3 pasos

Video: Billetera electrónica: 3 pasos
Video: Paso a paso, ¿cómo funciona la billetera móvil? 2024, Junio
Anonim
Billetera electrónica
Billetera electrónica

NOTA: Ahora tengo Instructables que ofrecen código Arduino para RC522 y PN532.

En mi publicación anterior, detallé los conceptos básicos para la comunicación con los módulos RFID MFRC522 y PN532 para leer / escribir datos de etiquetas Mifare Classic 1k. En esta publicación, doy un paso más y muestro cómo usar esos módulos para crear una billetera electrónica a partir de las etiquetas. Al igual que en la publicación anterior, esto se presenta como una implementación básica, pero debería proporcionar una base para una variedad de aplicaciones que requieren funciones de incremento / decremento o recuento.

Paso 1: integridad de los datos

En el caso de una billetera electrónica, siempre existe la preocupación de que alguien pueda agregar créditos sin pagarlos. También existe la preocupación de que los créditos de la etiqueta se corrompan inadvertidamente durante la escritura de datos. Los accesos a datos requieren el uso de la clave de etiqueta, por lo que es necesario cambiar la clave predeterminada cuando la etiqueta se inicializa por primera vez. Hay artículos en línea que hablan sobre cómo piratear una etiqueta incluso si no conoce la clave, pero la técnica no es trivial. No recomendaría usar estas etiquetas para su cuenta bancaria, pero son lo suficientemente buenas para muchas aplicaciones menos riesgosas.

La probabilidad de corrupción de datos es relativamente pequeña, pero el software debería poder manejar al menos el caso básico. Este proceso implica dos pasos con el primer paso para simplemente detectar la corrupción. En este proyecto, eso se maneja almacenando tanto el valor del crédito como el complemento a 1 del valor del crédito. Eso permite una comparación simple de los valores. El segundo paso es almacenar una versión de respaldo tanto del valor del crédito como de su complemento. Eso permite una operación de recuperación si el primer conjunto de créditos se corrompe. Si ambos conjuntos están dañados, el software intenta reinicializar la etiqueta, lo que resulta en la pérdida de todos los créditos.

Paso 2: hardware

Hardware
Hardware

Las conexiones de hardware se muestran en el diagrama anterior. Esta es la misma configuración que la publicación anterior con la adición de dos interruptores y una resistencia pull-up. Un interruptor no requiere una resistencia pull-up porque está en una entrada PIC que tiene una capacidad de pull-up débil incorporada. En la práctica, ambos interruptores estarían ocultos porque se usan para agregar créditos y para inicializar una etiqueta. El interruptor de inicialización es opcional (para realizar una puesta a cero de crédito manual) porque el software puede detectar e inicializar una nueva etiqueta por sí solo. Se pueden usar pines de puente en lugar de interruptores.

Paso 3: software

Se hicieron adiciones al bucle principal en el software para permitir la lectura de los dos interruptores y la detección de una condición que requiera la inicialización de la etiqueta. Como se mencionó en la sección de hardware, la inicialización de etiquetas se puede ordenar manualmente con un interruptor. El software también puede ordenar la inicialización de una etiqueta en otros dos casos. Primero, si detecta una nueva etiqueta o sector de datos y segundo, si ambos conjuntos de datos crediticios están dañados.

La autenticación de etiquetas requiere el uso de la "clave A" para el sector de datos de destino. La clave predeterminada para las etiquetas Mifare Classic 1k es "FF FF FF FF FF FF", pero debe cambiarse para su aplicación. El software proporciona definiciones tanto para la clave predeterminada como para una clave nueva ("My_Key"). Simplemente ingrese los valores que desee en "My_Key". El software siempre intenta primero autenticar la etiqueta usando "My_Key". Si eso falla, se llama a la rutina para inicializar la etiqueta y se usa la clave predeterminada para la autenticación. La rutina de inicialización cambia la clave a "My_Key" y pone los créditos a cero. Si tiene una etiqueta con una clave no predeterminada y no sabe qué es, la etiqueta no se puede autenticar. Si esto sucede, es posible que desee verificar otros sectores de datos utilizando la clave predeterminada para ver si hay alguna disponible. El bloque de tráiler, el bloque de datos y los bloques de copia de seguridad se definen al principio de la lista de software para que pueda cambiarlos fácilmente.

El formato de los datos almacenados en la etiqueta para esta aplicación utiliza solo números positivos (no se permiten déficits) y los valores se almacenan como cuatro bytes de BCD empaquetado (decimal codificado en binario). Eso permite un rango de crédito de 0 a 99, 999, 999 (dos dígitos por byte). El valor del crédito y su complemento de 1 solo usan 8 de los 16 bytes en un solo bloque de datos y el resto se rellena con ceros. Hay espacio en el mismo bloque de datos para la copia de seguridad, pero decidí que sería más seguro colocar la copia de seguridad en un bloque de datos separado. El bloque de respaldo está en el mismo sector que el bloque de datos, por lo que no se requiere una autenticación por separado. Para estar aún más seguro, podría considerar colocar la copia de seguridad en un sector de datos diferente, pero luego se necesitaría un paso de autenticación por separado para acceder a esos datos.

Cuando se hace una lectura de los créditos, también se lee el valor complementado y luego se comparan los dos entre sí. Si hay una discrepancia, se lee y se compara el conjunto de respaldo de valor / complemento. Si coinciden, se supone que la copia de seguridad es correcta y se utiliza para reparar los datos dañados. Si las copias de seguridad no coinciden, la etiqueta se considera incorrecta y se intenta reinicializarla.

Los valores de incremento y decremento se definen cerca del frente del listado y se espera que estén en BCD empaquetado. Las rutinas que incrementan y reducen efectivamente lo hacen en un número de 32 bits. La matemática es muy simple pero requiere el uso de rutinas para ajustar los resultados de los acarreos dentro de cada byte BCD empaquetado y de un byte al siguiente. Esto se logra mediante el uso de macros DAA (suma de ajuste decimal) y DAS (resta de ajuste decimal). Estas macros aseguran que cada dígito BCD de 4 bits siempre permanezca dentro del rango de 0-9.

Además de los mensajes mostrados en la publicación anterior, esta aplicación tiene mensajes para muchos de los pasos adicionales, particularmente si hay errores de datos y / o la etiqueta debe arreglarse o inicializarse. Los créditos también se muestran antes y después de un paso de incremento / decremento para que pueda ver cómo cambian los valores.

Eso es todo por esta publicación. Vea mis otros proyectos de electrónica en: www.boomerrules.wordpress.com

Recomendado: