感知节点@8@ ESP32+arduino+ 第六个程序 读取射频卡卡号

news/2025/10/25 13:04:25/文章来源:https://www.cnblogs.com/excellentHellen/p/19164365

 一、硬件与接线

1.1  RFID  RC552

image

 

MFRC522简化功能框图:

先从RC522功能框图入手,可以从大方向上理解通讯原理。

3992be62-abc8-41f8-a5c1-73241f36d208

 

上述主机一般指的就是手上的开发板,通信接口对应天线,MFRC522与主机通讯支持UART、SPI以及IIC,本人采用SPI通讯方式。

MFRC522与主机SPI通讯引脚配置:

0b59a347-5680-4cff-8acd-4f903890df35

 

 

 

1.2 NodeMCU-32S 引脚图( 基于ESP32-32S 模组设计的一款较为经典的ESP32开发板)

image

 

 

1.3 ESP32-WROOM-32 引脚图

 

QQ_1761357799550

 1.4 引脚接线

// 接线
// ESP32开发板    RC522模块
// GPIO15          SDA
// GPIO18          SCK
// GPIO23          MOSI
// GPIO19          MISO
// 无              IRQ
// GND            GND
// GPIO4          RST
// VCC            3.3V

二、电子标签的存储数据及操作程序

2.1 MIFARE Classic 1K 基本规格

S50卡,又称Mifare 1K,是NXP公司基于MF1 IC S50芯片研发的非接触智能卡,属于MIFARE Classic EV1系列产品。该卡符合ISO14443A标准,工作频率为13.56MHz,存储容量为1K Bytes(8Kbit),支持4或7字节唯一UID识别,主要应用于门禁、公共交通代币卡、电子门票及物流管理等领域。

M1卡存储器,分为16个扇区,每个扇区对应4块(块0-块3),共64块,编号为0-63。

8d5c7fd8-eb01-4c9d-b566-e9c8300403de

第0扇区的第0块用于存放厂商代码,已经固化无法更改。其余区的第0-2块用于存放数据,块3为控制块用于存放密码A、存取控制、密码B。

块3结构举例如下:

A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5 
(密码A 6字节) (存储控制 4字节) (密码B 6字节)

 举例如下:

image

 2.2 读取S50卡(Mifare 1K)内的存储数据

2.2.1 安装 arduino的库

3a0baf66a748f3935505a62fe8b53b5c

 2.2.2  文件-示例-MFRC522-DumpInfo程序-修改-执行

ab6ebc6a0fd4530acf86d4753b5f6cdb

 程序运行,串口打印 S50卡信息。

QQ_1761365894121

 

 

 2.2.3  复杂程序,读取并打印卡序列号

#include <SPI.h>
#include <MFRC522.h>
// 接线
// ESP32开发板    RC522模块
// GPIO15          SDA
// GPIO18          SCK
// GPIO23          MOSI
// GPIO19          MISO
// 无              IRQ
// GND            GND
// GPIO4          RST
// VCC            3.3V
#define RST_PIN         4           //  D1
#define SS_PIN          15           // D2MFRC522 mfrc522(SS_PIN, RST_PIN);   // 创建新的RFID实例
MFRC522::MIFARE_Key key;void setup() {Serial.begin(115200); // 设置串口波特率为9600SPI.begin();        // SPI开始mfrc522.PCD_Init(); // 初始化MFRC522卡Serial.println("初始化完成...");// 初始化密钥for (byte i = 0; i < 6; i++) {key.keyByte[i] = 0xFF;}
}void loop() {// 寻找新卡if (!mfrc522.PICC_IsNewCardPresent()) {//Serial.println("没有找到卡");return;}// 选择一张卡if (!mfrc522.PICC_ReadCardSerial()) {Serial.println("没有卡可选");return;}// 显示卡片的详细信息Serial.print(F("卡片 UID(十六进制):"));dump_byte_array(mfrc522.uid.uidByte, mfrc522.uid.size);String uidStr = "";Serial.println();for (int i = 0; i < sizeof(mfrc522.uid.uidByte); i++) {// 将每个16进制数转换为两位数的字符串char hexStr[3];sprintf(hexStr, "%02X", mfrc522.uid.uidByte[i]);uidStr += hexStr;}Serial.print(F("卡片字符串:"));Serial.println(uidStr);Serial.print(F("卡片 UID(十进制):"));// dump_byte_array_dec(mfrc522.uid.uidByte, mfrc522.uid.size);
  Serial.println();Serial.print(F("卡片类型: "));MFRC522::PICC_Type piccType = mfrc522.PICC_GetType(mfrc522.uid.sak);// Serial.println(mfrc522.PICC_GetTypeName(piccType));// 检查兼容性if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI&& piccType != MFRC522::PICC_TYPE_MIFARE_1K&& piccType != MFRC522::PICC_TYPE_MIFARE_4K) {Serial.println(F("仅仅适合Mifare Classic卡的读写"));return;}// 进行身份验证byte blockAddr = 1; // 选择要读取的块地址MFRC522::StatusCode status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockAddr, &key, &(mfrc522.uid));if (status != MFRC522::STATUS_OK) {Serial.print(F("身份验证失败?或者是卡链接失败: "));Serial.println(mfrc522.GetStatusCodeName(status));return;}// 读取数据byte buffer[18];byte size = sizeof(buffer);status = mfrc522.MIFARE_Read(blockAddr, buffer, &size);if (status != MFRC522::STATUS_OK) {Serial.print(F("读取失败: "));Serial.println(mfrc522.GetStatusCodeName(status));return;}// 停止 PICC
  mfrc522.PICC_HaltA();// 停止加密 PCD
  mfrc522.PCD_StopCrypto1();
}/**将字节数组转储为串行的十六进制值
*/
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);}
}/**将字节数组转储为串行的十进制值
*/
void dump_byte_array_dec(byte *buffer, byte bufferSize) {for (byte i = 0; i < bufferSize; i++) {Serial.print(buffer[i] < 10 ? " 0" : " ");Serial.print(buffer[i], DEC);}
}
View Code

 

  2.2.4  简化程序,读取并打印卡序列号

