劉西閣
(常州信息職業技術學院網絡空間安全學院 江蘇省常州市 213164)
近年來人們生活水平逐步提高,人們的安全防范意識和對生活品質要求也隨之提高,傳統的鑰匙開鎖已經無法滿足人們的要求,智能門鎖應用越來越廣泛。目前智能門鎖開鎖方式主要有指紋識別、人臉識別、密碼開鎖和無線通信遠程開鎖等,使用的無線通信技術也是多種多樣,文獻[1]以單片機為核心,結合Wi-Fi 通信技術,實現手機控制門鎖[1];文獻[2]利用NB-IoT 技術,設計了一種基于窄帶物聯網技術的公租房智能門鎖系統[2];文獻[3]以GPRS 技術為基礎設計了一種操作簡單的智能門鎖控制系統[3];文獻[4]采用藍牙通信模塊,實現對門鎖甚至整個家居系統的控制[4]。綜合比較,無線通信方式控制的智能門鎖的優點在于不進行數據對比處理,只做數據采集及數據傳輸,更為安全可靠,且不需要大量布線 。
本文以ESP8266 為核心控制器[5],取代了傳統的ESP8266+單片機芯片組合的控制方式[6],利用Wi-Fi 技術設計了一種低成本易控制的智能門鎖控制器,通過MQTT 通信協議,結合云端服務管理,實現多門鎖多終端協同。本設計可在移動端非局域網接入方式下實現秒級內開鎖,具備遠程開鎖和自動登記開鎖人員信息功能。
本文設計的智能門鎖系統包含三部分:門鎖控制器、云服務器和用戶終端,如圖1所示。門鎖控制器采用ESP8266 Wi-Fi MCU 為核心模塊,外圍擴展電機驅動模塊、USB 串口轉換模塊、電源模塊和按鍵。系統以ESP8266 為主控制單元,取代了傳統的ESP8266+單片機芯片組合的控制方式,控制過程可簡單概括為門鎖控制器利用Wi-Fi 技術接入互聯網,通過云服務器和用戶終端建立通信通道,用戶終端和門鎖控制器之間的通信采用MQTT 通信協議,即以消息訂閱/發布的方式對門鎖進行控制,云服務器在中間負責數據轉發。

圖1:系統總體框架圖
ESP8266 是面向物聯網應用的高性價比、高度集成的Wi-Fi MCU(微控制單元),除了Wi-Fi 功能,ESP8266 還集成了32-bit處理器和片上SRAM,擁有強大的片上處理和存儲能力,可通過GPIO 口集成傳感器及其他設備,另外片內還集成了天線開關、功率放大器、低噪聲接收放大器、濾波器和電源管理模塊,開發成本低,在運行中最少的占用系統資源。
ESP8266 模組共有16 個引腳,要想使模組正常工作,必須對其外圍電路進行設計,電路圖如圖2所示。復位電路采用按鍵控制電路,復位信號RST 低電平有效,工作狀態下復位信號置高,需要復位時,按下按鍵將RST 管腳置零進行復位;使能管腳EN 一直置高;ESP8266 工作模式由GPIO0 決定,上拉進入工作模式,下拉進入下載模式,所以GPIO0 管腳的電路設計成按鍵控制,未按下時上拉VCC,按下后下拉GND,通過按鍵控制ESP8266 在工作模式和下載模式之間切換;TXD0 和RXD0 連接USB 串口轉換模塊;GPIO4 和GPIO5 連接電機驅動模塊。

圖2:ESP8266 電路圖
USB 串口轉換模塊選用CH340 芯片,該芯片是一個USB 總線的轉換芯片,能實現USB 轉串口的功能。CH340 需要外接晶體振蕩器電路給系統提供基本時鐘信號,晶體振蕩電路設計是在X1 和X0 引腳之間連接晶體振蕩器和負載電容,晶振選擇12MHz 的石英晶體,負載電容選擇22pF 的高頻瓷片電容。D-和D+通過串聯電阻連接USB 接口。RXD 和TXD 連接ESP8266 的串行口TXD0 和RXD0。電路設計如圖3所示。

圖3:USB 轉串口電路圖
電源轉換模塊需要將5V 電壓轉換成3.3V,本設計選用AMS1117 穩壓器。AMS1117 是一個正向低壓降穩壓器,在1A 電流下壓降為1.2V。AMS1117 有兩個版本:固定輸出版本和可調版本,固定輸出電壓為1.5V、1.8V、2.5V、2.85V、3.0V、3.3V、5.0V,具有1%的精度。本設計選用3.3V 固定輸出版本,電路圖設計如圖4所示,C3 和C4 是輸入電容,防止斷電后出現的電壓倒置,C5 和C6 是輸出濾波電容,作用是抑制自激振蕩,達到輸出平滑穩定的電壓。

