孟 洋
(長沙民政職業技術學院,湖南 長沙 410004)
研究基于STM32的智能門禁系統的設計方法,需了解STM32的基本定義。結合當前門禁系統的基本應用情況,通過指紋識別、射頻系統2種技術結合相關輔助設備,以STM32為基礎完成智能門禁系統設計,并實現系統在用戶登錄、信息管理、門鎖控制、信息管理等方面的功能,切實提升門禁系統的使用效果,保證建筑內人員安全。
STM32是意法半導體(ST)集團生產的基于ARM公司Cortex-M3內核的32位高性能微控制單元(Micro Controller Unit,MCU),其中ST指芯片制造商意法半導體,M指微控制器,32指32位的微控制器。目前來說,STM32廣泛應用于工業自動化控制、掃地機器人、四軸飛行器、智能手環以及智能門禁等多個領域。
硬件電路是整個門禁系統正常運行的物質基礎,在考慮開發可行性的基礎上,還需要兼顧系統的性能、成本、功能等,以此來確定系統的整體硬件設計方案。硬件系統單片機選擇的是STM32F103ZET6,其他模塊包括繼電器模塊(射頻識別、指紋識別等)、射頻讀寫芯片(MF RC522)、光學指紋識別模塊(AS608),通過C#軟件系統進行人機交互界面編寫,再以串口進行STM32F103ZET6、上位機通信。系統結構分布情況:中間模塊為STM32F103ZET6;上部模塊包括上位機、電源、繼電器以及蜂鳴器;下部模塊包括MF RC522、液晶顯示器(Liquid Crystal Display,LCD)液晶顯示模塊以及AS608指紋識別模塊[1]。
選擇的主控制器為ARM Cortex-M3內核的32位微處理器STM32-103ZET6,該芯片包括32位內核,存放數據、程序的閃存存儲器達到512 kB,工作頻率能夠達到72 MHz的內置中央處理器(Central Processing Unit,CPU)、靜態隨機存取存儲器(Static Random Access Memory,SRAM),可直接進行周期訪問,具備輸入輸出(Input/Output,I/O)端口、與外圍總線(Advanced Peripheral Bus,APB)連接的外設以及相應數量的高級定時器、基本定時器、通用16位定時器、12位數模轉換器(Analogue-to-Digital Conversion,ADC)以及通信接口等。同時,配備了可變靜態存儲控制器(Flexible Static Memory Controller,FMSC)模塊,用于連接液晶顯示器(Liquid Crgstal Display,LCD)、擴展SRAM,以FSMC直接驅動LCD;為便于后期維護,選擇以R8、R7電阻隔離MCU、外部電源[2]。
串行外設接口(Serial Peripheral Interface,SPI)用于解碼器、數字信號處理器、實時時鐘、FLASH以及EEPROM之間,芯片管腳需通過MISO、MOSI、SCLK、NSS這4根線連接外部器件。其中,MISO指設備輸入/輸出信號線;MOSI指輸出/輸入信號線;SCLK指時鐘信號線,主機產出輸出,并進行設備輸入;NSS指從設備選擇信號線,在有數個從設備連接MCU時,通過主機操控設備從設備的NSS信號線設定為低電平,選中從設備,如此可規避與SPI可能出現的沖突[3]。
傳感器是前端設備,用于采集指紋圖像,其對門禁系統能否發揮作用起到重要的影響,可從以下數個方面考慮如何選取傳感器。一是對濕手指、干手指等不同手指有著高適應性;二是可進行活體指紋鑒別,例如可直接判斷出橡膠手指、指模等并非人的手指;三是抗靜電能力強;四是壽命長等。綜合以上因素,可選擇ATK-AS806光學指紋識別裝置,該裝置有著豐富的功能,包含31條指令,ATK-AS806指令功能示例分析如表1所示。

表1 ATK-AS806指令功能
指紋傳感器在應用過程中可能會因手指干、指紋臟污、磨損等原因造成指紋難以正常識別,針對該種情況,引入射頻識別裝置,采用的是MF RC522射頻讀寫芯片,可實現自動尋卡[4]。在進行MF RC522接口設計時,考慮到MF RC522支持各種形式的微控制器接口,包括串行通用異步收發傳輸器(Universal Asynchronous Receiver/Transmitte,UART)接口、內部集成電路(Inter-Integrated Circuit,I2C)總線、SPI等。各種形式的接口模式要求以對應的管腳連接,故而須設定一一對應的程序;門禁系統中的STM32以SPI總線連接MF RC522,傳輸速率最高可達10 Mb/s,I2C與低電平對接,EA與高電平對接,其他暫時不用的管腳可以懸空處理。SPI接口管腳各種連接方式如表2所示。

