arduino MAX30102 血氧儀手腕心率脈搏檢測心跳感測器模組
阿新 • • 發佈:2020-08-03
模組有兩個發光二極體,一個光檢測器,優化光學和低噪聲的模擬訊號處理,以檢測脈搏血氧飽和度和心臟速率訊號。
- 只需要將手指頭緊貼在感測器上,就能估計 脈搏血氧飽和度(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); }