圖4:電源轉換電路圖
電機驅動模塊選用的是L9110S,該芯片是為控制和驅動電機設計的兩通道推挽式功率放大專用集成電路器件。芯片有兩個TTL/CMOS 兼容電平的輸入,有兩個輸出端能直接驅動電機的正反向運動,具有較大的電流驅動能力,每通道能通過800mA 的持續電流,峰值電流能力可達1.5A。本系統的L9110S 電路設計如圖5所示,兩個輸入端通過上拉電阻連接ESP8266 的P4 和P5 管腳,輸出端直接連接門鎖。

圖5:L9110S 電路圖
軟件設計開發使用AiThinker IDE 集成開發環境,基于官方提供的軟件開發包(SDK)進行程序設計,系統選用的開發包版本為ESP8266_NONOS_SDK,工程選用esp_mqtt_proj,在此基礎上進行設計開發。
程序初始化并發起MQTT 連接,具體流程如圖6所示。串口初始化,設置串口波特率為115200bps,本項目串口主要用于程序下載和串口信息打印;控制門鎖管腳設置,根據硬件設計,選擇GPIO4 和GPIO5 管腳,并定義管腳功能;調用MQTT_InitConnection 函數進行連接信息初始化,設置連接服務器的地址、端口號和認證加密;調用MQTT_InitClient 函數進行客戶端初始化,設置客戶端的標識號、用戶名、密碼和心跳時間;ESP8266 既可以作為Wi-Fi 站點(station)也可以作為熱點,本設計選用其作為站點,調用WIFI_Connect 函數發起Wi-Fi 連接,參數里填寫連接熱點的SSID 號和密碼;連接成功則調用MQTT_Connect 連接MQTT 服務器,連接不成功則斷開MQTT 連接。

圖6:程序初始化流程圖
MQTT 連接成功后則進入門鎖控制程序,控制流程如圖7所示。首先調用MQTT_Subscribe 函數訂閱消息,參數填寫訂閱的主題名稱;等待服務器轉發的主題消息,并對消息數據內容解析判斷,當為ON 時,執行開鎖流程,開鎖后等待5S 并關閉門鎖,當為OFF 時,直接關閉門鎖。

圖7:門鎖控制程序流程圖
本系統軟件主要有以下功能:
(1)基于ESP8266 芯片,提供了物聯網硬件設備門鎖的Wi-Fi 接入功能,實現手機APP 端自定義配置SSID 和密碼;
(2)通過MQTT 通信協議,長連接云服務端,實現門鎖的遠程控制,同時使用了基于用戶名及密碼的方式接入,加強了設備接入的安全性;
(3)接收MQTT 已訂閱的消息,解析消息內容,通過電機驅動模塊控制門鎖開關。
搭建系統測試環境對其功能測試驗證,門鎖采用電動雙快鎖,搭建EMQX 服務器,其中控制器模型和測試模型如圖8 和圖9所示,利用ESP_DOWNLOAD_TOOL 燒錄軟件將軟件程序代碼下載到ESP8266 芯片,按照系統方案里要實現的功能點進行驗證,測試時可連接串口,通過串口助手打印信息實時觀察程序運行情況,測試過程如下:

圖8:控制器實物

圖9:智能門鎖系統測試模型
(1)控制器上電,利用ESP-TOUCH 的Smart Config(智能配置)技術設置控制器連接的SSID 和密碼,設置完成后通過串口助手打印信息查看Wi-Fi 連接是否成功。
(2)控制器通過MQTT 協議連接云服務器,服務器上能夠看到控制器連接信息和訂閱發布消息主題。
(3)手機端安裝MQTT 客戶端測試工具APP,向訂閱主題發布控制指令,該指令經服務器轉發,能正常控制門鎖的開關。
本文基于ESP8266 模組設計實現了一款可便捷實時開閉鎖、造價低廉、安全性高的智能門鎖控制器,同時又結合云端服務管理,更加關注門鎖使用過程中產生數據的整合利用。經反復測試,手機APP 遠程控制門鎖開關的反應速度都是秒級內的。另外系統的可擴展性還允許更多的物聯網設備接入,在云端和門鎖控制進行聯動。