请选择 进入手机版 | 继续访问电脑版
凡是官网购买产品,均可以获得积分,(积分可以用来下载技术资料)还可以获得精致技术支持。零知实验室可提供全套电子方案定制服务,了解详情请咨询客服。           
查看: 1449|回复: 3

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

[复制链接]
发表于 2019-6-27 19:38:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本实验使用RC522模块扫描NFC卡片信息。
一、工具原料
  • 电脑,windows系统
  • 零知开发板
  • micro-usb线
  • RC522 模块
  • 门禁卡、白卡等NFC卡片

二、硬件连接

rc522-连接.jpg


连线示意图:

rc522-连线.jpg

三、软件代码


[C++] 纯文本查看 复制代码

#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-findcard.jpg


附件:完整的工程代码- RC522-SerialNumberRead.7z (5.08 KB, 下载次数: 32)
回复

使用道具 举报

发表于 2019-11-17 23:05:34 | 显示全部楼层
本帖最后由 西门吹水 于 2019-11-17 23:08 编辑

请教一下: mini.png
如果是迷你版,SPI接口是不是SCK接A5,MOSI接A7,MISO接A6;
初始化RFID rfid(PA4,PB6);RST接PB6,SDA接A4
有人用迷你版做过么file:///D:/%E7%94%A8%E6%88%B7%E7%9B%AE%E5%BD%95/%E6%88%91%E7%9A%84%E5%9B%BE%E7%89%87/mini.png


回复

使用道具 举报

发表于 2019-11-17 23:21:04 | 显示全部楼层
用零知IDE 我按这样的SPI接,初始化RFID rfid(PA4,PB6);RST接PB6,SDA接A4 ,编译通过后上传没反应

一样的接法,使用Arduino,打开 RC522的例子,#define SS_PIN PA4   #define RST_PIN PB6
RFID rfid(SS_PIN, RST_PIN); // Instance of the class读取正常

大家如果有用迷你版零知IDE通过的,告知下,谢谢啦
回复

使用道具 举报

 楼主| 发表于 2019-11-18 09:02:46 | 显示全部楼层
西门吹水 发表于 2019-11-17 23:21
用零知IDE 我按这样的SPI接,初始化RFID rfid(PA4,PB6);RST接PB6,SDA接A4 ,编译通过后上传没反应

一样的 ...

按照引脚图来接线,不是随便接的:

20191118090134.jpg

代码里面直接用数字标识的引脚即可,按照上面教程在迷你板上是一样的。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版| 小黑屋| 零知实验室 ( 粤ICP备17040594号-3 )

GMT+8, 2020-2-25 20:21 , Processed in 0.086383 second(s), 19 queries .

快速回复 返回顶部 返回列表