Arduino 入門
Lesson 48
【脈拍・心拍センサ その2】
こにんちは、管理人のomoroyaです。
センサーの使い方の基本を学習する入門編。
世の中には、まだまだ色々なセンサーがあります。
これからも、色々なセンサーで遊んでいきます。
本記事はLesson 48 【脈拍・心拍センサ その2】です。
Lesson 47の簡易的な脈拍・心拍センサに対して、LEDと照度センサ、オペアンプ、ノイズキャンセル回路を搭載しており、センサとしてまともな作りになっております。
また、LEDはおそらく緑色LED。
本Lessonで使用する脈拍・心拍センサは以下が同等品となります。
最近センサ関係の電子部品が手に入りずらい。
Amazonに在庫がない。
出荷元がAmazonではない。
そんな場合は中国からの輸入品になると考えられるため気長に待ってください。
Amaozn以外の国内で探してもあります。
しかし、高いです・・・。
Aliexpressなどでの購入に抵抗感がなければ、そちらもあり。
管理人はトラブルが面倒なので、多少高くでも返金が容易なAmazonで購入です。
Amazonであれば、最悪「Amazonマーケットプレイス保証」がありますので・・・。
Arduino入門編の解説にて使用しているArduinoは互換品です。
互換品とは言え、Arduinoはオープンソースであり複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
正規品(Arduino UNO R3)の本体単品がほしい方はこちらとなります。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
はじめに
本Lessonで使用する「脈拍・心拍センサ」の動作も難しくありません。
原理は「脈拍センサ」で調べればででくるので興味のある方は調べてみてください。
本LessonのLEDは緑色LEDを使用しています。
外乱光の影響の少ない緑色の光源を使うことで安定した測定が可能となるということらしい・・・。
- 血液中のヘモグロビンが入射光を吸収する性質がある
- 心拍によって血流がかわる = ヘモグロビンの量が変わる
- ヘモグロビンの量が変わることで反射する光の量が変わる
上記を検出することで脈拍を測定。
Lesson 47で使用したセンサは「透過型脈拍センサ」。
本Lessonで使用するセンサは「反射型脈拍センサ」となります。
オペアンプ、ノイズキャンセル回路が実装されているため、Lesson 47のセンサに比べて安定した測定ができると考えられます。
Lesson 48 目標
本Lessonの目標は以下です。
2.反射型 脈拍・心拍を検知するスケッチを描く
3.反射型 脈拍・心拍センサで遊ぶ
いつものように、遊ぶことが重要です。
今回のセンサも動作は単純。
ただし動作の理屈を理解するためには電子回路の知識が少し必要・・・。
回路がわからなくても遊べる、使える、作れるのがArduino の良いところ。
準備
ではLessonの準備に取り掛かりましょう。
部品は「反射型 脈拍・心拍センサ」のモジュールと表示をわかりやすくるためのLチカ。
Lチカは不要の場合は要りません。
必要なもの
- USB接続用のPC(IDE統合環境がインストールされたPC)
→管理人が勝手に比較したBTOメーカーを紹介しています。 - UNO R3(以下UNO)、おすすめUNO互換品(ELEGOO)
- PCとUNOを接続するUSBケーブル
- ブレッドボード安価(大)、ブレッドボード安価(中)
※おすすめブレッドボード(大)、おすすめブレッドボード(中) - M-M Jumper wire(UNOと部品をつなぐための配線)
- M-F Jumper wire(UNOと部品をつなぐための配線)
- M-F M-M F-F セット Jumper wire(UNOと部品をつなぐための配線)
- 反射型 脈拍・心拍センサ
- 330Ω 1本
※330ΩはLEDを使用する場合に必要
※ブレッドボードはセンサとUNOを直接つなぐ場合不要です。
※ジャンパワイヤーは「M-M」「M-F」を必要に応じて使い分けてください。
Jumper wire、抵抗は今後も頻繁に利用します。
Jumper wireはできれば、「オス-メス オス-オス メス –メス」の3種類を揃えておくことをお勧めします。
短めが使いやすい場合も。
抵抗も単品で揃えるよりはセットをおすすめします。
抵抗、LEDなどを個別でセット品を購入しても、そんなに使わない!
という方は、「電子工作基本部品セット」が使い勝手が良い。
使用部品説明
「脈拍・心拍センサ」のモジュールについて説明していきます。
脈拍・心拍センサ 実物写真
下の写真が「反射型 脈拍・心拍センサ」の実物写真です。
本Lessonで使用するものは、回路が基板実装されたもの。
手元に2つあるので、表と裏を掲載。
表側の真ん中に見えるのが緑色LED、緑色LEDの下に見えているのが面実装された照度センサです。
裏側にはオペアンプ、ダイオード、抵抗、容量が実装されています。
反射型 脈拍・心拍センサ 回路図
「反射型 脈拍・心拍センサ」の回路について解説します。
実装されている部品は以下。
- 緑色LED
- 照度センサ
- オペアンプ
- ダイオード
- 各種 抵抗
- 各種 容量
こちらも部品を揃えれば作れないことはないです・・・。
回路図は本家の製造元にあります。
興味のある方はご確認ください。(※下記はリンクです)
本Lessonの回路動作を簡単に説明すると以下。
- 緑色LEDと照度センサの上に指を置く
- 心拍に合わせて変化する反射してきた光を照度センサで受け取る
- 心拍に合わせて出力ピン(S)に出力される電圧が変化する
- Sに出力される電圧レベルをArduinoのアナログ入力ピンでAD変換する
- 設定した閾値を超えたらLチカ(13番ピン)が点灯
反射型 脈拍・心拍センサ 仕様
センサモジュール自体に仕様という仕様は特にないです。
興味のあるかたは、搭載されている照度センサ、オペアンプの仕様を確認ください。
本Lessonは遊び、学習を想定しています。
Arduinoの仕様範囲内で使用していれば問題になることもありません。
遊び、学習以外での使用用途をお考えの場合はデータシートを必ず確認しましょう。
実践 回路作成とコード作成
最初に回路図を確認してください。
次に、回路図に合わせて部品を接続します。
最後にコードを書いて、「反射型 脈拍・心拍センサ」を動かしていきましょう。
Arduinoのピン配置を確認したい方は番外編02を参照してください。
回路図
反射型 脈拍・心拍センサが実装されたモジュール端子を接続していきます。
Arduinoはアナログ入力としてA0を使用。
あとは、5VとGNDのみ。
回路図がこちら。
こちらがブレッドボード図。
回路図は「fritzing」を利用しています。
「fritzing」の使い方は下記を参照してください。
接続
下図に示すように、用意した部品を使用して接続しましょう。
部品は「反射型 脈拍・心拍センサ」とLチカのみです。
※センサが実装されたモジュール
Lチカが不要であれば、部品は1個、接続は簡単です。
脈拍・心拍センサと接続するジャンパーワイヤーはF-Mを使用してます。
そのため、ブレッドボードもいりません。
毎回ブレッドボードにLEDをセットするのも面倒なので「Lチカ」自作しました。
おすすめです。
使用するポートは、アナログ入力A0、5V、GND。
穴に挿入しづらいときは、ラジオペンチなどを使用してください。
コードの書き込み
接続が終わったら、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と照度センサの上に指を置いてください。
回路がむき出しなので、汗とかに気を付けてください。
可能であれば透明フィルムを貼るとセンサーが守られて良いかと考えます。
- センサー上に何もなし → シリアルプロッタで脈拍・心拍が確認されない
- センサー上に指を置く → シリアルプロッタで脈拍・心拍を確認できる
■センサーに指を置いていない状態
■センサーに指を置いた状態
13番ピンを使ってLチカを作っています。
LEDの点灯、消灯が自分の心拍とほぼ同じとなっていることがわかります。
■LED消灯
■LED点灯
まとめ
本Lessonは、以下を目標としました。
2.反射型 脈拍・心拍を検知するスケッチを描く
3.反射型 脈拍・心拍センサで遊ぶ
本Lessonの「反射型 脈拍・心拍センサ」かなり精度良く測定が可能です。
いや~、ちょっと驚きです。
結構、単純な作りではあるんです・・・。
電子部品集めて、自作するのもありですね。
Lesson 48 【脈拍・心拍センサ その2】 はここまで。
疑問点、質問などありましたら気軽にコメントください。
次回、Lesson 49は 思案中。
脈拍・心拍センサとProcessingを使って、面白そうなことができそうなのでやってみたい!
サンプルスケッチが秀逸なのでProcessingで遊んでみました。
最後に
疑問点、質問などありましたら気軽にコメントください。
この電子部品の解説をしてほしい!などなどなんでもOKです。
リンク切れ、間違いなどあればコメントいただけると助かります。
Arduino入門編、番外編、お役立ち情報などなどサイトマップで記事一覧をぜひご確認ください。
Arduino入門編、Arduino入門編2で使用しているUNOはAmazonにて購入可能です。
Arduino入門編では互換品を使用。
Arduinoはオープンソース。
複製して販売するのもライセンス的に問題なし。
そのため互換品の品質も悪くなく、それでいて値段は安いです。
正規品本体の値段程度で豊富な部品が多数ついています。
学習用、遊び用、お試し用には安価な互換品がおすすめです。
ELEGOO UNO キット レベルアップ チュートリアル付 uno mega2560 r3 nanoと互換 Arduino用
上記のものでも十分に多数の部品が入っていますが、最初からもっと多数の部品が入っているこちらもお勧めです。
Arduino入門編2では「Arduino UNO R4 Minima」「Arduino UNO R4 WIFI」にて遊ぶため今のところは正規品を使用。(まだ互換品が・・・ほぼない)
Amazonでお得に買う方法
Amazonでお得に購入するならAmazon Mastercard、Amazonギフト券がおすすめです。
時期により異なりますが、様々なキャンペーンを実施しています。
\Amazonギフト券/
Amazonギフトカード キャンペーン
\Amazon Mastercard お申込み/
Amazon Mastercard 申し込み
いずれの場合もプライム会員である方がお得!!
\Amazon Prime 30日間の無料会員を試す/
無料会員登録
コメント
pulse sensor playground のインストール方法を細かく教えてほしいです。
コメントありがとうございます。
Arduino IDEにて
「ツール」→「ライブラリ管理」→「PulseSensor」と入力。
PulseSensor Playgroundが表示されます。
上記が表示されたらインストールを押してください。
インストール後、「ファイル」→「スケッチ例」→「PulseSensor Playground」→「GettingStartedProject」を選択することでサンプルスケッチが開きます。
上記のことではなくて、違うものですかね?