辽宁大学 韩鹏飞 曹 政 都 瑞
本文采用TI单片机MSP-EXP430F5529LP为控制核心,通过通信用单片机WEMOS D1,与开源服务器Blynk相连接,实现无线传输与云端控制的物联网功能。同时,通过心电信息模块、运动信息模块、温度信息模块来组成整体系统。实验结果表明,该系统对信息处理稳定且精确,通过无线传输可以实现所得数据在上位机的显示,同时表现出Blynk平台作为开源项目,便于自建服务器来实现数据的传递与保存的优势。
运动传感器节点(Motion Sensor node)作为智能手环接受外界信息的重要部件,随着智能手环的普及,越来越受到外界关注。传统的运动传感器节点,只能将内部传感器收到的外界信息进行处理直接显示在屏幕上,同时系统维护也不够便捷,导致结果只具有瞬时性。随着科学技术的进步与发展,怎样确保得到的数据在可以被保存下来的基础上保证数据的精度,已成为急需解决的一个问题。本文将设计的一个可实现无线上传和数据保存功能,并且可以显示人体体温、运动距离与步数、心电信息及对应心电图的无线运动传感器节点系统。
该系统可以实现心电测量、温度测量与运动信息测量,以及将这些信息无线传输至上位机并保存的功能。系统主要采用主控单片机MSPEXP430F5529LP、无线传输机WEMOS D1、以及各个传感器模块组成。图1所示为系统拓扑结构图。
图1 系统拓扑结构图
系统采用专用温度传感器LMT70传递温度信息,心电信息专用数模转换器ADS1292处理心电信息,陀螺仪mpu6050传递运动信息。采用锂电池作为电源的主要供给,其与传统的USB供电方式相比,最大的好处是给予了系统可移动性,从而解决了系统运动状态下无法稳定工作的问题。在电池与元器件之间接入稳压芯片,将锂电池提供的大电压,转化成5V与3.3V的电压供给给元器件使用。系统采用显示屏ssd1306作为显示部件,实时显示所测得的心率、步数、距离、温度与心电图。
系统框图如图2所示。
图2 系统框图
心电信息由医用电极与导联进行接收与传输,其中导联焊接的稳定与否,直接影响了外界噪声对有用信息干扰的大小。该部分仅需采用3根导联线,分别接左腰下侧、左胸上侧、右胸上侧。通过这三根导联线便可得到稳定可靠的心电信息。心电信息经电极收集后,由导联传输给专用心电模数转换芯片ads1292进行处理。
温度信息的接收由专用的温度传感器LMT70负责,其+10.0mV/℃增益足以保证原始数据的稳定性与精确性。温度信息专用模数转换器ads1115可以将从LMT70处得到的心电模拟电压转换成数字量,这个电压测量的范围包含人体体温理论上转变为模拟电压的最大值和最小值。
运动信息由陀螺仪MPU6050进行接收传输,MPU6050在通过程序设定初始位置之后,由其自身运动产生的加速度,经过本身处理,产生一系列的数字电信号传给MSP-EXP430F5529LP,从而经由算法处理,可得到精确的运动步数与运动距离信息。
无线传输模块由arduino系列的WEMOS D1单片机进行处理。WEMOS D1包含esp8266无线通信模块,相较于单独的esp8266模块具有引脚全,接线少,烧录程序时可直接连线而不用于借助于其他模块的优点,
因此选择D1作为无线收发机。加入W25QXX作为存储芯片,可将接收到的信息进行存储,保证旧信息的可查性。将热点与esp8266模块进行连接,从而在虚拟服务器中实现信息的无线上传与保存。
本次设计采用Energia进行编程,使用比较完善的库,以MSPEXP430F5529LP作为主要的数据采集、数据处理芯片。由于此次心电数据模块ADS1292自带时钟,提供采样频率不同的工作模式,这里只需读取ADS1292的特定引脚就可以判断是否要采集数据,基于这一特点,程序中没有采用中断,而是利用这一特点,选取125HZ的采样频率,在每次采样的8ms间隔内,进行数据的处理的信息的反馈。
关于信息的显示,这里采用了两个渠道,一个是通过主控单片机MSP-EXP430F5529LP连接的SSD1306显示屏直接显示,另一个是通过将数据加密后通过串口发送到无线传输机WEMOS D1,WEMOS D1将解密后的数据通过其上的WIFI模块发送到上位机。
图3所示是MSP-EXP430F5529LP的程序流程图。
图3 MSP-EXP430F5529LP的程序流程图
3.2.1 心率计算方法
将心电信息模数转换器ADS1292采集回来的数据经过滤波之后存储在十六位的数组中,数组的长度起码能够包括两个完整的心跳周期,由于采样频率是125HZ,所以暂把数组长度设置为300。根据QRS波的特点,R波峰值较大,远远大于其它波,找到最大最小值,将最大值减最小值为间隔,进而把比最大值小十分之一间隔的值作为阈值,找到R波波峰上升一侧的阈值点,相邻的两个阈值点x1、x2之间的时间间隔即为周期,心率的计算公式为:
3.2.2 步数算法
运动信息是与心率信息一同采集并存储在较大的数组中,当数组采集完成后,先用卡尔曼滤波算法将陀螺仪MPU6050采集的加速度信息进行去噪声处理,然后把x,y,z三轴方向上的加速度进行合成,即r=(x^2+y^2+z^2)^2,合成数据的曲线应该是一条平滑的曲线。在实际运动测量的时候会产生峰值,通过检测曲线的大峰值个数,来确定行走的步数,这时要多检测几组峰值点两边的数据,避免将小扰动误判为走动。根据查阅资料和实际测量,一步大约行走0.5m,行走距离即为步数×0.65。
3.2.3 温度算法
用温度传感器和测温枪(代表准确的实际温度)分别测二十个人的手心温度,将稳定后的度数记录下来,得到二十组,四十个数据。温度传感器的值作为x(自变量),测温枪的值作为y(因变量)在MATLAB的拟合曲线工具箱中拟合一条二次曲线,再经过调试得到由传感器读数到准确的实际温度转换公式:
WEMOS D1的核心芯片是esp8266。使用Arduino作为开发环境,blynk作为物联网平台。Arduino其中包含WEMOS D1这块板子作为设备接入blynk的例程,在此基础上进行改编联结至手机提供的热点网络,定时向物联网云端发送接受到的数据信息。终端采用物联网软件Blynk从云端进行接收数据并显示。
测试方案:
实验在固定设置的手机热点的条件下进行(无线模块所必须)。测试者佩戴好整套装置,用右手攥住温度传感器LMT70的测温部分来传递手掌温度,将系统整体置于小臂处,在一个周长为30m的固定圆形线路上运动。实现对心率、体表温度、步数及步距测量的实时测量,在无线运动传感器节点显示测量结果和动态心电图。同时将数据上传,在上位机ipad端的blynk服务器界面显示测量结果和动态心电图。完整的Blynk项目界面图如图4所示。
图4 Blynk项目界面图
本设计使用通信用单片机WEMOS D1实现数据在主控单片机与上位机间的无线传输,使用温度传感器LMT70测量温度信息,使用心电专用模数转换器ADS1292处理心电信息,使用陀螺仪MPU6050处理步数信息,进而由步数信息通过公式运算测得距离信息。该系统稳定性好,测量结果精确,测量速度较快,并可实时现实。测试时的显示屏界面如图5所示。
图5 测试时的显示屏界面