News & Blog
Controle de Acesso usando Leitor RFID com Arduino
As etiquetas (ou tags) RFID, podem conter vários dados sobre o proprietário do cartão, como nome e endereço e, no caso de produtos, informações sobre procedência e data de validade, apenas para citar alguns exemplos.
Como são compostas apenas por um pequeno circuito, as tags RFID podem ser embutidas facilmente em vários objetos, nos mais variados tamanhos e formatos. No caso do Kit Leitor Rfid Mfrc522 Mifare (imagem acima), temos duas tags: uma no formato de chaveiro, outra em formato de cartão.
Cada etiqueta/tag do leitor RFID tem a sua própria identificação (UID), e é com essa identificação que vamos montar um controle de acesso que irá ler o UID do cartão e exibir as informações de acesso num display LCD 16×2. Com pequenas alterações no programa é possível acionar as outras portas do Arduino e ligar motores, sensores, luzes e outros dispositivos.
Pinagem Leitor RFID:
O leitor RFID tem 8 pinos que seguem a seguinte sequência de ligação. Atenção à tensão de alimentação, que neste caso é de 3.3 volts
- Pino SDA ligado na porta 10 do Arduino
- Pino SCK ligado na porta 13 do Arduino
- Pino MOSI ligado na porta 11 do Arduino
- Pino MISO ligado na porta 12 do Arduino
- Pino NC – Não conectado
- Pino GND ligado no pino GND do Arduino
- Pino RST ligado na porta 9 do Arduino
- Pino 3.3 – ligado ao pino 3.3 V do Arduino
Montagem Leitor RFID com Arduino:
Utilizamos no circuito o Display 16×2 HD44780 com ligação semelhante ao do artigo Mostrando informações de temperatura no LCD 16×2 com o DHT11. Trocamos apenas os pinos 12 do Arduino Uno pelo pino 6, e o 11 pelo 7, pois os mesmos já estão sendo utilizados pelo leitor RFID. O potenciômetro é utilizado para controlar o contraste do LCD, e no circuito foi usado um de 10 K :
Programando Arduino com Leitor RFID:
Para o programa, baixe a biblioteca MFRC522 nesse link. Descompacte o arquivo e renomeie a pasta rfid-master para MFRC522, colocando-a dentro da pasta LIBRARIES da IDE do seu Arduino.
O programa exibe na tela mensagens referentes ao cartão utilizado, sendo que no nosso caso, o display apresenta mensagem de “Acesso Liberado” para a tag no estilo chaveiro, e “Acesso Negado” para a tag no estilo cartão.
Adapte o programa às tags que você possui, alterando as linhas com “UID 1 – Chaveiro” e “UID 2 – Cartao” (Linhas 54 e 67), lembrando que o formato da UID deve ser mantido (XX YY ZZ WW).
Para descobrir o número da tag do seu dispositivo, aproxime-o do leitor RFID e verifique o serial monitor :
//Programa : RFID - Controle de Acesso leitor RFID #include <SPI.h> #include <MFRC522.h> #include <LiquidCrystal.h> #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance. LiquidCrystal lcd(6, 7, 5, 4, 3, 2); char st[20]; void setup() { Serial.begin(9600); // Inicia a serial SPI.begin(); // Inicia SPI bus mfrc522.PCD_Init(); // Inicia MFRC522 Serial.println("Aproxime o seu cartao do leitor..."); Serial.println(); //Define o número de colunas e linhas do LCD: lcd.begin(16, 2); mensageminicial(); } void loop() { // Look for new cards if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //Mostra UID na serial Serial.print("UID da tag :"); String conteudo= ""; byte letra; 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)); } Serial.println(); Serial.print("Mensagem : "); conteudo.toUpperCase(); if (conteudo.substring(1) == "ED 78 03 CA") //UID 1 - Chaveiro { Serial.println("Ola FILIPEFLOP !"); Serial.println(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Ola FILIPEFLOP !"); lcd.setCursor(0,1); lcd.print("Acesso liberado!"); delay(3000); mensageminicial(); } if (conteudo.substring(1) == "BD 9B 06 7D") //UID 2 - Cartao { Serial.println("Ola Cartao !"); Serial.println(); lcd.clear(); lcd.setCursor(0,0); lcd.print("Ola Cartao !"); lcd.setCursor(0,1); lcd.print("Acesso Negado !"); delay(3000); mensageminicial(); } } void mensageminicial() { lcd.clear(); lcd.print(" Aproxime o seu"); lcd.setCursor(0,1); lcd.print("cartao do leitor"); }
Leave your thought Cancel Reply