ESP8266 对接RFID RC522 设备读取门禁卡


前言

在本篇文章中,您将 使用ESP8266,连接到RFID RC522 设备上,读取门禁卡上的设备信息。本文提供了一个实用示例,以帮助您更好地学习它。


一、所需材料

  • ESP8266开发板
  • rfid-rc522
  • 杜邦线
  • 面包板

二、电路接线图和实物图

  • 实物图
    在这里插入图片描述
    在这里插入图片描述

  • 接线图:
    在这里插入图片描述

三 RC522 基础知识普及

想要驱动RC522模块对IC卡(这里用的是M1卡型号是S50)进行读写操作,一定要有以下5个步骤:
一、寻卡
二、防冲突
三、选择卡
四、验证扇区密码(每个扇区都有密匙A和密匙B,验证正确才能对该扇区的某块进行读写)
五、读/写
硬件方面与单片机I/O口连好,使用SPI通信的时候NSS就是SDA引脚,IRQ悬空。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、 RFID库安装

  • 软件及代码部分
  • 初次使用arduino的同学要先下载这几个库文件,步骤如下:首先打开工具,找到管理库
  • 在这里插入图片描述
    搜索并下载安装MFRC522库文件
    在这里插入图片描述

五、 Arduino代码解析

代码如下

 
 #include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         6           
#define SS_PIN          5          
 
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

MFRC522::MIFARE_Key key;
String carid="";
/**
 * Initialize.
 */
void setup() {
    Serial.begin(9600); // Initialize serial communications with the PC
    while (!Serial);    // Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4)
    SPI.begin();        // Init SPI bus
    mfrc522.PCD_Init(); // Init MFRC522 card

    
}

/**
 * Main loop.
 */
void loop() {
    // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
    if ( ! mfrc522.PICC_IsNewCardPresent())
        return;

    // Select one of the cards
    if ( ! mfrc522.PICC_ReadCardSerial())
        return;

    // Show some details of the PICC (that is: the tag/card)
    Serial.print(F("Card UID:"));
    dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);
    Serial.println();
    Serial.print(F("PICC type: "));
    MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);
    //Serial.println(mfrc522.PICC_GetTypeName(piccType));
  
    Serial.println();

    // Halt PICC
    mfrc522.PICC_HaltA();
    // Stop encryption on PCD
    mfrc522.PCD_StopCrypto1();
}

/**
 * Helper routine to dump a byte array as hex values to Serial.
 */
void dump_byte_array(byte *buffer, byte bufferSize) {
    for (byte i = 0; i < bufferSize; i++) {
        Serial.print(buffer[i] < 0x10 ? " 0" : " ");
        Serial.print(buffer[i], HEX);
    }
}

六、 解析过程实物展示

刷卡信息展示
在这里插入图片描述
在这里插入图片描述
连接成功之后,就可以看到不停的有设备的数据信息读取出来。

Card UID
Card SAK
PICC type: MIFARE 1KB
Sector Block
stack
ctx: cont

七、总结

以上就是今天要讲的内容,本文仅仅简单介绍 RFID的读取,后续讲介绍16个扇区的写入功能,arduino 现在已经非常的成熟了,是一个非常成熟的解决方案了。
并且rfid 也挺成熟的了,可以购买个 rc522 自己研究下,主要是接线多点。
用到了 spi 和 两个 gio的针脚。

*玩转esp8266 ESP32 喜欢的朋友请加入我微信 ilinker32 有偿技术咨询 *

如果我的创作对你有帮助 ,那么你的鼓励将是我创作的最大动力!非常感谢。

  • 13
    点赞
  • 110
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是连接RFID-RC522模块到ESP8266并在Arduino IDE上运行的步骤: 材料: - ESP8266开发板 - RFID-RC522模块 - 杜邦线(至少需要7根) 步骤: 1. 连接RFID-RC522模块到ESP8266开发板 - 将RFID-RC522模块的SCK引脚连接到ESP8266的D5引脚 - 将RFID-RC522模块的MOSI引脚连接到ESP8266的D7引脚 - 将RFID-RC522模块的MISO引脚连接到ESP8266的D6引脚 - 将RFID-RC522模块的SS引脚连接到ESP8266的D8引脚 - 将RFID-RC522模块的RST引脚连接到ESP8266的D0引脚 - 将RFID-RC522模块的3.3V引脚连接到ESP8266的3.3V引脚 - 将RFID-RC522模块的GND引脚连接到ESP8266的GND引脚 2. 下载并安装MFRC522库 - 在Arduino IDE中打开“库管理器”(菜单栏:工具 > 管理库) - 搜索“MFRC522”库 - 选择最新版本并点击“安装” 3. 编写代码 - 在Arduino IDE中打开一个新的空白文件 - 复制以下代码并粘贴到文件中 ```c++ #include <SPI.h> #include <MFRC522.h> #define RST_PIN D0 #define SS_PIN D8 MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建MFRC522实例 void setup() { Serial.begin(9600); // 与电脑通信的串口初始化 SPI.begin(); // 初始化SPI总线 mfrc522.PCD_Init(); // 初始化MFRC522 } void loop() { // 检测是否有新的片出现 if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) { // 输出片的UID Serial.print("UID tag :"); String content = ""; byte letter; for (byte i = 0; i < mfrc522.uid.size; i++) { Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? "0" : ""); Serial.print(mfrc522.uid.uidByte[i], HEX); content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } Serial.println(); Serial.print("Message : "); content.toUpperCase(); if (content.substring(1) == "XX XX XX XX") { Serial.println("Authorized access"); // 这里可以加入执行授权访问的代码 } else { Serial.println("Access denied"); } } } ``` - 将代码上传到ESP8266开发板 4. 测试 - 打开串口监视器(菜单栏:工具 > 串口监视器) - 将一个RFID片放到RFID-RC522模块旁边 - 串口监视器将会显示片的UID - 如果片的UID与代码中的授权UID匹配,则串口监视器将打印“Authorized access”,否则打印“Access denied”
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值