魏春榮 趙松巖 王李銘 王樹桐 孫建華
(1.黑龍江科技大學安全工程學院,黑龍江 哈爾濱 150022;2.哈爾濱第一機械集團有限公司研究院,黑龍江 哈爾濱 150056)
窨井作為城市中重要的基礎(chǔ)設(shè)施,多設(shè)置于人員活動密集的場所,由于長期以來人們對窨井的設(shè)計、施工、維護等方面存在不足之處,因此使用窨井蓋會經(jīng)常出現(xiàn)安全問題,絕大多數(shù)窨井蓋只是具有井蓋的基本功能,沒有注重窨井蓋監(jiān)控監(jiān)測方面的設(shè)計,影響公眾出行安全性,為保障人們的出行安全,對現(xiàn)有窨井蓋進行優(yōu)化設(shè)計十分必要。
在國外的某些國家,有關(guān)窨井蓋的設(shè)計都比較合理,對窨井的設(shè)置地點進行設(shè)計,每隔一段距離設(shè)置1 個窨井蓋,并與周圍建筑協(xié)調(diào),當出現(xiàn)窨井蓋缺失的情況時,窨井顯得更突兀,從而引起行人注意,避免墜井安全事故發(fā)生[1]。國內(nèi)外關(guān)于窨井蓋的自動檢測報警和機械安全碼進行深入研究[2-7]。目前,在智能終端的穩(wěn)定性、通信線路的成本、工程實施階段的質(zhì)量控制和對井蓋管理的考核標準等方面都還存在一些不足,合理的窨井蓋設(shè)計關(guān)系到人們的生命財產(chǎn)安全,該文采用動態(tài)密碼系統(tǒng)加強窨井蓋安全防盜性具有重要意義。
為保障窨井蓋在日常使用過程中安全,該文設(shè)計動態(tài)密碼系統(tǒng)來保證窨井蓋的防盜,通過HC-05 藍牙模塊向工作人員傳輸數(shù)據(jù),整體程序使用Keil5 來編寫,同時為程序的整體優(yōu)化提供基礎(chǔ)。
在主函數(shù)的循環(huán)中,首先通過Get_Adc_Average()函數(shù)獲取ADC 通道的電壓值,并將得到的電壓值作為srand()函數(shù)的種子,隨機生成數(shù)列,再將隨機生成的數(shù)列與10000取余來確保得到四位數(shù)的密碼。逐位比對密碼時設(shè)置正確right 計數(shù),每對一位,right 自增1,當且僅當right 的值為4時才能正確解鎖且此時right 值清零,否則失敗計數(shù)times 自增1,當times 值大于2 即輸入密碼次數(shù)錯誤超過3 次,則會使BEEP 的電平拉高,觸發(fā)蜂鳴器發(fā)出警報聲。中斷器每0.5s 中斷一次,因此計數(shù)counter 每600 歸零一次,保證一個動態(tài)密碼持續(xù)時間有5 min。同時將得到隨機數(shù)按位取余得到4 個數(shù)字,用于后續(xù)用戶輸入密碼進行比對。
有源蜂鳴器電路結(jié)構(gòu)如圖1 所示,通過使用偏置電阻對有源蜂鳴器進行保護,其中三極管相當于是蜂鳴器的開關(guān)。當三極管處于飽和狀態(tài)時,電路導(dǎo)通使蜂鳴器發(fā)出警報聲,反之不會發(fā)出警報聲。此外,蜂鳴器模塊還外接了運算放大器8050,起到放大信號的作用,更易于進行分析和處理。當電流信號未超過閾值時單片機發(fā)出的是低平信號,一旦超過閾值,單片機就會發(fā)送高平信號,蜂鳴器發(fā)出警報聲。蜂鳴器電路程序設(shè)計流程如下:首先,對其系統(tǒng)初始化,然后檢測負載支路的電流信號,檢測完成后向STM32 發(fā)送請求信號,由微處理器來判斷當前狀態(tài),如果沒超過閾值則使蜂鳴器不發(fā)出警報;如果檢測到的電流信號超過閾值,則蜂鳴器發(fā)出警報聲,然后返回中斷等待程序結(jié)束運行。
圖1 蜂鳴器電路結(jié)構(gòu)圖
該文采用TFT-LCD 液晶顯示屏作為動態(tài)密碼系統(tǒng)的顯示模塊。由圖2 可知,TFTLCD 共有35 個端口。其中1 號和3 號引腳為接地端口,2 號和3 號引腳為VDD 電源輸入口,外接3.3V 即可完成供電,4 號引腳是CS 信號端口,5號引腳為導(dǎo)頻信號端口,6 號和7 號引腳分別為數(shù)據(jù)的讀寫端口,8 號引腳為復(fù)位端口。DB0-DB15 引腳為16 個數(shù)據(jù)檢測端口,用于單片機傳輸數(shù)據(jù)。TFT-LCD 顯示是通過內(nèi)部像素點的方式顯示畫面的,像素點以矩陣狀態(tài)進行分布,通過矩陣操作變換使字符畫面變換,保證TFT-LCD 正常運行,即保證其內(nèi)部矩陣模塊工作正常。TFT-LCD 另一個優(yōu)點就是功耗較低,可以節(jié)約成本。顯示屏程序設(shè)計流程如下:首先為系統(tǒng)初始化,顯示邊框以及虛擬鍵盤,如果不能正常顯示虛擬鍵盤就會一直進行初始化,直到正常顯示虛擬鍵盤。之后就會檢測是否有輸入值,如果有輸入值則循環(huán)顯示輸入值,如果沒有輸入值則會在刷新屏幕后返回中斷。在設(shè)置好虛擬按鍵的邊框后,劃分虛擬按鍵的功能區(qū)域為3×4 的矩形區(qū)域,并且通過LCD_Fill()函數(shù)填充虛擬按鍵背景色,從而達到觸摸虛擬按鍵變色的效果,增強交互性。
圖2 TFTLCD 電路結(jié)構(gòu)圖
為實現(xiàn)動態(tài)密碼的遠距離傳輸,將STM32 生成的密碼傳輸?shù)绞謾C等移動終端上。該文選擇高效可靠的無線藍牙傳輸技術(shù),通過HC-05 藍牙模塊來實現(xiàn)數(shù)據(jù)的傳輸。HC-05藍牙模塊不僅本身性能優(yōu)越而且其功耗也較低,支持的波特率范圍較為寬泛:2400~1382400,且兼容3.3 V 或5V 系統(tǒng)。HC-05 藍牙模塊的參數(shù)見表1。藍牙模塊采用Bluetooth2.0 傳輸協(xié)議,只需TTL 電路就能驅(qū)動。STM32 單片機每個GPIO口都配有內(nèi)部的上拉、下拉電阻,通過寄存器控制,方便藍牙模塊與單片機相連[8]。HC-05 模塊通過串口線進行連接通信,包括RXD,TXD。
表1 HC-05 性能參數(shù)
HC-05 的所有功能都是靠AT 指令集控制實現(xiàn)的,設(shè)置相應(yīng)的AT 指令后即可工作在相應(yīng)的狀態(tài),在進入AT 指令模式前要拉高KEY 引腳的電平;反之,退出AT 指令則拉低KEY 引腳電平。在與STM32 連接中,KEY 引腳與GPIOA_Pin4 相連,RXD 與GPIOB_Pin10 相連,TXD 與GPIOB_Pin11相連,使能端VCC 接的是5V 的電源。
一般HC-05 默認通信距離為10m,但在實際使用過程中HC-05 的傳輸距離可達到10m 以上,在環(huán)境空曠的情況下一些較為專業(yè)的藍牙模塊甚至可達到30 米的傳輸距離[9]。在傳輸距離測試中,先發(fā)送8 組數(shù)據(jù),然后暫停10s,如果能重新發(fā)送數(shù)據(jù),則說明當前的藍牙連接有效。由表2 可知,為HC-05 的傳輸距離測試結(jié)果。在20m 內(nèi),HC-05 藍牙連接是很穩(wěn)定的,數(shù)據(jù)能夠成功傳輸至移動終端;在24m~26m時,藍牙連接開始不穩(wěn)定,數(shù)據(jù)傳輸有時會發(fā)送失敗,藍牙連接也會經(jīng)常斷開;在28m 時,藍牙連接完全斷開,無法重新連接且數(shù)據(jù)傳輸失敗。因此HC-05 的有效傳輸距離在20m 左右,可以滿足工作人員打開窨井蓋日常作業(yè)的要求。
表2 HC-05 傳輸距離測試
在不同距離下測量RSSI 值時判斷藍牙連接能力強弱的重要標準之一,為了方便數(shù)據(jù)收集整理,本次測量距離采用5m、10m、15m、20m 四種距離。HC-05 模塊可以使用AT指令:AT+INQ 便可以查詢在不同位置時的RSSI 值。根據(jù)傳輸距離測試的結(jié)果,每組測量50 組RSSI 值。
從圖3 中可知,在5m 的位置上,HC-05 的接收信號強度指示RSSI 在-65dBm~-50dBm 浮動,顯示出非常穩(wěn)定的藍牙數(shù)據(jù)傳輸信道,該位置的平均RSSI 值為-60.34dBm,符合測量結(jié)果。在10 米的位置上,接收信號強度指示RSSI 與5m 位置相比更低,RSSI 值在-75dBm~-64dBm 浮動,其平均RSSI 值為-70.12 dBm,符合圖中的分析結(jié)果,同時也說明 10 m 這個位置的數(shù)據(jù)接收是穩(wěn)定的。在15 m 的測量位置上,前6 組測量結(jié)果顯示RSSI 值在-82dBm~-75dBm 浮動,期間接收強度偶有變?nèi)?,隨后RSSI 值在-75dBm~-65dBm 浮動,數(shù)據(jù)傳輸信號強度也得以恢復(fù),說明在15m 的位置上數(shù)據(jù)傳輸總體情況是良好的,其平均RSSI 值為-72.42 dBm。在20m 的位置上,接收信號強度指示RSSI 均在-85dBm~-75dBm 浮動,有些浮動變化較大,其間數(shù)據(jù)傳輸信號強度明顯變?nèi)?,該位置上的平均RSSI 值為-78.06 dBm,與HC-05藍牙模塊的RSSI 接收閾值非常接近,說明20m 這個位置數(shù)據(jù)傳輸時出現(xiàn)錯誤概率較大,數(shù)據(jù)容易中斷。從測量結(jié)果看,RSSI 值隨著距離的不斷增大而逐漸變小,浮動增大,數(shù)據(jù)傳輸也越容易出現(xiàn)錯誤。因此在窨井蓋的日常維護工作中要盡量保證在20 米內(nèi)使用終端連接藍牙,才能保證動態(tài)密碼的正常傳輸。
圖3 RSSI 測量結(jié)果
HC-05 模塊的藍牙版本為2.0,測試中使用的Android 手機上的藍牙也是2.0 版本。在測試中,Android 手機始終與HC-05 模塊保持在20m 內(nèi),信號傳輸處于平穩(wěn)狀態(tài),同時Android 手機的通信頻段為2.4GHz,也有可能會影響藍牙傳輸,因此Android 手機在測試時僅有藍牙模塊處于未開啟狀態(tài),其余如Wi-Fi、4G 移動流量等都處于關(guān)閉狀態(tài),盡最大可能地減少干擾。由圖4(a)密碼輸入錯誤效果圖可知,當密碼輸入錯誤時,單片機底部的紅色LED 燈會亮起,提醒用戶密碼輸入錯誤,如果密碼連續(xù)輸入錯誤達到3 次,蜂鳴器會發(fā)出警報聲;由圖4(b)密碼輸入正確的效果圖可知,此時單片機底部的綠色LED 燈會亮起,如果此前輸入過錯誤密碼而亮起的紅色LED 燈也會因為輸入正確密碼后熄滅,只亮起綠色LED 燈以提醒用戶密碼輸入正確。
圖4 動態(tài)密碼輸入測試
HC-05 與終端(測試時使用的Androidd 手機)連接,當終端與HC-05 成功連接時,終端會顯示“已連接”。同時單片機的屏幕上也會在屏幕中央紅色CODE 下方顯示“OK”表示藍牙連接成功,可以正常使用。反之,如果終端與HC-05連接異常導(dǎo)致沒能成功連接,終端會顯示“連接斷開”。單片機的顯示屏上也會在紅色CODE 下方顯示“error”,表示藍牙連接異常,請重新連接。
動態(tài)密碼的終端輸入測試,當單片機生成動態(tài)密碼且通過藍牙將動態(tài)密碼發(fā)送到終端后,可通過使用終端輸入密碼來解鎖,只要在終端的輸入框內(nèi)輸入剛剛接收到的動態(tài)密碼,可通過藍牙將輸入的密碼再次傳輸回單片機,在單片機的顯示屏上也會在紅色CODE 下方顯示由終端輸入的密碼,單片機通過對比驗證后可通過單片機下方的LED 燈亮起的顏色得知輸入密碼是否正確。
動態(tài)密碼的變更測試,動態(tài)密碼不是一成不變的,動態(tài)密碼隨設(shè)定的時間變化,每隔一段時間之前的密碼將會被廢棄,只有輸入最新密碼才能被視作輸入正確密碼,之前生成的密碼超過了設(shè)定的時間已經(jīng)作廢,只有在終端輸入當前的密碼才能使單片機的綠色LED 燈變亮,即輸入密碼正確。同時為了測試更方便、高效,將動態(tài)密碼的生成時間設(shè)置為較為短暫的1 min,這意味著一個密碼只有1 min 的壽命,過了1 min 新密碼生成取代舊密碼,在正式使用中可以根據(jù)不同的情況將動態(tài)密碼的壽命設(shè)置成不同的時間。測試時每隔一分鐘單片機會生成一個新密碼并通過藍牙不斷傳輸,只要在HC-05 的工作范圍內(nèi)即20m 以內(nèi),就可以保證終端可以在第一時間收到最新的動態(tài)密碼。每個動態(tài)密碼都是相隔1min接收到的,并且新生成的密碼與生成過的密碼不會相同,從而保障動態(tài)密碼的安全。
該文主要設(shè)計了動態(tài)密碼防盜系統(tǒng)的程序。其中包括動態(tài)密碼主程序的設(shè)計以及蜂鳴器、顯示屏模塊、藍牙模塊的程序設(shè)計。在程序設(shè)計過程中要盡量保證程序的穩(wěn)定性、適應(yīng)性、可擴展性、時效性和易維護性,同時做好程序的模塊化編寫,保證程序的邏輯性并做好注釋,方便后期添加新功能以及對進行維護。同時通過對HC-05 藍牙模塊的傳輸距離測試和有效距離RSSI 測試來驗證HC-05 的工作可靠性,已達到該設(shè)計的工作要求。對動態(tài)密碼接收測試來驗證動態(tài)密碼系統(tǒng)的穩(wěn)定可靠性,在HC-05 的有效工作距離內(nèi),動態(tài)密碼可以進行密碼傳輸、比對等工作,動態(tài)密碼系統(tǒng)可以穩(wěn)定工作。