范整整,万 涛,赵诗婷
(华东交通大学 信息工程学院,江西 南昌 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呼救界面
本文设计的基于微信小程序的特殊群体防走失定位系统,能够准确定位被监督人群,并在发生意外时及时提醒、报警。系统运行稳定,具有广阔的应用和发展前景。