2019年8月16日 星期五

RFID 讀卡模組運用

RFID 讀卡模組運用






硬體介紹

  • 本RFID模組採用MFRC522晶片,支援SPI、UART和I2C三種通訊模式。
  • 可讀取卡片類型有:mifare1 S50、mifare1 S70、mifare UltraLight、mifare Pro、mifare Desfire。
  • 此模組電源電壓可支援5V及3.3V兩種。

通訊模式設置

通訊模式
指撥開關 1
指撥開關 2
SPI
(目前僅找到支援SPI通訊的函式庫)
NO
OFF
UART
OFF
NO
I2C
NO
特殊:選擇I2C位址

SPI通訊硬體接線


RFID模組
Arduino UNO
GND
GND
VIN
5V
SS
10
SCK
13
MISI(錯誤,應為MOSI)
11
MISO
12
3V3
不用接
RST
5

函式庫

  • MFRC522.cpp
  • MFRC522.h
下載附件,解壓縮至Arduino安裝路徑(或使用者資料夾)下的/libraries
目前這個函式庫可以使用在Uno中,可能無法使用在Due中。

範例

Arduino IDE中,File>Examples>MFRC522>Examples>Read_RFID_Card

程式步驟

1. 引入函式庫 #include <MFRC522.h>
2. 宣告MRFC522變數(建構MFRC522實體) - MFRC522 rfid(PinSS, PinRST);
3. 呼叫初始化函式init() - rfid.Init()
4. 搜尋RFID卡片,Request()
5. 讀取卡號,Anticoll()
6. 命令RFID卡片進入睡眠模式,Halt()

函式說明


MFRC522(int PinSS, int PinRST)  (ps.建構子如回傳值)
  • PinSS:SlaveSelect的引腳,SPI通訊時會將此引腳拉低,表示通訊對象為此裝置。實體接線就是模組上標示SS的接腳。 
  • PinRST:Reset,重置 
unsigned char MFRC522::Request(uchar reqMode, uchar *TagType) 
  • regMode:搜尋模式,定義在MFRC522.h中 
  • TagType:返回卡片型態代碼,存入TagType所指向的記憶體位址中,通常宣告一個字串變數來儲存傳回值。 
  • 返回值:MI_OK表示成功 
uchar MFRC522::Anticoll(uchar *serNum) 
  • serNum:回傳4 bytes卡號存入SerNum中,一般宣告一個char[]來儲放。

MFRC522函式庫解析

底層SPI讀寫通訊函式

  • uchar Read_MFRC522(uchar addr) 
  • void Write_MFRC522(uchar addr, uchar val) 
這兩個函式使用SPI.transfer()將資料傳送到晶片外部引腳

基本功能函式:

  • ClearBitMask()-清除(為0)暫存器之指定位元 
  • SetBitMask()-設定(為1)暫存器之指定位元 
ClearBitMask(uchar reg, uchar mask) 

按mask中指定為'1'的位元,將reg中的相應位元清除為'0' (其他位元保持不變)

SetBitMask(uchar reg, uchar mask) 

按mask中指定為'1'的位元,將reg中的相應位元設定為'1' (其他位元保持不變)

範例:欲將CommIrqRegbit7清除為'0',其餘位元保持原先狀態。
程式碼:
ClearBitMask(CommIrqReg, 0x80);
功能說明:將Set1設定為'0',以清除bit[6..0]中標示為'1'的中斷旗標。
範例:欲將BitFramingRegbit7設定為'1',其餘位元保持原先狀態。
程式碼:
SetBitMask(BitFramingReg, 0x80);
功能說明:將StartSend設定為'1'會驅使MFRC522晶片開始執行Transceive命令

程式設計會直接運用到的函示:

  • uchar MFRC522_Request(uchar reqMode, uchar *TagType) 
  • uchar MFRC522_Anticoll(uchar *serNum) 
  • void MFRC522_Halt(void)

沒有留言:

張貼留言

2024產專班 作業2 (純模擬)

2024產專班 作業2  (純模擬) 1) LED ON,OFF,TIMER,FLASH 模擬 (switch 控制) 2)RFID卡號模擬 (buttom  模擬RFID UID(不從ESP32) Node-Red 程式 [{"id":"d8886...