การใช้งาน RFID อ่านค่าจากคีย์การ์ด

- การต่อวงจร

2. การติดตั้ง RFID Libraries
http://asrs-ubru.tech/microcontroller/wp-content/uploads/2020/05/rfid-master.zip
3. โปรแกรมสำหรับอ่านค่าจากคีย์การ์ด (สามารถคัดลอกไปวางได้เลย)
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
}
void loop()
{
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
// 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("Your tag is not of type MIFARE Classic."));
return;
}
String strID = "";
for (byte i = 0; i < 4; i++)
{
strID +=
(rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
String(rfid.uid.uidByte[i], HEX) +
(i!=3 ? ":" : "");
}
strID.toUpperCase();
Serial.print("Card key: ");
Serial.println(strID);
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
}
ผลการอ่านค่าจากคีย์การ์ด

4. การควบคุมหลอดไฟ LED (แก้ไขโปรแกรมใหม่ อาจไม่เหมือนในวีดีโอ)
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
MFRC522::MIFARE_Key key;
void setup()
{
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
}
void loop()
{
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial())
return;
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
// 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("Your tag is not of type MIFARE Classic."));
return;
}
String strID = "";
for (byte i = 0; i < 4; i++)
{
strID +=
(rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
String(rfid.uid.uidByte[i], HEX) +
(i!=3 ? ":" : "");
}
strID.toUpperCase();
Serial.print("Card key: ");
Serial.println(strID);
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
if (strID == "04:7F:90:2B")
{
digitalWrite(2,1);
delay(3000);
digitalWrite(2,0);
}
if (strID == "37:07:AF:7B")
{
digitalWrite(3,1);
delay(3000);
digitalWrite(3,0);
}
}
4. ผลการทดสอบ