Como programar um cartão RFID para seus projetos
as tags RFID são chips pequenos e regraváveis que podem armazenar pequenas quantidades de dados, como nomes, endereços, informações sobre produtos e muito mais. Eles podem assumir a forma de chaveiros e cartões, ou podem até ser implantados em animais de estimação ou pessoas. Se você quiser aprender como eles funcionam ou adicioná-los ao seu próprio projeto, um leitor e gravador RFID é um componente barato que você pode usar. Este guia mostrará como usar um para escrever em sua própria etiqueta RFID.
como os escritores RFID funcionam
os sensores RFID reader/writer usam ondas de rádio de curto alcance e baixa potência para transmitir dados de tags, onde os dados são armazenados, no dispositivo eletrônico ao qual o sensor está conectado. Neste caso, vamos usar um Arduino como dispositivo adicionando um sensor RFID. Especificamente, vamos escrever algumas informações básicas para uma tag RFID.
para fazer isso, usaremos esta biblioteca para ler e escrever em tags RFID. Como o uso de tags RFID é um pouco mais complexo do que, digamos, ligar ou desligar um LED, dependeremos de esboços pré-existentes que você pode integrar em seus próprios projetos. As funções pré-escritas que esses esboços fornecem permitirão que você os integre mais facilmente em seus outros projetos.
para usar a biblioteca, primeiro baixe o.arquivo zip da página Github acima. Em seguida, abra seu Arduino IDE, navegue até Sketch > incluir Biblioteca > adicionar .Biblioteca ZIP … e escolha a biblioteca que você acabou de baixar. Isso não apenas tornará possível incluir a biblioteca RFID em seus esboços, mas você também obterá uma coleção de esboços de exemplo, que precisaremos mais tarde.
o que você vai precisar
para este projeto, vamos apenas escrever para uma tag RFID. No entanto, tenha em mente à medida que passamos pelo guia como você pode usar isso para estender seus outros projetos. Talvez você possa acionar um bloqueio para desbloquear quando mostrar ao leitor uma tag com os dados corretos, por exemplo. Para este projeto básico, porém, aqui está o que você precisará:
Arduino | |
RFID sensor (de preferência um MFRC-522) | |
as etiquetas RFID | |
Protoboard & fiação | |
IDE Arduino | |
Cabo USB |
Desde chips de RFID são muito pequenos, a marca que você usa pode vir em quase qualquer forma. Dois dos tipos mais comuns de chips RFID – geralmente em kits ou com sensores – são pequenos chaveiros redondos ou cartões planos do tamanho de um cartão de crédito. Dito isto, qualquer tag que você tenha deve funcionar.
Código
Se você instalou a biblioteca como indicado acima, o seguinte esboço deve estar disponível no seu livro de exemplo em Arquivo > Exemplos > MFRC522 > rfid_write_personal_data. Selecione-o em seu livro de exemplo ou copie o código abaixo:
/*
* escreva dados pessoais de um cartão RFID Mifare usando um leitor RFID-RC522
* usa a Biblioteca MFRC522 para usar o kit de módulo ARDUINO RFID 13.56 MHZ com TAGS SPI W E R por COOQROBOT.
* ——————————
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Leitor/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Sinal de Pin Pin Pin Pin Pin Pin
* ——————————
* RST/Repor PRIMEIROS 9 5 D9 RESET/ICSP-5 PRIMEIRO
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISSÔ (pasta de MISSÔ 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*
* Hardware necessário:
* Arduino
* PCD( dispositivo de acoplamento de proximidade): NXP MFRC522 leitor Sem Contato IC
* PICC (Placa de circuito integrado de Proximidade): um cartão ou etiqueta usando a interface ISO 14443A, por exemplo, Mifare ou NTAG203.
* o leitor pode ser encontrado no eBay por cerca de 5 dólares. Procure por “mf-rc522” na ebay.com.
*/
#include
#include
#define RST_PIN 9 // Configurável, consulte típico layout de pino acima de
#define SS_PIN 10 // Configurável, consulte típico layout de pino acima de
MFRC522 mfrc522(SS_PIN, RST_PIN); // Crie uma instância MFRC522
void setup () {
Serial.comece (9600); / / inicialize as comunicações seriais com o PC
SPI.comece (); / / ônibus do Init SPI
mfrc522.PCD_Init (); / / init cartão MFRC522
Serial.println (F (“escreva dados pessoais em um Mifare PICC “));
}
laço vazio() {
// Prepare a chave-Todas as chaves são definidas para Ffffffffffh na entrega de chips da fábrica.A chave MFRC522::mifare_key;
para (byte i = 0; i < 6; i++).keyByte = 0xFF;
/ / redefinir o loop se nenhum novo cartão presente no sensor/leitor. Isso salva todo o processo quando ocioso.
se ( ! mfrc522.Se você não tem certeza, por favor entre em contato conosco.;
}
// selecione uma das cartas
if ( ! mfrc522.Se você não tem certeza, por favor entre em contato conosco.;
}
Serial.como baixar e instalar o Windows 10 no Windows 10.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.liquido.tamanho; i++) {
Serial.impressão (mfrc522.liquido.uidByte < 0x10 ? “0” : “”);
Serial.impressão (mfrc522.liquido.uidByte, HEX);
}
Serial.como baixar e instalar o Windows 10 no Windows 10.PICC_GetType (mfrc522.liquido.sak);
Serial.println(mfrc522.PICC_GetTypeName(piccType));
buffer de bytes;
byte do bloco;
MFRC522::StatusCode status;
byte len;
Serial.setTimeout(20000L);// aguarde até 20 segundos para a entrada da série
/ / peça dados pessoais: Nome de família
Serial.println (F (“digite o nome da família, terminando com#”));
len = Serial.readBytesUntil (‘# ‘ , (char *) buffer, 30) ; // leia o nome da família de serial
para (byte i = len; i < 30; i++) buffer=”; / / pad com espaços
block = 1;
//Serial.println (F (“autenticar usando a chave a…”));
status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, block, &key, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.print(F(“PCD_Authenticate() failed: “));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println(F(“PCD_Authenticate() success: “));
// Write block
status = mfrc522.MIFARE_Write(block, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.print(F(“MIFARE_Write() failed: “));
Serial.println(mfrc522.GetStatusCodeName(status));
return;
}
else Serial.println(F(“MIFARE_Write() sucesso: “));
bloco = 2;
//Serial.println (F (“autenticar usando a chave a…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, bloco, &chave, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.como baixar e instalar o pcd_authenticate () no Pcd_authenticate () failed:”);
Serial.println(mfrc522.GetStatusCodeName (status));
retorno;
}
// escreva o bloco
status = mfrc522.MIFARE_Write (bloco, & buffer, 16);
if (status!= MFRC522::STATUS_OK) {
Serial.a impressão(f(“mifare_write() falhou: “));
Serial.println(mfrc522.Como baixar e instalar Minecraft no Minecraft 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.println (f (“mifare_write () sucesso: “));
// pedir dados pessoais: primeiro nome
Serial.println (F (“digite o primeiro nome, terminando com#”));
len = Serial.readBytesUntil(‘#’, (char * buffer, 20) ; // ler o primeiro nome da série
for (byte i = len; i < 20; i++) buffer = ‘ ‘; // preencher com espaços
bloco = 4;
//Serial.println (F (“autenticar usando a chave a…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, bloco, &chave, &(mfrc522.liquido));
if (status != MFRC522::STATUS_OK) {
Serial.como baixar e instalar o pcd_authenticate () no Pcd_authenticate () failed:”);
Serial.println(mfrc522.GetStatusCodeName (status));
retorno;
}
// escreva o bloco
status = mfrc522.MIFARE_Write (bloco, buffer, 16);
if (status != MFRC522::STATUS_OK) {
Serial.a impressão(f(“mifare_write() falhou: “));
Serial.println(mfrc522.Como baixar e instalar Minecraft no Minecraft 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.println(F(“MIFARE_Write() sucesso: “));
bloco = 5;
//Serial.println (F (“autenticar usando a chave a…”));
status = mfrc522.PCD_Authenticate(MFRC522:: PICC_CMD_MF_AUTH_KEY_A, bloco, &chave, &(mfrc522.uid));
if (status != MFRC522::STATUS_OK) {
Serial.como baixar e instalar o pcd_authenticate () no Pcd_authenticate () failed:”);
Serial.println(mfrc522.GetStatusCodeName (status));
retorno;
}
// escreva o bloco
status = mfrc522.MIFARE_Write (bloco, & buffer, 16);
if (status!= MFRC522::STATUS_OK) {
Serial.a impressão(f(“mifare_write() falhou: “));
Serial.println(mfrc522.Como baixar e instalar Minecraft no Minecraft 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.println (f (“mifare_write () sucesso: “));
Serial.println ( “” );
mfrc522.PICC_HaltA (); / / Halt PICC
mfrc522.PCD_StopCrypto1 (); / / pare a criptografia no PCD
}
carregue este código e (depois de conectar seu projeto conforme descrito abaixo) você pode começar imediatamente a gravar dados em suas tags RFID.
um dos benefícios de usar bibliotecas como esta é que você pode encontrar partes do Código já escrito, então você não precisa reinventar a roda para cada projeto. Desta vez, não vamos passar pelo Código linha a linha. Em vez disso, vamos falar um pouco mais sobre o que o código faz.
os dados em etiquetas RFID são armazenados em seções chamadas setores, que são divididos em blocos. Cada bloco pode conter alguns bytes de dados. A quantidade depende da tag específica, mas uma tag passiva 1K comum (ou seja, uma tag que pode armazenar 1 kilobyte de dados) pode, por exemplo, ter 16 setores, cada um contendo 4 blocos, com cada bloco capaz de armazenar até 16 bytes de dados.
este esboço só vai armazenar seu nome e sobrenome, Por isso só precisa de um setor, mas espalhará os dados por vários blocos, já que seus nomes podem ocupar mais dados do que podem caber em um único bloco (e para conveniência organizacional).
quando você executa o script, você será solicitado a fornecer seu nome de família, que será gravado em blocos em sua tag RFID. Em seguida, você receberá um prompt para escrever seu primeiro nome, que será escrito em blocos diferentes. Para obter mais informações sobre como os blocos RFID são organizados e como abordá-los, confira este guia.
a fiação
a fiação para o seu leitor RFID específico dependerá do modelo que você obtém, pois muitas iterações diferentes têm os pinos em uma ordem diferente. Felizmente, o código de exemplo que incluímos acima Lista quais pinos devem ir para onde, dependendo da placa que você está usando. Siga esse guia para obter detalhes.
como exemplo, se você estivesse usando um Arduino Uno e um sensor Mfrc-522, faria o seguinte:
● Conectar PRIMEIRO ao pino 9
● Ligue SDA (ou SS) para o pino 10
● Ligue MOSI ao pino 11
● Ligue o MISO ao pino 12
● Ligue SCK para o pino 13
● Ligar VCC para 5V
● Ligue GND GND
Mas, novamente, verifique as placas que você está usando para se certificar de que você está conectado corretamente. Depois que sua placa estiver conectada, ligue o Arduino enquanto ele estiver conectado via USB ao computador. Em seguida, você pode pressionar um cartão RFID ou chaveiro para o leitor. Mantenha-o lá enquanto insere dados através do monitor serial.
a biblioteca MFRC522 também inclui um esboço embutido para ler dados RFID depois de escrevê-lo. Agora que você sabe como escrever dados, tente fazer o upload desse esboço e usá-lo para ler a tag em que você escreveu.