M5Stack 心拍センサユニット

概要

M5Stack社のユニット紹介シリーズです。今回は心拍センサです。心拍と血中酸素濃度(SpO2)が測定できます。

商品

上記の商品です。基本的にAmazonよりスイッチサイエンスさんから購入したほうが国内だと安いはずです。

赤いコネクタなのでI2Cですね。

使っているセンサーはMAX30100です。

データシートは上記だと思います。ただDigi-Keyだと生産中止品になっていますね。

裏側が赤く光りますので、そこに指をくっつけることで測定ができます。

スケッチ例

#include <Wire.h>
#include "MAX30100_PulseOximeter.h"  // http://librarymanager/All#MAX30100lib https://github.com/oxullo/Arduino-MAX30100

#define REPORTING_PERIOD_MS     1000

PulseOximeter pox;

uint32_t tsLastReport = 0;

// コールバック
void onBeatDetected()
{
  Serial.println("Beat!");
}

void setup()
{
  Serial.begin(115200);
  delay(100);
  Serial.print("Initializing pulse oximeter..");

  Wire.begin(32, 33); // M5StickC

  if (!pox.begin()) {
    Serial.println("FAILED");
    for (;;);
  } else {
    Serial.println("SUCCESS");
  }

  // コールバック登録
  //pox.setOnBeatDetectedCallback(onBeatDetected);
}

void loop()
{
  pox.update();

  if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
    Serial.print(pox.getHeartRate());
    Serial.print(",");
    Serial.print(pox.getSpO2());
    Serial.println();

    tsLastReport = millis();
  }
}

公式スケッチ例にあるMAX30100libを使わせていただきました。結構かんたんに利用できます。ただしI2CはWireクラス限定なので、Wire1で動かすことができません。

ちなみにSpO2は、失神するぐらい息を止めると下がりますが健康体の人だとまったく増減しないと思います。。。

まとめ

実際のところ、使い所が難しいです。

たとえば、上記のように耳につけるタイプはなぜか持っているのですが、常に測定するのには便利だと思います。指をくっつけるタイプは継続して測定するのはちょっと面倒です。

コメントする

メールアドレスが公開されることはありません。

管理者承認後にページに追加されます。公開されたくない相談はその旨本文に記載するかTwitterなどでDM投げてください。またスパム対策として、日本語が含まれない投稿は無視されますのでご注意ください。