ESP32 RFID教程:打印MFRC522固件版本

介绍

本文旨在介绍如何通过ESP32与MFRC522 RFID读卡器进行通信。本ESP32教程的测试是使用集成在ESP32开发板中的DFRobot的ESP-WROOM-32设备进行的。

由于RFID设备可能非常复杂,我们将从打印其固件版本这样一个简单的示例入手,然后在后面的教程中再深入介绍更复杂的功能。

硬件

如上所述,我们将使用一个MFRC522 RFID设备,它集成于非常便宜且可直接使用的模块中,该模块包含了两个RFID卡,如图1中所示。

ESP32 RFID教程:打印MFRC522固件版本_第1张图片
图1 - MFRC522模块

关于ESP32 FireBeetle开发板与MFRC522之间的连接,请查看图2电路图。请注意,如果您使用的是其它ESP32开发板,则需要考虑引脚的差异。ESP32的引脚名称是FireBeetle开发板上标注的引脚名称。

ESP32 RFID教程:打印MFRC522固件版本_第2张图片
图2 - ESP32 FireBeetle开发板与MFRC522模块之间的连接图

由于MFRC522的工作电压为3.3 V [1],所以我们可以直接使用FireBeetle开发板的3.3 V引脚为其供电。 或者,如果您的开发板没有可用的3.3 V电源引脚,也可以使用外部3.3V电源为其供电,但外部电源要与MFRC522共地连接。
当然,ESP32与MFRC522模块之间也要连接公共的GND,按照电路图所示连接相应的引脚。
由于我们将使用SPI协议与MFRC522通信,所以我们需要连接设备上的相应引脚。MFRC522的MISO、MOSI和SCK引脚应连接至FireBeetle开发板上标记了相同名称的引脚。
对于SPI协议的Slave Select引脚(从属设备选择,SS),值得注意的是,大部分的MFRC522模块都将其标记为SDA。在此示例中,我将它连接至ESP32开发板的SDA/IO21引脚(ESP32 GPIO21),当然,您也可以使用其它数字输出引脚,只要在软件程序中将此引脚指定为Slave Select引脚即可。
MFRC522模块还有一个重置输入引脚,我将它连接了ESP32开发板的SLC/IO22引脚 (ESP32 GPIO22)。同样,我们需要在软件中指定所使用的这个引脚,当然,您也可以使用其它输出引脚。
由于未使用IRQ引脚,所以我们将悬空IRQ引脚。这个引脚与中断功能有关[1]。

软件库文件

与MFRC522设备的低层交互并非易事。因此,我们将使用Arduino库文件处理大部分细节,这些库文件提供了更简单、更高层级的接口。
我们将要使用的库文件为MFRC522.h,点击此处可在GitHub上找到该文件。通过Arduino IDE库管理器是安装此库文件的最简单方法。
问Arduino IDE中库文件管理器并安装上述库文件的路径为:sketch ->Include library – > Manage libraries。 在打开的弹出窗口中,只需搜索“rfid”并安装图3中突出显示的那个库文件即可。

ESP32 RFID教程:打印MFRC522固件版本_第3张图片
图3 - 通过Arduino IDE库文件管理器安装RFID库文件

这个库文件附带了许多可以在Arduino IDE上直接访问的示例,或者您可以点击此处在GitHub上查看。

在本教程中,我将使用1.3.6版本的库文件,这是在撰写本文时最新的版本。

代码

首先,我们需要引用一些库文件。我们将引用之前安装的MFRC522.h库文件,以便使用与设备交互所需的所有函数。

#include 
 
#include 

由于我们将通过SPI协议与RFID读卡器进行通信,所以我们还需要引用SPI.h库文件。

[/align]const int resetPin = 22; // Reset pin
 
const int ssPin = 21; // Slave select pin

接下来,我们将通过定义一些常量,更准确地说,是确定Slave Select(从属设备选择,SS)引脚的编号和复位引脚的编号。参照先前的电路图,我将ESP32引脚22指定为复位引脚,将引脚21指定为Slave Select引脚,当然,也可以使用其他引脚。

MFRC522 mfrc522 = MFRC522(ssPin, resetPin); // Create instance

接下来,我们需要创建一个MFRC522类对象,以便利用它与RFID阅读器交互的方法。我们将这个构造函数的输入参数设置为刚刚定义的ssPin和resetPin变量。

Serial.begin(115200);
 
SPI.begin();

然后,我们将编写Arduino setup函数。首先,我们将初始化串口,以便可以打印从设备获得的信息。我们还将初始化SPI接口,以便能够与MFRC522进行通信。

mfrc522.PCD_Init();

接下来,我们需要初始化MFRC522设备。幸运的是,这个库文件隐藏了低层细节,我们只需调用mfrc522对象的PCD_Init方法即可,此方法的使用在以前的教程中有详细的介绍。此方法调用不带参数,其返回值为空(void)。
在初始化完成后,我们要把固件的版本信息打印到串口。同样,只需简单地调用mfrc522对象的方法即可完成。我们调用了PCD_DumpVersionToSerial方法,此方法调用不带参数,其返回值为空(void)。

#include 
 
#include 
 
  
 
const int resetPin = 22; // Reset pin
 
const int ssPin = 21;    // Slave select pin
 
  
 
MFRC522 mfrc522 = MFRC522(ssPin, resetPin); // Create instance
 
  
 
void setup() {
 
  Serial.begin(115200);
 
  SPI.begin();   
 
  
 
  mfrc522.PCD_Init();
 
  mfrc522.PCD_DumpVersionToSerial();  
 
  
 
}
 
  
 
void loop() {}

请注意,此方法将把信息打印到串口,这就是它返回void的原因。本教程的完整代码如下所示,其中包含了此函数调用。
测试代码
为了测试此代码,在正确连接所有硬件后,只需编译代码并将其上传到ESP32开发板上即可。编译时,您可能会收到一条警告消息,如图4所示。您可以放心地忽略它。

在这里插入图片描述
图4 - 编译ESP32代码时的警告消息

上传完成后,只需打开串口并检查输出结果。您将得到类似于图5的结果,它包含了MFRC522固件版本的打印信息。
请注意,程序启动和内容打印之间没有延迟,因此您可能需要重置ESP32才能捕获到串口监视器上的输出结果。

ESP32 RFID教程:打印MFRC522固件版本_第4张图片
图5 - MFRC522设备的固件版本

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。
他写了200多篇有关ESP32、ESP8266的有用的教程和项目。涉及arduino、micropython、 Picoweb、Espruino、Bluetooth、RFID、IDF……等等非常广泛,说是最全的完全不为过。

精华教程:

ESP32 MicroPython教程:uPyCraft IDE入门
ESP32 MicroPython教程:解析JSON
ESP32 MicroPython教程:MicroPython支持
ESP32 MicroPython教程:连接Wi-Fi网络
ESP32 / ESP8266 MicroPython教程:自动连接WiFi
ESP32 / ESP8266 MicroPython教程:从文件系统运行脚本
ESP32 / ESP8266 MicroPython教程:HTTP GET请求
ESP32 Arduino教程:用于构建ESP32编译环境的Arduino IDE软件
ESP32 Arduino教程:FreeRTOS队列性能测试
ESP32 RFID教程:打印MFRC522固件版本
ESP32 Picoweb教程:获取请求的HTTP方法
……

还有更多教程: ESP32教程 合集

英文版 :ESP32 tutorial合集

你可能感兴趣的:(ESP32,RFID)