范整整,萬 濤,趙詩婷
(華東交通大學 信息工程學院,江西 南昌 330013)
隨著生活節奏的加快和工作壓力的增大,人們將投入更多精力忙于工作和家務,家中的老人、兒童、智障者等特殊群體很難得到細致的照顧,意外走失現象頻頻發生。在物聯網技術高速發展的今天,借助科技手段實現特殊群體的定位監護[1-3]可以極大地減輕監護人的壓力。基于此,本文提出了一種基于微信小程序的特殊群體定位器設計[4-5]。監護人通過微信小程序不但可以隨時查看特殊群體目標的位置信息,還可以為特殊群體設置警戒區域,系統檢測到特殊群體目標所在位置超出警戒區域后,便向監護人手機發送提醒信息,提前預警可能發生的意外。特殊群體亦可通過定位器主動向監護人呼救。
本系統核心是設計一款能夠幫助監護人更高效靈活地監控特殊群體的微信小程序系統,分為軟件設計和硬件設計兩部分。硬件部分即定位器終端通過GPS定位模塊(GT-U7)[6]實現特殊人群的位置信息采集。將收集的經度和緯度數據通過串口發送引腳發送到單片機,由單片機將數據處理成字符形式,并通過NB-IoT將數據發送到微信小程序后臺[7],微信小程序在服務器上獲取定位數據。按鍵產生中斷,單片機將信息發送到服務器,監護人可在微信小程序上收到特殊群體的SOS呼救信息。軟件部分采用微信小程序實現,主要包括三個頁面:登錄頁面、地圖主頁面、個人中心頁面,其中地圖主頁面包含了實時監控位置的按鈕及地圖上顯示的安全圍欄(系統采用電子圍欄技術規劃警戒區域范圍)。系統包括下列功能模塊。
(1)定位模塊。該模塊使用GPS定位系統制作硬件控件,設計使用高靈敏度、低功耗的輕便GT-U7模塊對特殊人群進行定位。
(2)實時監控模塊。該模塊使用WH-NB75與微信小程序進行雙向數據傳輸。當特殊人群走失時,通過NB-IoT(WH-NB75)模塊發送GPS數據,服務器接收到數據后使用微信小程序進行定位查找。
(3)SOS呼救模塊。當特殊人群按下定位器按鍵后,單片機發出中斷提醒,向NB-IoT模塊傳送數據,服務器接收到信息后在微信小程序上提醒監護人特殊人群目標正在呼救。
(4)安全圍欄模塊。監護人設置電子圍欄,服務器會向定位器發送相應的電子圍欄數據,定位器獲取到該指令后保存數據。當定位器的活動范圍超過警戒區域時,定位器自動在微信小程序上提醒監護人特殊人群目標已超出安全區域。
系統總體框架如圖1所示。

圖1 系統總體框架
本系統的硬件電路設計包括STC15單片機、GT-U7、WH-NB75、按鍵以及其他電子元件。系統硬件電路如圖2所示。

圖2 系統硬件電路
GT-U7發送GPS數據至單片機的過程:GT-U7的TX引腳與單片機的RX引腳相接,初始化單片機和GT-U7,通過配置軟件將串口的波特率設置為9 600 b/s,選擇串行端口的工作方式和中斷模式。GPS與單片機通信成功即可實現經緯度數據發送至單片機的功能。
STC單片機接收GPS數據的過程:首先識別數據串中的第一個數據,如果正確,則繼續接收數據,否則向GPS模塊報告錯誤,并重新接收新的數據。如果接收的數據幀正確,則對數據格式進行處理,將其轉換為字符形式并顯示。STC15接收定位數據流程如圖3所示。

