2015-11-15 18:24:28 [显示全部楼层]
7928浏览
查看: 7928|回复: 4

[活动] #报名NABI黑客马拉松# Care++ 家庭健康工作中心

[复制链接]
一、作品简介
我们的作品主要分为两个部分,硬件控制端和可穿戴便携端。硬件控制端是以Arduino微控制板为主控芯片,可穿戴便携端的温度、心率、速度传感器模块采集温度、心率、速度及加速度等生理信息发送到Arduino进行处理和分析,再通过蓝牙4.0模块发送给智能手机终端,手机端的APP对数据分析处理,将相关数据上传到远端进行家庭健康信息的汇总及分析。通过长期数据收集及均值分析,进行数学建模,分析家庭健康情况并进行针对性建议。另外,我们将系统的重点放在了母婴及老人方面,对比医学数据库中母婴及老人的健康信息,通过移动端对母婴及老人进行健康监控及健康关怀。

二、硬件系统方案

整个系统可划分为温度传感器模块、心率传感器模块、控制模块(单片机)、蓝牙4.0模块。系统框图如图一所示。

#报名NABI黑客马拉松# Care++ 家庭健康工作中心图1

我们采用LM35温度传感器和APDS-9008亮度传感器采集人体的温度和心率等生理信息,通过滤波电路消除高频干扰,将信号放大后送到单片机的AD模块,单片机对采集的数字信息进行初步的分析与处理之后经由蓝牙4.0模块的从机部分发送到支持蓝牙4.0的智能手机或者其他接收端。手机端的APP对数据分析处理,可对当前的身体健康状况进行分析和判断。然后可将手机端的数据信息发送至网站数据库保存,可用于长期的身体健康状态监测。
具体各模块的功能分析论证如下:
1.温度传感器模块
采用LM35温度传感器。LM35是一种得到广泛使用的温度传感器。由于它采用内部补偿,所以输出可以从0℃开始。输出电压与摄氏温度一一对应,使用极为方便。灵敏度为10.0mV/℃,精度在0.4℃至0.8℃(-55℃至+150℃温度范围内),重复性好,低输出阻抗,线性输出和内部精密校准使其与读出或控制电路接口简单和方便。
2.心率传感器模块
传统的脉搏测量方法主要有三种:一是从心电信号中提取;二是从测量血压时压力传感器测到的波动来计算脉率;三是光电容积法。前两种方法提取信号都会限制病人的活动,如果长时间使用会增加病人生理和心理上的不舒适感。而光电容积法测量具有方法简单、佩戴方便、可靠性高等特点。
       光电容积法的基本原理是利用人体组织在血管搏动时造成透光率不同来进行脉搏策略的。其使用的传感器由光源和光电变换器两部分组成,通过绑带或夹子固定在用户手指或耳垂上。光源一般采用对动脉血中氧和血红蛋白有选择性的一定波长(500nm~700nm)的发光二极管。当光束透过人体外周血管,由于动脉搏动充血容积变化导致这束光的透光率发生变化,再经由光电变换器接收经人体组织反射的光线,转变为电信号并将其放大和输出。由于脉搏是随心脏的搏动而周期性变化的信号,动脉血管容积也周期性变化,因此光电变换器的电信号变化周期就是脉搏率。
       根据相关文献和资料,560nm的波可以反映皮肤浅薄微动脉信息,适合用来提取脉搏信号。故心率传感器模块采用了峰值波长为515nm的绿光LED,型号为AM2520,而光接收器采用了APDS-9008,这款环境光感受器,感受峰值波长为565nm,两者峰值波长接近,灵敏度较高。此外,由于脉搏信号的频带一般在0.05~200Hz之间,信号幅度均很小,一般为毫伏级水平,易收到信号干扰。在感受器后面使用了低通滤波器和由运放MCP6001构成的放大器,将信号放大331倍,同时采用分压电阻设置直流偏置电压为电源电压的1/2,使放大后的信号可以很好地被arduino的AD采集到。
3.控制模块(单片机最小系统)
主控芯片模块采用Arduino Leonardo。它是基于ATmega32u4的一个主控芯片。有20个数字输入/输出引脚(其中7个可用于PWM输出、12个可用于模拟输入),一个16MHz的晶振,一个MicroUSB接口,一个DC接口,一个ICSP接口,一个复位按钮。具有跨平台、编译环境兼容性好、软件开源、硬件可扩展等优点。

4.蓝牙4.0模块
蓝牙4.0是3.0的升级版本,较3.0版本有更省电、成本低、3毫秒低延迟、超长有效连接距离、AES-128加密等优点。其中蓝牙4.0最重要的特性是省电,极低的运行和待机功耗可以使一粒纽扣电池连续工作数年之久。
由于采用的为移动式供电,不易采用功耗较高的芯片长时间工作,并为体现节能环保的思想,选择了低功耗的TI公司生产的CC2541蓝牙4.0芯片。蓝牙低功耗技术为需要尽可能长的电池使用寿命而对数据传输速率要求较低的设备优化得到,功耗仅为传统蓝牙技术功耗的1/100至1/2。

