Arduinoと戯れてみる!

Arduino 入門 Lesson 48 【脈拍・心拍センサ その2】

arduino-lesson48-00Arduino入門編
スポンサーリンク
子供と一緒に始める マイコンプログラム
Arduino 入門
Lesson 48
【脈拍・心拍センサ その2】

こにんちは、管理人のomoroyaです。

センサーの使い方の基本を学習する入門編。

 

世の中には、まだまだ色々なセンサーがあります。

これからも、色々なセンサーで遊んでいきます。

 

本記事はLesson 48 【脈拍・心拍センサ その2】です。

Lesson 47の簡易的な脈拍・心拍センサに対して、LEDと照度センサ、オペアンプ、ノイズキャンセル回路を搭載しており、センサとしてまともな作りになっております。

また、LEDはおそらく緑色LED

 

本Lessonで使用する脈拍・心拍センサは以下が同等品となります。

最近センサ関係の電子部品が手に入りずらい。

Amazonに在庫がない。

出荷元がAmazonではない。

そんな場合は中国からの輸入品になると考えられるため気長に待ってください。

 

Amaozn以外の国内で探してもあります。

しかし、高いです・・・。

Aliexpressなどでの購入に抵抗感がなければ、そちらもあり。

管理人はトラブルが面倒なので、多少高くでも返金が容易なAmazonで購入です。

Amazonであれば、最悪「Amazonマーケットプレイス保証」がありますので・・・。

 

Arduino入門編の解説にて使用しているArduinoは互換品です。

互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

正規品の本体単品がほしい方はこちらとなります。

 

スポンサーリンク

はじめに

本Lessonで使用する「脈拍・心拍センサ」の動作も難しくありません。

原理は「脈拍センサ」で調べればででくるので興味のある方は調べてみてください。

 

本LessonのLEDは緑色LEDを使用しています。

補足
赤外線や赤色光は、屋外では太陽光に含まれる赤外線などの影響を受け安定した測定ができないという欠点があります。

外乱光の影響の少ない緑色の光源を使うことで安定した測定が可能となるということらしい・・・。

  • 血液中のヘモグロビンが入射光を吸収する性質がある
  • 心拍によって血流がかわる = ヘモグロビンの量が変わる
  • ヘモグロビンの量が変わることで反射する光の量が変わる

上記を検出することで脈拍を測定。

Lesson 47で使用したセンサは「透過型脈拍センサ

本Lessonで使用するセンサは「反射型脈拍センサ」となります。

 

オペアンプ、ノイズキャンセル回路が実装されているため、Lesson 47のセンサに比べて安定した測定ができると考えられます。

 

Lesson 48 目標

本Lessonの目標は以下です。

1.反射型 脈拍・心拍センサの使い方を学習する
2.反射型 脈拍・心拍を検知するスケッチを描く
3.反射型 脈拍・心拍センサで遊ぶ

いつものように、遊ぶことが重要です。

 

今回のセンサも動作は単純。

ただし動作の理屈を理解するためには電子回路の知識が少し必要・・・。

回路がわからなくても遊べる、使える、作れるのがArduino の良いところ。

 

準備

ではLessonの準備に取り掛かりましょう。

部品は「反射型 脈拍・心拍センサ」のモジュールと表示をわかりやすくるためのLチカ。

Lチカは不要の場合は要りません。

 

必要なもの

※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。

 

Jumper wire、抵抗は今後も頻繁に利用します。

Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。

短めが使いやすい場合も。

 

使用部品説明

脈拍・心拍センサ」のモジュールについて説明していきます。

 

脈拍・心拍センサ 実物写真

下の写真が「反射型 脈拍・心拍センサ」の実物写真です。

本Lessonで使用するものは、回路が基板実装されたもの。

手元に2つあるので、表と裏を掲載。

pulse-sensor

 

 

表側の真ん中に見えるのが緑色LED、緑色LEDの下に見えているのが面実装された照度センサです。

裏側にはオペアンプ、ダイオード、抵抗、容量が実装されています。

 

反射型 脈拍・心拍センサ 回路図

反射型 脈拍・心拍センサ」の回路について解説します。

実装されている部品は以下。

  • 緑色LED
  • 照度センサ
  • オペアンプ
  • ダイオード
  • 各種 抵抗
  • 各種 容量

こちらも部品を揃えれば作れないことはないです・・・。

 

回路図は本家の製造元にあります。

興味のある方はご確認ください。(※下記はリンクです)

 

本Lessonの回路動作を簡単に説明すると以下。

  1. 緑色LEDと照度センサの上に指を置く
  2. 心拍に合わせて変化する反射してきた光を照度センサで受け取る
  3. 心拍に合わせて出力ピン(S)に出力される電圧が変化する
  4. Sに出力される電圧レベルをArduinoのアナログ入力ピンでAD変換する
  5. 設定した閾値を超えたらLチカ(13番ピン)が点灯

 

