Índice:

Carteira Eletrônica: 3 Passos
Carteira Eletrônica: 3 Passos

Vídeo: Carteira Eletrônica: 3 Passos

Vídeo: Carteira Eletrônica: 3 Passos
Vídeo: Carteira de Trabalho Digital como fazer passo a passo e tirar pelo celular 2024, Junho
Anonim
Carteira Eletrônica
Carteira Eletrônica

NOTA: agora tenho Instructables que oferecem o código Arduino para RC522 e PN532.

Em meu post anterior, detalhei os fundamentos para a comunicação com os módulos RFID MFRC522 e PN532 para ler / gravar dados de tags Mifare Classic 1k. Neste post, vou um passo adiante e mostro como usar esses módulos para criar uma carteira eletrônica com as etiquetas. Como no post anterior, isso é apresentado como uma implementação básica, mas deve fornecer uma base para uma variedade de aplicativos que requerem funções de incremento / decremento ou contagem.

Etapa 1: integridade de dados

Para uma carteira eletrônica, sempre existe a preocupação de que alguém possa adicionar créditos sem pagar por eles. Também existe a preocupação de que os créditos na tag possam ser corrompidos inadvertidamente durante uma gravação de dados. Os acessos aos dados requerem o uso da chave da tag, portanto, é necessário alterar a chave padrão quando a tag é inicializada pela primeira vez. Existem artigos online que falam sobre como hackear uma tag mesmo se você não souber a chave, mas a técnica não é trivial. Eu não recomendaria usar essas tags para sua conta bancária, mas elas são boas o suficiente para muitos aplicativos menos arriscados.

A probabilidade de corrupção de dados é relativamente pequena, mas o software deve ser capaz de pelo menos lidar com o caso básico. Esse processo envolve duas etapas com a primeira etapa para simplesmente detectar a corrupção. Neste projeto, isso é feito armazenando o valor do crédito, bem como um complemento de 1 do valor do crédito. Isso permite uma comparação simples dos valores. A segunda etapa é armazenar uma versão de backup do valor do crédito e de seu complemento. Isso permite uma operação de recuperação se o primeiro conjunto de créditos for corrompido. Se ambos os conjuntos estiverem corrompidos, o software tenta reinicializar a tag, o que resulta na perda de todos os créditos.

Etapa 2: Hardware

Hardware
Hardware

As conexões de hardware são mostradas no diagrama acima. Esta é a mesma configuração do post anterior com a adição de duas chaves e um resistor pull-up. Um switch não requer um resistor pull-up porque está em uma entrada PIC que tem uma capacidade pull-up fraca embutida. Na prática, ambos os switches estariam ocultos porque são usados para adicionar créditos e para inicializar uma etiqueta. A opção de inicialização é opcional (para zerar o crédito manualmente) porque o software pode detectar e inicializar uma nova tag por conta própria. Pinos de jumper podem ser usados em vez de interruptores.

Etapa 3: Software

Adições ao loop principal no software foram feitas para permitir a leitura dos dois interruptores e para a detecção de uma condição que requer a inicialização do tag. Conforme mencionado na seção de hardware, a inicialização do tag pode ser comandada manualmente com uma chave. O software também pode comandar uma inicialização de tag em dois outros casos. Primeiro, se ele detecta uma nova tag ou setor de dados e, segundo, se ambos os conjuntos de dados de crédito estão corrompidos.

A autenticação de tags requer o uso da “chave A” para o setor de dados de destino. A chave padrão para as tags Mifare Classic 1k é “FF FF FF FF FF FF”, mas deve ser alterada para sua aplicação. O software fornece definições para a chave padrão e uma nova chave (“My_Key”). Basta inserir os valores que você deseja em “My_Key”. O software sempre tenta primeiro autenticar a tag usando “My_Key”. Se isso falhar, a rotina para inicializar a tag é chamada e a chave padrão é usada para autenticação. A rotina de inicialização muda a chave para “My_Key” e define os créditos para zero. Se você tem uma tag com uma chave não padrão e não sabe o que é, então a tag não pode ser autenticada. Se isso acontecer, você pode querer verificar outros setores de dados usando a chave padrão para ver se um está disponível. O bloco de trailer, bloco de dados e blocos de backup são todos definidos no início da lista de software para que você possa alterá-los facilmente.

O formato dos dados armazenados na tag para este aplicativo usa apenas números positivos (sem déficits permitidos) e os valores são armazenados como quatro bytes de BCD (Binary Coded Decimal) compactado. Isso permite uma faixa de crédito de 0 a 99,999,999 (dois dígitos por byte). O valor de crédito e seu complemento de 1 usam apenas 8 dos 16 bytes em um único bloco de dados e o resto é preenchido com zeros. Há espaço no mesmo bloco de dados para a cópia de backup, mas decidi que seria mais seguro colocar o backup em um bloco de dados separado. O bloco de backup está no mesmo setor que o bloco de dados, portanto, uma autenticação separada não é necessária. Para ficar ainda mais seguro, você pode considerar colocar o backup em um setor de dados diferente, mas uma etapa de autenticação separada seria necessária para acessar esses dados.

Quando é feita uma leitura dos créditos, o valor complementado também é lido e os dois são comparados um com o outro. Se houver uma incompatibilidade, o conjunto de backup de valor / complemento será lido e comparado. Se eles corresponderem, o backup será considerado correto e será usado para reparar os dados corrompidos. Se as cópias de backup não corresponderem, a tag será considerada inválida e será feita uma tentativa de reinicializá-la.

Os valores de incremento e decremento são definidos próximo ao início da lista e espera-se que estejam no BCD compactado. As rotinas que aumentam e diminuem efetivamente o fazem em um número de 32 bits. A matemática é muito simples, mas requer o uso de rotinas para ajustar os resultados de transportes dentro de cada byte BCD compactado e de um byte para o próximo. Isso é realizado pelo uso de macros DAA (Decimal Adjust Addition) e DAS (Decimal Adjust Subtraction). Essas macros garantem que cada dígito BCD de 4 bits sempre permaneça dentro do intervalo de 0-9.

Além das mensagens de exibição na postagem anterior, este aplicativo tem mensagens para muitas das etapas adicionais - principalmente se houver erros de dados e / ou a tag precisar ser corrigida ou inicializada. Os créditos também são exibidos antes e depois de uma etapa de incremento / decremento para que você possa ver a alteração dos valores.

É isso para este post. Confira meus outros projetos eletrônicos em: www.boomerrules.wordpress.com

Recomendado: