面向局部空间多通路无线数据通信系统的设计
2018-10-18,,,,
, ,,,
(浙江工业大学 信息工程学院,杭州 310023)
0 引言
在全球信息化快速发展的大背景下,数据已成为国家重要的基础性战略资源,正引领新一轮科技创新。对于无处不在的数据,尤其在人类健康领域,对于人体的身体机能和基本生命信息的监测数据显得尤为重要。对此,目前可穿戴设备可以在某种程度上实现了人体基本生命信息的监测,比如在医疗方面,将人们的日常穿戴与生命信息监测技术相结合,使其在自然状态下获取用户的生命基本信息[1]。在体育应用方面,对用户进行运动量化指标和身体机能监测数据的采集[2-3]。但是,目前的可穿戴设备虽然可以实现人体部分生命基本信息监测的功能,但是它采集到的数据只能供用户自己查看,而不能实现多个可穿戴设备的局部空间内的组网[4-5],也不能对信息进行共享,不能为相关行业的决策者提供可用于分析和决策的数据,并且其系统功能的升级需要对硬件进行重新设计,无形中提高了产品的成本。
目前,在局部空间中将多个设备进行组网[6],采用无线通讯的方式是最便捷的方式,而局部空间中将涉及到短距离的无线通讯。针对局部空间内的短距离无线通信,文献[7]提出了一种基于嵌入式的短距离无线通讯协议来解决通讯中不可靠的数据链路问题。文献[8]对短距离无线通信技术的通信速度和功耗指标提出了新的要求。文献[9]通过分析NRF24L01的射频技术在进行短距离通信传输时,其传输帧所需时间较长的缺点,提出了一种SW-ARQ检测通信质量的通信协议。文献[10-11]均是利用RF射频技术并配合传感器技术实现了自动测量和控制,但不能进行多协议的无线设备的通信,其中的传感器在设计时是与系统集成在一起进行采样和数据通信,使系统变得更加复杂,设计成本过高。
局部空间中无线通信的方式与稳定性对通讯质量还有着重要的影响。文献[12]提出了一种利用蓝牙通信和Android智能手机应用程序之间的信息交互方法,其主要是通过手机控制端APP程序进行实现,忽视了通讯过程中无线信号的干扰。文献[13]针对无线通信在复杂环境中数据信号易受电磁干扰的影响,提出了一种无线通信过程中抗信道噪声干扰的高效算法,虽然信号的抗干扰性得到保障但是在局部空间中对多个设备进行无线通信却并未得到很好的解决。
为了解决在局部空间中多个外部监测设备的组网以及信号传输的稳定性和通信协议的兼容性问题。本文设计了一种面向局部空间的多通路无线数据通信系统,在局部空间中将多个数据采集设备通过无线通讯进行组网连接,从中提取并共享数据,以便为相关行业提供可用于分析与决策的大数据。本系统基于蓝牙通讯协议和NRF射频技术对不同功能的多个外设进行信息的同步收集,将收集的数据传送到ARM处理器主控模块进行处理,并将处理后的数据实时地传输到客户端,由客户端进行数据的存储、分析和相关行业的联网共享,为行业决策者提供可供参考的大数据,促进相关行业的健康发展。本文通过蓝牙协议和NRF射频模式这两种通信方式对所设计系统的稳定性和通信协议的可扩展性进行了实验验证。
1 系统总体设计方案
为了在局部空间中能够实时、精确地提取用户产生的各项信息,使数据的采集更加的智能与高效,需要有合适的系统对相应的各项指标数据进行收集与处理,并最终实现数据的共享。图1所示为针对上述问题提出的一种多通路无线数据通信系统的总体设计方案图。
图1 系统总体方案图
本系统的核心是利用ARM处理器对多路数据信号的解码和处理、蓝牙(BLE)无线技术中的MTTM协议[14]和NRF射频技术中的ShockBurstTM射频模式[15]实现信号的无线传输以及串口技术进行数据的收发与共享,从而在局部空间中实时、稳定地将不同通信协议的多个设备进行组网和信号处理。
系统总体方案图中S0为系统的输入信号,S1、S2作为系统NRF射频模块和蓝牙模块接收到的各项外部信息,S3、S4、S5为系统ARM处理器解码和处理后的信息,信号S6可指示出系统的工作状态。
输入信号S0通过串口端发送至系统的ARM处理器,使系统与外部的蓝牙设备和NRF射频设备建立连接,接收外部NRF射频设备的信号S1和外部蓝牙(BLE)设备的信号S2;并将接收到的信息通过ARM处理器对其进行信息解码,解码后的数据用于对系统进行自检,如果自检失败则是由于系统与外设的连接机制异常导致,此时系统会对连接异常的部分进行自动重连;如果自检成功,系统进入正常工作模式,此时系统对蓝牙端、NRF射频端和串口端这三条通路经过解码后的数据进行校验、分类和匹配等处理,并将处理后的数据分别发送至系统内部的不同功能模块,其中数据信号S3发送给系统内部蓝牙(BLE)端、S4发送给系统内部的NRF射频端、S5发送给系统内部的串口端、S6发送给系统内部的LED部分,使系统可以通过LED灯的变化实时为用户反馈出系统的运行状态。最后,系统通过内部蓝牙(BLE)、内部NRF射频和串口将信号S3、S4、S5发送至对应的外部设备。
系统由串口端、NRF射频端和蓝牙(BLE)端建立三通路多信号的同步通信,每个通道可以同时传输至少两种以上不同的信息;系统的ARM处理器对来自不同通道的多种信息进行实时接收;对来自不同通道的信息实时的进行信道解码、信息获取、校验和匹配;对处理后的数据以每50 ms一次的通信速率发送给不同的通信通道;系统处理后的数据可以通过串口端传输给电脑端进行实时记录、存储以及数据的共享;为了确保系统能够实时正常运行,系统每隔500 ms进行一次自检。由于系统无线通信部分采用模块化设计,用户可以根据需求对无线通信方式进行更改或扩展,使系统可以根据无线通信协议的不同进行定制。
2 系统硬件设计
系统的硬件组成主要包括USB转串口模块、ARM处理器主控模块、蓝牙模块、NRF射频模块、智能LED灯模块等。通过各模块之间的相互配合实现多通路多协议的无线数据通信。
图2 系统硬件框图
如图2所示:系统通过USB转串口芯片构建系统的USB转串口模块,该模块连接电脑客户端和ARM处理器主控模块,将电脑客户端USB接口转化为通用串口,实现电脑客户端和ARM处理器主控模块的信息双向互通;USB转串口模块接收ARM处理器主控模块的信息并发送给客户端,同时接收客户端的信息并发送给ARM处理器。
系统采用低功耗Cortex-M3内核的32位ARM微控制器STM32F103C8T6和相应的外围电路构建系统的ARM处理器主控模块。该模块与USB转串口模块、蓝牙模块、NRF射频模块、LED灯模块相连接,系统运行中实现对系统的自检,当系统在运行中出现蓝牙连接断开时,ARM处理器主控模块通过给LED灯模块的反馈信息使用户直观的判断出系统的运行状态和故障原因。ARM处理器主控模块与其它各模块之间的信息(接收/发送)交互同步进行,其中ARM处理器主控模块接收的信息包括:接收USB转串口模块从电脑客户端接收到的连接外界指定蓝牙设备的指令信息、动态修改NRF射频模块端口地址的指令信息、外部蓝牙设备的控制信息;接收系统蓝牙模块发送过来的多种信息;接收射频模块发送过来的多种信息。并对接收到的这些信息进行数据的解析、检验,匹配和重组,然后将重组后的信息发送给相应的功能模块。
系统的蓝牙模块采用低功耗、低成本、高速度的2.4 GHz频段全球开放的BLE4.0蓝牙,并将其设置成主机模式,该模块在系统中与ARM处理器主控模块相连接,实现蓝牙模块与ARM处理器主控模块的双向通信,然后利用蓝牙通信协议中的电话传送控制协议(AT命令集)实现与外界蓝牙设备的连接,并通过蓝牙自身的主透传协议模块(简称MTTM)可以在透传(TTM)或指令(CM)模式下进行工作[14]。当MTTM上电启动后,进入待机状态,用户通过AT指令连接蓝牙设备,成功连接后MTTM将自动查找从机蓝牙的透传通道,进入数据透传模式,其中用户数据的具体含义可由上层的应用程序自行定义。该模块在系统中需要接收经过ARM处理器主控模块处理后的蓝牙连接指令并将其发送给外部蓝牙设备使其建立连接;接收ARM处理器处理后的控制信息并将控制信息发送给外部蓝牙设备,从而对外部蓝牙设备进行控制;接收外部蓝牙设备通过透传模式发送过来的信息并将其发送给ARM处理器。系统的NRF射频模块采用的是2.4~2.5 GHz世界通用ISM频段的单片无线收发器芯片——NRF24L01进行射频模块的构建,该射频模块连接ARM处理器主控模块,并利用ShockBurstTM 模式下芯片内部射频协议在星形网络中的应答地址进行通道配置,实现与外部射频模块的连接和信息的双向互通。
其中NRF24L01在ShockBurstTM接收模式下,当接收到的数据和地址均有效时IRQ将通知MCU,之后MCU将接收到的数据从RX_FIFO寄存器读出。在接收模式下可以对6路不同通道的数据进行接收,每一个数据通道使用不同的应答地址,但是共用相同的频道[15]。该模块在系统中可以接收经过ARM处理器主控模块处理后的动态修改射频模块端口(端口0)地址的指令信息,接收来自外部射频器件发送过来的通讯信息;射频模块向ARM处理器主控模块发送从外部射频器件接收到的通讯信息。
系统采用体积小、能耗低、寿命长的LED灯(两盏)构成本系统的LED灯模块,该模块接收ARM处理器的控制信息,通过LED灯的闪烁状态使用户直观的判断出系统当前所处的工作状态,以及当系统处于异常时用户通过LED灯的状态判断出异常的原因,便于对系统进行维护。
3 系统软件设计
完成面向局部空间多通路无线数据通信系统的相关硬件电路设计和实现后,若要使多通路无线数据通信系统能够正常运行,需要对其软件部分进行相应的设计。基于系统稳定性、实时性的功能需求,系统的软件方案设计了三种工作模式,分别为系统待机模式、系统正常工作模式和系统异常处理模式。系统软件功能结构如图3所示。
图3 系统软件功能结构图
系统待机模式:在程序开始运行时,需要对系统以及外设接口进行初始化处理,需要初始化的功能结构如下:
……
LED_GPIO_Config();//LED 端口初始化
USART3_Config();//串口3初始化
USART2_Config();//串口2初始化
SPI_Init();//SPI初始化
NRF24L01_Init1();//NRF24L01初始化
TIM3_Configuration();// TIM3定时初始化
IWDG_Init(IWDG_Prescaler_64,625); //看门狗初始化
……
系统在完成初始化功能后将启动蓝牙协议栈和NRF24L01的2.4GHz的ISM频段,使系统中的蓝牙和NRF24L01处于待机状态;再开启系统所需的中断请求,如下所示:
……
USART3_NVIC_Configuration();//蓝牙接收中断
USART2_NVIC_Configuration();//USB接收中断
TIM3_NVIC_Configuration();//定时器3中断初始化
……
此时系统处于待机状态,系统中以ARM处理器为核心的ARM主控模块将不给LED灯模块发送指令信息,系统中的LED1和LED2处于常灭状态,预示系统处于待机状态。
在局部空间中,处于待机状态的系统通过客户端进行激活,使其进入正常工作模式,具体实现如下:
对于处于待机状态的系统,需要通过客户端发送外部蓝牙的连接指令来实现连接指定外部蓝牙和修改外部射频通道地址,从而避免信号的串码和外部其他蓝牙信号和射频信号的干扰。
首先,客户端发送连接指令如:
AT+CONA0x00158330A3B1
其中0x00158330A3B1为外部指定蓝牙设备的MAC地址,每一个蓝牙设备的MAC地址都不相同)经过USB转串口模块传送给ARM主控模块,由ARM主控模块对其帧头(“AT+CONA”)进行校验,无误后根据蓝牙协议中的电话传送控制协议(AT指令集)通过串口发送蓝牙连接的AT指令:
……
UART_send(UBuffer3,24); //发送蓝牙连接指令
……
使蓝牙模块与外部蓝牙建立连接。同时ARM主控模块从连接指令中截取指令的后四位“A3B1”,将后四位数据匹配和重组成射频模块NRF24L01通道0的地址(并利用ASCII码将字符转换成16进制数):
0x410x330x420x310xFF
再调用修改射频NRF24L01通道0地址的函数:
……
bsp_change_nrf_ID();//修改NRF24L01通道0的地址
……
此时系统成功建立蓝牙连接,蓝牙进入透传模式(TTM),同时NRF24L01射频模块的通道0地址修改成功后NRF24L01进入ShockBurstTM模式。
其次,通过ARM处理器接收到的来自蓝牙模块和NRF24L01射频模块的数据,并设定好参与系统自检的数据类型来对系统进行自检,除此之外NRF24L01自身会进行自检、系统看门狗定时器对系统是否跑飞进行自检,每500 ms自检一次如下所示:
……
while(NRF24L01_Check1()){}//NRF24L0自检
Feed_Dog();//看门狗喂狗函数
……
自检通过后系统对USB端、蓝牙端、射频端等多个通道发送过来的数据进行接收,接收函数如下:
……
void USART3_IRQHandler(void);//蓝牙接收中断
void USART2_IRQHandler(void)//USB接收中断
NRF24L01_RxMode();//NRF24L01接收数据包
……
对于接收到的数据包传送给ARM主控模块,由ARM主控模块对接收到的数据进行帧头与帧尾的校验、匹配、重组后得到新的几组数据,(其中帧头可以设置成相同的数据位,如:帧头设置成“123”,帧尾设置成“21”,数据的第四位设置成校验位,根据数据校验位的不同,将数据匹配成不同通道中的不同数据,再根据其对应的通道类型对匹配后的数据进行重组。)之后这几组数据再经过不同的通道每隔50 ms发送给相应的端口。调用的函数有:
……
Data_Send3();//发送给外部蓝牙设备
Data_Send2();//发送给外客户端
NRF24L01_TxMode1(); //发送给外部射频
……
最后,对于系统处于正常工作模式时,系统中ARM处理器主控模块发送LED灯(两盏LED灯)模块的控制指令,此时LED灯模块从常灭状态进入正常交替闪烁(周期设置为500 ms),同时LED灯模块每隔500 ms的交替闪烁,可以将系统处于正常工作模式的状态反馈给使用者。
此外,系统正常模式时通过USB串口发送给客户端的数据可以由客户端进行存储,用于实现数据的共享,便于行业对数据的提取,从而从大数据的角度进行分析和决策。
但是对于任何系统都会有异常情况的出现,为了确保系统的稳定性,对系统做了如下的异常分析与处理:
当系统上电或者正常运行了一段时间后既不是处于待机模式也不是处于正常运行模式(LED灯模块既不是常灭也不是以500 ms为周期交替闪烁)时,则此时默认系统为工作异常状态。在本系统中出现异常状态的原因有:(1)系统供电异常(表现为蓝牙模块的指示灯不亮);(2)系统蓝牙与外界蓝牙连接断开(表现为蓝牙模块指示灯由常量编程闪烁,同时系统LED灯模块的LED1状态为快速闪烁,LED2状态为常灭);(3)系统的射频部分通道0地址没有匹配成功(表现为系统的LED灯模块的LED1状态为常灭,LED2状态为慢速闪烁);(4)系统程序跑飞(表现为系统LED灯模块的LED1与LED2同时闪烁)。
针对上述四种情况,除了第1种情况系统供电异常属于外部影响,此时只需要给系统重新上电即可;对于第2、3、4这三种情况都是系统自检未通过造成,当出现第2种情况(持续5秒时)系统将调用其内部flash中保存的连接外部蓝牙设备的MAC地址,系统将自动重发蓝牙连接的AT指令使系统重新建立连接;当出现第3种情况(持续5秒)时系统会调用其内部flash中存放的重组后的射频模块NRF24L01通道0的地址再重新发送给射频模块进行通道0应答地址的配对,重新建立连接;当出现第4种情况时,系统看门狗将会给程序进行复位,系统将重新开始运行。
4 系统测试与应用
本系统在Keil环境下完成软件方案的编写后,搭建了实验环境平台进行多次反复实验,实验平台如图4所示:图中2(1为2的投影图)为面向局部空间多通路无线数据通信系统,左边的虚线框为NRF24L01,中间的虚线框为LED灯模块,右边的虚线框为蓝牙模块;图中5为外部蓝牙监测设备;图中3为外部蓝牙提供速度采样值;图中4为6(外部射频)的背面构造(分别为NRF24L01和MPU6050);图中7为万用表。
实验环境为三条通路五种信息。通过此实验平台对本系统的稳定性和可靠性进行测试。如图5实验原理示意图所示:通道一为系统与电脑串口端进行通信(利用串口助手模拟客户端应用程序,对通信的过程和结果进行检测);通道二为系统与外部蓝牙进行通信(通信结果通过keil软件和串口调试助手进行仿真和检测);通道三为系统与外部射频(NRF24L01)设备进行通信。
实验中通过五种信息的传输以及人为对系统制造干扰从而对系统进行稳定性和可靠性测试,其中5种信号分别为:1)系统连接信息(包括系统蓝牙与外部蓝牙连接信息、系统射频与外部射频设备的连接信息),可通过蓝牙部分的指示灯以及系统LED灯模块进行查看);2)速度采样信息(系统接收外部蓝牙发送的速度采样信息、经过系统处理后的速度信息发送给电脑串口端)通过串口助手进行查看;3)角度信息(系统接收外部射频设备中的MPU6050陀螺仪角度信息、经过系统处理后的角度信息发送给电脑串口端)通过串口助手进行查看;4)按键信息(系统接收外部射频设备中的按键遥控信息、经过系统处理后的按键遥控信息发送给电脑串口端),通过串口助手进行查看;5)PWM控制信息(包括:通过串口助手给系统发送PWM控制信号、系统将PWM控制信号进行处理后发送给外部蓝牙设备,对外部设备进行控制(通过keil软件对外设进行波形仿真)。同时为了进一步测试系统的稳定性和快速响应的性能,测试时ARM主控每50 ms发送一次数据包。此外人为制造的干扰包括:1)在利用此实验平台进行实验的过程中在实验环境周围增加多个蓝牙设备和射频设备,测试系统的抗干扰性能;2)系统正常运行时分别人为的使系统蓝牙与外部蓝牙连接断开以及系统射频与外部射频连接断开,从而测试系统的自检功能。
通过实验验证:系统的LED灯模块能够实时、正确的反应出系统的工作状态。系统的ARM处理器主控模块接收串口端的信息源,系统对其处理后经过蓝牙通道将其发送给外部蓝牙监测设备,控制外部蓝牙监测设备的PWM波信号,如图6所示外部蓝牙设备接收波形控制信号产生的PWM波形(50%占空比)仿真图,测试系统信号的稳定性。系统的ARM处理器主控模块对串口通道、蓝牙通道、NRF射频通道接收的信息源能够实时稳定的进行信道解码、信息校验、分类匹配和信息传输,如图7所示。
图6 控制外设PWM信号的keil仿真图
第一行(AT+CONA0x00158330A3B1)为串口成功接收到的蓝牙连接指令,经过系统处理后使蓝牙设备建立无线连接,连接成功后进入数据透传模式,而第二行之后为系统运行中实时接收和处理后的信息经串口打印供实验查看的数据,如:第二行括号中数据“1231101821”为接收来自外部NRF射频经过系统成功处理后的角度数据(101.8°),第四行“1232000021”为系统处理后的外部NRF射频的遥控信息(无按键按下),第六行“1230003921”为系统处理后的外部蓝牙发送的速度信息(3.9 km/s)。
实验测得该系统在一定空间范围内与多个外部设备进行无线通讯,通过ARM处理器获取来自不同设备不同通信协议的信息源,对各通道的信息源进行信道解码、信息获取、信息校验、分类匹配和传输等处理。验证了本系统在局部空间中通过多种无线通信协议进行无线连接并同时获取多个通道中的信息(如:速度、角度、PWM波、遥控等信息)时系统仍具有很好的实时性。实验中人为制造干扰信号并使用串口实时打印通信信息,数据无信息丢失和乱码现象,确保该系统具有很好的稳定性。
5 结束语
本文设计并实现了一种面向局部空间的多通路无线数据通信系统,该系统硬件部分以ARM处理器为核心,利用蓝牙无线技术和NRF无线射频技术构建系统的蓝牙通信端和射频通信端,并结合系统的USB串口端组成多通路通信系统;软件部分通过ARM处理器对各通道的信息源进行信道解码、信息获取、信息校验、分类匹配和传输等处理,实现在局部空间中对多个不同通信协议的外部监测设备进行无线连接,获取和处理不同通道中来自不同通信协议不同监测设备的数据。并通过实验测试出该系统具有良好的实时性和稳定性。
由于该系统可以在局部空间中实时、稳定的对多个外部监测设备进行监测,将检测到的数据可以通过客户端进行数据的存储、分析和共享。对于在临床医疗和体育健身方面用户的生命基本信息和身体机能指标的监测有着很好的推广价值,便于为行业提供用于分析和决策的数据。并且该系统可以通过更换或增加不同的通信协议模块对系统的通信方式进行扩展,使其支持更多的无线通信协议,实现更多无线通信协议之间的组网。