余談
なぜ、緑色LEDと分かったのか?光る色からもわかりますが・・・
照度センサの型番が「APDS-9008」です。
この照度センサのPeak sensitive wavelength = 565nmとなっています。
この波長からも、LED側は緑色付近のものであることがわかります。

 

反射型 脈拍・心拍センサ 仕様

センサモジュール自体に仕様という仕様は特にないです。

興味のあるかたは、搭載されている照度センサ、オペアンプの仕様を確認ください。

APDS-9008-020 | Broadcom 照度センサ IC, 6-Pin | RS Components
Buy Broadcom 照度センサ IC, 6-Pin APDS-9008-020. Browse our latest 周辺光…
MCP6001T-I/OT | Microchip 単一電源 オペアンプ, 3~5,1 表面実装, 5-Pin SOT-23 レール to レール入力/出力 | RS Components
Microchip 単一電源 オペアンプ, 3~5,1 表面ऩ…

 

本Lessonは遊び、学習を想定しています。

Arduinoの仕様範囲内で使用していれば問題になることもありません。

遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。

 

実践 回路作成とコード作成

最初に回路図を確認してください。

次に、回路図に合わせて部品を接続します。

最後にコードを書いて、「反射型 脈拍・心拍センサ」を動かしていきましょう。

 

Arduinoのピン配置を確認したい方は番外編02を参照してください。

 

回路図

反射型 脈拍・心拍センサが実装されたモジュール端子を接続していきます。

Arduinoはアナログ入力としてA0を使用。

あとは、5VGNDのみ。

 

回路図がこちら。

pulse-sensor-schematic

 

こちらがブレッドボード図。

pulse-sensor-breadboard

 

回路図は「fritzing」を利用しています。

「fritzing」の使い方は下記を参照してください。

 

接続

下図に示すように、用意した部品を使用して接続しましょう。

部品は「反射型 脈拍・心拍センサ」とLチカのみです。
※センサが実装されたモジュール

Lチカが不要であれば、部品は1個、接続は簡単です。

脈拍・心拍センサと接続するジャンパーワイヤーはF-Mを使用してます。

そのため、ブレッドボードもいりません。

 

毎回ブレッドボードにLEDをセットするのも面倒なので「Lチカ」自作しました。

おすすめです。

 

使用するポートは、アナログ入力A0、5V、GND。

穴に挿入しづらいときは、ラジオペンチなどを使用してください。

arduino-lesson48-04

 

コードの書き込み

接続が終わったら、USBケーブルを使用してUNOにプログラムを書き込んで行きましょう。

コードを書き終えたら、いつでも利用できるように「ファイル」⇒「名前を付けて保存」で保存しておきましょう。

 

コマンド説明

本Lessonでは、特に新しいコマンドはありません。

 

サンプルコード

Lesson 47の簡易的な透過型センサに比べ安定した測定ができます。

本Lessonの反射型センサはオペアンプ、ノイズキャンセル回路が搭載されているため簡単なスケッチ(コード)で精度良く心拍測定がでてきます。

 

本Lessonはgithubの「PulseSensorPlayground」を参考にしました。

そのため、スケッチもサンプルとして提供されています。

興味のある方は、下記公式ページの「Read the documentation」をお読みください。

 

サンプルスケッチを利用するためにツールのライブラリ管理で「PulseSensor Playground」をインストールする必要があります。

ツール」→「ライブラリ管理」→「PulseSensor」と入力。

PulseSensor Playgroundが表示されます。

上記が表示されたらインストールを押してください。

 

インストール後、「ファイル」→「スケッチ例」→「PulseSensor Playground」→「GettingStartedProject」を選択することでサンプルスケッチが開きます。

 

スケッチ(コード)はいったって簡単です。

参考にしなくても、書けちゃうぐらい簡単なスケッチです・・・。

センサーの出力をアナログピンでAD変換して、シリアルモニタに出力しているだけ。

Lチカ用の13番ピンはおまけみたいなものです。

 

不明点あればコメントください。

日本語の解説をつけます。

/*  PulseSensor Starter Project and Signal Tester
 *  The Best Way to Get Started  With, or See the Raw Signal of, your PulseSensor.com™ & Arduino.
 *
 *  Here is a link to the tutorial
 *  https://pulsesensor.com/pages/code-and-guide
 *
 *  WATCH ME (Tutorial Video):
 *  https://www.youtube.com/watch?v=RbB8NSRa5X4
 *
 *
-------------------------------------------------------------
1) This shows a live human Heartbeat Pulse.
2) Live visualization in Arduino's Cool "Serial Plotter".
3) Blink an LED on each Heartbeat.
4) This is the direct Pulse Sensor's Signal.
5) A great first-step in troubleshooting your circuit and connections.
6) "Human-readable" code that is newbie friendly."

*/


