Thứ tự nối chân Arduino nano- RFID
1. Arduino Nano + RFID-RC522 - Arduino Tutorial
4. Code mẫu:
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;
int code[] = {32,154,149,117}; //This is the stored UID (Unlock Card)
int codeRead = 0;
String uidString;
void setup() {
Serial.begin(9600);
SPI.begin(); // Init SPI bus
rfid.PCD_Init(); // Init MFRC522
Serial.println(F("MỜI QUẸT THẺ"));
}
void loop() {
if( rfid.PICC_IsNewCardPresent())
{
readRFID();
}
delay(100);
}
void readRFID()
{
rfid.PICC_ReadCardSerial();
Serial.print(F("\nPICC type: "));
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
Serial.println(rfid.PICC_GetTypeName(piccType));
// Check is the PICC of Classic MIFARE type
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
Serial.println(F("THẺ KHÔNG HỢP LỆ "));
return;
}
Serial.println("SỐ THẺ LÀ :");
printDec(rfid.uid.uidByte, rfid.uid.size);
uidString = String(rfid.uid.uidByte[0])+" "+String(rfid.uid.uidByte[1])+" "+String(rfid.uid.uidByte[2])+ " "+String(rfid.uid.uidByte[3]);
int i = 0;
boolean match = true;
while(i<rfid.uid.size)
{
if(!(int(rfid.uid.uidByte[i]) == int(code[i])))
{
match = false;
}
i++;
}
if(match)
{
Serial.println("\n*** Unlock ***");
}else
{
Serial.println("\nUnknown Card");
}
Serial.println("============================");
// Halt PICC
rfid.PICC_HaltA();
// Stop encryption on PCD
rfid.PCD_StopCrypto1();
}
void printDec(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? " 0" : " ");
Serial.print(buffer[i], DEC);
}
}
II. BẬT LED VỚI RFID
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9 // Chân kết nối RST của đầu đọc RFID
#define SS_PIN 10 // Chân kết nối SS của đầu đọc RFID
#define LED_PIN 7 // Chân kết nối LED
MFRC522 mfrc522(SS_PIN, RST_PIN); // Tạo đối tượng MFRC522
// Mảng chứa các mã số thẻ RFID cho phép
String allowedRFIDCards[] = {"863f2c9e", "9876543210"};
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
SPI.begin(); // Khởi động giao tiếp SPI
mfrc522.PCD_Init(); // Khởi động đầu đọc RFID
Serial.println("Vui lòng đặt thẻ RFID lên đầu đọc...");
}
void loop() {
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
Serial.println("Thẻ RFID được phát hiện!");
String rfidCode = getRFIDCode(); // Lấy mã số thẻ RFID
if (isAuthorized(rfidCode)) {
Serial.println("Thẻ được chấp nhận. Bật LED.");
digitalWrite(LED_PIN, 1); // Bật LED
delay(1000); // Chờ 1 giây
digitalWrite(LED_PIN, 0); // Tắt LED
} else {
Serial.println("Thẻ không được chấp nhận.");
Serial.println(rfidCode);
}
delay(2000); // Chờ 2 giây trước khi tiếp tục quét thẻ tiếp theo
}
}
String getRFIDCode() {
String rfidCode = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
rfidCode += String(mfrc522.uid.uidByte[i], HEX);
}
return rfidCode;
}
bool isAuthorized(String rfidCode) {
for (int i = 0; i < sizeof(allowedRFIDCards) / sizeof(allowedRFIDCards[0]); i++) {
if (rfidCode == allowedRFIDCards[i]) {
return true;
}
}
return false;
}
0 Post a Comment:
Post a Comment
Cảm ơn bạn đã chia sẻ ý kiến!
Chúc bạn có một ngày thật vui vẻ.