Download presentation
Presentation is loading. Please wait.
1
Arduino課程 RFID 中部自造者基地-雲科大
2
實驗目的 了解RFID與感應卡片 中部自造者基地-雲科大
3
先備知識 RFID讀卡機模組是採用9600bps, TTL序列通訊介面。 卡片屬於被動式、無內建電源(也稱為「無源」),卡片所需 的電力來自讀寫器的電磁場。 應用:停車場感應幣、現金卡、員工識別證。 中部自造者基地-雲科大
4
各種進位 中部自造者基地-雲科大
5
架設圖 VCC = 5V RST = A0 GND =GND MISO= D12 MOSI= D11 SCK = D13 NSS = D10
IRQ 不接 中部自造者基地-雲科大
6
下載程式庫MFR522 中部自造者基地-雲科大
7
程式物件屬性 物件.PCD_Init():初始化MFRC522讀卡機模組
物件.PICC_IsNewCardPresent():是否感應到新的卡片 物件.PICC_ReadCardSerial():讀取卡片的資料 物件.PICC_GetType():取得卡片類型 物件.PICC_GetTypeName():取得卡片類型名稱 中部自造者基地-雲科大
8
程式碼 語法說明 && (And 且) || (Or 或) HEX DEC 中部自造者基地-雲科大
#include <SPI.h> #include <MFRC522.h> // 引用程式庫 #define RST_PIN A0 // 讀卡機的重置腳位 #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], DEC); // 以16進位顯示UID值 Serial.println(); mfrc522.PICC_HaltA(); // 讓卡片進入停止模式 語法說明 && (And 且) || (Or 或) HEX DEC 中部自造者基地-雲科大
9
中部自造者基地-雲科大
10
程式碼2 當UID第一區碼=246時,開啟LED燈 “246”可以改成手中卡片的第一串值 中部自造者基地-雲科大
#include <SPI.h> #include <MFRC522.h> // 引用程式庫 #define RST_PIN A // 讀卡機的重置腳位 #define SS_PIN // 晶片選擇腳位 int led=6; MFRC522 mfrc522(SS_PIN, RST_PIN); // 建立MFRC522物件 void setup() { Serial.begin(9600); Serial.println("RFID reader is ready!"); SPI.begin(); mfrc522.PCD_Init(); // 初始化MFRC522讀卡機模組 pinMode(6,OUTPUT); } void loop() { byte *id = mfrc522.uid.uidByte; if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { // 取得卡片的UID MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); Serial.print("id[0]="); Serial.println(id[0],DEC); // 以16進位顯示UID值 if(id[0]==246) { digitalWrite(6,HIGH); delay(500); digitalWrite(6,LOW); else{ Serial.println("---"); mfrc522.PICC_HaltA(); // 讓卡片進入停止模式 當UID第一區碼=246時,開啟LED燈 “246”可以改成手中卡片的第一串值 中部自造者基地-雲科大
11
程式碼3 改用蜂鳴器 tone(6,800,100)//從D6發出頻率800Hz持續0.1秒 noTone(6); 中部自造者基地-雲科大
12
程式4_模擬停車場 Serial.println(id[0],DEC); // 以10進位顯示UID值
if(id[0]==246||id[0]==148) { myservo.write(170); delay(100); myservo.write(90); } 語法說明 && (And 且) || (Or 或) 中部自造者基地-雲科大
Similar presentations