
2025 Autor: John Day | [email protected]. Última modificação: 2025-01-23 15:03

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

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:
Estação de Trabalho Eletrônica para Hobbyist - Estação De Trabalho Para Entusiastas Em Eletrônica: 10 etapas

Estação de Trabalho Eletrônica para Hobbyist - Estação De Trabalho Para Entusiastas Em Eletrônica: Atenciosamente Leitor e Hobbyist Eletrônica Nestas instruções apresento a construção de uma estação de trabalho para amadores eletrônicos, A estação contém as ferramentas e suportes comuns para trabalhar com circuitos eletrônicos: suporte giratório para ci impresso
Proteção RFID de uma carteira Tyvek: 7 etapas

RFID protegendo uma carteira Tyvek: Eu uso esse tipo (marca) de carteira há cerca de 6 anos. Quando encontrei esta carteira em particular, decidi adicionar um pouco de proteção RFID a ela usando fita de alumínio. Esta fita é usada para vedar dutos de aquecimento, pois é mais durável do que à base de tecido & q
Carteira IoT (carteira inteligente com Firebeetle ESP32, Arduino IDE e planilha do Google): 13 etapas (com imagens)

IoT Wallet (carteira inteligente com Firebeetle ESP32, Arduino IDE e Google Spreadsheet): Primeiro prêmio no Concurso de Bolso Instructables! D Se você investiu algum dinheiro em criptomoedas, provavelmente já sabe que elas são altamente voláteis. Eles mudam durante a noite e você nunca sabe quanto dinheiro 'real' você ainda tem em seu walle
Fazendo minha própria carteira de hardware Trezor Crypto: 5 etapas (com fotos)

Fazendo minha própria carteira de hardware de criptomoeda Trezor: Neste projeto, estou fazendo minha própria carteira de hardware de criptomoeda Trezor, completa com gabinete. Isso é possível porque o Trezor é de código aberto, então usei os arquivos que eles fornecem em seu github para construir meu próprio dispositivo por menos de $ 40. Havia alguns
Carteira Altoids Tin: 4 etapas

Carteira Altoids Tin: Esta versátil lata de doces também pode ser usada como carteira! Caso você ainda não tenha descoberto, os cartões de crédito padrão e as identidades se encaixam perfeitamente na venerável lata de Altoids. Confira! Isso é super fácil, e além de reservar um tempo para comer tudo