欢迎访问ic37.com |
会员登录 免费注册
发布采购

基于多密钥iButton的智能水卡的设计

日期:2007-4-28 (来源:互联网)

摘要:ds1991是一种多密钥信息纽扣,文章介绍了ds1991的主要特点、工作原理及读写方法。给出了一种基于ds1991和pic单片机的智能水卡设计方案,同时给出了整个系统的硬件组成原理和软件设计方法。

总线;单片机

1 ds1991概述

ibuttoninformation button信息纽扣是一种封装在扁圆型不锈钢外壳里的直径为16毫米的微型智能化信息载体。具有双向通讯功能,数据传输使用独特的1-wire(单总线)协议,仅用一根数据线即可与外界进行信息交换。ibutton信息钮扣与其读写器的信息传递只需短暂接触即可完成,传输速率可达16.3kbps。信息纽扣内置的nvsram存储器可存放文字或数字化的图像,任何时刻只要短暂的触碰就可更改存放的信息。在每一个信息纽扣的晶片上都有工厂光刻的、独一无二的64位注册码,该号码具有不可伪造性。先进的设计理念及封装形式赋予了ibutton超强的抗冲击、防静电、防腐蚀、防水、防摩擦等性能,极大的提高了数据的安全性,并可确保十年以上的使用寿命。图1 ds1991是一种加密存储型信息纽扣,它有三个独立的电子密钥分区(提供1152位的可读写非易失安全存储器)和512位暂存器。每个密钥分区包括384位,具有独立的64位密码和64位id码。对密钥分区的读/写操作均需进行密码验证。三个区的数据可分别操作,互不干扰。512位的暂存器主要用于加密数据的拷贝,以保证安全存储器中数据的完整性。ds1991可在恶劣环境中实现带密码保护的数据传送。

ds1991通过严格的1-wire(单总线)协议传输数据。1-wire协议定义了复位脉冲、应答脉冲、写0、写1和读数据时序等几种信号类型,所有单总线命令序列都是由这些基本的信号类型组成的。单片机访问ds1991必须严格遵循单总线命令序列,即初始化、rom操作、存储器功能命令。

ds1991的rom操作命令有读取(33h)、匹配(55h)、搜索(f0h)、跳过(cch)等。这些命令可作用于ds1991的64位光刻注册码。ds1991有6个设备检测命令:写暂存器(96h)、读暂存器(69h)、复制暂存器(3ch)、写密码(5ah)、写密钥子区(99h)、读密钥子区(66h)。存储器功能命令由三段组成:一为功能代码,二为命令的起始地址和子密钥的地址代码,三为第二个字节的取反。2 系统结构与工作原理

本文设计了一种基于ds1991的智能水卡。这种智能水卡由于运用了ibutton信息纽扣,因而便于携带,不易损坏,只需在触头上一碰,水就哗哗的流出,再次触碰则可关闭水龙头,从而很好的达到了节约用水的目的。

本设计中的单片机选用microchip公司的pic16c63,其最大优点是省电,该单片机在低功耗休眠状态时的静态电流小于1μa,正常工作时的最小工作电流仅为15μa,并具有看门狗复位电路,特别适合用来设计小型电子产品。无用户用水时,系统处于休眠状态,当水卡第一次碰触头时,单片机从休眠状态唤醒。ibutton触头与单片机的连线极其简单,只需将pic16c63的一根口线与其相连并外接一个上拉电阻即可。选用24wc02存储器可在掉电时保存数据。cd4098是双单稳态触发器。流量传感器选用基于模拟水表的旋翼式结构,可将叶轮的旋转转换为电信号。电磁阀选用12v低压电磁阀。其硬件连接如图1所示。

使用时,先由管理员将用户预购的水量存于卡中。用水时,用户将水卡与触头一碰。单片机首先判断是否为坏卡,然后读取ibutton序列号以判断是否为该供水系统所接受的智能水卡。水卡辨识正确后再读取卡中的水量信息并打开电磁阀,此后,数码管动态显示并扣除卡中所有现存水量,以防用户不进行关水触碰。单片机实时采集流量信号,并做相应扣除。当剩余水量小于初始给定值时,水卡发出声音报警提示用户及时购水。当用户用水完毕再次触碰后或剩余水量为零时,关闭阀门,并将剩余水量存入水卡,同时存储器实时存储卡中信息,以备系统故障时正确处理。3软件设计

本系统对ds1991进行的操作主要包括三个过程:其中读取序列号和读密钥子区的流程图见图2所示。写密钥子区的流程图见图3。为确保数据传输的正确性,本设计对欲写的数据组都追加一个计算出的crc校验码,并对读出的数据组添加crc校验。只有检验正确,才视为读出的数据组,从而确保了触碰时数据传输的正确。

1-wire的crc校验码由如图4所示的多项式生成。该多项式方程为x8+x5+x4+1。每片ds1991都有唯一的64位rom代码,即:8位家族码+48位唯一序列码+8位crc校验码。移位寄存器进行零初始化后从8位家族码的最低有效位开始移入,每次移1位,当第8位家族码移入后开始移入序列号,第48位序列号移入后,移位寄存器中的值即是crc值,此后继续移入ds1991内部的8位crc校验码。此时如果接收数据正确,则使移位寄存器归零。crc的编程如下:

checkcrc:

movlw 8

movwf rxbuf

crclp:

btfss md2,0

goto crc0

movlw 1

goto crc1

crc0: movlw 0

crc1: xorwf md1,w

movwf numb

rrf numb

btfss status,0

goto crc2

movf md1,w

xorlw 18h

movwf md1

crc2: rrf md1

rrf md2

decfsz rxbuf

goto crclp

return

本系统软件采用模块化设计,分为初始化模块、检验坏卡模块、读序列号模块、crc校验模块、读/写ds1991模块、流量检测数据处理模块、i2c存储器存储模块、动态显示模块以及报警提醒模块等。4 结束语

使用ibutton作智能水卡时,其坚固的不锈钢外壳确保了水卡的抗冲击、防水、耐磨、耐腐蚀特性;而先进的防静电电路及芯片则可确保ibutton能承受高达8,000伏的静电,从而保证自身和存储数据的安然无恙。在耐用性、识别成功性、使用方便性、加密性能及携带性等方面,该水卡比现今较流行的磁卡、ic卡、射频卡都优越许多。此外,ds1991的多密钥特性更是为数据的保密提供了可靠的保证。