基于单片机及安卓手机APP的心电监测系统
实验题目:基于单片机及安卓手机 APP 的心电监测系统
1. 课程简要信息
课程名称:单片机原理与接口技术
课程学时:50学时(课内) $+ 1 2$ 学时(课外)
本实验案例学时:8学时(课内) $+ 8$ 学时(课外)
适用专业:生物医学工程专业
学生年级:本科三年级下学期
2. 实验内容与任务
利用微弱生物电测量的信号调理模块和单片机,设计一个能测量受试者心电(ECG)信号并在 Android 手机 APP 上实时显示的监测系统。巩固加深对单片机 ADC、中断系统、定时器、全双工异步串行通讯以及外接接口电路等知识的理解和运用,培养学生综合应用单片机系统的开发、调试能力。最终,提高学生的实践能力和工程应用能力。实验内容与任务如图 1 所示:

图 1 实验内容与任务
基本任务
1)考虑运动或远程电极放置产生的各种噪声的情况下,选定全集成式 ECG 信号调理模块,查阅数据手册,实现对 ECG 信号的提取、放大、滤波及右腿驱动输出至单片机主控模块;
2)利用单片机的 ADC、定时器及全双工异步串行通信的功能,将信号调理模块采集的 ECG 信号转换为数字信号,通过串口传输至教师提供的 CH340 USB 转串口 Android 开发 DemoAPK,将 ECG 数值实时显示;
3)绘制系统 SCH 原理图,利用 Proteus 仿真软件结合 Keil C51 编程,仿真信号调理模块和单片机主控模块功能。制作 PCB,焊接系统,下载程序至硬件系统,验证系统功能。
进阶任务
4)基于 DemoAPK 例程及源码,开发 APK,实现将单片机输出的 ECG 数值以心电图的形式显示在手机屏幕。
$\bullet$ 拓展任务
5)利用信号系统的知识,计算出心率,显示在 Android 手机上。
3. 实验过程及要求
1) 复习生理课程,要求学生了解心电信号的产生及频率特征;
2) 复习模数电、传感器、医学电子学知识,掌握 ECG 采集及信号调理所需的导联电极、前置放大、滤波、主放大及右腿驱动等基础知识和原理;
3) 查阅资料,尽可能多地查找满足信号采集及调理的方案,分析比较各个方案的优缺点,综合各种因素选定全集成式信号调理模块为本实验 ECG 信号调理部分的最优方案;
4) 根据已学过的 8051 单片机的基本内容,选定具有 AD 转换功能的能满足本实验功能的 STC单片机型号,STC 官网查询下载选定型号单片机数据手册,根据系统功能和数据手册,设计程序流程图;
5) 根据所选方案,设计信号调理模块和单片机主控模块的仿真原理图,利用 Keil C 编写实验程序,并在 Proteus 下完成整个设计的仿真调试;
6) 列出元器件清单,并在 Altium Designer 下设计系统的 SCH 原理图和 PCB 板图;
7) 制板并焊接好各元器件,下载程序,并在教师提供的 Demo APK 上验证系统功能,满足基本任务的要求;
8) 对于进阶任务和拓展任务,要求搭建 Android 开发环境,根据 Demo APK 例程和源码,调用API 接口函数,将心电数值以心电图形式实时动态显示在手机屏幕上,拓展完成心率的计算和显示;
9) 验收答辩:以分组答辩汇报形式,学生介绍作品设计原理和方案,并进行现场演示,回答教师提出的问题,同时不同组之间交流设计心得;
10)撰写设计总结报告,要求提交电子版和纸质版。
4. 相关知识及背景
随着我国人口老龄化程度持续加深,心脏病的防控形势日趋严峻。传统医用心电监测仪不仅价格非常昂贵而且使用场合有限。因而,便携式心电仪的研制是生物医学工程专业学生需要解决的实际问题。
本项目是一个综合运用传感器技术、模数电子技术、单片机原理与接口技术等基础课程知识,去设计实现具有趣味性和实用性的基于单片机的智能化医疗仪器的典型案例。不仅需要运用生物电信号提取、放大、滤波、单片机 AD 转换、定时器、中断、串口通讯等已经学习的知识和技术。而且设置技术难点,引入 Android 程序开发技术,利用所学高级语言编程技术,引导启发学生进行应用型医疗器械设计开发,训练学生解决生物医学工程专业实际问题的能力,提升岗位任职能力。
5. 教学目标与目的(限100字)
在较为完整的 ECG 监测系统的实现过程中引导学生认识单片机原理及接口技术在实现医学仪器的设计和开发中的地位和重要性,引导学生根据系统功能和需求设计电路、选择元器件,巩固加深对单片机 ADC、中断系统、定时器、串行通讯以及外接接口电路等知识的理解和运用,使学生初步具备单片机应用系统的硬件及软件设计、调试的能力。提高学生的实践能力和工程应用能,为以后学习医学仪器有关专业课程奠定基础。
6. 教学设计与引导
本实验的过程是一个以单片机技术为核心的切合本专业背景的智能化医学仪器开发实践项目,学生需要经历学习研究、整体方案设计论证、模块化功能设计、系统设计、实现调试、单片机程序设计、Android 程序设计、设计总结等过程。在实验教学中,应在以下几个方面加强对学生的引导:
背景解释:
1) 紧紧围绕四年制生物医学工程专业的人才培养目标,以便携式心电仪的研制是生物医学工程专业学生需要解决的实际问题为背景,引导学生对本专业领域的认识,同时激发学生的学习兴趣和主动性;
2)引导学生说出心电信号的产生及频率特征,介绍导联电极,为构建心电监测系统做铺垫。
课堂知识讲解、方法引导:
1)让学生复习模数电、传感器、医学电子学知识,引导学生说出已经学过的由分离原件构成的 ECG 信号提调理方法(前置放大-带通滤波-工频陷波-主放大-AD 转换),结合本门课程的核心单片机技术,构建出实现本系统的整体设计方案;
2)通过将整体设计方案分解为各个功能模块,以各模块对 ECG 信号起什么样的作用为主线,引导学生搞懂各模块之间是如何相互联系和相互作用的;
3)引导学生对各功能模块进行方案论证,寻求最优的方案,最终确定系统整体方案:
例如:a)引导学生分析已经学过的由分离原件构成的 ECG 信号提调理方法(前置放大-带通滤波-工频陷波-主放大-AD 转换)的优缺点,引出全集成式 ECG 信号调理模块 AD8232,引导学生认识集成式芯片的优点及与单片机接口的硬件连接方式。b) 引导学生分析传统 8051无内置 ADC 功能需要额外增加 ADC 模块等缺点,引出内置 ADC 功能的功能更强大单片机机型,增强学生举一反三、自学新知识的能力;
4) 简要介绍教师提供的 CH340 USB 转串口 Android 开发 Demo APK 例程及源码,要求学生自行利用例程,测试单片机串口发送的 ECG 数值;
5)简要介绍开发Android手机APP的环境搭建及开发步骤,鼓励学生实现将单片机输出的ECG数值以心电图的形式显示在手机屏幕并计算出心率,实现进阶任务和拓展任务。
实验中的方法指导:
1) 以确定好的整体系统方案为主线,以细化好的各功能模块为突破口,引导学生查询各模块和元器件的数据手册,自行设计信号调理模块和单片机主控模块的仿真原理图,利用Keil C编写实验程序,并在 Proteus 下完成整个设计的仿真调试;
2) 在单片机主控模块,引导学生注意经典 8051 系列单片机与内置 ADC 功能的单片机在中断、定时器、串行通讯等相关的各特殊功能寄存器的异同;
3) 实验进行中,回答学生过程中提出的疑问,错误电路的查找,对学生明显出现的偏差进行纠正,并对无法解决的问题进行指导。
质询问题的设计:
在系统软硬件设计、制板并焊接好各元器件,软硬件联调,实现 ECG 实时监测的功能后,由教师来设计各功能模块的软硬件典型故障,让学生找出问题所在,分析并加以总结,培养学生系统调试、维修能力。
研讨及验收:
在实验完成后,组织学生对实验项目采用答辩汇报和现场演示的考核方式进行验收,教师对项目学生的项目进行提问和点评总结,对学生进行考核打分。
实验后的思考:
引导学生将串口通讯的实现方式更改为 Wifi、蓝牙等无线的通讯方式,同样实现 ECG 监测系统,鼓励学生自主学习。
7. 实验原理及方案
1)系统结构
心电监测系统结构如图 2 所示,包括心电检测传感器、信号调理模块、单片机主控模块、USB 转串口模块以及 Android 心电显示模块。

