介绍FRID-RC522模块的使用

射频识别「radio frequency identification,简称rfid」技术,又称为无线射频识别,是一种通信技术,可通过无线电讯号识别特定目标并读写相关数据,而无需识别系统与特定目标之间建立机械或光学接触,普遍应用于企业/校园一卡通、公交储值卡、高速公路收费、停车场、小区管理等。本篇介绍frid-rc522模块的使用。
1
rfid模块
rfid 技术利用无线射频方式在阅读器和射频卡之间进行非接触双向数据传输,以达到目标识别和数据交换的目的。
标签(tag,即射频卡),耦合元件及芯片组成,标签含有内置天线,用于和射频天线间进行通信。阅读器:读取(在读写卡中还可以写入)标签信息的设备。天线:在标签和读取器间传递射频信号。本实验使用的rfid-rc522模块采用mfrc522芯片,spi通讯方式,支持mifarel s50、s70 、pro、desfire等类型的卡,附带的白卡和钥匙扣是s50卡,每张卡都有自己的标识(uid)。
2
安装驱动库
arduino有rc522驱动库,点击「项目」—「加载库」—「管理库」,查找选择「mfc522」最新版本进行安装。
安装库
3
实验材料
uno r3开发板配套usb数据线面包板及配套连接线rfid-rc522模块及配套s50白卡和异形卡4
实验步骤
1.根据原理图搭建电路图。
rc522模块的3.3v、gnd分别对应连接开发板的3.3v、gnd,模块的mosi、miso、sck分别连接开发板的spi接口11、12、13,模块的sda、rst分别连接开发板数字管脚10、9。
实验原理图如下图所示:
实验原理图
2. 新建sketch,拷贝如下代码替换自动生成的代码并进行保存。1#include 2#include 3 4#define ss_pin 10 5#define rst_pin 9 6 7mfrc522 rfid(ss_pin, rst_pin); 8 9byte nuidpicc[4]; //存储读取的uid1011void setup() {12 serial.begin(9600);13 spi.begin();14 rfid.pcd_init();15 serial.println(rc522初始化完成...);16}1718void loop() {19 //搜索新卡20 if ( ! rfid.picc_isnewcardpresent())21 return;2223 // 验证nuid是否可读24 if ( ! rfid.picc_readcardserial())25 return;2627 mfrc522::picc_type picctype = rfid.picc_gettype(rfid.uid.sak);2829 // 检查是否mifare卡类型30 if (picctype != mfrc522::picc_type_mifare_mini &&31 picctype != mfrc522::picc_type_mifare_1k &&32 picctype != mfrc522::picc_type_mifare_4k) {33 serial.println(不支持读取此卡类型);34 return;35 }3637 // 保存读取到的uid38 for (byte i = 0; i < 4; i++) {39 nuidpicc[i] = rfid.uid.uidbyte[i];40 }4142 serial.print(十六进制uid:);43 printhex(rfid.uid.uidbyte, rfid.uid.size);44 serial.println();4546 serial.print(十进制uid:);47 printdec(rfid.uid.uidbyte, rfid.uid.size);48 serial.println();4950 // 使放置在读卡区的ic卡进入休眠状态,不再重复读卡51 rfid.picc_halta();5253 // 停止读卡模块编码54 rfid.pcd_stopcrypto1();55}5657// 十六进制输出58void printhex(byte *buffer, byte buffersize) {59 for (byte i = 0; i < buffersize; i++) {60 serial.print(buffer[i] < 0x10 ? 0 : );61 serial.print(buffer[i], hex);62 }63}6465//十进制输出66void printdec(byte *buffer, byte buffersize) {67 for (byte i = 0; i < buffersize; i++) {68 serial.print(buffer[i] < 0x10 ? 0 : );69 serial.print(buffer[i], dec);70 }71}3. 连接开发板,设置好对应端口号和开发板类型,进行程序下载。
程序下载
5
实验现象
打开串口监视器,波特率设置成与程序中相一致的9600。将卡靠近模块天线感应区,可读出卡片id。
实验现象

六轴机器人如何选购?六轴机器人的选购技巧
腾讯战略大调整,AI区块链方法论赋能每个个体
长江存储64层堆栈3D闪存亮相,年底实现量产
制造业组装线设计必须要纳入的五大原则?
监控智能视频常用功能及场景应用分析
介绍FRID-RC522模块的使用
智能手机早已走入暮年,没有未来
Celesco传感器的工作原理
MulteFire 1.0认证计划推出,首批认证的MulteFire无线电和设备方案
IMU姿态滤波算法——Mahony算法:原理与代码
快速热处理细化3D打印钛合金晶粒,大幅提升塑性
运算放大器的“最大电源电流” 规格
曝Ryzen9系列将包含2款产品 均为16核32线程
Synaptics推出新一代显示驱动器IC的样品可用于VR显示器上
6G网络为什么需要在所有6G系统组件中嵌入AI?
美团杀入10万亿互联网医疗健康,与BATJ比试谁更“健康”
智能电网应用中的可再生能源存储系统
应用笔记 | 浅谈STM32库里的回调函数
自动驾驶汽车是如何通过传感器获得的数据
新能源汽车连接器的主要作用