基于多密鑰iButton的智能水卡的設(shè)計
摘要:DS1991是一種多密鑰信息紐扣,文章介紹了DS1991的主要特點、工作原理及讀寫方法。給出了一種基于DS1991和PIC單片機的智能水卡設(shè)計方案,同時給出了整個系統(tǒng)的硬件組成原理和軟件設(shè)計方法。 關(guān)鍵詞:信息紐扣;單總線;單片機 1 DS1991概述 iButtoninformation Button信息紐扣是一種封裝在扁圓型不銹鋼外殼里的直徑為16毫米的微型智能化信息載體。具有雙向通訊功能,數(shù)據(jù)傳輸使用獨特的1-Wire(單總線)協(xié)議,僅用一根數(shù)據(jù)線即可與外界進(jìn)行信息交換。iButton信息鈕扣與其讀寫器的信息傳遞只需短暫接觸即可完成,傳輸速率可達(dá)16.3kbps。信息紐扣內(nèi)置的NVSRAM存儲器可存放文字或數(shù)字化的圖像,任何時刻只要短暫的觸碰就可更改存放的信息。在每一個信息紐扣的晶片上都有工廠光刻的、獨一無二的64位注冊碼,該號碼具有不可偽造性。先進(jìn)的設(shè)計理念及封裝形式賦予了iButton超強的抗沖擊、防靜電、防腐蝕、防水、防摩擦等性能,極大的提高了數(shù)據(jù)的安全性,并可確保十年以上的使用壽命。 圖1 DS1991是一種加密存儲型信息紐扣,它有三個獨立的電子密鑰分區(qū)(提供1152位的可讀寫非易失安全存儲器)和512位暫存器。每個密鑰分區(qū)包括384位,具有獨立的64位密碼和64位ID碼。對密鑰分區(qū)的讀/寫操作均需進(jìn)行密碼驗證。三個區(qū)的數(shù)據(jù)可分別操作,互不干擾。512位的暫存器主要用于加密數(shù)據(jù)的拷貝,以保證安全存儲器中數(shù)據(jù)的完整性。DS1991可在惡劣環(huán)境中實現(xiàn)帶密碼保護(hù)的數(shù)據(jù)傳送。 DS1991通過嚴(yán)格的1-Wire(單總線)協(xié)議傳輸數(shù)據(jù)。1-Wire協(xié)議定義了復(fù)位脈沖、應(yīng)答脈沖、寫0、寫1和讀數(shù)據(jù)時序等幾種信號類型,所有單總線命令序列都是由這些基本的信號類型組成的。單片機訪問DS1991必須嚴(yán)格遵循單總線命令序列,即初始化、ROM操作、存儲器功能命令。 DS1991的ROM操作命令有讀取(33H)、匹配(55H)、搜索(F0H)、跳過(CCH)等。這些命令可作用于DS1991的64位光刻注冊碼。DS1991有6個設(shè)備檢測命令:寫暫存器(96H)、讀暫存器(69H)、復(fù)制暫存器(3CH)、
本文引用地址:http://cafeforensic.com/article/201610/307536.htm寫密碼(5AH)、寫密鑰子區(qū)(99H)、讀密鑰子區(qū)(66H)。存儲器功能命令由三段組成:一為功能代碼,二為命令的起始地址和子密鑰的地址代碼,三為第二個字節(jié)的取反。 2 系統(tǒng)結(jié)構(gòu)與工作原理 本文設(shè)計了一種基于DS1991的智能水卡。這種智能水卡由于運用了iButton信息紐扣,因而便于攜帶,不易損壞,只需在觸頭上一碰,水就嘩嘩的流出,再次觸碰則可關(guān)閉水龍頭,從而很好的達(dá)到了節(jié)約用水的目的。 本設(shè)計中的單片機選用Microchip公司的PIC16C63,其最大優(yōu)點是省電,該單片機在低功耗休眠狀態(tài)時的靜態(tài)電流小于1μA,正常工作時的最小工作電流僅為15μA,并具有看門狗復(fù)位電路,特別適合用來設(shè)計小型電子產(chǎn)品。無用戶用水時,系統(tǒng)處于休眠狀態(tài),當(dāng)水卡第一次碰觸頭時,單片機從休眠狀態(tài)喚醒。iButton觸頭與單片機的連線極其簡單,只需將PIC16C63的一根口線與其相連并外接一個上拉電阻即可。選用24WC02存儲器可在掉電時保存數(shù)據(jù)。CD4098是雙單穩(wěn)態(tài)觸發(fā)器。流量傳感器選用基于模擬水表的旋翼式結(jié)構(gòu),可將葉輪的旋轉(zhuǎn)轉(zhuǎn)換為電信號。電磁閥選用12V低壓電磁閥。其硬件連接如圖1所示。 使用時,先由管理員將用戶預(yù)購的水量存于卡中。用水時,用戶將水卡與觸頭一碰。單片機首先判斷是否為壞卡,然后讀取iButton序列號以判斷是否為該供水系統(tǒng)所接受的智能水卡。水卡辨識正確后再讀取卡中的水量信息并打開電磁閥,此后,數(shù)碼管動態(tài)顯示并扣除卡中所有現(xiàn)存水量,以防用戶不進(jìn)行關(guān)水觸碰。單片機實時采集流量信號,并做相應(yīng)扣除。當(dāng)剩余水量小于初始給定值時,水卡發(fā)出聲音報警提示用戶及時購水。當(dāng)用戶用水完畢再次觸碰后或剩余水量為零時,關(guān)閉閥門,并將剩余水量存入水卡,同時存儲器實時存儲卡中信息,以備系統(tǒng)故障時正確處理。 3 軟件設(shè)計 本系統(tǒng)對DS1991進(jìn)行的操作主要包括三個過程:其中讀取序列號和讀密鑰子區(qū)的流程圖見圖2所示。寫密鑰子區(qū)的流程圖見圖3。為確保數(shù)據(jù)傳輸?shù)恼_性,本設(shè)計對欲寫的數(shù)據(jù)組都追加一個計算出的CRC校驗碼,并對讀出的數(shù)據(jù)組添加CRC校驗。只有檢驗正確,才視為讀出的數(shù)據(jù)組,從而確保了觸碰時數(shù)據(jù)傳輸?shù)恼_。 1-Wire的CRC校驗碼由如圖4所示的多項式生成。該多項式方程為X8+X5+X4+1。每片DS1991都有唯一的64位ROM代碼,即:8位家族碼+48位唯一序列碼+8位CRC校驗碼。移位寄存器進(jìn)行零初始化后從8位家族碼的最低有效位開始移入,每次移1位,當(dāng)?shù)?位家族碼移入后開始移入序列號,第48位序列號移入后,移位寄存器中的值即是CRC值,此后繼續(xù)移入DS1991內(nèi)部的8位CRC校驗碼。此時如果接收數(shù)據(jù)正確,則使移位寄存器歸零。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 本系統(tǒng)軟件采用模塊化設(shè)計,分為初始化模塊、檢驗壞卡模塊、讀序列號模塊、CRC校驗?zāi)K、讀/寫DS1991模塊、流量檢測數(shù)據(jù)處理模塊、I2C存儲器存儲模塊、動態(tài)顯示模塊以及報警提醒模塊等。
4 結(jié)束語 使用iButton作智能水卡時,其堅固的不銹鋼外殼確保了水卡的抗沖擊、防水、耐磨、耐腐蝕特性;而先進(jìn)的防靜電電路及芯片則可確保iButton能承受高達(dá)8,000伏的靜電,從而保證自身和存儲數(shù)據(jù)的安然無恙。在耐用性、識別成功性、使用方便性、加密性能及攜帶性等方面,該水卡比現(xiàn)今較流行的磁卡、IC卡、射頻卡都優(yōu)越許多。此外,DS1991的多密鑰特性更是為數(shù)據(jù)的保密提供了可靠的保證。
評論