arduino rc522模块使用

news2024/11/20 16:34:39

rfid IC卡

先了解IC卡一些前置知识。

首先我们会有一张ic卡(M1类型IC卡,一般买到的都是1K存储空间),在rc522代码中会出现这个,就是对IC卡进行检查PICC_TYPE_MIFARE_4KPICC_TYPE_MIFARE_1K就是一种卡片类型不同大小

    //检查兼容性
    if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType != MFRC522::PICC_TYPE_MIFARE_4K)
    {
        Serial.println("无效卡!");
        return;
    }

RC522模块就是阅读器天线以及处理器和寄存器,这些不是写代码关注的重点。

在使用arduinoIDE+esp32 的MFrc522库中,尽管他没有写支持esp32,但是在MFrc522 V2库中SPI的连线可以作用在MFrc522中

SPI的连线是根据ESP32引脚功能来设置的,但是有文章说可以通过SPI来自己自定义设置(库作者没有提供定义的功能),读者可以自行设置

IC卡内部空间

在这里插入图片描述

一个ic的存储结构就是上面的样子,而我们在读取ic卡会选取一个扇区,这个扇区中设置的密钥可以用于ic卡的验证,而ic卡总共有16个,这样可以为一个IC卡提供多个功能,实现一卡多用

同时每个扇区还有其他存储尚未使用,这些存储区可以为IC卡功能分类提供有利的标识,以及权限的标识

读取扇区代码分析

1.读取指定扇区的内容

status = (MFRC522::StatusCode)mfrc522.MIFARE_Read(blockAddr, buffer, &size);

三个参数:1.blockAddr,要读取扇区号
2.buffer,自行设置缓冲区(将IC卡扇区中读取的数据放入的地方)
3.size,读取数据大小

返回值:status,操作状态码,判断条件可以看内容3

2.将内容写入扇区

status = mfrc522.MIFARE_Write(blockAddr, buffer, 16);

三个参数:1.blockAddr,要写入扇区号
2.buffer,自行设置缓冲区
3.size,读取数据大小
返回值:status,操作状态码,判断条件可以看内容3

3.判断写入或者读取操作是否成功

if (status != MFRC522::STATUS_OK)
    {
        Serial.print("写入失败:");
        Serial.println(mfrc522.GetStatusCodeName(status)); //打印错误码
        return;
    } 

4.用密钥进行卡片验证

    status= (MFRC522::StatusCode)mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, blockAddr, &keyA, &(mfrc522.uid)); 

三个参数:1.PICC_CMD_MF_AUTH_KEY_A,使用密钥A位置进行验证
2.blockAddr,扇区号
3.keyA,密钥A
4.mfrc522.uid,uid号UID是用户身份证明(User Identification)的缩写,是每一个卡片的唯一有效识别编码。

返回值:status,操作状态码

卡片密钥(可以自行搜索):

//准备卡片密钥A,B
MFRC522::MIFARE_Key keyA;
MFRC522::MIFARE_Key keyB;