//  Variables
int PulseSensorPurplePin = 0;        // Pulse Sensor PURPLE WIRE connected to ANALOG PIN 0
int LED13 = 13;   //  The on-board Arduion LED


int Signal;                // holds the incoming raw data. Signal value can range from 0-1024
int Threshold = 550;            // Determine which Signal to "count as a beat", and which to ingore.


// The SetUp Function:
void setup() {
  pinMode(LED13,OUTPUT);         // pin that will blink to your heartbeat!
   Serial.begin(9600);         // Set's up Serial Communication at certain speed.

}

// The Main Loop Function
void loop() {

  Signal = analogRead(PulseSensorPurplePin);  // Read the PulseSensor's value.
                                              // Assign this value to the "Signal" variable.

   Serial.println(Signal);                    // Send the Signal value to Serial Plotter.


   if(Signal > Threshold){                          // If the signal is above "550", then "turn-on" Arduino's on-Board LED.
     digitalWrite(LED13,HIGH);
   } else {
     digitalWrite(LED13,LOW);                //  Else, the sigal must be below "550", so "turn-off" this LED.
   }


delay(10);


}

 

動作確認 反射型 脈拍・心拍の確認

では、さっそく動作を確認していきます。

緑色LEDと照度センサの上に指を置いてください。

回路がむき出しなので、汗とかに気を付けてください。

可能であれば透明フィルムを貼るとセンサーが守られて良いかと考えます。

 

  • センサー上に何もなし → シリアルプロッタで脈拍・心拍が確認されない
  • センサー上に指を置く → シリアルプロッタで脈拍・心拍を確認できる

 

補足
測定の邪魔になる他の光は遮断しましょう。
マジックテープなどで指にまくと良いでしょう。

 

■センサーに指を置いていない状態

serial-monitor-0

 

■センサーに指を置いた状態

serial-monitor-1

 

自分の心臓の鼓動とほぼ、ピッタリでした。
かなり正確です。

 

13番ピンを使ってLチカを作っています。

LEDの点灯、消灯が自分の心拍とほぼ同じとなっていることがわかります。

■LED消灯

arduino-lesson48-07

 

■LED点灯

arduino-lesson48-08

 

まとめ

本Lessonは、以下を目標としました。

1.反射型 脈拍・心拍センサの使い方を学習する
2.反射型 脈拍・心拍を検知するスケッチを描く
3.反射型 脈拍・心拍センサで遊ぶ

 

本Lessonの「反射型 脈拍・心拍センサ」かなり精度良く測定が可能です。

いや~、ちょっと驚きです。

結構、単純な作りではあるんです・・・。

電子部品集めて、自作するのもありですね。

 

Lesson 48 【脈拍・心拍センサ その2】 はここまで。

疑問点、質問などありましたら気軽にコメントください。

 

次回、Lesson 49は 思案中。

脈拍・心拍センサとProcessingを使って、面白そうなことができそうなのでやってみたい!

サンプルスケッチが秀逸なのでProcessingで遊んでみました。

Processing 入門 Lesson 22 【脈拍・心拍センサ】
Lesson 22で使用する電子部品は【脈拍・心拍センサ】です。本LessonではArduino入門編で遊んだ「脈拍・心拍センサ」を使って心拍をProcessingで表現して遊びます。Arduinoで取得したデータをProcessingで処…

 

最後に

疑問点、質問などありましたら気軽にコメントください。

この電子部品の解説をしてほしい!などなどなんでもOKです。

リンク切れ、間違いなどあればコメントいただけると助かります。

 

Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。

 

Arduino入門編で使用しているUNOはAmazonにて購入可能です。

互換品とは言え、Arduinoはオープンソース。

複製して販売するのもライセンス的に問題なし。

 

そのため互換品の品質も悪くなく、それでいて値段は安いです。

正規品本体の値段程度で豊富な部品が多数ついています。

 

学習用、遊び用、お試し用には安価な互換品がおすすめです。

 

 

上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。

 

Amazonでお得に買う方法

Amazonでお得に購入するなら、Amazonギフト券がおすすめです。

現金でチャージするたびに、チャージ額に応じたポイントが付与されます。

最大2.5%!!!(Amazonプライム会員ならさらにお得)

チャージ額(一回分)一般プライム会員
5,000円~19,999円0.5%1.0%
2,0000円~39,999円1.0%1.5%
40,000円~89,999円1.5%2.0%
90,000円~2.0%2.5%

さらに、初回チャージで2000ポイントもらえるキャンペーンも実施中!
※いつもは1000ポイント、今なら2000ポイントです!

\Amazonギフト券 2000ポイントキャンペーン/
Amazonチャージ 初回購入で2000ポイントキャンペーン

 

補足情報
コンビニ・ATM・ネットバンクが対象
購入は1円単位で可能

コメント

タイトルとURLをコピーしました