張 狄
南京信息工程大學,江蘇 南京 210044
近年來,隨著社會科技的發展,各類科技產品出現在人們的生活中,給人們的生產生活帶來了極大的便利。例如,以往人們出門必須攜帶家中的鑰匙,放在身上有異物感,還要擔心是否會遺失,極為不便,在科技進步的今天,人們的出行更加追求輕便,因此智能鎖的出現可以說是一種必然趨勢。雖然現在已經存在更為高端的指紋鎖系統,但指紋鎖具有一定的局限性。綜合便利與安全考慮,按鍵式鎖與指紋鎖構成的一體智能鎖能夠更好地應對現實情況。基于此,文章設計了一款基于STM32F103單片機的智能鎖。
該智能鎖使用的開發板以STM32F103ZET6作為MCU。該芯片具有64 kB SRAM、512 kB FLASH、2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制 器、3個SPI、2個IIC、5個 串口、CAN、3個12位ADC、12位DAC、SDIO接口、FSMC接口以及112個通用I/O接口。該開發板集低功耗、低電壓于一身,管腳資源豐富,同時保持高集成度且開發簡易,因此選用此開發板[1]。
STM32的普通I/O口模擬8080總線來控制TFT-LCD的顯示。TFT-LCD即薄膜晶體管液晶顯示器,又被稱為真彩液晶顯示器。TFT-LCD與無源 TN-LCD、STN-LCD的簡單矩陣不同,其在液晶顯示屏的每一個像素上都設置有一個薄膜晶體管(TFT),可有效地克服非選通時的串擾,使顯示液晶屏的靜態特性與掃描線數無關,因此顯著提升了圖像質量。該設計采用ILI9341型號3.2寸的TFT屏,擁有像素320×240的高分辨率,并能提供16位真彩顯示,采用16 位的并行方式與外部連接,原因是8位數據線會比16位方式慢1倍以上,而傳輸速度越快越好。
YH-AS608是野火設計的高性能光學指紋識別模塊。該設計采用杭州晟元芯片技術有限公司AS60x高性能指紋識別芯片,芯片內置DSP運算單元并集成了先進的指紋識別算法,具有較高識別精度。模塊內部內置了手指探測電路,用戶可讀取狀態引腳(TouchOut)判斷有無手指按下。另外,模塊是通過串口通信向單片機系統和計算機輸出指紋識別信息的,使用簡單方便。YH-AS608指紋識別模塊性能穩定,模塊配備了串口通信接口,由于是內置算法處理程序,用戶不需要深入了解算法處理原理。只需按照模塊既定的通信協議,通過串口向模塊發送指令,即可對指紋模塊進行控制和操作。
智能鎖的各個組成部分主要包括門鎖控制芯片STM32F103ZET6、矩陣鍵盤、TFT-LCD模塊、AS608指紋識別模塊、蜂鳴器、LED燈等。通過TFT-LCD模塊的液晶屏進行人機交互;矩陣鍵盤進行按鍵密碼的輸入修改等操作;AS608指紋識別模塊進行指紋獲取;門鎖控制芯片STM32F103ZET6進行系統控制與處理;蜂鳴器進行報警;LED燈直觀顯示上鎖狀態。該系統結構框圖如圖1所示[2]。

