(三)通信协议

(三)通信协议

在本研究的运动捕获与识别系统里,传感器、网关都采用了已有器件,因此底层通信都需根据它们提供的通信方式设定。YD122传感器与网关(华为荣耀9X Pro手机)通过蓝牙连接,所有网关以无线WiFi方式与居所的路由器连接,网关通过互联网与服务器连接。

每个节点的9个传感器的主要功能是测量、处理和发送所附肢体的实时运动参数。鉴于蓝牙通信的范围限制及佩戴者随意移动的特点,节点需随时做好准备切换到与其他网关的连接,根据这些需求制定如下节点与网关之间的通信协议。

首先,在启动每个节点的9个传感器后,位于胸部的传感器(01号传感器)作为通信的发起者,进入广播模式(Beacon)广播FIND_GATEWAY消息。消息包含节点ID(Node ID,唯一性节点标识)、传感器在节点中的编号[01号传感器的编号(Sensor ID)为01]和传感器状态(Sensor Status,主要显示传感器当前电量)。此时,其他8个传感器都处于从模式(Slave),等待与网关建立连接。01号传感器广播结束后也进入从模式等待连接。

图示

FIND_GATEWAY消息可能会被多个网关收到,由于各个网关通过路由器彼此连接,每一个收到消息的网关获取广播信号的强度后,形成SHOW_SIGNALSTR消息并发送给其他网关进行比较。SHOW_SIGNALSTR消息包含广播信号的节点源(Node ID)、接收信号的强度(Signal Str)和网关的唯一性标识(Gateway ID)。信号最强的网关进入主模式,开启多个蓝牙连接进程,依次与Node ID 01~09传感器建立通信连接。

图示

由于同一节点的各个传感器都是独立工作的,为保证数据采样的同步性,在建立连接后,网关在很短的时间内向所有传感器发送同步命令SYNC_COMMAND。

图示(https://www.daowen.com)

收到SYNC_COMMAND指令后,各个传感器开始测量和运算,每隔一定时间间隔向网关发送受试者的运动数据包SHOW_ACTIVITY。SHOW_ACTIVITY里的Sync字节是同步标志,按包的发送顺序依次从0递增至255,此后再归为0。Data部分是数据主体,本系统使用欧拉角作为姿态描述值,包括分别以4个字节存储的滚转角(Roll)、航向角(Yaw)和俯仰角(Pitch)。

图示

考虑到受试者处于自由行动状态,随时可能进入另一个网关的较强信号覆盖范围,01号传感器还将每隔一定时间(如1秒)间歇广播FIND_GATEWAY信号。各个网关收到后重复上面所述的信号强度比较,如以前与某一节点连接的网关信号弱于其他网关,它将自动关闭与此节点所有传感器的通信连接,信号较强的网关将采用上面所述方式与节点各传感器建立连接,实现网关之间的无缝衔接。

网关与服务器之间的通信基本上是单向的,即网关向服务器发送节点的运动数据。主要通信方式是网关发送XML包至服务器,举例如下:

图示

图示

在data数据包里的内容包括当前网关和节点的唯一性ID,后面是三级动作分类识别的结果(见后面章节),再下面依次给出各个传感器所捕获的滚转角、航向角和俯仰角的数值。服务器收到此数据包后,根据Node ID字段检索到当前受试者的表单并将相关数据写入。