蓝牙低功耗(BLE)是一种星型拓扑结构,即主设备管理着连接,并且可以管理多个设备,但设备却只能连接一个主设备。作为从设备连接到其他设备。连接状态的流程图如下图所示:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图2
我们采用的为HM-10蓝牙模块,采用TI CC2541芯片,配置256Kb 空间,支持AT 指令,可根据需要更改角色(主、从模式)以及串口波特率、设备名称、配对密码等参数,使用灵活。
各模块连接图如图三所示。

#报名NABI黑客马拉松# Care++ 家庭健康工作中心图3

三、硬件设计

3.1  温度传感器
考虑到用户所携带的物品尽量少,并且有较高的线性度输出,故选择了LM35温度传感器。该传感器生产制作时已在摄氏温度下进行过校准,具有+10.0mV的灵敏度,低输入阻抗,在1mV电流时仅为0.1Ω,且内部有较精确的校准,读出电路的接口简单方便。
具体实施是将LM35的Vcc和地线与相应接口连接,将信号输出端直接连至处理器的AD端口,进行数据读取。
3.2  心率传感器模块

心率传感器模块采集工作流程图如下:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图4
3.2.1 LED
根据相关文献和资料,560nm的波可以反映皮肤浅薄微动脉信息,适合用来提取脉搏信号。该传感器采用了峰值波长为515nm的绿光LED,信号为AM2520。
       3.2.2光感受器
由于发光的LED发出绿光,波长为515nm,所以光感受器采用了APDS-9008。这款环境光感受器,感受峰值波长为565nm,两者峰值波长接近,灵敏度较高。
       3.2.3低通滤波电路

由于脉搏信号的频带一般在0.05~200Hz之间,信号幅度均很小,一般为毫伏级水平,易收到信号干扰,在感受器后面使用了低通滤波器,且由于该光感受器输出为电流,需加电阻将电流信号转换为电压信号。
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图5

      3.2.4 放大器
由运放MCP6001构成放大器,将信号放大331倍,同时采用分压电阻设置直流偏置电压为电源电压的1/2,使放大后的信号可以很好地被arduino的AD采集到。

放大器电路如下:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图6
3.3  处理器平台
采用了开放式平台ArduinoLeonardo,其AD转换器为10位,转换并读取耗时100us,符合传输要求。此开放式平台可以由用户对平台进行系列操作,实现独特的功能,并且支持模块与arduino的直接相连,免去了与芯片操作时所需要增加的抗干扰等电路。
3.4  蓝牙传输模块

选择蓝牙4.0模块为HM-10,但其工作电压为3.3V,而由于arduino环境中的Atmega32u4核心芯片的串口电平为5V,所以需要设计5V转3.3V电平电路,下为电平转换电路与蓝牙模块相连原理图:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图7

四、软件设计部分
4.1  下位机arduino程序
4.1.1  AD采集

由于采用的为双通道AD采集,需要考虑AD转换器的转换时间(100μs)以及相应寄存器是否完全清空,结合arduino Leonardo的实际情况,采用中断的方式来进行读取,此部分编程如下:

  1. <span style="text-indent: 21pt; line-height: 1.5;"><p style="line-height: 30px; text-indent: 2em;"></p>void interruptSetup(){ </span>
复制代码

4.1.2     数据分析
温度传感器的数据处理如下:
由于此传感器为线性,而AD口的电压变化为5V,对应于0~1023(10位),故而file://localhost/Users/Jackie/Library/Group%20Containers/UBF8T346G9.Office/msoclip1/01/clip_image002.gif,其中,temp为温度值,val为读数,10为线性灵敏度。
心率信号(S)的软件滤波处理如下:

由于脉搏波在动脉中的反射,往往会出现一个重搏波(如下图)。为了避免重搏波的干扰,在程序中每隔0.6个IBI(心跳间隔时间)的值才开始跟踪脉搏的上升,即更新峰值(P)和谷值(T)。
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图9
流程图如下:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图8
心率信号的心率计算:

心率的计算是根据相邻两个脉搏波上升段的中间值之差来确定IBI值(如下图),并通过均值滤波法滤波,从而计算出每分钟心跳次数BPM的值。
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图10
流程图如下:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图11
4.2     上位机processing程序
4.2.1 数据读取
  
  1. String inData = new String(port.readBytesUntil('\n'));
  2.   inData = trim(inData);                 // 去除空格
  3.           对于心率信号,判断是否存在B和Q,以更正相应的每分钟心跳参数和心跳间隔参数。
复制代码

4.2.2图形化处理
          下为程序实例:
  1. beginShape();
  2. for (int i=0; i < rate.length-1; i++){      // 扫描横坐标轴
  3.    vertex(i+510, rate[i]);             // 将心率信号依次体现在UI界面上
  4. }
  5. endShape();
复制代码

五、项目展示
最后的硬件部分demo展示为:
#报名NABI黑客马拉松# Care++ 家庭健康工作中心图12

最后我们的作品有硬件控制端、可穿戴设备、ios/Android客户端及远端数据库。




hnyzcj  版主

发表于 2015-11-16 07:15:47

貌似很牛逼
回复

使用道具 举报

dsweiliang  初级技神

发表于 2015-11-17 14:00:34

牛逼哄哄高大上
回复

使用道具 举报

王然澈  学徒
 楼主|

发表于 2015-11-20 13:15:01

回复

使用道具 举报

王然澈  学徒
 楼主|

发表于 2015-11-20 13:15:13


:P
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail