Guia do Arduino MFRC522 – A TAG/Cartão RFID está presente ou removida?
Conteudo
Guia do Arduino MFRC522 – A TAG/Cartão RFID está presente ou removida?
- Por que precisamos detectar a presença ou remoção de cartões RFID?
- Detectando a remoção de etiquetas RFID
- Do que precisamos?
- Arduino MFRC522 Interface
- Código
- Demonstração em Foto
- Conclusão
Por que precisamos detectar a presença ou remoção de cartões RFID?
A maioria dos tutoriais sobre RFID na Internet ensinará você a ler cartões RFID. Mas isso não informa quando a tag está ausente. Por exemplo, em um sistema de atendimento baseado em RFID, não precisamos saber por quanto tempo o cartão esteve lá. Ainda assim, em alguns casos, precisamos saber que o cartão está presente ou foi removido. Por exemplo, em 6 jogos de velas, é necessário colocar todas as velas em um local especificado para acionar a saída. Para que o cartão sob velas deve permanecer nessa posição. Caso contrário, isso perturbará a sequência. Usaremos o Arduino e o mfrc522 para aprender esse conceito.
Detectando a remoção de etiquetas RFID
Neste tutorial, escreveremos um código que, ao detectar a placa, acenderá o LED vermelho. E quando removermos a etiqueta, ela apagará o LED vermelho. Além disso, os resultados aparecerão no monitor serial. Você pode modificar o código e usá-lo para várias finalidades. Parece bom? Vamos começar.
Do que precisamos?
Neste tutorial precisamos os itens mostrados na foto abaixo, listados abaixo.
- Arduino Uno (ou equivalente)
- o leitor de RFID MFRC522
- um TAG (Plástico ou cartão)
- os fios de ligação
- a placa para ligar (ProtoBoard)
- o LED
- um Resistor (220ohms)
Foto da Lista.
Arduino MFRC522 Interface
PINOS MFRC522 | PINOS ARDUINO UNO |
---|---|
SDA | D10 |
SCK | D13 |
MOSI | D11 |
MISO | D12 |
GND | GND |
RST | D9 |
3.3V | 3.3V |
Após conectar o MFRC522, conecte o LED ao pino D7 e GND.
Código
#include <SPI.h> #include <MFRC522.h> #define RST_PIN 9 #define SS_PIN 10 #define Green 7 MFRC522 mfrc522(SS_PIN, RST_PIN); // Criar instância MFRC522 void setup(){ pinMode(Green,OUTPUT); Serial.begin(9600); // Initialize serial communications with the PC SPI.begin(); // Init SPI bus mfrc522.PCD_Init(); } uint8_t buf[10]= {}; MFRC522::Uid id; MFRC522::Uid id2; bool is_card_present = false; uint8_t control = 0x00; void PrintHex(uint8_t *data, uint8_t length) // imprime dados de 8 bits em hexadecimal com zeros à esquerda { char tmp[16]; for (int i=0; i<length; i++) { sprintf(tmp, "0x%.2X",data[i]); Serial.print(tmp); Serial.print(" "); } } //*****************************************************************************************// void cpid(MFRC522::Uid *id){ memset(id, 0, sizeof(MFRC522::Uid)); memcpy(id->uidByte, mfrc522.uid.uidByte, mfrc522.uid.size); id->size = mfrc522.uid.size; id->sak = mfrc522.uid.sak; } void loop(){ MFRC522::MIFARE_Key key; for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF; MFRC522::StatusCode status; // Procure novos cartões if ( !mfrc522.PICC_IsNewCardPresent()) { return; } if ( !mfrc522.PICC_ReadCardSerial()) { return; } bool result = true; uint8_t buf_len=4; cpid(&id); Serial.print("Novo Cartão "); PrintHex(id.uidByte, id.size); Serial.println(""); while(true){ digitalWrite(Green,HIGH); control=0; for(int i=0; i<3; i++){ if(!mfrc522.PICC_IsNewCardPresent()){ if(mfrc522.PICC_ReadCardSerial()){ //Serial.print('a'); control |= 0x16; } if(mfrc522.PICC_ReadCardSerial()){ //Serial.print('b'); control |= 0x16; } //Serial.print('c'); control += 0x1; } //Serial.print('d'); control += 0x4; } //Serial.println(control); if(control == 13 || control == 14){ //o cartão ainda está lá } else { break; } } Serial.println("Cartão Retirado"); digitalWrite(Green,LOW); delay(500);// altere o valor se você quiser ler cartões mais rapidamente mfrc522.PICC_HaltA(); mfrc522.PCD_StopCrypto1(); }
Demonstração nas fotos.


Seguindo este guia, você poderá saber como o RFID funciona, como fazer a interface do módulo RFID com o Arduino e como detectar a remoção de tags RFID.