刘敬 李向阳
关键词:一键帮助;睡眠监测;Json;数据分析;API
1研究的背景和意义
1.1 总体情况
农村居住比较分散,老人和小孩比较多,使用手机不熟练或者没有手机,遇到危险或者需要帮助时很不方便[1]。特别是独居老人,虽然镇村干部可以定期走访探视,及时帮助解决生活中存在的问题,但老人遇到紧急情况还是无法顾及,如果能在家安装“一键帮助”产品,当老人发生跌倒、突发疾病或火情等意外时,可以一键求助或自动报警,平台接到报警后第一时间为老人提供紧急救援服务。
睡眠是人体一个重要的生理过程,根据世界卫生组织研究,全世界人口中有35%的老人患有睡眠障碍,老年人在睡觉中因突发病死亡的概率也远高于正常人[2,3]。本文计划通过ZigBee技术、数据分析技术和云平台技术,设计一款可以监测睡眠障碍的系统,系统可以监测床铺上是否有人以及老人的睡眠状况,如果老人长时间卧床,或者起夜次数变得频繁,系统终端会自动预警,平台可以派人上门查看。
2系统设计
2.1 方案设计
本设计中的数据需要在ZigBee 终端节点、协调器、ESP32网关云和平台之间交换,系统设计如图1所示。其中,涉及的關键技术有传感器技术,ZigBee技术和数据通信技术。
2.2 关键技术
传感器技术可以感知周围环境或者特殊物质,比如气体感知、光线感知、温湿度感知、人体感知等,把模拟信号转化成数字信号,给中央处理器处理。Zigbee 技术是一种应用于短距离和低速率下的无线通信技术,主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用[4,5]。在物联网MQTT协议中,ESP32网关和云平台之间的通信采用Json格式。为了方便,本设计中,ZigBee终端节点、协调器、ESP32 网关之间也将使用Json 格式。
3 系统硬件设计及器件选型
3.1 系统总电路
本系统的硬件连接相对简单,不是很复杂,包含压力传感器、按键、ZigBee终端节点和协调器,以及网关。压力传感器通过分压电路接入ZigBee终端I/O口的P0_5,根据测量电路的阻抗要求,分压器后可以加一个运算放大器; 按键电路的输出引脚接ZigBee终端的I/O口P0_0;ZigBee协调器的UART0接ESP32网关的UART2,即P0_2(协调器)接IO17(网关),P0_3(协调器)接IO16(网关),系统总电路图如图2所示。
3.2 薄膜压力传感器
RP-C电阻式压敏传感器是电阻值随着作用于感应区上的压力增大而减小的柔性薄膜传感器。压敏传感器顶层是柔性薄膜和复合在上面的压敏层,底层是柔性薄膜和复合在上面的导电线路,两者通过双面胶贴合以及隔离感应区域。当感应区受压时,在底层彼此断开的线路会通过顶层的压敏层导通,端口的电阻输出值随着压力变化。RP-C电阻式压敏传感器可用于本设计的在床离床监测或者睡眠状态监测,经过拓展还可以用于:智能跑鞋,记录受压的强度和频率;智能开关,设置力度识别,防止误操作;计数器,记录受压的次数;医疗设备上检测人体受压程度[6,7]。
4 ZigBee 无线传感网络设计
无线传感器网络是大量的静止或移动的传感器以自组织和多跳的方式构成的无线网络,目的是协作地探测、处理和传输网络覆盖区域内感知对象的监测信息,并报告给用户。它的英文是Wireless SensorNetwork,简称WSN。完整的ZigBee协议栈由应用层、应用汇聚层、网络层、数据链路层和物理层组成。Zig?Bee网络系统的软件设计主要包括建立Profile,初始化和编写应用层代码。本设计主要完成“一键帮助”应用层代码编写和“睡眠监测”无线传感网络应用层代码编写。
4.1“一键帮助”无线传感网络
按键引脚接到ZigBee终端节点的P0_0上,实验使用SampleApp.eww工程来进行[8],采用中断方式检测按键是否按下。需要将默认的轮询方式检测改为中断方式检测,修改HalKeyConfig()函数将参数DIS?ABLE改为ENABLE。另外,还需编写中断服务函数HAL_ISR_FUNCTION ()函数,和按键处理函数halPro?cessKeyInterrupt ()函数。
终端节点无线发送给协调器,协调器通过串口发送给ESP32网关的数据,与接下来的睡眠分析部分类似,这里不再描述。协调器发出的字符串是:”{"De?vice":60,"Help":1}”加上回车换行符。
4.2“睡眠监测”无线传感网络
当发生ZDO_STATE_CHANGE(网络状态改变)事件时,会添加周期性发送事件到用户层(任务ID=SampleApp_TaskID),事件名SAMPLEAPP_SEND_PE?RIODIC_MSG_EVT,也就是说5秒后,通过OSAL轮询机制,将会调用用户层事件处理函数SampleApp_Pro?cessEvent() 处理SAMPLEAPP_SEND_PERIOD?IC_MSG_EVT 事件。事件处理函数功能:测量压力值,调用点播函数发送数据包;再次添加事件;返回未处理的事件。
数据包接收事件的处理,仍然在用户层事件处理函数SampleApp_ProcessEvent() 里面,通过Sample?App_MessageMSGCB( MSGpkt )将接收到的数据包进行处理,并通过串口发送压力值给网关,采用Json格式格式为{"Device":50,"Pre":3200},供网关解析。
5 网关设计
网关设计包括。网关串口数据接收,“一键帮助”网关设计,“睡眠监测”网关设计和下发协调器网关程序设计。当协调器通过串口将无线传感网络数据发送到网关后,网关会在接收完一个数据包后进行解析。下发协调器网关程序设计,主要的工作是在回调函数中解析云端下发命令,然后转发到协调器。
网关程序将无线传感网络发来的传感数据即按键值,整理成与物模型虚拟调试时一样内容和主题的消息进行上报。网关上报消息的整理,通过连接符“+”,实际上报的payload为:{"id":12345“, params”:{"Button1":1},"method":"thing.event.property.post"},与后面云平台虚拟调试时观察的payload的"params"字段完全一致。网关程序将无线传感网络发来的传感数据即压力值,整理成与物模型虚拟调试时一样内容和主题的消息进行上报,与一键帮助网关程序设计类似。
6 云台设计
云端设计包括物模型设计、屬性上报功能、自动下发命令(reply)功能和手动下发命令功能,以及图表展示(设备数据源),数据特征提取和数据分析制作等环节。
6.1“一键帮助”云端设计
“一键帮助”云端设计包括物模型设计,属性上报功能,自动下发命令(reply)功能和手动下发命令功能。物模型设计是通过前面的网关设计和该云端设计,实现与传感器节点和协调器节点的打通,实现最终功能。在软硬件设计部分,考虑到养老场景需要传感器节点长期工作,为了降低功耗,需要改造“一键帮助”产品,允许云端下发关闭按钮对应的指示灯指令。也就是说,当服务台发现老人请求后,通过电话沟通确认后进入后续流程包括送饭、保洁、维修、答疑等,Led不再需要通过闪烁提示了,即可云端由接线人员手动下发关闭命令。
6.2“睡眠监测”云端设计
睡眠监测如采用自动采集数据,数据量比较大的话,可以通过图表的形式更好展示,进而从数据资产中提取出有价值的信息。然后用Web设计的图表组件进行展示,通过数据分析服务制作自己的数据分析接口(API),如图3所示。在组件中,调用“数据分析服务”接口,并使用JavaScript语言编程,对接口返回数据进行解析处理,用于展示,比如图3 中计算出20220322的入睡时间是12时18分。用同样的方法可以实现计算起床时间、睡眠时长和午睡时间等。
在“健康监测”产品的数据表中,压力值每天都会变化,压力值比较大的时候正好就是在床上睡觉的时候。那么到底是几点睡觉呢,分析出规则,然后就可以利用数据库的知识,通过SQL语言编程实现了[9]。通过时间、压力值等条件过滤,在剩余数据中找到一天中最早的一条数据,再排序即可实现。找出每天19:00:00后最开始出现压力值>3000的时间,表示入睡时间。需要用到数据过滤和分组聚合:过滤压力值>3000,时间>19:00:00;聚合,按日期分组取每组的时间最小记录;倒序排序,方便对自定义接口数据解析。
7 实物与系统运行
完成软硬件设计后,进行调试和运行,功能正常。图4是平台运行和系统照片,系统包含ZigBee终端节点、协调器和网关等设备。
8 结束语
本设计通过智能床带采集压力值,通过数据分析提取起床和入睡时间。进一步地,考虑到有的老人独居养老,生活情况子女无法及时知道,通过场景联动和数据分析,可以设计开发独居监测系统。老人子女可以通过云平台查看数据,如果数据异常,平台也会主动推送预警信息。设计方案实现了传感器数据无感采集、云平台主动预警,产品整个工作过程完全不会干扰到老人的生活,也不需要老人操作任何智能设备。