zoukankan      html  css  js  c++  java
  • arduino MAX30102 血氧仪手腕心率脉搏检测心跳传感器模块

    模块有两个发光二极管,一个光检测器,优化光学和低噪声的仿真信号处理,以检测脉搏血氧饱和度和心脏速率信号。

    • 只需要将手指头紧贴在传感器上,就能估计 脉搏血氧饱和度(SpO2)及脉搏(相当于心跳)。
    • 携带氧气的红血球能吸收较多红外光(850-1000nm),未携带氧气的红血球则是吸收较多的红光(600-750nm)。
    • 因此pulse oximeter就是一个迷你的分光计,利用不同红血球之吸收光谱的原理,来分析血氧饱和度。

    /*
    
    1、安装库:IDE-工具-管理库-搜索“MAX30105”-安装
    2、项目:串口读取测量数据
    3、连线(I2C):
    VIN  → 3.3V
    GND  →  GND
    SDA  接 A4 
    SCL  接 A5 
    */
    
    #include <Wire.h>
    #include "MAX30105.h"
    #include "heartRate.h"
    
    MAX30105 particleSensor;
    
    const byte RATE_SIZE = 4; //Increase this for more averaging. 4 is good.
    byte rates[RATE_SIZE]; //Array of heart rates
    byte rateSpot = 0;
    long lastBeat = 0; //Time at which the last beat occurred
    
    float beatsPerMinute;
    int beatAvg;
    
    void setup()
    {
      Serial.begin(115200);
      Serial.println("Initializing...");
    
      // Initialize sensor
      if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) //Use default I2C port, 400kHz speed
      {
        Serial.println("MAX30105 was not found. Please check wiring/power. ");
        while (1);
      }
      
      Serial.println("Place your index finger on the sensor with steady pressure.");
    
      particleSensor.setup(); //Configure sensor with default settings
      particleSensor.setPulseAmplitudeRed(0x0A); //Turn Red LED to low to indicate sensor is running
      particleSensor.setPulseAmplitudeGreen(0); //Turn off Green LED
    }
    
    void loop()
    {
      long irValue = particleSensor.getIR();
    
      if (checkForBeat(irValue) == true)
      {
        //We sensed a beat!
        long delta = millis() - lastBeat;
        lastBeat = millis();
    
        beatsPerMinute = 60 / (delta / 1000.0);
    
        if (beatsPerMinute < 255 && beatsPerMinute > 20)
        {
          rates[rateSpot++] = (byte)beatsPerMinute; //Store this reading in the array
          rateSpot %= RATE_SIZE; //Wrap variable
    
          //Take average of readings
          beatAvg = 0;
          for (byte x = 0 ; x < RATE_SIZE ; x++)
            beatAvg += rates[x];
          beatAvg /= RATE_SIZE;
        }
      }
    
      Serial.print("IR=");
      Serial.print(irValue);
      Serial.print(", BPM=");
      Serial.print(beatsPerMinute);
      Serial.print(", Avg BPM=");
      Serial.print(beatAvg);
      Serial.println();
      delay(1000);
    }

  • 相关阅读:
    Codeforces 22E(图论)
    Codeforces Educational Round 23
    bzoj1444 有趣的游戏(AC自动机+概率dp)
    AtCoder Grand Contest 012 D Colorful Balls
    计蒜客15430 XOR Queries(Trie处理位运算问题)
    AtCoder Grand Contest 012 B Splatter Painting(记忆化搜索)
    Codeforces 799E(贪心)
    Codeforces Round #414
    Codeforces Educational Round 21
    LOJ10078
  • 原文地址:https://www.cnblogs.com/dockers/p/13428200.html
Copyright © 2011-2022 走看看