Arduino 專題教學-如何使用 RFID 感應模組?(含程式)

「感應」兩個字聽起來很酷,小編在生活中會與感應這件事相遇的,大概就是捷運卡與上下班打卡會用到,還有買東西時使用的電子錢包也是感應的。那標題的RFID又是什麼呢?它有什麼神奇的功能?就讓我們往下看下去吧~

RFID(Radio Frequency IDentification),中文名稱為無線射頻辨識,它可以透

過無線電訊號判別目標並讀寫相關數據。通電後我們的RFID模組產生的電磁

場,會使得靠近的磁卡獲得能量,進而發送訊號使我們的模組偵測到磁卡的識

別碼。

這次要教大家使用RFID模組來感應磁卡,並用序列埠監控視窗讓我們觀看磁卡卡號,那我們就開始一起Maker吧!

需要的材料有:

Arduino UNO

7條杜邦線(公對母)

Mifare RC522 RFID套件組(含感應卡/鑰匙圈)

接線圖如下:

參考程式:

使用前需下載RC522程式庫,將下載的程式庫匯入Arduino IDE後輸入下方程式並點選上傳。

//==========================================================

#include <SPI.h>

#include <MFRC522.h> // 引用程式庫

#define RST_PIN 9 // 讀卡機的重置腳位

#define SS_PIN 10 // 晶片選擇腳位

MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立MFRC522物件

void setup() {

Serial.begin(9600);

Serial.println(“RFID reader is ready!”);

SPI.begin();

mfrc522.PCD_Init(); // 初始化MFRC522讀卡機模組

}

void loop() {

// 確認是否有新卡片

if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {

byte *id = mfrc522.uid.uidByte; // 取得卡片的UID

byte idSize = mfrc522.uid.size; // 取得UID的長度

Serial.print(“PICC type: “); // 顯示卡片類型

// 根據卡片回應的SAK值(mfrc522.uid.sak)判斷卡片類型

MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);

Serial.println(mfrc522.PICC_GetTypeName(piccType));

Serial.print(“UID Size: “); // 顯示卡片的UID長度值

Serial.println(idSize);

for (byte i = 0; i < idSize; i++) { // 逐一顯示UID碼

Serial.print(“id[“);

Serial.print(i);

Serial.print(“]: “);

Serial.println(id[i], HEX); // 以16進位顯示UID值

}

Serial.println();

mfrc522.PICC_HaltA(); // 讓卡片進入停止模式

}

}

//==========================================================

上傳完畢後,點選序列埠監控視窗,即可看到感應的磁卡所對應的卡號囉!