第十七章RFID无线识别装置

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

RFID的類型(二)
用電源系統區分,可分成兩種:
•被動式標籤(Passive Tag):也稱為無源標籤,無需使用電池。 •主動式標籤(Active Tag):也稱為有源標籤,內含電池,無線電傳送距離較長 (33公尺以上)。
用記憶體類型區分,可分成三種:
•唯讀:晶片製造廠在出廠時已寫入資料。 •僅能寫入一次,可多次讀取(Write-once, read many,簡稱WORM):配合 「可寫入」資料的讀卡機,用戶能自行寫入資料一次。 •可重複讀取和寫入:可重複寫入資料,方便標籤回收再利用。停車場和捷運使用 的晶片卡及悠遊卡,都屬於這一類。為了防止資料被任意竄改,這種晶片通常具 有授權與加密處理功能。
一套RFID系統由讀卡機(Reader)、電子標籤( Tag)和主控端(Host)三大部分組成。
參閱 17-3
RFID的類型(一)
底下是RFID系統的運作方式簡圖,電子標籤通常無內建電源(也稱 為「無源」或「被動式」),標籤所需的電力來自讀寫器的電磁場。
底下是三種RFID標籤的封裝形式:
參閱 17-4
第十七章 RFID無線識別裝置
• 認識RFID • RFID的類型 • 13.56MHz Mifare
RFID-RC522模組介紹 • 操控Mifare模組的
MFRC522程式庫 • Mifare Classic 1KB的
記憶體結構 • 認識C語言的結構(
struct)
認識RFID
RFID是記載唯一編號或其他資料的晶片,並且 使用無線電傳輸資料的技術統稱,全名是無線 射頻辨識(Radio Frequency IDentification) 。
市面上比較容易買到的RFID模組頻率是125KHz和13.56MHz。
參閱 17-5
125KHz RFID模組介紹
選購RFID模組時,需要留意底下幾項規格: •輸入電壓:5V或3.3V。 •無線通訊頻率和協定:通常是125KHz或13.56MHz,彼此並不相容 。 •資料介面
參閱 17-7
13.56MHz Mifare RFIDRC522模組介紹
參閱 17-9
讀取Mifare RFID卡的 UID碼
Mifare屬於接近式,這種類型的卡 片簡稱為PICC(Proximity IC Card ,接近式IC卡),讀寫器則簡稱 PCD(Proximity Coupling Device,接近型耦合器),每張 Mifare卡片都有個唯一識別碼 (unique identifier,簡稱UID)。
Mifare(讀音:my-fare)是NXP(恩智普)半導體公司推出的 非接觸型IC卡,載波頻率13.56MHz。
Mifare卡內建EEPROM、具備「防衝突處理」機制。 停車場感應幣以及RFID模組套件包含的RFID實驗卡,都是 “Mifare Classic”類型,其內部的EEPROM記憶體容量為1KB。
SAK代表select acknowledge(選擇應答) ,是由卡片發給讀寫器,對 於選擇卡片命令的回應。 Mifare Classic的SAK值為 0x18。
參閱 17-12
參閱 17-13
讀取Mifare卡片的UID碼:
程式片段
// 確認是否有新卡片 19. if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { 20. byte *id = mfrc522.uid.uidByte; // 取得卡片的UID 21. byte idSize = mfrc522.uid.size; // 取得UID的長度 22. 23. Serial.print("PICC type: "); // 顯示卡片類型 24. // 根據卡片回應的SAK值(mfrc522.uid.sak)判斷卡片類型 25. MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); 26. Serial.println(mfrc522.PICC_GetTypeName(piccType)); 27. 28. Serial.print("UID Size: "); // 顯示卡片的UID長度值 29. Serial.println(idSize);
程式第20行宣告一個指向儲存UID值的指標變 數(假設UID碼的長度為4):
第25行的“MFRC522::PICC_Type”代表引用在MFRC522類別(程式庫)裡 面定義的PICC_Type這個資料類型,其中的雙冒號(::)是C++語言的範圍解 析運算子(scope-resolution operator),用來表示“PICC_Type”定義在 MFRC522程式庫裡面。如果不用雙冒號指出“PICC_Type”資料類型的來源 ,程式編譯器會產生未定義之類的錯誤。
UID(唯一識別碼)的長度和內容,可從底下兩個屬性值取得: •MFRC522物件.uid.size:包含UID的長度 •MFRC522物件.uid.uidByte:包含UID碼的陣列
參閱 17-11
讀取Mifare卡片的UID碼
讀取Mifare卡片的流程如下 ,讀寫器在操作卡片時,都 會經過三次雙向認證,互相 驗證使用的合法性,而且通 訊過程中的所有數據都經過 加密,以確保安全。
參閱 17-10wk.baidu.com
操控Mifare模組的 MFRC522程式庫
本單元程式採用Miki Balboa開 發的這個MFRC522程式庫來操 控Mifare模組。
本單元使用到的MFRC522程式物件的方法和屬性: •MFRC522物件.PCD_Init():初始化MFRC522讀卡機模組 •MFRC522物件.PICC_IsNewCardPresent():是否感應到新的卡片 •MFRC522物件.PICC_ReadCardSerial():讀取卡片的資料 •MFRC522物件.PICC_GetType():取得卡片類型 •MFRC522物件.PICC_GetTypeName():取得卡片類型名稱
相关文档
最新文档