表2 SPI接口管腳各種連接方式表
軟件系統設計由C#完成,可應用于Windows 11系統,通過Visual Studio22設計應用程序,從以下要點進行分析。
(1)建設Windows窗體項目。點擊菜單命令文件,后續按照固定的流程完成建設工作,包括選擇適宜的模板,設定保存位置、輸入名稱,確定項目創建。
(2)添加控件以及設計用戶界面。借助工具箱選擇窗體適宜位置一一添加各種控件,打開屬性窗口,設置各項空間的顏色、位置、大小等[5]。
(3)程序代碼設計。通過Windows程序確定基本的編制機制,根據控件或者窗體可支持的事件、方法進行編寫。
(4)程序運行、測試。點擊菜單啟動程序,完成程序測試。
(5)項目保存。點擊菜單命令文件,將保存項目全部保存。
(1)登錄模塊。用戶在輸入申請的賬號、密碼后完成身份驗證,身份確認無誤后方可進入系統。
(2)用戶管理。選擇具體識別方式包括指紋識別、射頻識別,在上位機裝設通用串行總線(Universal Serial Bus,USB)轉串口的驅動程序,與串口連接后,可智能化完成硬件驅動程序安裝,設備管理器可查看并打開串口。該模塊用戶可輸入基本信息、指紋信息、卡號等,并可刪除射頻卡、指紋信息。用戶權限設定為普通用戶、高級用戶,其中普通用戶只能選擇1種開門方式,而高級用戶擁有2項權限,并定期清理長久不再使用的指紋、卡片信息[6]。
(3)操作日志記錄。該模塊用于記錄軟件系統歷史操作,按照列表方式呈現,用戶可通過輸入關鍵詞的形式查詢操作日記記錄,并可刪除相關記錄。
(4)信息查詢。記錄用戶各個時間段出入門禁狀況,在“起止時間”條框輸入查詢時間,顯示該時間段內門禁使用情況,并可導出查詢結果,用戶可結合導出記錄表統計各個階段的指紋驗證信息、刷卡信息等[7]。
(5)門鎖控制。控制中心發送指令,通過STM32控制繼電器,確保特定時間開啟、關閉大門,如在出現火災事故時及時開啟大門用于人群疏散。
(6)指紋模塊功能。啟動系統后,實現對微控制器、AS608等裝置的初始化處理,再安排后續的檢測工作,進行觸摸感應狀態感應,在感應到觸摸鍵值為刪除或者錄入指紋后,執行指紋庫管理工作,實現指紋清空、刪除、登記等任務。指紋識別模塊檢測到指紋后進行指紋認證,發送PS_GetImage取圖像指令,存儲到ImageBuffer,通過if語句判定指紋圖像獲取是否成功。如果成功,則進行指紋圖像特征提取,生成模板,并通過PS_HighSpeedSearch以1∶N匹配模式進行指紋庫搜索。如果可尋找到匹配指紋,則開門;如果匹配不成功,則重新進行指紋采集以及搜索匹配。若是3次匹配不成功,系統鎖定,等待10 min后再次使用[8]。
(7)射頻模塊功能。啟動門禁系統后,進行微控制器、MF RC522端口初始化,涉及MF RC522寄存器初始化配置、SPI初始化等。完成初始化后,在系統感應到射頻卡后,自動啟動防沖突程序,確保只有1張卡片能進行認證。如果認證成功則開門,如果失敗重新尋卡,在3次認證都表示失敗后,系統自鎖、掉電[9]。
(8)數據庫模塊。數據庫主要是結合數據結構進行各項數據的采集、存儲、組織以及管理等,結合用戶要求完成需求分析,結合系統功能、需求分析結果,規劃數據庫實體對象。通過實體-聯系(Entity Relationship,E-R)圖分析數據結構,其中用戶連接用戶編號、賬號、密碼,而用戶信息實體數據包括編號、姓名、性別、聯系電話、住址以及卡號等,用戶開門信息實體數據包括編號、開門編號、開門時間、事件類型,系統日志記錄實體數據包括操作編號、操作人編碼、操作內容、操作日期以及操作網際互連協議(Internet Protocol,IP)地址。通過數據庫模塊實現各項數據的綜合化、整體化管理,確保數據的真實、有效、可靠、全面以及實時性,提升門禁系統的智能化水平[10]。
基于STM32的門禁系統設計展開了論述與分析,具體實踐中需要給予STM32的門禁系統足夠的重視,分析各個模塊設計的優勢與不足,發揚優勢、彌補不足,關注門禁系統應用實效,結合其應用反饋其對加以調整、優化,使其發揮出更好的應用效果。