BASIC4MCU | 질문게시판 | optimize된 소자에서 전기신호(raw data)를 뺼 수 있는 방법이 있을까요?
페이지 정보
작성자 낑낑거북 작성일2020-10-12 15:47 조회2,764회 댓글1건본문
현재 MAX30102 소자를 이용해 산소포화도 및 심박수를 측정하는 프로젝트를 하는 학생입니다.
현재 MAX3010x 소자를 이용한 liabray가 잘되어 있어서 다행히 심박수를 측정하는 방법은 쉽습니다.
MAX3010x소자의 경우 전기신호를 줘서 led에 빛을 준 뒤 후에 photodiode에서 측정하는 방식을 취하고 있습니다.
이때 결국 나오는 값이 심박수로 결과값이 나오더라도 결국에는 전기신호를 이용한 방법일텐데
해당 출력된느 전기신호를 알고 싶습니다.
혹시 해결방법 아시는 분 있으실까요?
아직 모르는 것이 많아서 많이 배우도록 하겠습니다.
Hardware Connections (Breakoutboard to Arduino):
-5V = 5V (3.3V is allowed)
-GND = GND
-SDA = A4 (or SDA)
-SCL = A5 (or SCL)
-INT = Not connected
The MAX30105 Breakout can handle 5V or 3.3V I2C logic. We recommend powering the board with 5V
but it will also run at 3.3V.
*/
#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);
if (irValue < 50000)
Serial.print(" No finger?");
Serial.println();
}
입니다!!
댓글 1
조회수 2,764master님의 댓글
master 작성일
#include "MAX30105.h"
#include "heartRate.h"
위 두 개의 라이브러리 파일을 공부해보세요