對於愛車人士,相信很多人認為它寶貝的像是他的第二生命,因此車輛防盜絕對是一個重要課題。因此我們設計一個結合雲端之指紋辨識器的防盜系統。當車門開啟後即啟動指紋辨識器,利用指紋辨識來確認進入人員是否為註冊者,如果指紋認證錯誤或沒操作,系統會立刻拍攝照片並通知車主。
本作品主要分為MCU指紋辨識端、車載系統與手機APP三大部分。它透過MCU、手機APP、車載系統與雲端伺服器的結合,建立車用物聯網,達到推播通知與身分辨識的功能,即使車輛不在身邊,也可以在第一時間取得通知,可利用專用手機APP得知遭到入侵的訊息並查看圖片。
車輛是許多家庭的重要交通工具之一,對於愛車人士,很多認為它是第二老婆,因此車輛防盜絕對是一個不可輕忽的環節。隨著物聯網的興起,我們設計一個結合雲端技術之指紋辨識器的防盜系統,它具有下列功能:
[1]車門開啟後即啟動系統與指紋辨識器
[2]利用指紋辨識來確認進入人員是否為車輛註冊者,如果指紋認證錯誤或不予理會,系統會立刻利用車輛內架設好的相機拍攝照片並存到雲端伺服器。
[3]當事件發生,系統會立即推播訊息告知車輛擁有者。
[4]車輛擁有者具有指紋的註冊與管理權力。
[5]車輛擁有者使用專用APP查看拍攝的照片。
工作原理
工作方法
本作品使用盛群微處理器HT66F2390作為主要控制晶片,再MCU指紋辨識端偵測到指紋錯誤後,系統會透過MQTT(Message Queuing Telemetry Transport)發送訊息至車載系統與手機APP,這時車載系統會啟動相機拍攝入侵者圖片並上傳至雲端伺服器,而手機APP會接收到訊息並跳出通知,可利用專用手機APP得知遭到入侵的訊息並查看圖片。
作品功能
本作品主要功能分為三個部分,分別為使
用者指紋的管理、指紋的認證及拍攝照片並通
知使用者。
使用者指紋的管理
使用者使用專用APP透過藍芽與設備連線進入指紋管理程序,在APP中輸入使用者名稱,系統會利用使用者的名稱去與雲端資料庫做ID的管理,並利用此ID與MCU做指紋的註冊或刪除。
指紋的認證
透過BS816A-1觸控模組開啟GTM-5210F12指紋模組辨識指紋是否被註冊過,來確認進入車輛人員是否為車輛擁有者。
拍攝照片並通知使用者
在指紋認證錯誤或未認證時啟動車載系統中事先架設好的相機拍攝照片透過HTTP POST方法將拍攝的照片丟到雲端伺服器中、並利用MQTT推播訊息至已訂閱訊息的APP中,跳出訊息來告知車輛遭到非法入侵,APP也可以利用HTTP GET方法從伺服器中取得拍攝的照片與時間。
使用HOLTEK MCU之主要核心功能
本作品利用HT66F2390作為主要控制核心,使用了程式記憶體(Flash Program Memory)、資料記憶體(Data Memory)、特殊功能暫存器(Special Function Register)、中斷控制電路(Interrupt)、計時模組(Standard Type TM)、輸入/輸出(Input/Output)、通用非同步收發傳輸器(UART)、電子抹除式可複寫唯讀記憶體(EEPROM)等8種功能。
作品結構
本作品利用MCU HT66F2390透過網際網路與Apache HTTP和Mosquitto MQTT伺服器連線,與車載系統與手機APP作為結合達到訊息溝通的目的,本作品主要分為使用者管理系統、車載系統、手機系統與MCU身分辨識與推播訊息系統四大系統如圖1所示。
使用者管理系統
HT66F2390利用Esp8266 WIFI模組與Apache HTTP伺服器和SQL資料庫溝通達到雲端管理使用者的功能。
車載系統
等待MCU發送事件發生訊號至事先架設於車內的車載系統,啟動相機拍攝入侵者照片並透過HTTP POST方法將照片上傳至雲端資料庫。
手機系統
透過專用APP可以利用藍芽與MCU溝通註冊使用者指紋,APP也可以與Mosquitto MQTT伺服器訂閱訊息,在事件發生後可以在第一時間得知狀況並透過Apache伺服器取得車內攝影機拍攝的照片。
MCU身分辨識與推播訊息系統
若MCU偵測到身分辨識錯誤,則透過ESP8266推播資料至Mosquitto MQTT伺服器,mosquito MQTT伺服器會負責將推播的資料發送至用戶手機APP中。
GTM-5210F12指紋模組
GTM-5210F12是一款利用ARM Cortex M3 Core(Holtek HT32F22366)支援UART傳輸介面容易使用的指紋辨識模組,擁有簡單快速高解析度(450DPI)的指紋註冊、1:1指紋認證、1:N指紋辨識的功能,外觀如圖2所示。
ESP8266 WIFI模組
BS816A-1觸控模組
BS816-A觸控模組,外觀如圖5所示,此IC可透過外部的觸摸按鍵感應人手的觸摸動作,擁有抗電源干擾的能力,快速的觸摸反應時間,本作品利用BS816A-1開啟指紋模組。
ESP8266是一款超低功耗的UART-WIFI傳輸模組,專為移動裝置和物聯網應用設計,可將用戶的物理裝置連線到WIFI無線網路上,進行互聯網或區域網路通訊,實現聯網功能。外觀如圖3所示。
HC-05藍牙模組
HC-05屬於主從(Host/Slave)一體的模組,功能多樣,可以設定為主端或從端。HC-05擁有EN的腳位,輸入高電壓可啟動AT命令模式,讓我們可以透過UART傳輸一些ASCII的字串來改變模組參數設定,外觀如圖4所示。
BS816A-1觸控模組
BS816-A觸控模組,外觀如圖5所示,此IC可透過外部的觸摸按鍵感應人手的觸摸動作,擁有抗電源干擾的能力,快速的觸摸反應時間,本作品利用BS816A-1開啟指紋模組。
Apache HTTP伺服器
Apache是一個開放原始碼的網頁伺服器軟體,可以在大多數電腦作業系統中運行。由於其跨平台和安全性,被廣泛使用,是最流行的Web伺服器軟體之一。Apache伺服器負責接網路請求(HTTP Request),接收到後可以透過PHP程式執行功能並回應請求。於本作品中Apache HTTP伺服器擔任MCU、車載系統與APP連接SQL伺服器之間的橋樑,透過HTTP請求的方式來達到雲端存取的功能。
Mosquitto MQTT伺服器
Mosquitto是一個開放原始碼MQTT伺服器。MQTT是一種machine-to-machine(M2M)頻寬很低的通訊協定,可以讓各種設備互相溝通。
於本作品中Mosquitto MQTT伺服器為擔任MCU、車載系統與APP之間訊息推播與轉發的平台。
MQTT架構
在MQTT架構中,分為三種Publisher(發送訊息者)、Subscriber(接收訊息者)、Broker(轉送訊息者)。而不同的訊息可能會需要傳遞給不同的接收者,所以訊息在發送的時候,發送者(publisher)必須標示這則訊息的主題(topic),而轉送訊息者(broker)則會依照這則訊息的主題,將訊息傳遞給有訂閱該主題的接收者(subscriber),架構圖如圖6所示。
軟體系統
軟體架構主要分為3大部分,為MCU主程式、指紋註冊程序、圖片拍攝的上傳與下載。
MCU指紋辨識主程式
圖7為MCU指紋辨識流程圖,MCU利用微動開關來判斷車門是否被開啟,車門開啟後啟動指紋認證程式,若指紋認證錯誤或於10秒內未向指紋模組進行指紋辨識,則MCU會透過ESP8266發送指紋認證錯誤推播訊號至Mosquitto MQTT伺服器。
車載系統
於車內事先架設好的車載系統,連線至Mosquitto MQTT伺服器等待推播訊號,接收訊號後開啟相機拍攝照片將格式轉為JPEG格式(破壞性圖像格式)並利用HTTP POST方法將圖片上傳至Apache伺服器中,並於SQL資料庫中新增資料供APP進行圖片的下載與查詢,流程如圖8所示。
手機APP MQTT接收程式
若手機從Mosquitto MQTT伺服器接收到推播訊號,手機會跳出Notification通知告知使用者車輛遭到入侵,流程圖如圖9所示。
MCU指紋註冊程式
使用者利用手機APP透過藍牙與MCU的連線進入指紋註冊程式,使用者在輸入使用者名稱後透過管理者指紋的認證系統會透過Apache伺服器向SQL資料庫進行用戶名註冊並取得指紋ID,取的指紋ID後MCU會啟動GTM-5210F12的指紋註冊程序,按壓三次指紋後即完成指紋的註冊,流程如圖10所示。
測試方法
測試指紋註冊
於APP內進入使用者管理介面如圖11,透過藍牙與MCU連線,輸入使用者名稱後按下設定指紋鍵,此時指紋模組會發亮開啟並於APP顯示「請認證管理者指紋」,管理者指紋認證後即進入指紋註冊程式,指紋按壓三次後如圖12則完成指紋註冊,MCU會將使用者ID儲存於EEPROM中,並且可於SQL資料庫內看見使用者註冊訊息如圖13所示。
測試指紋刪除
於APP使用者管理介面內輸入要刪除的使用者名稱,按下刪除指紋鍵後,指紋模組燈亮起並於APP介面顯示「請認證管理者指紋」,管理者指紋認證後APP顯示「指紋刪除成功」即完成指紋刪除動作,MCU會將指紋ID從EEPROM中移除,可於圖14所示使用者已從SQL資料庫中刪除。
測試車門開啟後指紋認證與推播功能
測試車門開啟
透過微動開關判斷車門是否開啟,車門開啟後LED會閃紅燈而蜂鳴器會叫「逼」一聲表示開始進行指紋認證程序,如圖15所示。
測試指紋認證
透過按壓BS816A-1觸控模組利用組合鍵如圖16的方式開啟指紋模組進行指紋認證,認證成功則LED顯示藍燈如圖17所示,若認證錯誤則顯示紅燈如圖18所示。
圖16 : 利用BS816A-1觸控模組開啟指紋模組 |
|
測試MQTT推播功能
若在車門開啟後指紋認證錯誤或於10秒內未進行指紋認證,MCU會發送推播訊號至Mosquitto MQTT伺服器,並轉發訊息至訂閱者裝置中,如圖19所示,可以看見MCU發送訊息至MQTT伺服器,而伺服器轉發訊息給車載系統與有訂閱訊息的APP。
測試用戶APP接收訊息並通知
手機APP透過MQTT接收到MCU發送的訊息後會跳出通知,如圖20分別為指紋辨識錯誤與指紋未進行認證。
測試車載系統拍攝照片與APP瀏覽圖片功能
若車載系統接收到從MCU透過MQTT發送的推播訊息,則會開啟相機拍攝照片並利用HTTP POST方法將拍攝的圖片上傳至Apache HTTP伺服器,如圖21可見,並且可於APP瀏覽圖片視窗選取圖片,選取後則可看見拍攝到的圖片如圖22所示。
結論
本系統為一個車輛防盜的系統,利用指紋辨識器辨識進入車輛人員是否為車輛擁有者,如果指紋辨識錯誤或未辨識時,則會透過MQTT將推播訊息,並且開啟車內的相機進行圖片拍攝上傳至伺服器,而可利用專用手機APP得知遭到入侵的訊息並查看圖片,達到車輛安全防盜的功能。
參考資料
[1] Holtek Semiconductor INC.,HT66F23xx DataSheet,http://www.holtek.com/documents/10179/116711/HT66F23x0v130.pdf
[2] ESP8266 MCU ,Datasheet,
http://download.arduino.org/products/UNOWIFI/0A-ESP8266-Datasheet-EN-v4.3.pdf
[3] Holtek Semiconductor INC., BS81xA DataSheet,http://www.holtek.com/documents/10179/116711/BS81xA-xv150.pdf
[4] Gingytech, GTM-521XF Series Datasheet, https://www.bestmodulescorp.com/amfile/file/download/file_id/203/product_id/72/
[5] 鍾啟仁,HT66Fxx Flash MCU 原理與實務- 組合語言篇,全華圖書股份有限公司,民國 99 年,初版
[6] 孫宏明,Android程式設計入門、應用、到精通,碁峰資訊股份有限公司,民國107年,六版二刷
本文作者為國立虎尾科技大學光電工程系簡劉全與林華川教授