图 2 系统结构框图
2)实现方案
总体实现方案如图 3 所示:首先,单导联心电检测传感器提取 ECG 信号,经 AD8232信号调理模块处理后,由 STC15W408AS 单片机进行 AD 转换为 8 为数据,然后经过由单片机串口每 1 ms 发送一次数据至 Android USB Host。通讯中,CH340 USB 转串口芯片实现 UART 通道与 USB 通道的互联。学生可根据 CH340 串口功能开发的 Android USB Host 协议,调用串口通讯接口 API 实现与 Android 设备进行通讯,将心电数据显示在 Android 手机上实时监测。此外,CH340 转接芯片还为 AD8232 信号调理模块与 STC15W408AS 单片机主控模块提供 $+ 3 . 3 \mathrm { v }$ 供电。

图 3 总体实验方案
各模块的具体实现方案如下:
单导联心电检测传感器
由于单导联探查电极距心室较劲,可更好地反应心肌局部电位变化,因而在冠心病及其他心肌疾患的诊断上有更大的价值。
本系统采集心电数据使用的单导联方法(图 4):左臂(LA)电极放在左锁骨中线下方(黄),右臂电极置于胸骨右缘第四肋处(红),驱动电极(RL)放在右锁骨中线第 5 肋骨上方(绿)。

