RFID-RC522门禁

Arduino与RC522连线方法

在这里插入图片描述

RC522引脚Arduin引脚
SDA自定义
SCK13(SCK)
MOSI11(MOSI)
MISO12(MISO)
GNDGND
RST自定义
3.33.3V

以下程序在UID读卡程序上改进,添加卡片验证功能,并添加卡片功用。

#include <SPI.h>
#include <MFRC522.h>
 
#define SS_PIN 10  //定义RC522的SDA引脚的接线位置。
#define RST_PIN 9  //定义RC522的RST引脚的接线位置。


String refid1="";//先声明一个空的字符串全局变量。以便后面存储nuidPICC里面的数据。

 
MFRC522 rfid(SS_PIN, RST_PIN); //实例化类
 
// 初始化数组用于存储读取到的NUID 
byte nuidPICC[4];
 
void setup() { 
  Serial.begin(9600);
  SPI.begin(); // 初始化SPI总线
  rfid.PCD_Init(); // 初始化 MFRC522 
}
 
void loop() {
 
  // 找卡
  if ( ! rfid.PICC_IsNewCardPresent())
    return;
 
  // 验证NUID是否可读
  if ( ! rfid.PICC_ReadCardSerial())
    return;
 
  MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
 
  // 检查是否MIFARE卡类型
  if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&  
    piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
    piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
    Serial.println("不支持读取此卡类型");
    return;
  }
  
  // 将NUID保存到nuidPICC数组
  for (byte i = 0; i < 4; i++) {
    nuidPICC[i] = rfid.uid.uidByte[i];
  }   
  Serial.print("十进制UID:");
  printHex(rfid.uid.uidByte, rfid.uid.size);
  Serial.println();
  
  //对读取的卡号“13023719522”进行比较,注意数据类型。
  if(refid1=="13023719522")		
    {
		//判断为真,执行需要的程序。
		Serial.println("已验证");
      }
    else
    {
    	//判断为假,执行需要的程序。
      Serial.println("验证失败");
      }

  
  // 使放置在读卡区的IC卡进入休眠状态,不再重复读卡
  rfid.PICC_HaltA();
 
  // 停止读卡模块编码
  rfid.PCD_StopCrypto1();
  refid1="";
}
 
void printHex(byte *buffer, byte bufferSize) {
  for (byte i = 0; i < bufferSize; i++) {
    Serial.print(buffer[i] < 0x10 ? " 0" : "");
    
 //这里对nuidPICC进行存储 
    refid1+=nuidPICC[i];
    


  }
   //这里对nuidPICC打印,看是是自己需要的数据。 
  Serial.print(refid1);
}

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值