2018年12月5日 更新

お手軽な脈拍計測

指から自分の心拍数を計測してみました. Androidで計測するつもりでしたが,不具合があったためセンサを製作しました.

4,156 view お気に入り 0

はじめに

脈拍はスマートフォンやスマートウォッチでも計測していますね.
webカメラで撮影した顔画像から計測している人もいます.
https://qiita.com/taichi-iki/items/0b9165deab187bb2d3f9
今回はこの脈拍を実際に計測してみます.

Androidスマートフォンによる計測(失敗談)

Androidのセンサーリストの中に"TYPE_HEART_RATE"を発見したので,実装してみます.
https://developer.android.com/reference/android/hardware/Sensor

実装

センサーの登録とセンサー値が変化した時の挙動を示すプログラムの一部を載せます.
言語はKotlinです.
アプリのパーミッション設定をし忘れないようにしてください.
override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        mSensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
        mHeartRate = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE)
        mSensorManager.registerListener(this, mHeartRate, SensorManager.SENSOR_DELAY_NORMAL)

        for (permission in PERMISSIONS) {
            if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
                if(ActivityCompat.shouldShowRequestPermissionRationale(this, permission)) {
                    Toast.makeText(
                        this, getString(R.string.toast_requires_permission, permission),
                        Toast.LENGTH_SHORT
                    ).show()
                }else{
                    ActivityCompat.requestPermissions(this, PERMISSIONS, REQCODE_PERMISSIONS)
                }
            }
        }
heartRate(onCreate).kt
    override fun onSensorChanged(p0: SensorEvent?) {
        if (p0 != null) {
            when(p0.sensor.type){
                Sensor.TYPE_HEART_RATE -> {
                    var rate = p0.values[0]
                    Log.d(TAG, rate.toString())
                }
            }
        }
    }
heartRate(onSensorChanged).kt
ここまでは良かったのですが,使用しているスマホMoto Z Playは非対応のようです,,,
スマートウォッチ用のAPIでしょうか,,,
無印良品のアプリのようにカメラとフラッシュを併用すればスマホでも計測することができます.

ないならつくればいいじゃない.

スマホで計測する作戦が頓挫したので脈拍センサを製作します.
光を吸収するヘモグロビンの特徴を利用して,指に入射した光の反射光を計測することで脈拍を計測します.

脈動を打つ=>ヘモグロビンが増える=>光を多く吸収する=>反射光は弱くなる

今回使用したセンサはNJL5501RというLED(入射光の発光部品)とフォトトランジスタ(反射光の計測部品)がセットになったものです.
http://akizukidenshi.com/catalog/g/gK-09433/
回路はこちらを参考にしました.
http://akizukidenshi.com/download/ds/akizuki/pulseoxi_appl_v1.1.pdf
部品はほぼ参考回路と同じですが,オペアンプはJRC7032Dを使用しています.
原理図

原理図

計測の様子

計測の様子

緑のセンサに指を置くことで計測できます

計測結果

 (5178)

19 件

関連する記事 こんな記事も人気です♪

電気刺激装置で筋トレ

電気刺激装置で筋トレ

画像脈拍計測を予定していましたが,上手く計測できていないのでコンテンツを変更しました. この記事では筋肉に電気で刺激しています.
栢菅 宏規 | 1,762 view
画像で脈拍計測 Part1

画像で脈拍計測 Part1

PCのWebカメラを用いた脈拍計測の準備として,顔画像のRGBの取得までを行いました
栢菅 宏規 | 4,022 view
脈拍でストレスを検出する

脈拍でストレスを検出する

前回計測した脈拍を利用して,自分のストレス状態を検出してみました.簡単なアルゴリズムで実装でき,脈拍以外に心電図なのでも同様な検出系を作ることができます
栢菅 宏規 | 14,375 view
筋肉の電気信号・筋電位の識別 Part 2

筋肉の電気信号・筋電位の識別 Part 2

前回は筋電位の計測し,どういった信号なのかを確認しました. 今回は計測結果を元にchainerを用いてニューラルネットワークで手の姿勢を識別しました.
栢菅 宏規 | 5,151 view
筋肉の電気信号・筋電位の計測

筋肉の電気信号・筋電位の計測

じゃんけんの姿勢を筋電位で計測して,識別できるか検証します
栢菅 宏規 | 6,312 view

この記事のキーワード

この記事のキュレーター

栢菅 宏規 栢菅 宏規