图 4 单导联方法
AD8232 信号调理模块
本系统采用全集成式 AD8232 信号调理模块,该器件设计用于在具有运动或远程电极放置产生的噪声的情况下提取、放大及过滤微弱的生物电信号,特别适用于 ECG 信号的信号调理。而且,该器件的设计使得超低功耗模数转换器(ADC)或嵌入式微控制器能够轻松地采集输出信号。
AD8232其中集成了仪表放大器、增益放大器、基准电压缓冲、驱动导联前端基准缓冲、右腿驱动电路、关断功能,以及用户可选的(交流或直流)导联脱落检测电路。AD8232 解决了从电极到处理器之间的很多问题,整个外围电路简单,只需要几个电阻电容器件即可完成前端电路设计(图 5),选用 AD8232的原因是单芯片的模拟信号链前端芯片大大简化了系统设计。

图 5AD8232信号调理模块电路图
AD8232 信号输入端+IN、-IN、RLD 分别接心电检测传感器的左臂(LA)电极、右臂(RA)电极和驱动(RL)电极(表 1)。信号输出端(完全调理后的 ECG 信号)输出至 STC15W408AS单片机的 ADC0/P1.0 引脚进行 AD 转换(表 2)。电源由 CH340 转接芯片提供 $+ 3 . 3 \mathrm { V }$ 供电。控制端 $\mathrm { L O + }$ 、LO-分别接单片机P2.4、P2.3,进行有无导联脱落检测。SDN端接单片机P2.5对AD8232的开、关状态进行控制(表 3)。
表 1 AD8232 信号输入端
| 引脚 | 引脚功能 | 与心电检测传感器的连接 |
| +IN | 仪表放大器正输入端 | 左臂(LA)电极 |
| -IN | 仪表放大器负输入端 | 右臂(RA)电极 |
| RLD | 右腿驱动输出端 | 驱动(RL)电极 |
表 2 AD8232 信号输出端
| 引脚 | 引脚功能 | 与单片机的连接 |
| OUT | 完全调理后的 ECG 输出端 | ADC0/P1.0 |
表 3 AD8232 电源及控控制端
| 引脚 | 引脚功能 | 供电方式/与单片机的连接 |
| +VS | 电源引脚 | CH340 转接芯片提供+3.3V 供电 |
| GND | 电源地 | 数字地 |
| LO+ | 导联脱落比较器输出端Leads-off Detect + | P2.4 |
| LO- | 导联脱落比较器输出端Leads-off Detect - | P2.3 |
| SDN | 关断控制输入端 | P2.5 |
STC15W408AS 单片机主控模块
本系统采用 STC15W408AS 单片机,是一款宽电压/高速/高可靠/低功耗/超抗干扰的新一代8051 单片机,8 路 10 位高速 ADC,无需外部晶振和复位电路,2.5 元/片,非常适合本项目。
STC15W408AS 单片机首先将 AD8232 完全调理后的 ECG 信号经 ADC0/P1.0 进行 AD 转换得到 8 位数据,然后将 AD 转换后的数据每 1 ms 经全双工异步串口(UART)的 TxD(P3.1)端发送至 USB 转串口 CH340 转接芯片的 RxD 端口,最后根据 Android USB Host 协议,调用串口通讯接口 API 实现与 Android 设备进行通讯,将心电数据显示在 Android 手机上实时监测。具体电路原理图如图 6 所示。

