arduino rc522模块使用
rfid IC卡
先了解IC卡一些前置知识。
首先我们会有一张ic卡(M1类型IC卡,一般买到的都是1K存储空间),在rc522代码中会出现这个,就是对IC卡进行检查PICC_TYPE_MIFARE_4K
和PICC_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
arduino rc522模块使用相关推荐
- Arduino文档阅读笔记-RFID工作原理及RC522模块介绍
RFID工作原理 RFID(Radio Frequency Identification):无线射频识别 RFID由2个部分组成:应答器/标签被贴在某个物体上的东东.无线接收器用于读取应答器/标签上的 ...
- #智能宿舍门禁 esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网
esp8266+RC522模块+DFPlay Mini Mp3模块实现宿舍智能门锁//NFC//物联网 提示: 提示: 文章目录 esp8266+RC522模块+DFPlay Mini Mp3模块实现 ...
- ESP32开发之旅——RC522模块的使用
ESP32开发之旅--RC522模块的使用 前言 在本文中,您将学会如何使用ESP32连接RFID模块RC522,本文提供了简单的示例供学习参考. 需要注意的是,本文中的ESP32是使用Micro P ...
- 织女星开发板RISC-V核通过SPI协议驱动ARDUINO LCD模块(显示)
前言 第一次写这个博客,算是新手吧,刚好有这个机会,手边有VEGA的开发板和Arduino的LCD模块,做了点小东西,想和大家分享一下. 一开始只是想着通过SPI协议初始化LCD屏幕,然后发个字符串就 ...
- 织女星开发板RISC-V核通过SPI协议驱动ARDUINO LCD模块(触屏)
前言 之前写了一个通过SPI协议初始化LCD屏幕并显示字符串和图片的文章,这次再尝试一下触屏的功能. 准备工作 1,焊接织女星开发板J1,J2,J3,J4的双排母座,以便与LCD屏通信.前段时间免费申 ...
- Arduino HX711模块(电子秤 )
Arduino HX711模块(电子秤 ) 模块介绍 HX711是一款专为高精度电子秤而设计的24位A/D转换器芯片. 应变片是由敏感栅等构成用于测量应变的元件.电阻应变片的工作原理是基于应变效应制作 ...
- 如何使用Arduino摇杆模块(Joystick Shield)
在本篇文章中,我们将主要介绍如何使用Arduino摇杆模块(Joystick Shield).该扩展模块有不同的版本,我们使用的是v2.4,它有一些有趣的功能和一些按钮,可以在您的应用程序中以不同的方 ...
- M2006+C610驱动方案(二)arduino can模块
arduino can模块组成了控制端 用到了 https://github.com/Seeed-Studio/CAN_BUS_Shield 接线和使用就不说了就收和发两个操作,只说下遇到的问题 c6 ...
- 使用蓝牙测试app和Web Bluetooth API(web蓝牙)连接arduino蓝牙模块并通信
原文链接:https://dsx2016.com/?p=1505 公众号:大师兄2016 前言 前面的arduino操作都是建立在usb串口通信上的,然而有线的操作不仅不方便,还受限设备数量,数据传输 ...
最新文章
- winrunner事务概念的代码应用(毫秒级)
- Python基础-模块
- 从蛋白质结构到功能的生物信息学研究 From Protein Structure to Function with Bioinformatics PDF
- ThinkPHP3.1快速入门(4)连贯操作
- jooq 分页排序_将jOOQ与Spring结合使用:排序和分页
- 数据中心传输需求成以太网市场巨大推动力
- git ssh创建分支_将git项目导入GitHub的方法(附创建分支)
- VoIP:难以抵挡的灰色诱惑
- 命名集 —— 名字结构
- 在idea中配置jetty
- 在没有QQ、微信时局域网共享文件方法
- 关于永洪BI Kerberos机制的详细介绍
- 2021 年 VS Code 主题推荐
- Python实战之tkinter库画图,用canver画布教你画会动的哆啦A梦
- 【实习日志】The last Day总结篇
- gym创建自己的强化学习环境env
- 开发中同一个字拥有不同编码的汇总(eg䶮)
- DiskGenius标准版 4.8.0 正式版
- python中查找特定字符的方法
- Win10 如何使用cmd命令行配置防火墙