DIY心电图测试仪
2018-02-04 本文已影响100人
gaoshine
DIY心电图测试仪
从某宝上订了一套心电图的AD8232模块,可以用来做心电测量, 脉搏, 心电监测.
AD8232模块
准备周末做一个心电图测试仪,看看这个玩具能不能真的测量我的心电状况,能否出个合格的心电图.
01. 硬件搭建
我们看这个AD8232模块本质上是一款运算放大器,用于ECG及其他生物电测量应用的集成信号调理模块。该器件设计用于在具有运动或远程电极放置产生的噪声的情况下提取、放大及过滤微弱的生物电信号.
这个模块的的详细图片:
AD8232模块
整体是这样的结构
-
arduino和AD8232模块相连,采集心电信号.
-
PC端通过串口读取arduino的采集的信号,并绘制成图.
-
PC端采用processing
具体接线如下:
-
心电电极接线 通过插头已经把 RL(右腿) LA(左臂) RA(右臂)连接上电极,再根据下图连接到身体上
body.png我也是简单科普了一下心电图的知识,这方便以前没有了解过,有不对的地方希望大家指正.
02. 软件
大家可以看看github上的这个开源项目.这个写的很棒,从硬件设计到软件非常详细.
AD8232_Heart_Rate_Monitor
arduino端的代码:
void setup() {
// initialize the serial communication:
Serial.begin(9600);
pinMode(10, INPUT); // Setup for leads off detection LO +
pinMode(11, INPUT); // Setup for leads off detection LO -
}
void loop() {
if((digitalRead(10) == 1)||(digitalRead(11) == 1)){
Serial.println('!');
}
else{
// send the value of analog input 0:
Serial.println(analogRead(A0));
}
//Wait for a bit to keep serial data from saturating
delay(1);
}
processing的代码:
import processing.serial.*;
Serial myPort;
int xPos = 1;
float height_old = 0;
float height_new = 0;
float inByte = 0;
void setup () {
//Window Size
size(1080, 500);
// List serial ports
println(Serial.list());
myPort = new Serial(this, Serial.list()[1], 9600);
myPort.bufferUntil('\n');
//Background
background(255);
fill(color(0,0,0));
text("Heart Rate Monitor v1.0", 10, 10);
}
void draw () {
inByte = map(inByte, 0, 1023, 0, height);
height_new = height - inByte;
line(xPos - 1, height_old, xPos, height_new);
height_old = height_new;
if (xPos >= width) {
xPos = 0;
background(255);
}
else {
xPos++;
}
}
void serialEvent (Serial myPort) {
// get the ASCII string:
String inString = myPort.readStringUntil('\n');
if (inString != null) {
// trim off any whitespace:
inString = trim(inString);
if (inString.equals("!")) {
stroke(0, 0, 255);
inByte = 512;
}
else {
stroke(255, 0, 0);
inByte = float(inString);
}
}
}
03.实验
arduino.png
- 把arduino程序上传,再打开processing.
- 把黏糊糊的三个电极占到身上,开始做个小白鼠.
- 看着串口数据不断读过来,processing开始绘图.
我的小心脏不停在跳动,曲线也绘制出来...
ok.png