Depois de receber algumas mensagens e emails, resolvi gravar este vídeo. O leitor RFID é a Identificação por Radiofrequência e o legal é que você pode utilizar para abrir portas, portões e até identificar pessoas em algum evento.
No vídeo abaixo eu mostro como funciona o leitor RFID e ainda mostro ele acionando um relé assim que uma tag é reconhecida.
O leitor RFID possui 8 pinos e vamos utilizar somente 7 deles, o que já é muita coisa, mas é o necessário para o funcionamento.
Segue abaixo a sequência para ligá-lo no Arduino Uno (Lembrando que para ligar no Mega as portas são diferentes)
PINO | ARDUINO UNO | ARDUINO MEGA |
---|---|---|
SDA ou SS | 10 | 53 |
SCK | 13 | 52 |
MOSI | 11 | 51 |
MISO | 12 | 50 |
NC | NÃO UTILIZA | NÃO UTILIZA |
GND | GND | GND |
RST | 9 | 9 |
VCC (3,3V) | 3,3V | 3,3V |
Para fazer o download da biblioteca do Leitor RFID, clique aqui.
Logo após o vídeo você pode conferir o código utilizado, então é só usar a criatividade para utilizar o Leitor RFID.
#include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 #define RST_PIN 9 int porta_rele1 = 8; // Relé MFRC522 mfrc522(SS_PIN, RST_PIN); // Instanciando o MFRC522. void setup() { Serial.begin(9600); // Inicia a serial SPI.begin(); // Inicia SPI bus mfrc522.PCD_Init(); // Inicia MFRC522 //RELE PORTÃO pinMode(porta_rele1, OUTPUT); digitalWrite(porta_rele1, HIGH); } void loop() { // Procurando cartão. Se PICC encontrar cartão, ele retorna 1 e continua, se não encontrar cartão, retorna 0 e volta ao loop if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Selecionar um dos cartões - Se ele retornar 1, ele lê o conteúdo do cartão, se retornar 0, ele volta ao loop porque algo deu errado if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //UID na serial String conteudo= ""; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(mfrc522.uid.uidByte[i], HEX); conteudo.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ")); conteudo.concat(String(mfrc522.uid.uidByte[i], HEX)); } conteudo.toUpperCase(); Serial.println (conteudo); delay(2000); /* if (conteudo.substring(1) == "FD 6D A2 DA") // O substr() serve para você pegar apenas uma parte { digitalWrite(porta_rele1, LOW); delay(500); digitalWrite(porta_rele1, HIGH); delay(500); } else if (conteudo.substring(1) == "22 CB 33 3B") { digitalWrite(porta_rele1, LOW); delay(500); digitalWrite(porta_rele1, HIGH); delay(500); } */ }