零知开源快速入门32-RC522 NFC模块读写NFC卡片 门禁卡 白卡

本实验使用RC522模块扫描NFC卡片信息。

一、工具原料

电脑,windows系统
零知开发板
micro-usb线
RC522 模块
门禁卡、白卡等NFC卡片

二、硬件连接

1、硬件连接示意图

2、实际连接

三、方法步骤

1、打开零知实验室软件开发工具,然后新建项目,输入以下代码:

2、按照之前的方式先【编译】,然后【上传】到开发板中。


							
	#include <SPI.h>
	#include "RFID.h"
	 
	//D10 - 读卡器CS引脚、D5 - 读卡器RST引脚
	RFID rfid(10,5);   
	unsigned char status;
	unsigned char str[MAX_LEN];  //MAX_LEN为16,数组最大长度
	 
	void setup()
	{
	  Serial.begin(9600);
	  SPI.begin();
	  rfid.init(); //初始化
	}
	 
	void loop()
	{
	  //Search card, return card types
	  if (rfid.findCard(PICC_REQIDL, str) == MI_OK) {
	    Serial.println("Find the card!");
	    // Show card type
	    ShowCardType(str);
	    //防冲突检测,读取卡序列号
	    if (rfid.anticoll(str) == MI_OK) {
	      Serial.print("The card's number is  : ");
	      //显示卡序列号
	      for(int i = 0; i < 4; i++){
	        Serial.print(0x0F & (str[i] >> 4),HEX);
	        Serial.print(0x0F & str[i],HEX);
	      }
	      Serial.println("");
	    }
	    //选卡(锁定卡片,防止多数读取,去掉本行将连续读卡)
	    rfid.selectTag(str);
	  }
	  rfid.halt();  //命令卡片进入休眠状态
	}
	 
	void ShowCardType(unsigned char * type)
	{
	  Serial.print("Card type: ");
	  if(type[0]==0x04&&type[1]==0x00) 
	    Serial.println("MFOne-S50");
	  else if(type[0]==0x02&&type[1]==0x00)
	    Serial.println("MFOne-S70");
	  else if(type[0]==0x44&&type[1]==0x00)
	    Serial.println("MF-UltraLight");
	  else if(type[0]==0x08&&type[1]==0x00)
	    Serial.println("MF-Pro");
	  else if(type[0]==0x44&&type[1]==0x03)
	    Serial.println("MF Desire");
	  else
	    Serial.println("Unknown");
	}
						
							
						

四、成果展示

将上述代码验证后上传到零知板,就可以看到测试结果了。这里打开串口调试窗口后,将NFC门禁卡靠近RC522天线区域,就可以扫描到NFC卡的信息:



附件:完整的工程代码-  RC522-SerialNumberRead.7z(点击下载)