劉雙晴,王文虎,彭 琛,趙呈強,劉 明
(湖南文理學院 計算機與電氣工程學院,湖南 常德 415000)
無論鄉(xiāng)村還是城鎮(zhèn),年幼小孩上下學問題既是家庭的負擔,也有社會的責任,確保中小學生安全往返學校一直是亟待解決的社會問題。市面上,常見的面向小孩子的監(jiān)護產品主要是電話手表和智能手環(huán)之類,兩者都容易丟失,且功能單一[1]。
本文設計并實現了一種以書包為媒介監(jiān)護孩子上下學途中安全的智慧書包,智慧書包由書包狀態(tài)監(jiān)測終端、GPRS通信網絡、手機APP等組成,結構如圖1所示。學生上學、放學途中都會背著書包,通過書包狀態(tài)監(jiān)測終端可以獲取學生上學途中以及放學回家途中的路徑信息等,這些信息借助GPRS網絡發(fā)送到家長手機APP中,一方面方便家長掌握學生上學、放學沿途的路徑信息,另一方面可以培養(yǎng)學生獨立自主的生存能力。
圖1 智慧書包結構
書包狀態(tài)監(jiān)測終端由微處理器最小應用系統、定位模塊、電子標簽以及電子標簽讀卡器、GPRS模塊、LED環(huán)形燈帶等組成,電路原理如圖2所示。
圖2中,U1為32位微處理器STM32F103;Y1,C1,C2構成外時鐘電路;R1,C3構成上電低電平復位電路;插座XP提供了SWD程序下載接口;U1引腳BOOT1,BOOT0外接公共端實現FLASH程序引導方式;時鐘單元、復位單元、SWD程序下載接口、程序引導單元共同構成微處理器的最小應用系統[2]。
微處理器STM32F103的PA10、PA9分別與北斗定位模塊A1的數據發(fā)送端TXD、接收端RXD相連接,實現串口數據傳輸。A1為ATGM332D-5N-31-0,支持北斗+GPS雙定位,追蹤靈敏度高達-162 dBm,定位精度[3-4]為2.5 m。
微處理器STM32F103的PB11、PB10分別與電子標簽讀卡器模塊A2的數據發(fā)送端TXD、接收端RXD相連接,實現串口數據傳輸。A2為HSC500,該模塊工作頻率為840~960 MHz,支持ISO18000-6C/EPC C1G2協議,模塊功耗低、體積小,非常適用于短距離應用。電子標簽采用無源標簽,標簽無電池供電,當標簽在讀卡器的閱讀范圍之外時,標簽處于無源狀態(tài);當標簽處于讀卡器的閱讀范圍之內時,標簽可從閱讀器發(fā)出的射頻能量中提取其工作所需的電能[5-6],達到條件性讀卡目的。將電子標簽安裝在肩帶內側,利用RFID射頻信號不能穿透人體和金屬,可以穿透非金屬等固體這一特性,從而判斷該書包是否脫離。
微處理器STM32F103的PA3、PA2分別與GPRS模塊A3的數據發(fā)送端TXD、接收端RXD相連接,實現串口數據傳輸。A3為WH-LTE-7S4 V2,該模塊帶有標準的SIM卡接口,支持GPRS數據傳輸,支持網絡透傳模式、HTTPD模式、UDC模式。該模式除了可實現SMS(短信、彩信)功能,還支持自定義注冊包、心跳包等功能[7]。
電 阻 R6,R7,...,Rmn和 發(fā) 光 二 極 管 V3,V4,...,Vxy串并聯組成的是LED環(huán)形燈帶,采用12 V電源供電。當PC7引腳輸出高電平時,V1導通管,V2管截止,熄滅發(fā)光二極管環(huán)形彩帶;當PC7引腳輸出低電平時,V1管截止,V2管導通,點亮發(fā)光二極管環(huán)形彩帶。該功能的目的就是針對中小學生過馬路時提醒司機朋友減慢車速所設的警示。
圖2 書包狀態(tài)監(jiān)測終端電路原理
書包狀態(tài)監(jiān)測程序包括書包定位程序、人與書包是否分離監(jiān)測程序、GPRS通信程序等,程序采用C語言在Keil 5平臺上編寫[8]。
裝置上電后,系統進入初始化函數,如I/O口、定時器、延遲、串口、電子標簽讀卡器啟動、GPRS模塊等進行初始化。GPRS模塊初始化即通過AT指令設置工作模式,按照服務器平臺的協議命令,由GPRS模塊向服務器發(fā)送連接請求,連接成功后,進入數據檢測處理函數。將書包位置信息、時間信息、電子標簽信息以及從服務器下發(fā)的位置信息進行綜合比對,若比對成功,微處理器控制書包上的LED環(huán)形燈帶點亮,同時判斷電子標簽讀卡器的返回值,若判斷為脫離,微處理器定時通過GPRS模塊向指定手機號碼發(fā)送短信提醒,直到狀態(tài)轉變;將數據檢測處理函數中定位信息、時間信息、電子標簽信息上傳至服務器,方便進行數據觀測,包括手機APP端。監(jiān)測終端主程序流程如圖3所示。
圖3 主程序流程
書包定位模塊遵循NMEA0183協議,所以定位數據解析就是對該協議的解析。NMEA0183是一種航海、海運方面關于數字信號傳遞的標準,其數據幀主要由幀頭、幀尾和幀內數據組成。常見的幀頭主要有$--VTC、$--ZDA、$--GGA、$--GLL、$--RMC等,這些幀頭后面的幀內數據各參數以逗號相隔,各幀均以回車符和換行符作為幀尾標識的結束[9]。在解析數據時,首先需要判斷數據幀的幀頭,獲取需要的數據,以$--RMC幀為例,該幀結構和字段為:$--RMC,UTCtime,status,lat,uLat,lon,uLon,spd,cog,date,mv,mvE,mode*CS<CR><LF>, 如 :$GPRMC,235261.000,A,2559.9925,S,12000.0090,E,0.009,75.020,020711,A*45,表示為全球定位系統最小定位信息,UTC時間為235 261.000,信息有效,位置為南緯25°599 925'東經120°000 090',速度為0.009節(jié),對地真航向為75.020°,時間為2011年7月2日,定位模式為自主模式,校驗和[10]為45。
書包定位程序首先判斷串口是否接收到定位信息,若接收到信息,則將數據幀中的各個字段信息分離保存;再判斷本次數據幀是否有效,若有效,將有效標志位置位,表示本次解析數據完成。完成解析后,取出位置信息與紅路燈信息庫進行對比,若比對成功,微處理器控制書包上的LED環(huán)形彩帶點亮。定位模塊數據解析流程如圖4所示。
圖4 定位模塊數據解析流程
電子標簽讀卡器程序即人與書包是否分離檢測程序。電子標簽讀卡器模塊支持ISO18000-6C/EPC C1G2標準協議,固件指令由幀頭、幀類型、指令代碼、指令數據長度、指令參數、校驗碼和幀尾組成,均為十六進制表示。多次輪詢指令見表1所列。
表1 多次輪詢指令表
表1中,幀類型Type:0x00;指令代碼Command:0x27;指令參數長度PL:0x0003;保留位Reserve:0x22;輪詢次數CNT:0x2710;校驗位Checksum:0x83。
RFID模塊通過串口將檢測的標簽信息傳送給微處理器,產生串口中斷,進入串口中斷程序,按照返回格式,提取標簽信息,與已知標簽信息匹配,若匹配成功,則使標志位置位。RFID串口中斷處理函數流程如圖5所示。
圖5 RFID串口中斷處理函數流程
GPRS模塊主要完成連接服務器和數據傳輸兩大任務。微處理器獲取數據后通過串口傳送給GPRS模塊,GPRS模塊借助GPRS網絡將數據傳送給互聯網平臺(采用TCP協議,選用網絡透傳方式)。通過AT指令設置GPRS模塊的工作方式,然后向互聯網平臺發(fā)送TCP連接請求和數據,實現服務器連接和數據上傳。
給模塊上電,微處理器通過串口向GPRS模塊發(fā)送“+++”,GPRS模塊收到“+++”后,給微處理器發(fā)送一個“a”,微處理器收到“a”后,3 s內給GPRS模塊發(fā)送一個“a”,GPRS模塊收到“a”后,給微處理器返回“+ok”,表示GPRS模塊進入配置狀態(tài)[7]。這時,微處理器可以通過串口向GPRS模塊發(fā)送相應的AT指令,設置GPRS的工作模式、服務類型,以及連接服務器的IP和端口號等[7]。GPRS初始化流程如圖6所示。
圖6 GPRS模塊初始化流程
GPRS通信程序調用的函數如下:
APP程序設計采用Java語言在Android Studio平臺下編寫[7-8,11]。APP應用程序分為登錄界面和狀態(tài)監(jiān)測界面,APP開發(fā)流程如圖7所示。
圖7 APP開發(fā)流程
APP初始化包括調用Android地圖SDK實現基礎地圖的顯示。配置AndroidManifest.xml文件,在<application>中加入如下代碼:
<Android:name="com.baidu.lbsapi.API_KEY">,
<Android:value="0KBkVlHbo1LmZfrUiqN0a9XdIBgXmzAC">
配置開發(fā)密鑰(AK),在<application>外部添加權限聲明,而后在布局文件中添加地圖容器,再初始化地圖,新建一個自定義的Application,在其onCreate方法中完成SDK的初始化,最后創(chuàng)建地圖Activity,管理MapView使命周期,實現在應用中顯示地圖。
導入云平臺的應用SDK,調用云平臺應用SDK中的NewWorkBusiness類,NewWorkBusiness類 含 有signIn登錄函數,可通過手機應用登錄云平臺,然后在NewWorkBusiness 類中調用apiServicele類的signIn函數,請求網頁的響應并分析結果。
調用Android 定位SDK的類和接口,實現圍欄功能。Android定位SDK支持百度POI、自定義圓形、多邊形、行政區(qū)劃多種方式地理圍欄,這里使用的是圓形圍欄。圓形圍欄一次接口調用只可以創(chuàng)建一個圍欄,創(chuàng)建多個自定義圍欄需要多次調用創(chuàng)建接口。
創(chuàng)建圍欄后,判斷監(jiān)測終端坐標是否在圓形圍欄之內,當目標進入或走出圍欄時,即可使用地理圍欄功能進行提醒。調用函數如下:
學生家長打開手機APP,登錄賬號,訪問互聯網平臺獲取書包狀態(tài)監(jiān)測終端的位置信息和對應位置信息的時間信息,利用Android語言中的addoverlay功能[11]將書包狀態(tài)監(jiān)測終端的位置信息在APP主界面上繪制成軌跡,實現學生的實時定位;同時可為學生創(chuàng)建安全圍欄,判斷學生是否處于安全圍欄范圍內,若判斷書包狀態(tài)監(jiān)測終端脫離安全圍欄范圍,則使用地理圍欄功能的警報功能控制家長手機持續(xù)振動,直到處于安全范圍;學生家長還可在APP主界面借助Android Studio平臺的基本控件,通過蜂窩數據實現手機應用程序向互聯網平臺傳輸控制信息,實現控制書包狀態(tài)監(jiān)測終端的部分狀態(tài)。手機APP主界面如圖8所示。
圖8 APP主界面
將微處理器模塊、GPRS模塊、北斗模塊、電子標簽讀卡器、電子標簽、LED環(huán)形燈帶固定在書包上,它們均與電源模塊線性相連。微處理器模塊、GPRS模塊和北斗模塊固定于包內;北斗模塊的接收天線固定于書包外部側面,接收衛(wèi)星信號;電子標簽讀卡器固定于書包貼背處,電子標簽固定黏附于書包背帶內側;LED環(huán)形燈帶固定于朝外的書包本體上。將裝置上電,兩人背上智慧書包行走,同時在手機APP登錄賬號,查看兩人的實時行走軌跡,設置安全圍欄,當實時位置超出圍欄范圍內時,移動設備將處于持續(xù)振動狀態(tài),同時帶有通知欄的提醒,直到目標的實時位置處于安全圍欄內;將書包背至紅綠燈路口處,書包上的LED環(huán)形燈帶自動點亮,通過馬路后,LED環(huán)形燈帶自動熄滅;將書包放下,模仿人與書包分離狀態(tài),手機收到提醒短信。
實驗結果顯示,該書包實現了預期效果,效果如圖9所示。
圖9 智慧書包效果圖
基于物聯網的智慧書包設計,具有實時監(jiān)測孩子位置、區(qū)域范圍監(jiān)護、孩子與書包分離及時提醒、提醒司機注意功能,彌補了傳統書包功能單一的缺陷,擴展了書包的功能,為孩子上學、放學途中提供了一份安全保障,方便了家長隨時掌握孩子的動向,減輕了年輕父母的生活壓力,同時培養(yǎng)了孩子的獨立自主意識和安全防范意識。