工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino NanoとMAX30102で心拍数モニターを自作:16x2 LCD表示対応

必要な部品と材料

部品数量備考
Arduino Nano R31小型マイコンボード
MAX30102 心拍数センサーモジュール1光学式心拍・酸素飽和度センサー
Adafruit RGBバックライト LCD 16x21I2Cまたはパラレル接続対応
ロータリーポテンショメーター1LCDコントラスト調整用

必要な工具

使用ソフトウェア

プロジェクト概要

MAX30102センサーを用いたシンプルな心拍数モニターです。指先をセンサーに当てると、赤外線LEDとフォトダイオードによる反射光量の変化から脈拍を検出し、BPM(拍動/分)を計算して16x2 LCDに表示します。1行目に平均BPM、2行目に赤外線反射値(IR値)を表示し、IR値が安定しているかで装着状態を確認できます。

配線図

Arduino NanoとMAX30102で心拍数モニターを自作:16x2 LCD表示対応
ブレッドボード上の配線例

ライブラリの準備

以下のライブラリをArduino IDEのライブラリマネージャーからインストールしてください。

スケッチ解説

PBA(Penpheral Beat Amplitude)アルゴリズムを用いてピークを検出し、直近4回のピーク間隔から平均BPMを算出します。測定間隔はloop()の高速実行に任せており、指の押し付け圧力が一定でないとノイズが乗りやすいため、「一定の圧力で指を固定すること」が精度向上の鍵です。

#include <Wire.h>
#include "MAX30105.h"
#include <LiquidCrystal.h>
#include "heartRate.h"

MAX30105 particleSensor;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

const byte RATE_SIZE = 4;
byte rates[RATE_SIZE];
byte rateSpot = 0;
long lastBeat = 0;
float beatsPerMinute;
int beatAvg;

void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  if (!particleSensor.begin(Wire, I2C_SPEED_FAST)) {
    Serial.println("MAX30105 not found");
    while (1);
  }
  particleSensor.setup();
  particleSensor.setPulseAmplitudeRed(0x0A);
  particleSensor.setPulseAmplitudeGreen(0);
}

void loop() {
  long irValue = particleSensor.getIR();
  if (checkForBeat(irValue)) {
    long delta = millis() - lastBeat;
    lastBeat = millis();
    beatsPerMinute = 60 / (delta / 1000.0);
    if (beatsPerMinute < 255 && beatsPerMinute > 20) {
      rates[rateSpot++] = (byte)beatsPerMinute;
      rateSpot %= RATE_SIZE;
      beatAvg = 0;
      for (byte x = 0; x < RATE_SIZE; x++) beatAvg += rates[x];
      beatAvg /= RATE_SIZE;
    }
  }
  lcd.setCursor(0, 0);
  lcd.print("BPM: "); lcd.print(beatAvg);
  lcd.setCursor(0, 1);
  lcd.print(" IR: "); lcd.print(irValue);
  if (irValue < 50000) Serial.println(" No finger?");
  delay(20);
}

精度向上のポイント

応用アイデア

製造プロセス

  1. リモート心拍数監視システム:AWS IoTアラート付き
  2. Arduinoで作るモニター用Ambilightシステム:没入感アップの自作ガイド
  3. Arduino UNOで作るLCDアニメーション&ゲーム入門
  4. ArduinoとMAX30100で作るリアルタイムIoT心拍数モニター
  5. フォトレジスタとArduinoで作る高精度心拍数モニター
  6. 給湯器パイロットライト監視システム - サーモカップル電圧をArduinoとRaspberry Piで監視し異常通知
  7. Arduino Mega と IoT センサによる高機能ホームモニタリングシステム
  8. DHT センサで作る信頼性の高い Arduino 気象ステーション
  9. Arduino UNOで作る信頼性の高いスマートエネルギーモニター – ステップバイステップガイド
  10. Arduino UNOで作るクラシックLCDアーケードゲーム(ブザー・ジョイスティック付き)
  11. スマート衣類に統合された心拍センサーで信頼性の高いウェアラブル監視を実現