700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片

arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片

时间:2023-04-30 04:03:58

相关推荐

arduinopn532模块_零知开源分享-使用PN532串口NFC模块读写NFC卡片

POSTAMBLE:帧尾 一般为 00。

2、读写示例分析

使用的是pn532为主控芯片的NFC串口模块,来读写M1卡,注意所有数字为16进制形式。用usb转串口模块将pn532与电脑连接,串口助手发送选择hex。

波特率默认:115200 ,数据位:8 ,校验位:无,停止位:1 ,流控:无。

硬件连接正常后开始操作,详细步骤分析:

(1)唤醒PN532:

[mw_shl_code=arduino,true]PC->PN532: 55 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ff 03 fd d4 14 01 17 00

PN532->PC: 00 00 FF 00 FF 00 00 00 FF 02 FE D5 15 16 00[/mw_shl_code]

其中第一条不符合普通的发送格式,比较特殊。如果没有正常返回,检查硬件连接和波特率。

(2)获取卡UID,也就是卡的唯一ID号,全球就这一个(理论上):

[mw_shl_code=arduino,true]PC->PN532: 00 00 FF 04 FC D4 4A 02 00 E0 00[/mw_shl_code]

04 //代表有四个数据分别是 D4 4A 02 00;

FC //这是04的补码 ;

4a //命令;

02 //卡数量,0--2;

00 //波特率 106K;

E0 //校验位D4+4A+02+00=0x0120取后两位20的补码为E0。

[mw_shl_code=arduino,true]PN532->PC:00 00 FF 00 FF 00

00 00 FF 0C F4 D5 4B 01 01 00 04 08 04 A1 9F F5 5E 3B 00

[/mw_shl_code]

00 00 FF 00 FF 00//ACK;

00 00 FF 0C F4 D5 //PN532 到 MCU;

4B //响应命令;

01 //目标卡1;

01 //目标卡数量,最大为0x02,最小为0;

00 04 //atq;

08 //卡容量 08=1K;

04 //4个字节UID;

02 F5 13 BE //UID;

06 00 //DCS+POST;

到这一步,可以发送完命令在再刷卡,也可以把卡一直放上。

(3)密钥验证

注意验证完秘钥,卡不能离开,需要一直放在上面,才能顺利的完成下面读写操作,还有注意替换步骤(2)的UID,最后需要根据自己的UID计算校验位即倒数第二位。

[mw_shl_code=arduino,true]PC->PN532:00 00 fF 0F F1 D4 40 01 60 07 FF FF FF FF FF FFA1 9F F5 5E C2 00[/mw_shl_code]

40 //命令;

01 //卡1;

60 //密钥验证命令;

07 //块号;

ff ff ff ff ff ff //密钥;

A1 9F F5 5E //UID 替换为步骤2得到的UID ;

C2 //检验位,根据替换的UID计算,计算方法跟步骤2一样。

[mw_shl_code=arduino,true]PN532->PC: 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 00 EA 00[/mw_shl_code]

41 00 //正确状态。

(4)读卡

[mw_shl_code=arduino,true]PC->PN532: 00 00 ff 05 fb D4 40 01 30 07 B4 00 //读第7块

PC->PN532: 00 00 ff 05 fb D4 40 01 30 06 B5 00 //读第6块

PC->PN532: 00 00 ff 05 fb D4 40 01 30 08 B3 00 //读第8块[/mw_shl_code]

M1卡有16个扇区,每个扇区4个块。

40 //命令;01 //卡1;30 //读卡命令;07 //快号。

[mw_shl_code=arduino,true]PN532->PC: 00 00 FF 00 FF 00 //ACK

00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 FF 07 80 69 FF FF FF FF FF FF 01 00//7块

PN532->PC: 00 00 FF 00 FF 00 //ACK

00 00 FF 13 ED D5 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EA 00 //6块

[/mw_shl_code]

41 00 //正确,错误会返回: 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 13 D7 00;

41 03 //错误。

(5)写卡

[mw_shl_code=arduino,true]PC->PN532: 00 00 ff 15 EB D4 40 01 A0 06 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F CD 00

[/mw_shl_code]

40 //命令; 01 //卡1; A0 //写卡命令; 06 //块号;

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F//16字节数据;

CD//校验和,如果更改其他的数需重新计算。

[mw_shl_code=arduino,true]PN532->PC: 00 00 00 FF 00 FF 00

00 00 FF 03 FD D5 41 00 EA 00

[/mw_shl_code]

41 00 //正确。

二、使用上位机方式进行操作

下面使用上位机软件进行读写测试:我们使用一个USB转串口模块连接到PN532模块。

PN532 模块:

模块图.jpg (116.16 KB, 下载次数: 12)

-6-3 15:19 上传

接线如下:

接线图.png (99.72 KB, 下载次数: 9)

-6-3 15:15 上传

我们使用模块的串口接口,因此在上面的配置模式中我们选的是HSU这个,即1、2两个开关都在左边(基于上图)。

线路连接好后,我们打开上位机软件,如下图:

上位机.png (4.42 KB, 下载次数: 19)

-6-3 15:21 上传

如果我们线路连接没有问题,接口选择也正确,就会显示“发现NFC设备”标识,如果没有连接好,则会出现“未发现NFC设备”。

上一步成功后,我们就可以使用PN532来进行读写NFC卡片了。

我们把门禁卡放在PN532模块上方,如下图所示:

读卡.jpg (186.5 KB, 下载次数: 8)

-6-3 15:23 上传

然后点击上位机中的【读取卡:读取卡片内容】,就可以读取到卡片的内容了:

结果.png (20.98 KB, 下载次数: 7)

-6-3 15:24 上传

更多详细资料可到零知实验室官网免费获取。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。