刘双晴,王文虎,彭 琛,赵呈强,刘 明
(湖南文理学院 计算机与电气工程学院,湖南 常德 415000)
无论乡村还是城镇,年幼小孩上下学问题既是家庭的负担,也有社会的责任,确保中小学生安全往返学校一直是亟待解决的社会问题。市面上,常见的面向小孩子的监护产品主要是电话手表和智能手环之类,两者都容易丢失,且功能单一[1]。
本文设计并实现了一种以书包为媒介监护孩子上下学途中安全的智慧书包,智慧书包由书包状态监测终端、GPRS通信网络、手机APP等组成,结构如图1所示。学生上学、放学途中都会背着书包,通过书包状态监测终端可以获取学生上学途中以及放学回家途中的路径信息等,这些信息借助GPRS网络发送到家长手机APP中,一方面方便家长掌握学生上学、放学沿途的路径信息,另一方面可以培养学生独立自主的生存能力。
图1 智慧书包结构
书包状态监测终端由微处理器最小应用系统、定位模块、电子标签以及电子标签读卡器、GPRS模块、LED环形灯带等组成,电路原理如图2所示。
图2中,U1为32位微处理器STM32F103;Y1,C1,C2构成外时钟电路;R1,C3构成上电低电平复位电路;插座XP提供了SWD程序下载接口;U1引脚BOOT1,BOOT0外接公共端实现FLASH程序引导方式;时钟单元、复位单元、SWD程序下载接口、程序引导单元共同构成微处理器的最小应用系统[2]。
微处理器STM32F103的PA10、PA9分别与北斗定位模块A1的数据发送端TXD、接收端RXD相连接,实现串口数据传输。A1为ATGM332D-5N-31-0,支持北斗+GPS双定位,追踪灵敏度高达-162 dBm,定位精度[3-4]为2.5 m。
微处理器STM32F103的PB11、PB10分别与电子标签读卡器模块A2的数据发送端TXD、接收端RXD相连接,实现串口数据传输。A2为HSC500,该模块工作频率为840~960 MHz,支持ISO18000-6C/EPC C1G2协议,模块功耗低、体积小,非常适用于短距离应用。电子标签采用无源标签,标签无电池供电,当标签在读卡器的阅读范围之外时,标签处于无源状态;当标签处于读卡器的阅读范围之内时,标签可从阅读器发出的射频能量中提取其工作所需的电能[5-6],达到条件性读卡目的。将电子标签安装在肩带内侧,利用RFID射频信号不能穿透人体和金属,可以穿透非金属等固体这一特性,从而判断该书包是否脱离。
微处理器STM32F103的PA3、PA2分别与GPRS模块A3的数据发送端TXD、接收端RXD相连接,实现串口数据传输。A3为WH-LTE-7S4 V2,该模块带有标准的SIM卡接口,支持GPRS数据传输,支持网络透传模式、HTTPD模式、UDC模式。该模式除了可实现SMS(短信、彩信)功能,还支持自定义注册包、心跳包等功能[7]。
电 阻 R6,R7,...,Rmn和 发 光 二 极 管 V3,V4,...,Vxy串并联组成的是LED环形灯带,采用12 V电源供电。当PC7引脚输出高电平时,V1导通管,V2管截止,熄灭发光二极管环形彩带;当PC7引脚输出低电平时,V1管截止,V2管导通,点亮发光二极管环形彩带。该功能的目的就是针对中小学生过马路时提醒司机朋友减慢车速所设的警示。
图2 书包状态监测终端电路原理
书包状态监测程序包括书包定位程序、人与书包是否分离监测程序、GPRS通信程序等,程序采用C语言在Keil 5平台上编写[8]。
装置上电后,系统进入初始化函数,如I/O口、定时器、延迟、串口、电子标签读卡器启动、GPRS模块等进行初始化。GPRS模块初始化即通过AT指令设置工作模式,按照服务器平台的协议命令,由GPRS模块向服务器发送连接请求,连接成功后,进入数据检测处理函数。将书包位置信息、时间信息、电子标签信息以及从服务器下发的位置信息进行综合比对,若比对成功,微处理器控制书包上的LED环形灯带点亮,同时判断电子标签读卡器的返回值,若判断为脱离,微处理器定时通过GPRS模块向指定手机号码发送短信提醒,直到状态转变;将数据检测处理函数中定位信息、时间信息、电子标签信息上传至服务器,方便进行数据观测,包括手机APP端。监测终端主程序流程如图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节,对地真航向为75.020°,时间为2011年7月2日,定位模式为自主模式,校验和[10]为45。
书包定位程序首先判断串口是否接收到定位信息,若接收到信息,则将数据帧中的各个字段信息分离保存;再判断本次数据帧是否有效,若有效,将有效标志位置位,表示本次解析数据完成。完成解析后,取出位置信息与红路灯信息库进行对比,若比对成功,微处理器控制书包上的LED环形彩带点亮。定位模块数据解析流程如图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模块的工作方式,然后向互联网平台发送TCP连接请求和数据,实现服务器连接和数据上传。
给模块上电,微处理器通过串口向GPRS模块发送“+++”,GPRS模块收到“+++”后,给微处理器发送一个“a”,微处理器收到“a”后,3 s内给GPRS模块发送一个“a”,GPRS模块收到“a”后,给微处理器返回“+ok”,表示GPRS模块进入配置状态[7]。这时,微处理器可以通过串口向GPRS模块发送相应的AT指令,设置GPRS的工作模式、服务类型,以及连接服务器的IP和端口号等[7]。GPRS初始化流程如图6所示。
图6 GPRS模块初始化流程
GPRS通信程序调用的函数如下:
APP程序设计采用Java语言在Android Studio平台下编写[7-8,11]。APP应用程序分为登录界面和状态监测界面,APP开发流程如图7所示。
图7 APP开发流程
APP初始化包括调用Android地图SDK实现基础地图的显示。配置AndroidManifest.xml文件,在<application>中加入如下代码:
<Android:name="com.baidu.lbsapi.API_KEY">,
<Android:value="0KBkVlHbo1LmZfrUiqN0a9XdIBgXmzAC">
配置开发密钥(AK),在<application>外部添加权限声明,而后在布局文件中添加地图容器,再初始化地图,新建一个自定义的Application,在其onCreate方法中完成SDK的初始化,最后创建地图Activity,管理MapView使命周期,实现在应用中显示地图。
导入云平台的应用SDK,调用云平台应用SDK中的NewWorkBusiness类,NewWorkBusiness类 含 有signIn登录函数,可通过手机应用登录云平台,然后在NewWorkBusiness 类中调用apiServicele类的signIn函数,请求网页的响应并分析结果。
调用Android 定位SDK的类和接口,实现围栏功能。Android定位SDK支持百度POI、自定义圆形、多边形、行政区划多种方式地理围栏,这里使用的是圆形围栏。圆形围栏一次接口调用只可以创建一个围栏,创建多个自定义围栏需要多次调用创建接口。
创建围栏后,判断监测终端坐标是否在圆形围栏之内,当目标进入或走出围栏时,即可使用地理围栏功能进行提醒。调用函数如下:
学生家长打开手机APP,登录账号,访问互联网平台获取书包状态监测终端的位置信息和对应位置信息的时间信息,利用Android语言中的addoverlay功能[11]将书包状态监测终端的位置信息在APP主界面上绘制成轨迹,实现学生的实时定位;同时可为学生创建安全围栏,判断学生是否处于安全围栏范围内,若判断书包状态监测终端脱离安全围栏范围,则使用地理围栏功能的警报功能控制家长手机持续振动,直到处于安全范围;学生家长还可在APP主界面借助Android Studio平台的基本控件,通过蜂窝数据实现手机应用程序向互联网平台传输控制信息,实现控制书包状态监测终端的部分状态。手机APP主界面如图8所示。
图8 APP主界面
将微处理器模块、GPRS模块、北斗模块、电子标签读卡器、电子标签、LED环形灯带固定在书包上,它们均与电源模块线性相连。微处理器模块、GPRS模块和北斗模块固定于包内;北斗模块的接收天线固定于书包外部侧面,接收卫星信号;电子标签读卡器固定于书包贴背处,电子标签固定黏附于书包背带内侧;LED环形灯带固定于朝外的书包本体上。将装置上电,两人背上智慧书包行走,同时在手机APP登录账号,查看两人的实时行走轨迹,设置安全围栏,当实时位置超出围栏范围内时,移动设备将处于持续振动状态,同时带有通知栏的提醒,直到目标的实时位置处于安全围栏内;将书包背至红绿灯路口处,书包上的LED环形灯带自动点亮,通过马路后,LED环形灯带自动熄灭;将书包放下,模仿人与书包分离状态,手机收到提醒短信。
实验结果显示,该书包实现了预期效果,效果如图9所示。
图9 智慧书包效果图
基于物联网的智慧书包设计,具有实时监测孩子位置、区域范围监护、孩子与书包分离及时提醒、提醒司机注意功能,弥补了传统书包功能单一的缺陷,扩展了书包的功能,为孩子上学、放学途中提供了一份安全保障,方便了家长随时掌握孩子的动向,减轻了年轻父母的生活压力,同时培养了孩子的独立自主意识和安全防范意识。