#include <SPI.h>
#include <MFRC522.h>#define RST_PIN 4     // 复位引脚
#define SS_PIN  15    // 片选引脚MFRC522 mfrc522(SS_PIN, RST_PIN);void setup() {Serial.begin(115200);SPI.begin();mfrc522.PCD_Init();Serial.println("RFID读卡器初始化完成,请刷卡...");
}void loop() {// 检测新卡if (!mfrc522.PICC_IsNewCardPresent()) return;// 读取卡序列号if (!mfrc522.PICC_ReadCardSerial()) return;// 打印卡号(十六进制)Serial.print("CardID(HEX): ");for (byte i = 0; i < mfrc522.uid.size; i++) {Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");Serial.print(mfrc522.uid.uidByte[i], HEX);}// 打印卡号(十进制)Serial.print("\nCardID(DEC): ");for (byte i = 0; i < mfrc522.uid.size; i++) {Serial.print(mfrc522.uid.uidByte[i], DEC);Serial.print(" ");}//Serial.println("\n------------------");// 停止操作
  mfrc522.PICC_HaltA();mfrc522.PCD_StopCrypto1();
}
View Code

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/946103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个关于cos的极限

\[\lim_{x\to 0}\dfrac{1 - \cos x}{x} = 0 \]第一种推导方法:使用勾股定理。 \[\begin{align*} \lim_{x\to 0}\dfrac{1 - \cos x}{x} &= \lim_{x\to 0}\dfrac{1 - \cos x}{x}\cdot \dfrac{1 + \cos x}{1 + \cos …

Ai元人文:共识锚定

从“概率模仿与监管”到“共识锚定与生成” 当前人工智能的发展正面临一个根本性瓶颈:如何让智能系统理解、承载并协同人类复杂多元的价值体系。传统的“价值对齐”范式在技术上主要依赖于统计拟合与行为约束:通过在…

QEMU 建模硬件

QEMU 建模硬件场景 建模一个RISCV架构的虚拟板卡G233 G233的datasheet如下 https://gevico.github.io/learning-qemu-docs/ch4/g233-board-datasheet/ 前置 [[QEMU 初始化流程]] 看完初始化流程之后再研究怎么建模新硬…

P14304 【MX-J27-T1】分块

P14304 【MX-J27-T1】分块 题解题目传送门 My Blog 我们发现这个题是 T1,但它的 \(n\) 很大,于是我们可以合理推断这是个结论题或诈骗题。 我们考虑 \([m^2,(m+1)^2)\) 这个区间里有哪些数满足题中所述的条件。显然 …

实现安卓scrollview里的多个按钮实现的每个按钮单选功能

实现安卓scrollview里的多个按钮实现的每个按钮单选功能void initPatterns(LinearLayout PatternsRoot){for(int i=0;i<512;i++){Button patternButton = new Button(PianoRollActivity.this);patternButton.setTex…

ABP - 懒加载 [ILazyServiceProvider、DefaultLazyServiceProvider、LazyServiceProvider]

懒加载 对于 ABP 框架的懒加载机制,核心是围绕 ILazyServiceProvider 接口及其实现类展开的。作为新手,你可以简单理解为:它是 ABP 提供的“延迟获取服务的工具”,能让你在需要时才创建服务实例,而不是一开始就初…

三角函数的2倍角公式

根据 \(\cos(x + y) = \cos x\cos y - \sin x\sin y\) 和 \(\sin(x + y) = \sin x\cos y + \cos x\sin y\)(具体看这里)。 我们可以得到 \(\cos 2x = \cos(x + x) = \cos^2x - \sin^2 y = 1 - 2\sin^2y = 2\cos^2y -…

FFmpeg开发笔记(八十五)基于PyQt和FFmpeg的开源视频剪辑器OpenShot

《FFmpeg开发实战:从零基础到短视频上线》一书的“第 12 章 FFmpeg的移动开发”介绍了如何使用FFmpeg在手机上剪辑视频,方便开发者更好地开发类似剪映那样的视频剪辑软件。那么在桌面系统上还有一款开源视频剪辑框架…

2025年铁氟龙高温线厂家权威推荐榜:极细铁氟龙/UL10064铁氟龙/UL1332铁氟龙/UL1867铁氟龙/UL10064极细铁氟龙/UL1332极细铁氟龙/UL1867极细铁氟龙专业供应商

2025年铁氟龙高温线厂家权威推荐榜:极细铁氟龙/UL10064铁氟龙/UL1332铁氟龙/UL1867铁氟龙/UL10064极细铁氟龙/UL1332极细铁氟龙/UL1867极细铁氟龙专业供应商 随着电子设备向小型化、高性能化方向发展,铁氟龙高温线作…

2025年工业风扇厂家权威推荐榜:直流风扇、显卡散热风扇、一体机风扇、轴流风扇及散热风扇专业选购指南

2025年工业风扇厂家权威推荐榜:直流风扇、显卡散热风扇、一体机风扇、轴流风扇及散热风扇专业选购指南 随着工业4.0和智能制造的深入推进,散热风扇作为关键热管理组件,其技术含量和市场要求正经历显著提升。工业风扇…

2025年除尘设备厂家权威推荐榜:除尘器/脉冲除尘器/中央脉冲除尘器/工业除尘器源头企业综合测评与选购指南

2025年除尘设备厂家权威推荐榜:除尘器/脉冲除尘器/中央脉冲除尘器/工业除尘器源头企业综合测评与选购指南 随着环保政策的持续收紧和工业制造升级的加速推进,除尘设备行业正迎来技术革新的关键时期。作为工业生产环境…

2025年提升机厂家权威推荐榜:自动提升机专业选购指南,高效稳定与安全性能深度解析

2025年提升机厂家权威推荐榜:自动提升机专业选购指南,高效稳定与安全性能深度解析 在工业自动化快速发展的今天,提升机作为物料输送系统的核心设备,其性能直接影响生产效率和运营成本。自动提升机凭借智能化控制、…

2025年冷水机/冷冻机/冰水机厂家权威推荐榜:工业制冷设备实力解析与高效节能口碑之选

2025年冷水机/冷冻机/冰水机厂家权威推荐榜:工业制冷设备实力解析与高效节能口碑之选 工业制冷设备作为现代制造业的重要基础设施,在塑料成型、食品加工、电子制造、医药化工等众多领域发挥着不可替代的作用。随着&q…

2025年服装厂家推荐排行榜:棒球帽,卫衣,羽绒服,春秋季运动休闲服饰源头厂家精选

2025年服装厂家推荐排行榜:棒球帽,卫衣,羽绒服,春秋季运动休闲服饰源头厂家精选 随着运动休闲服饰市场的持续升温,棒球帽、卫衣和羽绒服作为三大核心品类,在消费升级和个性化需求的双重驱动下呈现出蓬勃发展的态…

2025女丘

设 \[f(x)=\frac{x^2-3x+3}{x^2-x+1} \]对于所有正整数 \(n\),求 \(f^{(n)}(x)\)。 设 \(A,B\) 是实对称矩阵,证明:\(tr(ABAB)\le tr(A^2B^2)\),并求出等号成立的充分必要条件。 设 \(a,z,w\) 为复数,其中 \(|a|\…

详细介绍:OpenLayers的OGC服务 -- 章节一:WMS服务详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

netcore vue grpc、http grpc

netcore vue grpc、http grpc vue 前端 一、项目准备创建 vue 项目$ cd E:\code# 创建 vue 项目 $ vue create apricot-grpc-> 1、选择 Vue3安装依赖$ npm install grpc-web --save$ npm install google-protobuf -…

Go 的跨平台编译详解 - 指南

Go 的跨平台编译详解 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco",…

2025年上海久宙集团深度解析:技术护城河与标准话语权的双重验证

引言 本文从“技术领先与专利护城”这一核心维度切入,结合行业标准制定、质量认证体系、下游应用反馈与第三方检测数据,为读者提供一份可验证、可复盘的客观参考。全文不展开宏大叙事,只聚焦“技术—专利—标准”闭…

2025年上海久宙集团:深度解析其技术护城河与行业话语权

引言 本文聚焦“技术领先与标准制定”维度,拆解上海久宙集团如何在分子筛与活性氧化铝赛道构建专利壁垒、主导行业规则,为采购方、投资机构及监管部门提供一份可验证的客观参照。 背景与概况 上海久宙集团成立于2002…