基于紅外模塊的單片機(jī)電子密碼鎖安全性論證
摘要 以單片機(jī)為主控單元,結(jié)合鍵盤、LCD顯示、AT24C02存儲(chǔ)、遙控等外圍電路,使密碼鎖能夠在接受用戶設(shè)定的正確密碼時(shí)開(kāi)鎖,反之報(bào)警提示。用戶可隨時(shí)更改開(kāi)鎖密碼以提高安全性。設(shè)計(jì)中遙控功能更是應(yīng)用廣泛的人性化設(shè)計(jì)。
關(guān)鍵詞 單片機(jī);密碼鎖;遙控檢查;安全性
1 密碼鎖的安全性論述
1.1 課題背景
隨著科技發(fā)展與生活水平的提高,人們的安全意識(shí)越來(lái)越強(qiáng)。傳統(tǒng)的機(jī)械鎖仍在大量使用,但是在安全性能要求較高的場(chǎng)合,傳統(tǒng)的機(jī)械鎖由于其成本高、制造難度大、安全系數(shù)低等缺點(diǎn),已不能滿足需求。
電子密碼鎖是由輸入密碼來(lái)控制電路或芯片工作,繼而控制機(jī)械開(kāi)關(guān)的閉合,完成開(kāi)鎖、閉鎖任務(wù)的電子產(chǎn)品。近年來(lái),紅外遙控技術(shù)在各個(gè)領(lǐng)域已得到廣泛應(yīng)用,將其應(yīng)用到電子鎖領(lǐng)域,則形成了紅外控制開(kāi)啟的電子鎖。
1.2 設(shè)計(jì)目標(biāo)與意義
以AT89S52單片機(jī)作為主控芯片,設(shè)計(jì)合理的外圍電路,從而構(gòu)成電子密碼鎖系統(tǒng),并對(duì)主控芯片編程實(shí)現(xiàn)以下功能:
(1)輸入正確密碼后開(kāi)鎖。用戶按開(kāi)鎖鍵進(jìn)入開(kāi)鎖模式,正確鍵入6位密碼,實(shí)現(xiàn)開(kāi)鎖。
(2)用戶可隨時(shí)更改開(kāi)鎖密碼。用戶按SET鍵,進(jìn)入密碼設(shè)置模式,可設(shè)置6位新密碼。但要求先正確輸入當(dāng)前密碼,然后輸入新密碼,以防用戶誤操作,需再次輸入新密碼進(jìn)行確定。
(3)提示輸入密碼位數(shù)。設(shè)計(jì)有LCD顯示電路,當(dāng)用戶通過(guò)鍵盤或是遙控器輸入密碼時(shí),不顯示輸入具體數(shù)值,而是顯示“*”,如此即方便了用戶輸入,同時(shí)增加了保密性。
(4)防盜報(bào)警。當(dāng)用戶輸入錯(cuò)誤密碼時(shí),會(huì)提示輸入錯(cuò)誤。當(dāng)用戶連續(xù)3次輸入密碼錯(cuò)誤時(shí),會(huì)自動(dòng)聲光報(bào)警,以增加防盜安全系數(shù)。
(5)遙控功能。實(shí)現(xiàn)一定距離的遙控操作開(kāi)鎖,在車庫(kù)倉(cāng)庫(kù)等應(yīng)用廣泛,用戶不需要下車,只需遙控操作,鍵入正確密碼開(kāi)鎖。
2 密碼鎖安全系統(tǒng)總體方案設(shè)計(jì)
根據(jù)系統(tǒng)設(shè)計(jì)目標(biāo)要求,其系統(tǒng)框圖如圖1所示。
3 紅外遙控作用
遙控編碼脈沖信號(hào)通常包括3大部分,即引導(dǎo)碼、系統(tǒng)碼和功能碼。
(1)引導(dǎo)碼,也稱引導(dǎo)脈沖,一般由高電平1和低電平0的脈沖組成,二者的寬度之比可為1:1,占9 ms,也可為2:1,占13.5 ms(寬度為9 ms的高電平和寬度為4.5 ms的低電平組成),也可能有其他組成情況。引導(dǎo)碼的主要作用類似于穿行通信中的同步脈沖,用來(lái)標(biāo)志遙控編碼脈沖信號(hào)的開(kāi)始,使遙控接收器能由此判斷出所接收的信號(hào)是干擾還是系統(tǒng)的遙控代碼。
(2)系統(tǒng)碼,也稱用戶碼、識(shí)別碼、設(shè)備碼、安全碼,用來(lái)指示遙控系統(tǒng)的種類,以區(qū)別其它遙控系統(tǒng),防止各遙控系統(tǒng)的誤動(dòng)作。這種碼是由生產(chǎn)廠商自行規(guī)定,出廠時(shí)已設(shè)置好。這是不同遙控器不能通用的主要原因。
(3)功能碼,也稱鍵位數(shù)據(jù)碼。它與鍵盤的鍵位相對(duì)應(yīng),由它傳送所需要的遙控信息。功能碼通常也是由8位原碼和8位反碼組成。反碼的加入是為了能在接收端校對(duì)傳輸過(guò)程中是否產(chǎn)生差錯(cuò)。
下面以LC7461編碼芯片為例。LC7461是采用PWM調(diào)制的串行二進(jìn)制碼,所發(fā)送的一幀數(shù)據(jù)中含42位碼,包含一引導(dǎo)碼、13位用戶碼和8位數(shù)據(jù)碼以及它們的反碼。發(fā)射碼的格式如圖2所示。
“1”和“0”的區(qū)分取決與脈沖之間的時(shí)間:以脈寬為0.565 ms、間隔0.56 ms、周期為1.125 ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”。如圖4所示,圖中Tm=0.56ms。
[!--empirenews.page--]
4 遙控模塊硬件的安全性設(shè)計(jì)方案
4.1 遙控系統(tǒng)的構(gòu)成
遙控系統(tǒng)主要由紅外遙控發(fā)射裝置、接收裝置、微處理機(jī)等組成,如圖5所示。
4.2 選用芯片介紹
(1)遙控編碼芯片LC7461。
LC7461是由SANYO公司生產(chǎn)能的遙控專用編碼芯片。OSCO和OSC1之間接諧振器。由Ko0~Ko7,KI0~KI3構(gòu)成鍵盤的行與列。OUT引腳輸出紅外發(fā)射管控制信號(hào)。
7461產(chǎn)生的遙控編碼是連續(xù)的42位二進(jìn)制碼組,其中前26位為用戶識(shí)別利,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位操作碼和8位操作反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。當(dāng)遙控器上任意一個(gè)按鍵按下超過(guò)36 ms時(shí),LC7461芯片的振蕩器使芯片激活,將發(fā)射一個(gè)特定的同步碼,對(duì)于接收端而言就是一個(gè)9 ms的低電平和一個(gè)4.5 ms的高電平,使程序知道從這個(gè)同步碼之后可以開(kāi)始接收數(shù)據(jù)。
(2)一體化紅外接收頭。
HS0038接收紅外信號(hào)頻率為38 kHz,周期約26μs,同時(shí)將遙控信號(hào)的接收、放大、檢波、整形集于一身,是紅外接收電路一體化的紅外接收裝置,如圖7所示。并能與TTL、COMS電路兼容,簡(jiǎn)化了接收電路的復(fù)雜程度和電路的設(shè)計(jì)工作。
HS0038為黑色環(huán)氧樹(shù)脂封裝,不受日光、熒光燈等光源干擾,內(nèi)附磁屏蔽,功耗低、靈敏度高。在用小功率發(fā)射管發(fā)射信號(hào)情況下,其接收距離可達(dá)35m。HS0038為直立側(cè)面收光型,3個(gè)管腳分別是地、+5 V電源、解調(diào)信號(hào)輸出端。[!--empirenews.page--]
4.3 遙控模塊電路設(shè)計(jì)
當(dāng)鍵盤有鍵按下時(shí),編碼芯片激活,發(fā)送相應(yīng)紅外編碼信號(hào)。由遙控器發(fā)送的紅外信號(hào),經(jīng)過(guò)紅外一體化接收頭接收、放大、解調(diào)之后,將信號(hào)送到單片機(jī)P3.2引腳。
5 遙控模塊軟件的安全性設(shè)計(jì)方案
(1)HS0038的解調(diào)。一體化紅外接收頭HS0038將接收到的紅外信號(hào)放大、解調(diào)才送給單片機(jī)的。接收頭接收到的是38 kHz的串行脈沖信號(hào),經(jīng)過(guò)解調(diào)之后轉(zhuǎn)換成TTL電平。接收頭的解調(diào)可簡(jiǎn)單理解為:在輸入脈沖串時(shí)輸出低電平,否則輸出高電平。一體化紅外接收頭解調(diào)前后的信號(hào)對(duì)比如圖10所示,可見(jiàn)解調(diào)后信號(hào)與編碼信號(hào)反相。
當(dāng)按鍵按下后,經(jīng)過(guò)HS0038解調(diào)輸出的一幀信號(hào)則如圖11所示。
(2)解碼。
7461產(chǎn)生的遙控編碼是連續(xù)的42位二進(jìn)制碼組,其中前26位為用戶識(shí)別碼,能區(qū)別不同的紅外遙控設(shè)備,防止不同機(jī)種遙控碼互相干擾。后16位為8位的操作碼和8位的操作反碼用于核對(duì)數(shù)據(jù)是否接收準(zhǔn)確。
單片機(jī)解碼是根據(jù)一體化紅外接收頭的解調(diào)信號(hào)進(jìn)行的,從上面的分析可知:任意按鍵按下后,都有9 ms的低電平起始碼和4.5 ms的高電平結(jié)果碼作為引導(dǎo)信號(hào),因此應(yīng)該在引導(dǎo)碼之后才能進(jìn)行解碼。
如何識(shí)別“0”和“1”是解碼的關(guān)鍵。根據(jù)位定義:“0”、“1”均以0.56 ms的低電平作為起始,兩者區(qū)別在于高電平的寬度不同,即“0”高電平為0.56 ms,“1”高電平為1.68 ms,因此解碼時(shí)須根據(jù)高電平的寬度來(lái)區(qū)別“0”和“1”。若從0.56 ms低電平過(guò)后,開(kāi)始延時(shí),0.56 ms之后,檢測(cè)到的為低電平,則該位為“0”,反之則為“1”。為了保證解碼的可靠性,高電平檢測(cè)延時(shí)應(yīng)該在0.56~1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.12+0.56)/2=0.84ms較可靠,一般取0.84ms即可。
[!--empirenews.page--]
6 密碼鎖安全系統(tǒng)硬件設(shè)計(jì)方案
(1)密碼掉電存儲(chǔ)模塊,如圖12所示。
AT24C02是美國(guó)Atmel公司的低功耗CMOS型EEPROM,內(nèi)含256×8位存儲(chǔ)空間。芯片采用I2C總線式進(jìn)行數(shù)據(jù)讀寫的串行器件,占用很少的資源和1/O線,并且支持在線編程,進(jìn)行數(shù)據(jù)實(shí)時(shí)存取十分方便。串行時(shí)鐘由單片機(jī)P3.6引腳提供,通過(guò)P3.7引腳對(duì)AT24C02進(jìn)行在線讀寫。由于該芯片數(shù)據(jù)掉電不丟失,故用于存放開(kāi)鎖密碼。當(dāng)需要開(kāi)鎖和設(shè)置新密碼時(shí),均需讀取AT24C02中的密碼;設(shè)置新密碼后,在線寫AT24C02,覆蓋原密碼。
(2)開(kāi)鎖電路,如圖13所示。開(kāi)鎖電路由三極管、繼電器、綠色發(fā)光二極管組成,由P2.7引腳控制,低電平有效。按下鍵盤開(kāi)鎖鍵進(jìn)入開(kāi)鎖模式,正確輸入6位密碼,按下“OK”鍵之后,單片機(jī)對(duì)輸入密碼與設(shè)定密碼進(jìn)行對(duì)比,對(duì)比正確,則P27發(fā)出低電平,使三極管Q3導(dǎo)通,從而使得繼電器RL吸合,并由繼電器控制使得門禁得電打開(kāi)。此設(shè)計(jì)中,若是有開(kāi)鎖動(dòng)作,則綠色LED燈亮。
7 密碼鎖安全系統(tǒng)軟件設(shè)計(jì)方案
(1)主程序流程圖,如圖14所示。
(2)密碼接收子程序流程圖,如圖15所示。
若正確接收6位密碼,則輸入密碼存于數(shù)組中,返回值為1。若取消操作,返回值為0。
(3)安全開(kāi)鎖判斷子程序流程圖如圖16所示。
該程序?qū)⑤斎朊艽a進(jìn)行對(duì)比。若密碼正確,則返回值為1,表明應(yīng)該進(jìn)行開(kāi)鎖動(dòng)作。密碼錯(cuò)誤,返回值為0,不進(jìn)行開(kāi)鎖。有取消動(dòng)作,則返回3,不進(jìn)行密碼對(duì)比。
(4)更改密碼判定子程序流程圖如圖17所示。
改程序要求先輸入當(dāng)前密碼,當(dāng)前密碼正確后,連續(xù)兩次輸入新密碼,兩次輸入相同時(shí),返回1,表明應(yīng)該寫AT24C02。否則返回0,表明修改密碼失敗。
8 系統(tǒng)安全性分析論證
設(shè)計(jì)采用AT89S52單片機(jī)作為主控芯片,結(jié)合相應(yīng)的外圍電路,構(gòu)成電子密碼鎖系統(tǒng)。該電子密碼鎖,開(kāi)發(fā)簡(jiǎn)單、安全性高、成本低,適合辦公室、實(shí)驗(yàn)室、檔案室等場(chǎng)所,其遙控功能更適合應(yīng)用在車庫(kù)倉(cāng)庫(kù)的安全防盜。在設(shè)計(jì)完成過(guò)程中,先進(jìn)行Proteus軟件仿真,最后進(jìn)行實(shí)物調(diào)試,最終達(dá)到了預(yù)期的設(shè)計(jì)目標(biāo)。另外UPS供電還有待解決。電子密碼鎖安全性能較高,具有較好的市場(chǎng)前景。