圖1 智能鎖系統結構框圖
智能鎖的密碼鎖部分主要包括4種工作狀態:已上鎖狀態、解鎖中(輸入密碼)狀態、已解鎖狀態、修改密碼狀態。通過主控芯片掃描矩陣鍵盤的按鍵,即可進入對應狀態完成相應功能。
智能鎖初始狀態為已上鎖狀態。在此狀態下,只在屏幕居中位置顯示當前狀態“Current State:Locked”。除了“解鎖”按鍵與指紋檢索,其余操作皆無效。初始密碼設定為1234,通過LED燈亮顯示已上鎖狀態[3]。
按下“解鎖”按鍵后,進入密碼輸入界面。該狀態下,屏幕居中位置顯示當前狀態“Current State:Logging”,以及實時顯示已輸入的密碼。通過按鍵輸入四位密碼,輸入時可通過“刪除”按鍵刪除上一位輸入錯誤的密碼。輸入完成后再次按下“解鎖”按鍵即為確定,系統進行密碼檢測,檢測失敗則顯示“Wrong Password!”持續2 s并回到已上鎖狀態;密碼正確則顯示“Right Password!”持續2 s并進入已解鎖狀態,通過LED燈滅顯示已解鎖狀態。解鎖時由主控芯片進行計數,若密碼連續輸錯5次則通過蜂鳴器報警15 s。
已解鎖狀態下僅在屏幕居中位置顯示當前狀態“Current State:Unlocked”。在已解鎖狀態下按“改密碼”按鍵可以進入修改密碼狀態。屏幕居中位置顯示當前狀態“Current State:Changing Password”,以及實時顯示已輸入的密碼。在該狀態下,按鍵功能與輸入密碼時相同,再次按下“改密碼”按鍵即為確定修改。若密碼大于或不足4位則更改失敗。同時,可通過“上鎖”按鍵退出該狀態并直接上鎖,成功更改密碼后也會自動上鎖進入已上鎖狀態。
指紋檢索驗證的流程主要使用了獲取指紋圖像、生成指紋模板、搜索指紋模板庫、指紋模板比對等指令。
首先,需要獲取按壓在指紋模塊上用戶的指紋圖像,進而通過圖像來生成指紋特征值。其次,對指紋庫進行遍歷搜索,利用剛生成好的特征值與指紋庫內的指紋模板進行對比。模板比對成功就完成這個指紋檢索的流程,若比對失敗則繼續與指紋庫內的下一個指紋模板進行比對。
主控芯片會根據指紋模塊提供的指紋模板儲存數量生成比對次數上限,使檢索比對的次數不會超過指紋模板的記錄數。若在規定的5次比對次數內模板均未匹配成功,則指紋檢索失敗,向TFT-LCD屏輸出失敗信息的同時結束指紋檢索流程,且通過蜂鳴器報警15 s。
按鍵部分采用4×4的矩陣鍵盤,對應按鍵的功能名稱如圖2所示。

圖2 矩陣鍵盤名稱圖
圖2中,A為改密碼/確定,B為刪除,C為登錄/確定,D為上鎖,“*”與“#”按鍵作為保留可供擴展。
在LCD的庫函數中找到Show_Str(u16 x,u16 y,u16 fc,u16 bc,u8 *str,u8 size,u8 mode)函數,通過更改各參數可以改變顯示:x、y 更改起點坐標,fc更改前置畫筆顏色,bc更改背景顏色,str為所需顯示的字符串,size更改字體大小,mode更改顯示模式:0為填充模式,1為疊加模式。
該設計中所需顯示的內容如下:
已上鎖狀態下,只在屏幕居中位置顯示當前狀態“Current State:Locked”。
解鎖中狀態下,屏幕居中位置顯示當前狀態“Current State:Logging”,以及實時顯示已輸入的密碼。
密碼錯誤時顯示“Wrong Password!”持續2 s,并返回到已上鎖狀態下的顯示。
密碼正確時顯示“Right Password!”持續2 s,并進入已解鎖狀態下的顯示。
已解鎖狀態下僅在屏幕居中位置顯示當前狀態“Current State:Unlocked”。
在修改密碼狀態下屏幕居中位置顯示當前狀態“Current State:Changing Password”,以及實時顯示已輸入的密碼。
文章結合智能鎖的實際需求,以嵌入式技術為基礎,以STM32F103ZET6為主控芯片,結合矩陣鍵盤、TFTLCD模塊、AS608指紋識別模塊、蜂鳴器等,設計了一款智能門鎖系統。后續的發展可以考慮采用國產的低功耗主控芯片;采用無線傳播技術藍牙或者Wi-Fi,設計遠程控制功能,實現物聯網功能;優化人機交互界面,使得界面更加美觀友好。相信在未來,智能門鎖會成為智能家居系統中的一部分,讓智能家居走入千家萬戶。