查看: 246|回复: 2

[2019参赛作品] 【脑洞大赛】gada888+颈部血氧量测量仪

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

pATAq  版主

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

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

使用道具 举报

gada888  版主
 楼主|

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

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

项目使用的模块如下:
nano.jpg
oled.jpg
pulse.jpg

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

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


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

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

输出信号类型:模拟信号

输出信号大小:0~VCC

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

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

引脚定义


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

code-draft.jpg
测试代码
code-ar.jpg
程序烧录成功
[AppleScript] 纯文本查看 复制代码
#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);
  }

sch.jpg
连线图
photo.jpg
实物测试图

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail