gada888 发表于 2019-6-20 15:48:51

【脑洞大赛】gada888+颈部血氧量测量仪


[*]标题:颈部血氧量测量仪
[*]内容:非常多的人做伏案工作,可是时间就了就会出现头晕目眩的状况。那能不能实现一种早期侦测的设备。来给人们一个预警呢。
[*]这次用一个血氧仪,和单片机一起工作。在人们伏案累了可以带上监测颈套来一边放松一般侦测血氧值。。

pATAq 发表于 2019-7-18 00:37:42

生理书好久不看记不清了,查证后仔细唠唠这个事。
现在医院都是测指脉氧,包括血氧浓度,呼吸频率,血压,脉搏等生命指征,比较方便手指头一夹。
另外血氧低和头晕黑矇关系不那么密切,头晕、一过性黑矇一般是脑供血不足,脑部神经病变等中枢系统疾病,或者贫血,高血压等,
但是血氧浓度可以正常,只是大脑氧气没供上。血氧低指的是全身血液各种原因导致的氧气含量低,引起的也是全身症状
想法不错,可以改进

gada888 发表于 2019-7-24 15:17:50

本来血氧传感MAX 30100测的好好的,都该写步骤了,它坏了。有换了一个,没用几次又坏了。看来某宝平台买的模块质量不如DF平台的。最后决定换成了pulse sensor心率传感来完成项目。
为了便携,项目模块都采用了最小封装的。项目以一个心率传感采集人体心率数据,并将数据反应在oled显示屏上。

项目使用的模块如下:




主要模块简介:
使用 PulseSensor 脉搏传感器测量心率

内容简介
对于 arduino 来说,网上有大量关于 PulseSensor 脉搏传感器的资料,
带你全方位玩转 PulseSensor,玩的,就是心跳!


PulseSensor 脉搏传感器介绍
基本参数

供电电压:3.3~5V
检测信号类型:光反射信号(PPG)

输出信号类型:模拟信号

输出信号大小:0~VCC

电流大小:~4ma(5v 下)

功能原理
PulseSensor 是一款用于脉搏心率测量的光电反射式模拟传感器。将其佩戴于手指、
耳垂等处,利用人体组织在血管搏动时造成透光率不同来进行脉搏测量。传感器对光
电信号进行滤波、放大,最终输出模拟电压值。单片机通过将采集到的模拟信号值转换
为数字信号,再通过简单计算就可以得到心率数值。

引脚定义


传感器只有三个引脚,分别为信号输出 S 脚 、电源正极 VCC 以及电源负极 GND,
供电电压为 3.3V - 5V,可通过杜邦线与开发板连接。上电后, 传感器会不断从
S 脚输出采集到的电压模拟值。需要注意的是,印有心形的一面才是与手指接触面,在
测量时要避免接触布满元件的另一面,否则会影响信号准确性。


测试代码

程序烧录成功
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

const byte heatPin=11;

   double alpha=0.75;
   int period=20;
   double refresh=0.0;
   
void setup(void)
{
   pinMode(A0,INPUT);
   pinMode(heatPin,OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);// initialize with the I2C addr 0x3C (for the 128x32)

   display.display();
delay(2000);

   // Clear the buffer.
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
display.setTextColor(WHITE);
}

void loop(void)
{
   static double oldValue=0;
   static double oldrefresh=0;

   int beat=analogRead(A0);
//int y = 55;

   double value=alpha*oldValue+(0-alpha)*beat;
   refresh=value-oldValue;
   
display.setCursor(0, 0);
display.print("Heart Beat ");
display.println(beat/10);
display.display(); //you have to tell the display to...display
delay(2000);
display.clearDisplay();

   oldValue=value;
   oldrefresh=refresh;
   delay(period*10);

if (beat>y) {
    digitalWrite(11,LOW);
}
    else
    digitalWrite(11,HIGH);
}


连线图

实物测试图
https://v.youku.com/v_show/id_XNDI4NTQwMzU4NA==.html
页: [1]
查看完整版本: 【脑洞大赛】gada888+颈部血氧量测量仪