风筝
发表于: 2019-9-8 10:37:06 | 显示全部楼层

使用Arduino微控制器和AD8232自制心电图模拟器并测量心率!


分析和监测心率的有效方法是通过心电图(ECG)心脏监测系统。在本篇文章中,我们将设置和运行AD8232心率监视传感器,通过向您展示如何将其连接到Arduino UNO以使用Processing创建心跳可视化。


注意:此项目仅用于业余爱好和学习目的;它不能用于代替医疗级心电监护仪或作为专业医疗诊断的替代品。


什么是AD8232?

AD8232可测量心脏的电活动。该电活动可以表示为ECG。心电图已被广泛用于帮助诊断各种心脏病。


我们的想法是从AD8232电路板获取ECG信号。 AD8232的输出信号约为1.5伏。该信号将由Arduino UNO以大约1k样本/秒进行采样。然后将这些采样值发送到PC,以通过USB端口进行可视化。


建议使用两节AA电池作为电源,因为如果从Arduino UNO的3.3V输出为AD8232供电,则会产生60Hz的噪音。如果需要,AD8232也可以使用3V水银纽扣电池供电。两根导线(信号和地)从AD8232电路板流向Arduino(A0和地)。我还使用了一些热熔胶来加固AD8232板连接处的导线。


所需的硬件

●    Arduino UNO开发板

●    AD8232 ECG模块

●    心电图电极(3)

●    ECG电极连接器 -  3.5 mm

●    数据线

●    跳线

●    面包板

AD8232 module by Sparkfun..png

The hardware.jpg


心率监测源代码

复制以下代码到Arduino IDE中。将Arduino连接到您的计算机。上传代码,然后打开串口监视器:

  1. void setup() {
  2.    Serial.begin(9600);
  3.   pinMode(10, INPUT); // Setup for leads off detection LO +
  4.   pinMode(11, INPUT); // Setup for leads off detection LO -

  5. }

  6. void loop() {
  7.   if((digitalRead(10) == 1)||(digitalRead(11) == 1)){
  8.     Serial.println('!');
  9.   }
  10.   else{
  11.      Serial.println(analogRead(A0));
  12.   }
  13.   delay(1);
  14. }
复制代码

Processing代码

在Processing中运行下面给出的Javascript,以便可视化数据。来自传感器的数据由Arduino读取并发送到串口。处理从串口读取此数据,然后将其绘制出来。将以下复制并粘贴到Processing IDE中,然后单击“运行”。

**注意:只有Processing 2.2.1才能使用此代码。

  1. import processing.serial.*;

  2. Serial myPort;        
  3. int xPos = 1;         
  4. float height_old = 0;
  5. float height_new = 0;
  6. float inByte = 0;

  7. void setup () {
  8.   
  9.   size(1000, 400);
  10.   println(Serial.list());
  11.   myPort = new Serial(this, Serial.list()[0], 9600);
  12.   myPort.bufferUntil('\n');
  13.   background(0xff);
  14. }
  15. void draw () {
  16. }

  17. void serialEvent (Serial myPort) {
  18.   String inString = myPort.readStringUntil('\n');
  19.   if (inString != null) {
  20.     inString = trim(inString);
  21.     if (inString.equals("!")) {
  22.       stroke(0, 0, 0xff); //Set stroke to blue ( R, G, B)
  23.       inByte = 512;  // middle of the ADC range (Flat Line)
  24.     }

  25.     else {
  26.       stroke(0xff, 0, 0); //Set stroke to red ( R, G, B)
  27.       inByte = float(inString);
  28.      }
  29.   
  30.      inByte = map(inByte, 0, 1023, 0, height);
  31.      height_new = height - inByte;
  32.      line(xPos - 1, height_old, xPos, height_new);
  33.      height_old = height_new;

  34.       if (xPos >= width) {
  35.         xPos = 0;
  36.         background(0xff);
  37.       }
  38.       else {
  39.         
  40.         xPos++;
  41.       }
  42.   }
  43. }
复制代码

Processing Code.png

确保将三个电极放在您的手或胸部并正确连接。

test1.jpg

现在,您将可以看到心跳的可视化,如下所示:

result.png

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 705 | 回复: 1492



手机版|

GMT+8, 2024-11-22 09:43 , Processed in 0.076198 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表