范整整,萬(wàn) 濤,趙詩(shī)婷
(華東交通大學(xué) 信息工程學(xué)院,江西 南昌 330013)
隨著生活節(jié)奏的加快和工作壓力的增大,人們將投入更多精力忙于工作和家務(wù),家中的老人、兒童、智障者等特殊群體很難得到細(xì)致的照顧,意外走失現(xiàn)象頻頻發(fā)生。在物聯(lián)網(wǎng)技術(shù)高速發(fā)展的今天,借助科技手段實(shí)現(xiàn)特殊群體的定位監(jiān)護(hù)[1-3]可以極大地減輕監(jiān)護(hù)人的壓力?;诖?,本文提出了一種基于微信小程序的特殊群體定位器設(shè)計(jì)[4-5]。監(jiān)護(hù)人通過(guò)微信小程序不但可以隨時(shí)查看特殊群體目標(biāo)的位置信息,還可以為特殊群體設(shè)置警戒區(qū)域,系統(tǒng)檢測(cè)到特殊群體目標(biāo)所在位置超出警戒區(qū)域后,便向監(jiān)護(hù)人手機(jī)發(fā)送提醒信息,提前預(yù)警可能發(fā)生的意外。特殊群體亦可通過(guò)定位器主動(dòng)向監(jiān)護(hù)人呼救。
本系統(tǒng)核心是設(shè)計(jì)一款能夠幫助監(jiān)護(hù)人更高效靈活地監(jiān)控特殊群體的微信小程序系統(tǒng),分為軟件設(shè)計(jì)和硬件設(shè)計(jì)兩部分。硬件部分即定位器終端通過(guò)GPS定位模塊(GT-U7)[6]實(shí)現(xiàn)特殊人群的位置信息采集。將收集的經(jīng)度和緯度數(shù)據(jù)通過(guò)串口發(fā)送引腳發(fā)送到單片機(jī),由單片機(jī)將數(shù)據(jù)處理成字符形式,并通過(guò)NB-IoT將數(shù)據(jù)發(fā)送到微信小程序后臺(tái)[7],微信小程序在服務(wù)器上獲取定位數(shù)據(jù)。按鍵產(chǎn)生中斷,單片機(jī)將信息發(fā)送到服務(wù)器,監(jiān)護(hù)人可在微信小程序上收到特殊群體的SOS呼救信息。軟件部分采用微信小程序?qū)崿F(xiàn),主要包括三個(gè)頁(yè)面:登錄頁(yè)面、地圖主頁(yè)面、個(gè)人中心頁(yè)面,其中地圖主頁(yè)面包含了實(shí)時(shí)監(jiān)控位置的按鈕及地圖上顯示的安全圍欄(系統(tǒng)采用電子圍欄技術(shù)規(guī)劃警戒區(qū)域范圍)。系統(tǒng)包括下列功能模塊。
(1)定位模塊。該模塊使用GPS定位系統(tǒng)制作硬件控件,設(shè)計(jì)使用高靈敏度、低功耗的輕便GT-U7模塊對(duì)特殊人群進(jìn)行定位。
(2)實(shí)時(shí)監(jiān)控模塊。該模塊使用WH-NB75與微信小程序進(jìn)行雙向數(shù)據(jù)傳輸。當(dāng)特殊人群走失時(shí),通過(guò)NB-IoT(WH-NB75)模塊發(fā)送GPS數(shù)據(jù),服務(wù)器接收到數(shù)據(jù)后使用微信小程序進(jìn)行定位查找。
(3)SOS呼救模塊。當(dāng)特殊人群按下定位器按鍵后,單片機(jī)發(fā)出中斷提醒,向NB-IoT模塊傳送數(shù)據(jù),服務(wù)器接收到信息后在微信小程序上提醒監(jiān)護(hù)人特殊人群目標(biāo)正在呼救。
(4)安全圍欄模塊。監(jiān)護(hù)人設(shè)置電子圍欄,服務(wù)器會(huì)向定位器發(fā)送相應(yīng)的電子圍欄數(shù)據(jù),定位器獲取到該指令后保存數(shù)據(jù)。當(dāng)定位器的活動(dòng)范圍超過(guò)警戒區(qū)域時(shí),定位器自動(dòng)在微信小程序上提醒監(jiān)護(hù)人特殊人群目標(biāo)已超出安全區(qū)域。
系統(tǒng)總體框架如圖1所示。
圖1 系統(tǒng)總體框架
本系統(tǒng)的硬件電路設(shè)計(jì)包括STC15單片機(jī)、GT-U7、WH-NB75、按鍵以及其他電子元件。系統(tǒng)硬件電路如圖2所示。
圖2 系統(tǒng)硬件電路
GT-U7發(fā)送GPS數(shù)據(jù)至單片機(jī)的過(guò)程:GT-U7的TX引腳與單片機(jī)的RX引腳相接,初始化單片機(jī)和GT-U7,通過(guò)配置軟件將串口的波特率設(shè)置為9 600 b/s,選擇串行端口的工作方式和中斷模式。GPS與單片機(jī)通信成功即可實(shí)現(xiàn)經(jīng)緯度數(shù)據(jù)發(fā)送至單片機(jī)的功能。
STC單片機(jī)接收GPS數(shù)據(jù)的過(guò)程:首先識(shí)別數(shù)據(jù)串中的第一個(gè)數(shù)據(jù),如果正確,則繼續(xù)接收數(shù)據(jù),否則向GPS模塊報(bào)告錯(cuò)誤,并重新接收新的數(shù)據(jù)。如果接收的數(shù)據(jù)幀正確,則對(duì)數(shù)據(jù)格式進(jìn)行處理,將其轉(zhuǎn)換為字符形式并顯示。STC15接收定位數(shù)據(jù)流程如圖3所示。
圖3 STC15接收定位數(shù)據(jù)流程
單片機(jī)處理GT-U7傳來(lái)的定位信息的過(guò)程:獲取時(shí)間戳,然后將世界標(biāo)準(zhǔn)時(shí)間hhmmss(時(shí)分秒)格式轉(zhuǎn)換為HH:MM:SS格式。之后處理接收器中的位置數(shù)據(jù),首先區(qū)分南北緯度,之后區(qū)分東西經(jīng)度。
NB-IoT選用數(shù)據(jù)傳輸終端WH-NB75發(fā)送GPS數(shù)據(jù),利用CoAP透?jìng)髂J奖WC數(shù)據(jù)的完整傳輸。透明傳輸模式是指對(duì)傳輸數(shù)據(jù)中的起始符與終止符視而不見(jiàn)。數(shù)據(jù)通過(guò)透明傳輸云從串口傳輸?shù)皆品?wù)器之前,需要對(duì)WH-NB75進(jìn)行簡(jiǎn)單配置。依次將NB75插到評(píng)估板插座上,將計(jì)算機(jī)與評(píng)估板用串口線(xiàn)連接,將SIM卡插到卡槽中,將天線(xiàn)連接到模塊上,使用配置軟件進(jìn)行串口波特率、服務(wù)器地址、端口號(hào)的配置。配置完成,便可以實(shí)現(xiàn)數(shù)據(jù)的無(wú)線(xiàn)傳輸。
該模塊功能的實(shí)現(xiàn)主要依賴(lài)STC15單片機(jī)的外部中斷機(jī)制。按下定位器端的按鍵,觸發(fā)中斷,由單片機(jī)進(jìn)行中斷處理,執(zhí)行中斷服務(wù)程序,之后單片機(jī)發(fā)送提醒信息給云服務(wù)器,微信小程序通過(guò)云服務(wù)器獲取提醒特殊人群走失的提示信息。
本課題軟件部分為微信小程序,注冊(cè)微信小程序后,進(jìn)行騰訊云開(kāi)發(fā)的申請(qǐng),申請(qǐng)通過(guò)后便能夠連接硬件和小程序。開(kāi)通云開(kāi)發(fā)功能之后,創(chuàng)建NoSQL數(shù)據(jù)庫(kù),申請(qǐng)騰訊地圖使用權(quán)限后便能在微信小程序中編寫(xiě)地圖相關(guān)代碼。
云開(kāi)發(fā)空間通常使用NoSQL數(shù)據(jù)庫(kù)[8-9],該數(shù)據(jù)庫(kù)的結(jié)構(gòu)以集合為單位進(jìn)行屬性存儲(chǔ),更易于實(shí)現(xiàn)高性能、高擴(kuò)展的存儲(chǔ)系統(tǒng)。系統(tǒng)創(chuàng)建一個(gè)location集合進(jìn)行硬件定位數(shù)據(jù)的存儲(chǔ),便于小程序端讀取定位數(shù)據(jù)。首先設(shè)置數(shù)據(jù)庫(kù)的環(huán)境,本系統(tǒng)自定義開(kāi)發(fā)環(huán)境為prventpersonlose-998sn;然后創(chuàng)建一個(gè)location集合進(jìn)行記錄存儲(chǔ),其中記錄id由云端自主生成機(jī)器碼,作為記錄的唯一區(qū)分,同時(shí)設(shè)定記錄id為SOS的Boolean變量作為緊急求救按鈕變量,實(shí)現(xiàn)按鍵求救功能。
本系統(tǒng)需要用到安全圍欄以及位置移動(dòng)等高端地圖功能。騰訊地圖可以提供多種開(kāi)發(fā)工具與服務(wù)[10],因此考慮申請(qǐng)騰訊地圖API來(lái)獲取更高端的函數(shù)對(duì)地圖進(jìn)行展示。
(1)小程序?qū)崟r(shí)顯示位置功能
本系統(tǒng)的核心是定位。定位功能主要通過(guò)定位器終端GPS實(shí)現(xiàn),與騰訊云函數(shù)建立連接之后將定位相關(guān)信息及時(shí)傳輸,云函數(shù)將硬件信息進(jìn)行解析后存入數(shù)據(jù)庫(kù)中。此時(shí)小程序每隔9 s就對(duì)被監(jiān)控端位置進(jìn)行一次服務(wù)器數(shù)據(jù)拉取。
(2)小程序安全圍欄功能
本系統(tǒng)中安全圍欄的實(shí)現(xiàn)主要借助騰訊地圖實(shí)現(xiàn)。Circles能夠在map上繪制一個(gè)半徑由用戶(hù)設(shè)定的圓圈,該圓圈能從視覺(jué)上實(shí)現(xiàn)安全圍欄的效果。本系統(tǒng)采用經(jīng)緯度兩點(diǎn)換算成直線(xiàn)距離的算法,對(duì)監(jiān)控端和定位器端的直線(xiàn)距離進(jìn)行換算,具體算法近似在一個(gè)球體上求兩點(diǎn)弧長(zhǎng)的算法。兩點(diǎn)間距離換算之后與圓的半徑進(jìn)行比較,便能夠知曉目標(biāo)人物是否走出了安全圍欄。
(3)緊急求救功能
在硬件部分設(shè)有緊急求救按鈕,當(dāng)按下按鈕之后,硬件端會(huì)與服務(wù)端建立連接,將信息傳輸?shù)皆坪瘮?shù)中進(jìn)行解析,并存入數(shù)據(jù)庫(kù)中的SOS記錄,將SOS記錄設(shè)置為true。小程序端在拉取數(shù)據(jù)時(shí)判斷SOS記錄是否為true,如果記錄為true,則告知系統(tǒng)定位器端的求救按鍵已按下。
本系統(tǒng)需要手機(jī)用戶(hù)對(duì)微信開(kāi)啟位置權(quán)限,否則打開(kāi)小程序后地圖無(wú)法顯示。將手機(jī)定位功能開(kāi)啟之后,便能夠看見(jiàn)主頁(yè)面刷新出圖4所示的地圖,并且還能看到當(dāng)前用戶(hù)所處位置。
圖4 地圖界面
本系統(tǒng)調(diào)用了騰訊地圖,在小程序編寫(xiě)時(shí)要注意是否獲取到正確的Acckey,如果Acckey錯(cuò)誤將導(dǎo)致地圖無(wú)法加載。
點(diǎn)擊按鈕之后每隔9 s不僅會(huì)刷新被守護(hù)端的位置,同時(shí)還能夠?qū)Χㄎ黄鞫耸欠褡叱霭踩珖鷻?,是否點(diǎn)擊緊急求救按鈕進(jìn)行判斷,并發(fā)出警示。當(dāng)被定位器端走出安全圍欄時(shí),會(huì)有彈窗提示用戶(hù)被監(jiān)控端已經(jīng)走出安全圍欄,如圖5所示。
當(dāng)定位器端點(diǎn)擊了緊急求救按鈕之后,就會(huì)在地圖主界面跳出彈窗,提醒定位器端正在緊急求救,如圖6所示。
圖5 超出安全圍欄范圍警示界面
圖6 SOS呼救界面
本文設(shè)計(jì)的基于微信小程序的特殊群體防走失定位系統(tǒng),能夠準(zhǔn)確定位被監(jiān)督人群,并在發(fā)生意外時(shí)及時(shí)提醒、報(bào)警。系統(tǒng)運(yùn)行穩(wěn)定,具有廣闊的應(yīng)用和發(fā)展前景。