东软实习报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
而对于我们所做的心电采集项目,是开发随身心电采集项目。我们通过传感 器采集数据,通过 AD 采样、定时中断和蓝牙,最终把采集得到心电数据传送到 手机端的软件上并绘制出相应的心电图。这样我们就完成了随时随身的心电采集。
但常规心电图也有一些缺陷。常规心电图仅能反映很短时间的情况,通常是 1 分钟。很多人的心脏异常是间歇性的,往往在做心电图时,异常并不一定出现, 那么在这种情况下,心电图就起不到筛查的作用。比如,冠心病患者在没发病的 时候做心电图,可能异常改变不明显,但一次心电图正常并不能说明问题,对于 有典型症状的患者,如果症状未发作的时候,做心电图未发现异常,医生可能会 要求患者在心脏病发作时重复做心电图,或进行动态心电图监测。所以,我们开 发了这一随时随地测心电的项目,利用它的便捷性为用户提供帮助。
void TIMER2_init(void)
{
NRF_TIMER2
->
PRESCALER
=
0x05;
//32 分频,2us
NRF_TIMER2 -> MODE = TIMER_MODE_MODE_Timer <<
TIMER_MODE_MODE_Pos;
//偏移相应位置后置为 1
//NRF_TIMER2 -> BITMODE = TIMER_BITMODE_BITMODE_08Bit <<
发送心电数据 Characteristic 属性为 Notify 发送真实心电数据
采集心电数据,并保存到数组
设定 ADC 采样频率为 500Hz 表1
LED 闪灯
GPIO 配置 TIMER 配置
定时器应用程序
LED 闪烁,亮一秒灭两秒 LED 引脚设置为输出状态 定时器配置,并编写中断函数
表2
-4-
闪烁 wenku.baidu.com灭
设备名 包含的 UUID
心电采集程序
发送广播数据,用于创建蓝牙连接 指示蓝牙连接状态 正在发送广告信息,未连接 蓝牙已经连接 包含创建连接需要的信息 设备名称,可随意命名,但是有长度限制 该设备包含的 Service UUID,用于配对之前的设备筛 选 建立连接后,创建服务和特性,并用于发送数据
TIMER_BITMODE_BITMODE_Pos;
NRF_TIMER2
->
CC[0]
=
0x03E8;
//500Hz,2ms,1000*2us
NRF_TIMER2 -> INTENSET = TIMER_INTENCLR_COMPARE0_Enabled <<
TIMER_INTENCLR_COMPARE0_Pos;
-3-
三.项目内容
哈尔滨工业大学本科实习报告
我们所开发的随时随身心电采集程序,主要内容如表 1 所示。
我们还额外开发了定时器应用程序,实现 LED 等亮一秒灭两秒的闪烁,主要
内容如表 2 所示。
广播
GATT 层
ADC 模 块 TIMER
LED 指示 广告包
蓝牙 Service 构 建
数据发送
采集心电 数据 定时
-6-
哈尔滨工业大学本科实习报告
services_init(); conn_params_init(); //TIMER、ADC 初始化
TIMER2_init(); ADC_init(); //28,29 引脚使能,该引脚对应 ADC 采集模块
nrf_gpio_cfg_output(28); nrf_gpio_cfg_output(29); nrf_gpio_pin_set(28); nrf_gpio_pin_set(29); //定时器启动
TIMER2_start(); // Start advertising.
advertising_start(); // Enter main loop. for (;;) { // Switch to a low power state until an event is available for the application
err_code = sd_app_evt_wait(); APP_ERROR_CHECK(err_code); } }
(1)TIMER 定时部分代码
//TIMER.c 文件
#include <stdint.h> #include "nrf.h" #include "TIMER.h" //-----------定时器初始化函数----------------------------
前三天
TIMER 定时器设计
第四天
模拟真实心电数据发送
第五、六天
ADC 模块设计,采集真实心电数据
第七、八天
调试修改
第九天
答辩验收
第十天
程序设计流程图:
(1) 定时器定时设定 ADC 采样频率,如图 1 所示:
-5-
哈尔滨工业大学本科实习报告
图1
(2) 发送模拟真实心电数据,如图 2 所示:
图2
(3) 采集真实心电数据,如图 3 所示:
实习报告
题
目
专
业
学
号
学
生
指导教师
实习时间
心电采集项目开发
哈尔滨工业大学本科实习报告
心电采集
一. 项目背景和意义
在我国每年有将近 260 万人死于心脑血管疾病,约占所有疾病死亡总数的 40%。其中心脏方面疾病的患者接近四成。这就需要我们注意预防了,任何疾病都 是早期发现,治愈或好转的可能性大。同时随着近年来人们越来越重视自己的健 康,越来越关注自己的身体问题,采集心电图、心率也成为了一项很重要的课题。
心率(Heart Rate)是用来描述心动周期的专业术语,是指心脏每分钟跳动的次 数,以第一声音为准。心率,现代汉语将心率解释为“心脏跳动的频率”。频率就 是在单位时间内,某件事情发生的次数。两种解释合起来就是,心脏在一定时间 内跳动的次数,也就是在一定时间内,心脏跳动快慢的意思。心率的测定在运动 训练中有着非常重要的的意义。
二.项目目的
大学生生产实习目的是为了理论联系实际,了解学科的组成与运行管理,加 深对各科知识的现场认识,是学生将理论知识同生产实践相结合的有效途径,是 增强学生的群众性观点、劳动观点、工程观点和建设有中国特色社会主义事业的 责任心和使命感的过程。
生产实习是对一个本科生在校期间所学知识的一种检验,更是通向社会的敲 门砖。在这样的过程中,学生们能够将自己在校期间的知识学以致用,加深掌握, 还能学习更多的专业技能,有助于以后的学习工作。同时这个过程也能让学生亲 自感受社会的需求,高强度与社会接轨。这是我们在学习专业课程之后走向工作 岗位之前的不可缺少的实践环节,对于培养我们的动手能力有很大的意义。
图3
以下为工程部分代码: //主函数配置
int main(void) {
uint32_t err_code; timers_init(); gpiote_init(); buttons_init(); ble_stack_init(); device_manager_init(); // Initialize Bluetooth Stack parameters. gap_params_init(); advertising_init();
心电图(ECG 或者 EKG)是利用心电图机从体表记录心脏每一心动周期所产 生的电活动变化图形的技术。心电图是判断心脏是否健康,用于对各种心律失常、 心室心房肥大、心肌梗死、心律失常、心肌缺血等病症检查,是目前最简单、最 快捷、最经济的检查方法。
健康体检中,不论是什么年龄的人都要重视心电图检查,当心脏因缺血受损 或坏死时,心电活动的变化能正确及时地反映在心电图上,表现在各个波形的异 常变化和进行性演变过程,为医生提供诊断心律失常、急性缺血、心肌梗塞等心 脏疾病的可靠依据。无症状性冠心病和心律失常在老年人中并不少见,也有小部 分压力大、工作强度大的年轻朋友受其困扰,通过心电图相关检查可以发现冠心 病的心肌缺血改变以及心律失常属于何种类型,并进而确定心律失常是器质性还 是功能性的,以便给予针对性的治疗。心电图对怀孕的孕妇的作用也是很大的,常 规心电图检查中异常率明显高于正常非孕妇女,孕妇在早期做心电图是为了检查心 脏是否有病变,后期因为循环加大心脏负荷也加重,引起妊娠期心脏病。
目前,大数据已经成为了各融资公司开拓的市场的焦点,同时健康问题也是 用户所最为关心的,我们的心电采集项目就是基于这一点的实习项目。通过采集 到的受测者的心电以及数据的分析和处理,分析一个人的健康状态,能够对用户 进行实时的心电采集和监控,已达到预防和提前发现病因的目的。这不但有相当 的市场前景,也为用户了解自己的身体健康提供方便。
//CC[0]的使能
NRF_TIMER2 -> SHORTS = TIMER_SHORTS_COMPARE0_CLEAR_Enabled <<
-7-
哈尔滨工业大学本科实习报告
TIMER_SHORTS_COMPARE0_CLEAR_Pos;//中断计数自动清零 NVIC_EnableIRQ(TIMER2_IRQn);
四.同组分工
哈尔滨工业大学本科实习报告
我们小组共四名成员,所以将整个工作分为四个部分,具体分工情况如表 3
所示。
表3
项目内容
负责人
心电采集程序蓝牙广播接收
心电采集程序 GATT 层配置
心电采集程序发送真实心电数据及 ADC
模块采集心电和 TIMER 定时
定时器应用程序
五.项目实现过程
本人负责的主要是心电采集程序发送真实心电数据及 ADC 模块采集心电和
正常人的动脉脉搏频率与心跳频率是一致的。运动后心率测定一般采用 10 秒 钟心律数乘以 6 的计算方法。这主要是运动后心率恢复较快,延长运动后测定时 间,所测得的心律数就不能反应真正的心律数了。
选择一个合适自己的健身形式是强身健体的第一步,而更重要的是:健身活 动一定要保持在适当的强度范围内才能够使锻炼效果最佳,并且有足够的安全保 障而不会因强度过大而损坏身体。那么,如何监测自己的运动强度和活动量?世 界上许多专业运动医学和健身医学机构建议:在运动时使用心率监测。心率监测
TIMER 定时部分。这一部分主要完成三个功能,一是发送一段真实心电数据,由
手机端接收并绘图;二是使用硬件采集人体心电,同时进行 A/D 转换之后将数据
发送给手机端并绘制出心电图;三是设置定时器 TIMER,使得 ADC 的采样频率
为 500Hz。
实习进度安排如表 4 所示:
表4
项目内容
时间
背景介绍及软硬件使用入门讲解
}
(2)发送模拟真实心电数据部分代码:
//定义数组及变量
uint8_t
array[]={15,15,16,15,15,15,16,16,16,16,15,15,16,16,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,
} //-----------定时器启动函数-----------------------------void TIMER2_start(void) {
NRF_TIMER2 -> TASKS_START = 1; } //-----------定时器停止函数-----------------------------void TIMER2_stop(void) {
-2-
哈尔滨工业大学本科实习报告
可以快速清楚地反映运动时身体的信息,能够将运动时心律变化情况告诉您.同时, 可以使运动强度保持在适当的水平,使健身效果更好。心率测量也是减肥运动者 的福音,它可以使运动者知道在何种运动量时,消耗的脂肪最多。不单进行锻炼 时应该监测心率,而且对于老年人或有心脏、心血管疾病者也应该经常监测心率 变化。要十分注意心率的过度变化,因为这可能是一些不好的征兆。应立即进行 医学检查。过去十年来,面向专业竞技运动的运动医学研究成果证明,心率是运 动量、运动强度的最重要的指标。
NRF_TIMER2 -> TASKS_STOP = 1; }
//main.c 文件中定时器中断函数
void TIMER2_IRQHandler()
{
NRF_TIMER2 -> EVENTS_COMPARE[0] = 0; //消除中断标记
ADC_start();
//定时器中断开启,开始 ADC 采样
构建蓝牙 Service,包括连接参数和服务特性创建
添加 ECG Service 添加 ECG Characteristic
发送模拟 ECG 数 据 Notify 构建 发送真实心电数 据
在 GATT 层添加心电 Service(UUID:0x18F0)
在 GATT 层添加心电测量 Characteristic(UUID: 0x2AF0) 发送心电数据 发送模拟的心电数据
但常规心电图也有一些缺陷。常规心电图仅能反映很短时间的情况,通常是 1 分钟。很多人的心脏异常是间歇性的,往往在做心电图时,异常并不一定出现, 那么在这种情况下,心电图就起不到筛查的作用。比如,冠心病患者在没发病的 时候做心电图,可能异常改变不明显,但一次心电图正常并不能说明问题,对于 有典型症状的患者,如果症状未发作的时候,做心电图未发现异常,医生可能会 要求患者在心脏病发作时重复做心电图,或进行动态心电图监测。所以,我们开 发了这一随时随地测心电的项目,利用它的便捷性为用户提供帮助。
void TIMER2_init(void)
{
NRF_TIMER2
->
PRESCALER
=
0x05;
//32 分频,2us
NRF_TIMER2 -> MODE = TIMER_MODE_MODE_Timer <<
TIMER_MODE_MODE_Pos;
//偏移相应位置后置为 1
//NRF_TIMER2 -> BITMODE = TIMER_BITMODE_BITMODE_08Bit <<
发送心电数据 Characteristic 属性为 Notify 发送真实心电数据
采集心电数据,并保存到数组
设定 ADC 采样频率为 500Hz 表1
LED 闪灯
GPIO 配置 TIMER 配置
定时器应用程序
LED 闪烁,亮一秒灭两秒 LED 引脚设置为输出状态 定时器配置,并编写中断函数
表2
-4-
闪烁 wenku.baidu.com灭
设备名 包含的 UUID
心电采集程序
发送广播数据,用于创建蓝牙连接 指示蓝牙连接状态 正在发送广告信息,未连接 蓝牙已经连接 包含创建连接需要的信息 设备名称,可随意命名,但是有长度限制 该设备包含的 Service UUID,用于配对之前的设备筛 选 建立连接后,创建服务和特性,并用于发送数据
TIMER_BITMODE_BITMODE_Pos;
NRF_TIMER2
->
CC[0]
=
0x03E8;
//500Hz,2ms,1000*2us
NRF_TIMER2 -> INTENSET = TIMER_INTENCLR_COMPARE0_Enabled <<
TIMER_INTENCLR_COMPARE0_Pos;
-3-
三.项目内容
哈尔滨工业大学本科实习报告
我们所开发的随时随身心电采集程序,主要内容如表 1 所示。
我们还额外开发了定时器应用程序,实现 LED 等亮一秒灭两秒的闪烁,主要
内容如表 2 所示。
广播
GATT 层
ADC 模 块 TIMER
LED 指示 广告包
蓝牙 Service 构 建
数据发送
采集心电 数据 定时
-6-
哈尔滨工业大学本科实习报告
services_init(); conn_params_init(); //TIMER、ADC 初始化
TIMER2_init(); ADC_init(); //28,29 引脚使能,该引脚对应 ADC 采集模块
nrf_gpio_cfg_output(28); nrf_gpio_cfg_output(29); nrf_gpio_pin_set(28); nrf_gpio_pin_set(29); //定时器启动
TIMER2_start(); // Start advertising.
advertising_start(); // Enter main loop. for (;;) { // Switch to a low power state until an event is available for the application
err_code = sd_app_evt_wait(); APP_ERROR_CHECK(err_code); } }
(1)TIMER 定时部分代码
//TIMER.c 文件
#include <stdint.h> #include "nrf.h" #include "TIMER.h" //-----------定时器初始化函数----------------------------
前三天
TIMER 定时器设计
第四天
模拟真实心电数据发送
第五、六天
ADC 模块设计,采集真实心电数据
第七、八天
调试修改
第九天
答辩验收
第十天
程序设计流程图:
(1) 定时器定时设定 ADC 采样频率,如图 1 所示:
-5-
哈尔滨工业大学本科实习报告
图1
(2) 发送模拟真实心电数据,如图 2 所示:
图2
(3) 采集真实心电数据,如图 3 所示:
实习报告
题
目
专
业
学
号
学
生
指导教师
实习时间
心电采集项目开发
哈尔滨工业大学本科实习报告
心电采集
一. 项目背景和意义
在我国每年有将近 260 万人死于心脑血管疾病,约占所有疾病死亡总数的 40%。其中心脏方面疾病的患者接近四成。这就需要我们注意预防了,任何疾病都 是早期发现,治愈或好转的可能性大。同时随着近年来人们越来越重视自己的健 康,越来越关注自己的身体问题,采集心电图、心率也成为了一项很重要的课题。
心率(Heart Rate)是用来描述心动周期的专业术语,是指心脏每分钟跳动的次 数,以第一声音为准。心率,现代汉语将心率解释为“心脏跳动的频率”。频率就 是在单位时间内,某件事情发生的次数。两种解释合起来就是,心脏在一定时间 内跳动的次数,也就是在一定时间内,心脏跳动快慢的意思。心率的测定在运动 训练中有着非常重要的的意义。
二.项目目的
大学生生产实习目的是为了理论联系实际,了解学科的组成与运行管理,加 深对各科知识的现场认识,是学生将理论知识同生产实践相结合的有效途径,是 增强学生的群众性观点、劳动观点、工程观点和建设有中国特色社会主义事业的 责任心和使命感的过程。
生产实习是对一个本科生在校期间所学知识的一种检验,更是通向社会的敲 门砖。在这样的过程中,学生们能够将自己在校期间的知识学以致用,加深掌握, 还能学习更多的专业技能,有助于以后的学习工作。同时这个过程也能让学生亲 自感受社会的需求,高强度与社会接轨。这是我们在学习专业课程之后走向工作 岗位之前的不可缺少的实践环节,对于培养我们的动手能力有很大的意义。
图3
以下为工程部分代码: //主函数配置
int main(void) {
uint32_t err_code; timers_init(); gpiote_init(); buttons_init(); ble_stack_init(); device_manager_init(); // Initialize Bluetooth Stack parameters. gap_params_init(); advertising_init();
心电图(ECG 或者 EKG)是利用心电图机从体表记录心脏每一心动周期所产 生的电活动变化图形的技术。心电图是判断心脏是否健康,用于对各种心律失常、 心室心房肥大、心肌梗死、心律失常、心肌缺血等病症检查,是目前最简单、最 快捷、最经济的检查方法。
健康体检中,不论是什么年龄的人都要重视心电图检查,当心脏因缺血受损 或坏死时,心电活动的变化能正确及时地反映在心电图上,表现在各个波形的异 常变化和进行性演变过程,为医生提供诊断心律失常、急性缺血、心肌梗塞等心 脏疾病的可靠依据。无症状性冠心病和心律失常在老年人中并不少见,也有小部 分压力大、工作强度大的年轻朋友受其困扰,通过心电图相关检查可以发现冠心 病的心肌缺血改变以及心律失常属于何种类型,并进而确定心律失常是器质性还 是功能性的,以便给予针对性的治疗。心电图对怀孕的孕妇的作用也是很大的,常 规心电图检查中异常率明显高于正常非孕妇女,孕妇在早期做心电图是为了检查心 脏是否有病变,后期因为循环加大心脏负荷也加重,引起妊娠期心脏病。
目前,大数据已经成为了各融资公司开拓的市场的焦点,同时健康问题也是 用户所最为关心的,我们的心电采集项目就是基于这一点的实习项目。通过采集 到的受测者的心电以及数据的分析和处理,分析一个人的健康状态,能够对用户 进行实时的心电采集和监控,已达到预防和提前发现病因的目的。这不但有相当 的市场前景,也为用户了解自己的身体健康提供方便。
//CC[0]的使能
NRF_TIMER2 -> SHORTS = TIMER_SHORTS_COMPARE0_CLEAR_Enabled <<
-7-
哈尔滨工业大学本科实习报告
TIMER_SHORTS_COMPARE0_CLEAR_Pos;//中断计数自动清零 NVIC_EnableIRQ(TIMER2_IRQn);
四.同组分工
哈尔滨工业大学本科实习报告
我们小组共四名成员,所以将整个工作分为四个部分,具体分工情况如表 3
所示。
表3
项目内容
负责人
心电采集程序蓝牙广播接收
心电采集程序 GATT 层配置
心电采集程序发送真实心电数据及 ADC
模块采集心电和 TIMER 定时
定时器应用程序
五.项目实现过程
本人负责的主要是心电采集程序发送真实心电数据及 ADC 模块采集心电和
正常人的动脉脉搏频率与心跳频率是一致的。运动后心率测定一般采用 10 秒 钟心律数乘以 6 的计算方法。这主要是运动后心率恢复较快,延长运动后测定时 间,所测得的心律数就不能反应真正的心律数了。
选择一个合适自己的健身形式是强身健体的第一步,而更重要的是:健身活 动一定要保持在适当的强度范围内才能够使锻炼效果最佳,并且有足够的安全保 障而不会因强度过大而损坏身体。那么,如何监测自己的运动强度和活动量?世 界上许多专业运动医学和健身医学机构建议:在运动时使用心率监测。心率监测
TIMER 定时部分。这一部分主要完成三个功能,一是发送一段真实心电数据,由
手机端接收并绘图;二是使用硬件采集人体心电,同时进行 A/D 转换之后将数据
发送给手机端并绘制出心电图;三是设置定时器 TIMER,使得 ADC 的采样频率
为 500Hz。
实习进度安排如表 4 所示:
表4
项目内容
时间
背景介绍及软硬件使用入门讲解
}
(2)发送模拟真实心电数据部分代码:
//定义数组及变量
uint8_t
array[]={15,15,16,15,15,15,16,16,16,16,15,15,16,16,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,
} //-----------定时器启动函数-----------------------------void TIMER2_start(void) {
NRF_TIMER2 -> TASKS_START = 1; } //-----------定时器停止函数-----------------------------void TIMER2_stop(void) {
-2-
哈尔滨工业大学本科实习报告
可以快速清楚地反映运动时身体的信息,能够将运动时心律变化情况告诉您.同时, 可以使运动强度保持在适当的水平,使健身效果更好。心率测量也是减肥运动者 的福音,它可以使运动者知道在何种运动量时,消耗的脂肪最多。不单进行锻炼 时应该监测心率,而且对于老年人或有心脏、心血管疾病者也应该经常监测心率 变化。要十分注意心率的过度变化,因为这可能是一些不好的征兆。应立即进行 医学检查。过去十年来,面向专业竞技运动的运动医学研究成果证明,心率是运 动量、运动强度的最重要的指标。
NRF_TIMER2 -> TASKS_STOP = 1; }
//main.c 文件中定时器中断函数
void TIMER2_IRQHandler()
{
NRF_TIMER2 -> EVENTS_COMPARE[0] = 0; //消除中断标记
ADC_start();
//定时器中断开启,开始 ADC 采样
构建蓝牙 Service,包括连接参数和服务特性创建
添加 ECG Service 添加 ECG Characteristic
发送模拟 ECG 数 据 Notify 构建 发送真实心电数 据
在 GATT 层添加心电 Service(UUID:0x18F0)
在 GATT 层添加心电测量 Characteristic(UUID: 0x2AF0) 发送心电数据 发送模拟的心电数据