图 6 STC15W408AS 单片机主控模块电路原理图
AD 转换
AD 转换控制过程如图 7 所示,首先选定 P1.0 为转换通道,通道选择由置位 PLASF 特殊功能寄存器的特殊位实现(图 8)。然后初始化 AD0 通道,通道选择、上电、转换速率的控制由置位ADC_CONTR 特殊功能寄存器的特殊位实现(图 8)。最后,开始转换并判断转换是否完成,若转换完成,将 ADC_RES 中的转换结果返回至变量保存供串行通讯使用。

图 7 AD 转换程序控制流程图
P1ASF:P1口模拟功能控制寄存器(该寄存器是只写寄存器,读无效)
| SFR name | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| P1ASF | 9DH | name | P17ASF | P16ASF | P15ASF | P14ASF | P13ASF | P12ASF | P11ASF | P10ASF |
ADC_CONTR:ADC控制寄存器
| SFRname | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| ADC_CONTR | BCH | name | ADC_POWER | SPEED1 | SPEEDO | ADC_FLAG | ADC_START | CHS2 | CHS1 | CHSO |
全双工异步串行通讯
为了保证采集到的心电数据能够在 Android 系统上画出完整的 ECG 波形图,需要选择合适的采样率。ECG 频率一般认为是 $0 . 0 5 { \sim } 1 0 0 \mathrm { H z }$ ,根据奈奎斯特抽样定律,采集 ECG 数据时的采样率应该大于 $2 0 0 \mathrm { H z }$ 。但是考虑到动态实时显示的效果,本实验选择 $2 5 0 \mathrm { H z }$ 的采样率,即 4ms采集一个点。
全双工异步串行通讯控制过程如图 9 所示,首先,初始化串行口 1、定时器 0:串行口 1 工作模式于 1,8 位 URAT,波特率可变,串行口 1 选择定时器 T2 为波特率发生器,T2 时钟设定1T,波特率设定为 19200 bps( $\scriptstyle \int _ { \mathrm { o s c } } = 1 1 . 0 5 9 2 \mathrm { M H z }$ );设定定时器 0 为 12T 时钟方式,工作于模式0,1 位自动重装载模式,中断方式实现 $1 \mathrm { m s }$ 精确定时。然后,无限循环判断是否到达 $1 \mathrm { m s }$ ,若到达 $4 \mathrm { m s }$ ,则串口将 AD 转换后的数据填至 SBUF 进行发送,发送一帧数据结束后 TI 软件清零。用到的特殊功能控制寄存器如图 10 所示。

图 8 PLASF、ADC_CONTR 特殊功能寄存器

