【智控万物】模拟刷卡消费——取电开灯
本帖最后由 云天 于 2021-1-2 21:36 编辑【项目背景】
“刷卡”成为我们生活中的一部分,如门禁卡、水卡、电卡、气卡、公交卡、饭卡等等。那这些卡有什么区别?它们的工作原理又是什么?基于要了解以上问题,我制作了一个小项目来模拟刷卡消费、充值的过程。
【背景知识】
近场通信(Near Field Communication,NFC) 又称近距离无线通信,是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输(在十厘米内)交换数据。这个技术由免接触式射频识别(RFID)演变而来,并向下兼容RFID。 NFC标签、公交卡/门禁卡等被读的对象,通过线圈感应生电产生的电力驱动,所以无需电池,体型和重量都可以做得很小。而即便是工作在读卡器,因为射频工作距离很短,其所需的电量也很低,常开的电量消耗也远比蓝牙要低。硬件组成:NFC硬件部分由CLF(非接前端模块)、射频天线、SE(Secure Element安全区域)三部分构成。使用CLF+天线即可完成常见的公交卡余额读取,而如果把手机/手表模拟成公交卡(空中发卡和充值)就需要SE部分的加入。而我们在外面看到的,则是芯片+线圈的结构(拆开公交卡和闪付银行卡,里面也是这两个基本构成)。线圈一般会安装在背壳或贴着电池放置,一般都是通过手机背部进行NFC的感应。由于近场通讯具有天然的安全性,NFC技术被广泛用于POS机移动支付、公交卡、银行卡、门禁卡、饭卡、水卡等多种场合。读卡器模式 数据在NFC芯片中,可以简单理解成“刷标签”。本质上就是通过支持NFC的手机或其它电子设备从带有NFC芯片的标签、贴纸、名片等媒介中读写信息。通常NFC标签是不需要外部供电的。当支持NFC的外设向NFC读写数据时,它会发送某种磁场,而这个磁场会自动的向NFC标签供电。卡片的分类 现在市面上的卡片分类有IC卡、ID卡、M1卡和CPU卡,简单的了解一下这些卡的区别和用途,
[*]IC卡IC卡又称集成电路卡,通常是在塑料卡片内嵌入一个或多个集成电路构成的PVC卡。集成电路芯片可以是存储器或微处理器。带有存储器的IC卡又称为记忆卡或存储卡,带有微处理器的IC卡又称为智能卡或智慧卡。记忆卡可以存储大量信息;智能卡则不仅具有记忆能力,而且还具有处理信息的功能。IC卡可以十分方便地存汽车费、电话费、地铁乘车费、食堂就餐费、公路付费以及购物旅游、贸易服务等。
[*]ID卡ID卡又叫身份识别卡,是一种不可写入的感应式卡,拥有一个固定卡号编号。卡号在封卡前写入后不可再更改,绝对确保卡号的唯一性和安全性。ID卡可以作为一般的门禁或停车场系统的使用者身份识别,因ID卡无密钥安全认证机制,且不能写卡,很难实现一卡通功能,同时也不合适做消费系统。
[*]M1卡M1是菲利浦下属子公司恩智浦出品的芯片缩写,目前该公司的M1芯片与国产芯片相兼容,其实M1卡也属于非接触式IC卡。M1卡,优点是可读可写的多功能卡,缺点是:价格稍贵,感应距离短,适合非定额消费系统、停车场系统、门禁考勤系统等。
[*]CPU卡CPU卡芯片是一个微处理器,它的功能相当于一台微型计算机。CPU卡可适用于金融、保险、交警、政府行业等多个领域,CPU卡的优点是存储空间大、读取速度快、支持一卡多用功能等特点,CPU卡从外型上与普通IC卡,射频卡并没有太大差异,但是性能上却有巨大提升,安全性和普通IC卡比,提高很多,通常CPU卡内含有随机数发生器,硬件DES,3DES加密算法等,配合CPU卡芯片上的COS操作系统,可以达到金融级的安全级别。
【通讯模块】UART I2C NFC近场通讯模块 V1.0
Gravity:UART & I2C NFC近场通讯模块采用NXP PN532进口高集成NFC通信芯片,支持市面上常见的各类MIFARE Classic S50/S70系列(即M1卡)和NTAG21x系列等工作频率在13.56Mhz的NFC电子标签或卡片。
【判断卡类型】
需要注意的是我们平时见到的某些门禁卡虽然也是通过感应使用,但不一定是IC卡,现在有相当一部分便宜的门禁使用的是磁卡和ID卡,ID卡使用RFID射频技术,但其频率一般较低,一般为125KHz,如爱特梅尔的T5577卡,不可写入用户数据,其记录内容仅限卡号只可由芯片厂一次性写入,开发商只可读出卡号加以利用,所以只用于身份识别,不能用于消费,其成本相对非接触式IC卡较低。
区分ID卡和IC卡——读卡判断法读卡判断法是判断卡智能卡类型最准确的方法,这需要可识别多类型卡的设备支持,例如手机NFC或者pn532开发板、ACR122U读卡器以及Proxmark3。使用手机NFC是最为便捷的方法,在支持全功能NFC的手机上下载MIFARE Classic Tools,给予权限后将卡片贴在NFC感应区根据提示读取标签后查看标签信息。下面是两种不同容量的IC卡的显示,如果RF技术这栏显示ISO/IEC 14443,说明就是典型的13.56MHz的非接触式IC卡,这也是生活中使用最多的类型。
绝大多数的高校一卡通都属于M1卡这种类型,M1卡式恩智浦公司(现在已经被飞利浦收购)根据ISO14443-A非接触式智能卡标准设计的一种IC卡,是目前世界上使用量最大的非接触式IC卡,在2013年前它被广泛应用于一些国家和地区的交通系统,如香港的八达通、台湾的悠游卡、伦敦的牡蛎卡和荷兰的OV卡等。2007年12月K.Nohl和H.Plot利用显微镜观察M1卡逻辑电路并对其逆向工程,从而发现其加密算法的设计缺陷。而在2008年3月,荷兰内梅亨大学的三位工程师自制了读卡设备并利用其Crypto-1算法的缺陷成功复制了一张M1卡,所以现在M1卡一般用于对安全需求不是特别高的场景中,如校园和企业一卡通,社区门禁等。可以看到上图中标签类型为MIFARE Classic的就是M1卡,左边的为S50型号,右边的为S70型号,对应的SAK分别为08和18。银行卡和身份证虽然都可以感应使用,但其不是M1卡,M1卡是逻辑加密卡,使用私有加密算法Crypto-1,而银行卡和身份证是CPU卡,内置一个微型CPU,可以进行多种加解密运算,有些银行卡和身份证还使用了国密算法,相比Crypto-1更新,尚未爆出安全漏洞,目前很难破解,如图是银行卡的标签信息,可以看到其SAK为28,只要SAK为28的都为CPU卡,有些学校使用了CPU卡这种解决方案。M1卡的特性和存储结构M1卡即NXP推出的MIFARE Classic卡,内部由一个卷绕天线和特定用途的集成电路模块组成,其中,模块由一个高速(106KB波特率)的RF接口。一个控制单元和一个EEPROM组成。读卡器向M1卡发出一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使谐振电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到模块存储电容内储存,当所积累的电荷达到2V以上时,此电容可作为电源向模块电路提供工作电压,将卡内数据发射出去或接收读写器的数据。常见的M1卡多为S50型号的1k卡,EEPROM的存储容量为8k位,分成16个扇区,每个扇区为4块,每块16个字节,以块为存取单位;还有更大容量的S70型号4k卡,EEPROM容量为32k位,分为40个扇区,前32个扇区为小扇区,每个扇区为4块,每块16个字节,后8个扇区为大扇区,每个扇区有16块,每块16个字节。第0扇区相比其他扇区稍有特殊,块0为绝对地址块,在卡片出厂时被锁死不可更改,前4个字节为整个RFID系统中唯一的UID号,第5个字节为BCC校验位,数值由UID的4个字节异或运算得出,第6字节为卡片的SAK值,第7到8字节时智能卡的ATQA值,剩余的部分时制造商出厂时设定好的信息,不会影响到卡的使用。块2和块3一般为空,不存放用户数据,在大部分RFID系统中读卡器需首先验证0扇区0块数据的正确性,如果验证失败将不会访问其他扇区。【硬件连接】
可参考:[项目]【智控万物】掌控宝制作简易声控灯
【Mind+编程】
模拟“消费”取电,读取第1扇区第1块的第1个字节,显示可“消费”电量值。通过电磁继电器取电开灯,倒计时15秒,并可“消费”电量值减15秒写入NFC卡第1扇区第1块的第1个字节。因1个字节最多可储存255,所以要使用更大的数值,需用更多的字节。
模拟“充值”过程,A键增加“充值”,B键设置标识,主程序开始将读取的卡上的“原数据”与“充值”的和写入卡,完成充值。
三字节使用,数值最大可达255*255*255。
【演示视频】
https://v.youku.com/v_show/id_XNTAzOTY5NjkwNA==.html
消费
https://v.youku.com/v_show/id_XNTAzOTY5NjM4MA==.html
充值
虽然NFC标签在应用上十分便捷,成本也很低,但在目前移动网络的普及和二维码的逐渐流行,NFC标签的应用前景不容乐观。因为和NFC标签相比,二维码只需要生成和印刷成一个小图像,可以说几乎是零成本,提供的信息和NFC一样很丰富,很容易就会替代NFC标签的应用。 在次对近场通信学习,作品很棒 这个可以有!很好 这个方案用在只需要卡的场合很好用啊,刚看到帖子,现在好像买不到这个模块了,无法测试
这个模块支持与MIND+实时版的联调吗?比如刷卡数据直接让MIND+里面的设置的变量保存,比如链表 教程不错!
页:
[1]