byte KEYA[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //密钥A
byte KEYB[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //密钥B 

如果这个扇区没有经过密钥的解锁是没办法读取的,有兴趣的可以了解一下IC卡的破译(比如说水卡,一些门禁的验证)。

大致上面的函数就能完成我们的基本的需求了,一些功能的完成,使用这三个函数就足够了

整体代码以及其他内容,可以参考这个作者的其他文章,他的内容比较详细一点

会飞的豹豹豹 https://www.bilibili.com/read/cv18457914?spm_id_from=…0.0
出处:bilibili

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

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

相关文章

零基础学MySQL(二)-- 表的创建,修改,删除

文章目录🎈一、创建表1️⃣基本语法2️⃣入门案例🎆二、MySQL常用数据类型1️⃣数值型(整型)默认有符号2️⃣数值型(bit)3️⃣数值型(浮点型)默认有符号4️⃣字符串的基本使用5️⃣字…

1584_AURIX_TC275_SMU的调试以及部分寄存器

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 前面学习的过程中,突然间减速了不少。但是为了保证学习的推进,还是得有每天的稳定输出。我的策略是多看,多处理,之后每天整理10页标注的文档…

设计模式相关内容介绍

1.学习设计模式好处 提高编程能力、思维能力、设计能力程序设计更加标准化、代码编制更加工程化,软件开发效率大大提高,缩短项目周期设计的代码可重用性高、可读性强、可靠性高、 灵活性好、可维护性强 2.设计模式分类 创建型模式 提供创建对象的机制…

一文读懂工业级交换机的规范使用

工业交换机具备电信级特性特点,可承受严苛的工作环境,产品种类丰富多彩,交换机配置灵便,可以满足各类工业应用的应用标准。那么,大家使用工业级交换机的过程当中应该如何规范使用呢? 工业级交换机其实质运…

蓝队攻击的四个阶段(四)

目录 一, 外网纵向突破 1.1 何为外网纵向突破 1.2外网纵向突破的主要工作 二, 外网纵向突破的途径 1. Web 网站 2.外部邮件系统 3.边界网络设备 4.外部应用平台 三,内网横向拓展 1. 1何为内网横向拓展 1.2 内网横向拓展的主要工作 …

电商价格监测,关注这些,才算实际到手价

品牌控价的第一项工作,是先找出低价乱价链接,这就需要进行电商价格监测。但是我们搜索品牌链接的时候,会发现网页上的价格是多种多样:有原价(但是划掉了)、促销价、折扣价、惊喜价,优惠活动也是…

localStorage

localStorage localStorage了解 有些数据确实需要存储在本地,但是它却不需要发送到服务器,所以并不适合放在cookie中 localStorage 也是一种浏览器存储数据的方式(本地存储),它只是存储在本地,不会发送…

【Linux】进程间通信(1)

信号 什么是信号?信号是给程序提供一种可以处理异步事件的方法,它利用软件中断来实现。不能自定义信号,所有信号都是系统预定义的。 信号由谁产生? 由shell终端根据当前发生的错误(段错误、非法指令等)Ctr…

商品详情的APP原数据接口测试

一、原数据接口的来源: 原数据接口来源于手机端,随着智能化的发展与普及,越来越多的人都是使用智能手机,这样极大的方便了人民的生活,各大电商平台看准了这个商家,把目光都瞄准这个商机,伴随而…

BP靶场中SQL注入练习

BP靶场中SQL注入练习1.Bp靶场介绍1.1.访问靶场1.2.注意事项2.SQL注入靶场2.1.注意事项2.2.检索隐藏数据2.2.1.开启靶场2.2.2.点击礼物2.2.3.测试类型2.2.4.爆出全部物品(包括隐藏)2.3.登录逻辑2.3.1.开启靶场2.3.2.登录账户2.3.3.注释验证2.3.4.成功登陆2.4.判断列2.4.1.开启靶…

会话技术--cookie和session

一、会话跟踪技术的概述 对于会话跟踪这四个词,我们需要拆开来进行解释,首先要理解什么是会话,然后再去理解什么是会 话跟踪: 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接&#…

变量、作用域与内存

目录 原始值与引用值 动态属性 复制值 传递参数 确定类型 执行上下文与作用域 作用域链增强 变量声明 1.使用var 的函数作用域声明 2. 使用let 的块级作用域声明 3.使用const 的常量声明 标识符查找 垃圾回收 标记清理(最常用) 引用计数 内…

2022__我的嵌入式入坑之路

目录 一、学习篇 51单片机: python爬虫: stm32单片机: ad: 立创EDA: openmv: ardunio: ESP32: 汇编语言: ROS: FreeRTOS: matlab&a…

【学习】大数据关键技术

学习内容描述: 大数据涉及的四个环节是什么? 云计算服务的三种服务类型是什么? 重点知识: 大数据涉及的四个环节:1、数据采集;2、数据存储;3、数据管理;4、数据分析与挖掘。云计算…

大型智慧灌区信息化管理系统云平台 智慧灌区信息化管理系统解决方案

平升电子大型智慧灌区信息化管理系统云平台/智慧灌区信息化管理系统解决方案,对灌区的渠道水位、流量、水雨情、土壤墒情、气象等信息进行监测,同时对泵站、闸门进行远程控制,对重点区域进行视频监控,实现了信息的采集、统计、分析…

基于pyautogui的自动识别定位原神风物之诗琴按键弹奏程序

前言:为了学习pyautogui这个库的使用,我准备用它做点东西。比如一个自动弹琴的程序。不过这个琴不是现实里的琴,而是原神里的风物之诗琴。(这里有个网页版模拟器可以试试:风物之诗琴模拟器 (haveyouwantto.github.io)&…

Spring 监听器listener原理

1.创建本地事件和事件监听器/*** 事件类*/ public class MyEventA extends ApplicationEvent {private static final long serialVersionUID 1L;public MyEventA(Object source) {super(source);System.out.println("MyEventA 构造方法被执行了...");}public void o…

基于matlab开发的车牌检测与字符分割项目附源码

文章目录1 任务概述项目完整matlab源码2 基本流程2.1 车牌定位2.1.1 图像预处理2.1.2 边缘检测2.1.3 形态学操作2.1.4 重操作判断2.1.5 区域选择2.1.6 倾斜校正2.1.7 精确选择2.2 字符分割2.3 字符识别3 结果分析3.1 车牌定位3.2 字符分割3.3 字符识别4 总结5 参考资料1 任务概…

安装vim的最新版本

1、通过源码安装 对于Linux系统,可以通过源码编译来安装最新版本,我在wsl ubuntu下的操作如下: 获取vim的源码: git clone https://github.com/vim/vim.git刚开始我帆了墙,结果下载不动,关了帆墙软件可正常…

【入门AUTOSAR网络管理测试】AUTOSAR网络管理规范需求解读

文章目录前言一、名词解释二、NM报文1.NM报文格式2.NM报文数据场内容三、NM状态机1.NM状态转换图2.状态前言 AUTOSAR Automotive Open System Architecture,汽车开放系统架构,由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立&am…