图 9 全双工异步串行通讯及定时器 0 程序控制流程图
SCON:串行控制寄存器 (可位寻址)
| SFRname | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| SCON | 98H | name | SM0/FE | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
PCON:电源控制寄存器 (不可位寻址)
| SFR name | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| PCON | 87H | name | SMOD | SMOD0 | LVDF | POF | GF1 | GFO | PD | IDL |
AUXR:辅助寄存器(不可位寻址)
| SFRname | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| AUXR | 8EH | name | T0x12 | T1x12 | UART_M0x6 | T2R | T2_C/T | T2x12 | EXTRAM | S1ST2 |
TCON:定时器/计数器中断控制寄存器(可位寻址)
| SFR name | Address | bit | B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
| TCON | 88H | name | TF1 | TR1 | TFO | TRO | IE1 | IT1 | IEO | ITO |
TMOD 地址:89H复位值:00H不可位寻址

图 10 SCON、PCON、AUXR、TCON、TMOD 特殊功能寄存器
CH340 转接芯片
CH340 转接芯片实现三个功能:1)将 USB 电平转换为 $+ 3 . 3 \mathrm { V }$ ,给 AD0832模块和单片机模块供电;2)下载程序;3)USB 转 UART,用户调用底层 API 实现 Android程序开发,将单片机串口发出的数据,接收至 Android 手机进行显示。
Android UBS to UART 心电显示程序开发
首先,安装 JDK 和 Android Studio 搭建 Android 应用开发环境,如图 11 所示。参考开源项目 http://www.wch.cn/downloads/CH341SER_ANDROID_ZIP.html,提供了 CH340 的 USB 转串口安卓免驱应用库,用于 Android 操作系统 3.1 及以上版本的 USB Host 模式,无需加载 Android内核驱动,无需 root 权限操作。包含 apk 安装程序,lib 库文件(Java Driver),App Demo 例程(USB 转 UART Demo 工程 SDK)。

图 11 Android 开发环境搭建
针对 CH340 UART 的操作提供了 EnumerateDevice、OpenDevice、UartInit、SetConfig、WriteData 和 ReadData 方法以及 WriteTimeOutMillis 和 ReadTimeOutMillis 属性,实现与 CH340UART 功能模块的通讯。同时提供 CloseDevice 接口来关闭 UARTDevice,isConnected 接口来判断设备是否连接。
具体开发流程为 ResumeUsbList 完成对 USB 设备的枚举、打开设备、获取设备资源信息等步骤(或可使用 EnumerateDevice 后 OpenDevice 打开设备),然后用户根据需要设置波特率、数据位、停止位、奇偶校验位以及流控等参数,点击配置按键,即完成 UART的配置,之后就可以进行读取单片机发送的 8 位心电数据,并进行显示。
3) 系统 SCH 原理图、PCB 板图、系统实物图(图12-14)


图 12 系统 SCH 原理图

图 13 系统 PCB 板图

图 14 系统实物图
8. 教学实施进程
| 教学时间 | 教学内容 |
| 1-2学时(课内) | 教师解释项目背景,引导学生由已学知识分离原件构成的ECG信号提调理方法(前置放大-带通滤波-工频陷波-主放大-AD 转换),结合本门课程的核心单片机技术,构建出实现本系统的整体设计方案。将整体设计方案分解为各个功能模块,对各功能模块进行方案论证,寻求最优的方案,最终确定系统整体方案。 |
| 3-4学时(课内) | 简要介绍教师提供的CH340 USB 转串口Android 开发Demo APK 例程及源码,要求学生自行利用例程,测试单片机串口发送的ECG数值。介绍开发Android手机APP的环境搭建及开发步骤,鼓励学生实现将单片机输出的ECG数值以心电图的形式显示在手机屏幕并计算出心率,实现进阶任务和拓展任务。 |
| 5-6学时(课内)十7-14学时(课外) | 以确定好的整体系统方案为主线,以细化好的各功能模块为突破口,引导学生查询各模块和元器件的数据手册,自行设计信号调理模块和单片机主控模块的原理图,利用KeilC编写实验程序,并在Proteus下完成整个设计的仿真调试,制作PCB,焊接系统。下载编译好的HEX文件至硬件系统,验证系统功能。实验进行中,回答学生过程中提出的疑问,错误电路的查找,对学生明显出现的偏差进行纠正,并对无法解决的问题进行指导。 |
| 15-16学时(课内) | 在实验完成后,组织学生对实验项目采用答辩汇报和现场演示的考核方式进行验收,教师对项目学生的项目进行提问和点评总结,对学生进行考核打分。 |