圖3 STC15接收定位數據流程
單片機處理GT-U7傳來的定位信息的過程:獲取時間戳,然后將世界標準時間hhmmss(時分秒)格式轉換為HH:MM:SS格式。之后處理接收器中的位置數據,首先區分南北緯度,之后區分東西經度。
NB-IoT選用數據傳輸終端WH-NB75發送GPS數據,利用CoAP透傳模式保證數據的完整傳輸。透明傳輸模式是指對傳輸數據中的起始符與終止符視而不見。數據通過透明傳輸云從串口傳輸到云服務器之前,需要對WH-NB75進行簡單配置。依次將NB75插到評估板插座上,將計算機與評估板用串口線連接,將SIM卡插到卡槽中,將天線連接到模塊上,使用配置軟件進行串口波特率、服務器地址、端口號的配置。配置完成,便可以實現數據的無線傳輸。
該模塊功能的實現主要依賴STC15單片機的外部中斷機制。按下定位器端的按鍵,觸發中斷,由單片機進行中斷處理,執行中斷服務程序,之后單片機發送提醒信息給云服務器,微信小程序通過云服務器獲取提醒特殊人群走失的提示信息。
本課題軟件部分為微信小程序,注冊微信小程序后,進行騰訊云開發的申請,申請通過后便能夠連接硬件和小程序。開通云開發功能之后,創建NoSQL數據庫,申請騰訊地圖使用權限后便能在微信小程序中編寫地圖相關代碼。
云開發空間通常使用NoSQL數據庫[8-9],該數據庫的結構以集合為單位進行屬性存儲,更易于實現高性能、高擴展的存儲系統。系統創建一個location集合進行硬件定位數據的存儲,便于小程序端讀取定位數據。首先設置數據庫的環境,本系統自定義開發環境為prventpersonlose-998sn;然后創建一個location集合進行記錄存儲,其中記錄id由云端自主生成機器碼,作為記錄的唯一區分,同時設定記錄id為SOS的Boolean變量作為緊急求救按鈕變量,實現按鍵求救功能。
本系統需要用到安全圍欄以及位置移動等高端地圖功能。騰訊地圖可以提供多種開發工具與服務[10],因此考慮申請騰訊地圖API來獲取更高端的函數對地圖進行展示。
(1)小程序實時顯示位置功能
本系統的核心是定位。定位功能主要通過定位器終端GPS實現,與騰訊云函數建立連接之后將定位相關信息及時傳輸,云函數將硬件信息進行解析后存入數據庫中。此時小程序每隔9 s就對被監控端位置進行一次服務器數據拉取。
(2)小程序安全圍欄功能
本系統中安全圍欄的實現主要借助騰訊地圖實現。Circles能夠在map上繪制一個半徑由用戶設定的圓圈,該圓圈能從視覺上實現安全圍欄的效果。本系統采用經緯度兩點換算成直線距離的算法,對監控端和定位器端的直線距離進行換算,具體算法近似在一個球體上求兩點弧長的算法。兩點間距離換算之后與圓的半徑進行比較,便能夠知曉目標人物是否走出了安全圍欄。
(3)緊急求救功能
在硬件部分設有緊急求救按鈕,當按下按鈕之后,硬件端會與服務端建立連接,將信息傳輸到云函數中進行解析,并存入數據庫中的SOS記錄,將SOS記錄設置為true。小程序端在拉取數據時判斷SOS記錄是否為true,如果記錄為true,則告知系統定位器端的求救按鍵已按下。
本系統需要手機用戶對微信開啟位置權限,否則打開小程序后地圖無法顯示。將手機定位功能開啟之后,便能夠看見主頁面刷新出圖4所示的地圖,并且還能看到當前用戶所處位置。

圖4 地圖界面
本系統調用了騰訊地圖,在小程序編寫時要注意是否獲取到正確的Acckey,如果Acckey錯誤將導致地圖無法加載。
點擊按鈕之后每隔9 s不僅會刷新被守護端的位置,同時還能夠對定位器端是否走出安全圍欄,是否點擊緊急求救按鈕進行判斷,并發出警示。當被定位器端走出安全圍欄時,會有彈窗提示用戶被監控端已經走出安全圍欄,如圖5所示。
當定位器端點擊了緊急求救按鈕之后,就會在地圖主界面跳出彈窗,提醒定位器端正在緊急求救,如圖6所示。

圖5 超出安全圍欄范圍警示界面

圖6 SOS呼救界面
本文設計的基于微信小程序的特殊群體防走失定位系統,能夠準確定位被監督人群,并在發生意外時及時提醒、報警。系統運行穩定,具有廣闊的應用和發展前景。