图 15 教学实施进程
9. 实验报告要求
实验报告需要反映以下工作:
1)项目背景及意义
2)实验仪器及仪表
3)系统功能分析
4)整体方案设计
5)各功能模块设计
6)硬件设计原理图及 PCB 图
7)软件设计及流程图
8)系统功能调试记录
9)成品展示及验收
10)实验心得总结
10.考核要求与方法(限300字)
采用答辩汇报和现场演示的考核方式,考核内容与标准如表所示:
| 小组成员评分指标 | |||||
| 指标 | 主要评价点 | 分数 | |||
| 现场演示(70分) | 1、设计的完整性(硬件、软件)(50分) | ||||
| 2、关键指标达到设计要求(20分) | |||||
| 小计 | |||||
| 答辩汇报(30分) | 3、选题意义(理论与应用价值)(10分) | ||||
| 4、方案设计(合理性、全面性、难度)(15分) | |||||
| 5、语言表达(清晰流畅)与问题回答(5分) | |||||
| 100 | 小计 | ||||
| 总分 | |||||
11. 项目特色或创新
1)兼顾项目的背景性和工程性。本实验很好的结合了生物医学工程专业特点,以传统医用心电监测仪不仅价格非常昂贵而且使用场合有限实际问题为背景,研制携式心电仪。可加深学生的专业认同感,激发学习兴趣和自主性。
2)兼顾基础性和综合性。以本课程单片机技术为核心,让学生理解运用单片机的 ADC、定时器、全双工异步串行通信以及外接接口功能。同时,综合了传感器技术、模数电子技术以及高级语言编程技术,提高了学生的实践能力和工程应用能,为后置医学仪器等专业课程的学习奠定基础。
3)注重探究性和自学能力的培养。本项目设置技术难点,引入 Android 程序开发技术,利用所学高级语言编程技术,引导启发学生进行应用型医疗器械设计开发,训练学生解决生物医学工程专业实际问题的能力,提升岗位任职能力。
参赛信息表
| 案例提供单位 | 中国人民解放军空军军医大学 | 相关专业 | 生物医学工程 | |||
| 设计者姓名 | 雷涛 | 电子邮箱 | 916860284@qq.com | |||
| 移动电话 | 18629403085 | 通讯地址(含邮编) | 陕西省西安市长乐西路169号710032 | |||
| 设计者姓名 | 张自启 | 电子邮箱 | zhangziqi57@163.com | |||
| 移动电话 | 18392080991 | 通讯地址(含邮编) | 陕西省西安市长乐西路169号710032 | |||
| 设计者姓名 | 夏娟娟 | 电子邮箱 | 446719930@qq.com | |||
| 移动电话 | 19991291986 | 通讯地址(含邮编) | 陕西省西安市长乐西路169号710032 | |||
| 相关课程名称 | 单片机原理及接□技术 | 学生年级 | 本科三年级下学期 | 学时(课内+课外) | 8+8 | |
| 支撑条件 | 仪器设备 | 台式万用表(SDM3055X-E)、示波器(SDS2022X)、直流电源(SPD3303X-E,)、电烙铁、工具箱等 | ||||
| 软件工具 | Keil uVersion5、STC-ISP 下载软件、Proteus、Altium Designer、CH340UARTDemo APK、JDK、Android Studio、Android SDK | |||||
| 主要器件 | 单导联心电检测传感器、AD8232信号调理模块、STC15W408AS单片机、CH340USB转串口芯片 | |||||