心拍
心拍とは心臓の拍動のことです。
心臓の拍動と拍動の間隔(心拍間隔)を測定し、それを一定時間(60秒など)で割ると心拍数を求めることができます。
心拍数は通常、1分間に心臓が拍動した回数のことをいい、BPM(Beats Per Minute)で表します。
心臓の拍動と拍動の間隔(心拍間隔)を測定し、それを一定時間(60秒など)で割ると心拍数を求めることができます。
心拍数は通常、1分間に心臓が拍動した回数のことをいい、BPM(Beats Per Minute)で表します。
RRI(心拍間隔)とは

この図のような心電図の波形に表れるピーク部分、R波とR'波の間隔のことをRRI(R-R interval)と呼びます。
正常に計測されている心電図であれば、このような波形が周期的に現れます。
また、RRIは常に一定ではなく、変動しています。
この変動は自律神経系の活動によって起こされています。
私たちは、この変動を解析することで、ストレス状態を計測しました。
正常に計測されている心電図であれば、このような波形が周期的に現れます。
また、RRIは常に一定ではなく、変動しています。
この変動は自律神経系の活動によって起こされています。
私たちは、この変動を解析することで、ストレス状態を計測しました。
POLAR H10(心拍センサ)
心拍数を高い精度で測定し、Bluetooth(BLE通信)でPCなどの機器にデータ送信でき、ボタン電池一つで400時間ほど使うことができます。
この計測機器は主にサイクリングやランニングなどのスポーツで使われています。
今回はこれを使用し心拍からストレス状態を求めようとしました。
また、私たちはストレス状態を光として表現し、フィードバックを行いました。
ラズベリーパイ関連のRPi.GPIO ⑤カラーLEDにて、その方法を説明していますので、そちらもご確認ください。
この計測機器は主にサイクリングやランニングなどのスポーツで使われています。
今回はこれを使用し心拍からストレス状態を求めようとしました。
また、私たちはストレス状態を光として表現し、フィードバックを行いました。
ラズベリーパイ関連のRPi.GPIO ⑤カラーLEDにて、その方法を説明していますので、そちらもご確認ください。
装着方法
※ペースメーカーを利用している方には使用しないでください。
①装着ベルトに心拍センサを取り付けます。
「パチン」と音がするまで押し込んでください。
「パチン」と音がするまで押し込んでください。
②装着ベルトのフックをもう一方のベルト先端に引っ掛けて装着します。
装着ベルトを体に巻き付け、胸回り(アンダーバスト)に合わせて装着ベルトの長さを調整します。
きつく締めすぎると測定中に苦痛を感じることがあるので適度に締めます。
心拍センサがお腹側の中心に来るように位置を調節してください。
装着ベルトを体に巻き付け、胸回り(アンダーバスト)に合わせて装着ベルトの長さを調整します。
きつく締めすぎると測定中に苦痛を感じることがあるので適度に締めます。
心拍センサがお腹側の中心に来るように位置を調節してください。
※心拍センサはロゴが周りから見て反対にならないように注意し、装着してください。
※必ず電極パッドが身体に密着するようにしてください。
※皮膚が乾燥していたり、服の上から装着した場合、計測ミスが起こることがあります。
測定ミスが起こる場合、電極パッドを水で濡らしてみてください。
※必ず電極パッドが身体に密着するようにしてください。
※皮膚が乾燥していたり、服の上から装着した場合、計測ミスが起こることがあります。
測定ミスが起こる場合、電極パッドを水で濡らしてみてください。
接続テスト
ラズベリーパイを使って接続しました。
以下の通りに進めていくとコマンドラインに心拍センサのデータが表示されます
以下の通りに進めていくとコマンドラインに心拍センサのデータが表示されます
①コマンドライン(コマンドプロンプトのようなもの)に「sudo hcitool lescan」で心拍センサのアドレスを確認する
※ほかのBluetooth機器のアドレスも出てきてしまうため、できるだけOFFにすると対象のアドレスが見つけやすいです。
②「gattool -b XX:XX:XX:XX:XX:XX -t random -l」を実行
(XX:XX:XX:XX:XX:XXには先ほど確認した心拍センサのアドレスが入ります)
③実行した後に出てくる「[XX:XX:XX:XX:XX:XX][LE]>」の後ろに「char-write-req 0x0011 0100」と打ち実行する。
約1秒おきにデータがコマンドラインに送られてきます。
※ほかのBluetooth機器のアドレスも出てきてしまうため、できるだけOFFにすると対象のアドレスが見つけやすいです。
②「gattool -b XX:XX:XX:XX:XX:XX -t random -l」を実行
(XX:XX:XX:XX:XX:XXには先ほど確認した心拍センサのアドレスが入ります)
③実行した後に出てくる「[XX:XX:XX:XX:XX:XX][LE]>」の後ろに「char-write-req 0x0011 0100」と打ち実行する。
約1秒おきにデータがコマンドラインに送られてきます。
(例)
Notification handle = 0x0010 value: 10 57 7e 02
このようなデータが送られてきます。
Notification handle = 0x0010 value: 10 57 7e 02
このようなデータが送られてきます。
この時の2バイト目(57)は心拍数で16進数になっているので10進数に直すと87となり、
心拍数が87と分かります。
心拍数が87と分かります。
RRIの求め方(上の例を用います)
Notification handle = 0x0010 value: 10 57 7e 02
① 4バイト目(02)を2進数に変換します。
16進数「02」→2進数「10」
16進数「02」→2進数「10」
② ①の値を8ビット左へシフトします。
2進数「10」→2進数「1000000000」(0を8つ追加)
2進数「10」→2進数「1000000000」(0を8つ追加)
③ ③の値を10進数に変換します。
2進数「1000000000」→10進数「512」
2進数「1000000000」→10進数「512」
④ 3バイト目(7e)を10進数に変換します。
16進数「7e」→10進数「126」
16進数「7e」→10進数「126」
⑤ ③と④を足し合わせます。
「512」+「126」=638ms
「512」+「126」=638ms
この答え「638ms」がRRI (心拍間隔)を表しています。
RRIは一定ではないため1秒間にRRIが2回分計測されることがあります。
その際、データも次のように変わってきます。
その際、データも次のように変わってきます。
Notification handle = 0x0010 value: 10 57 7e 02 11 03
このように5バイト目「11」と6バイト目「03」が追加されて送信されます。
このときも同様に①~⑤の流れ(5バイト目が3バイト目、6バイト目が4バイト目に対応)からRRIが求まります。
このときも同様に①~⑤の流れ(5バイト目が3バイト目、6バイト目が4バイト目に対応)からRRIが求まります。
次に紹介するプログラムでは、RRIが2データ分送信されても対応できるようになっています。
POLAR H10からBLE通信でRRI(心拍間隔)を受け取る
以下のプログラムではbluepy、matplotlib、numpyのライブラリを使います。
ラズベリーパイにインストールしていない場合は行ってからプログラムを実行してください。
ラズベリーパイにインストールしていない場合は行ってからプログラムを実行してください。
+ | プログラム |
BLE通信とは
BLEとは「Bluetooth Low Energy」の略で、最大の特徴は消費電力の低さです。
接続の確立やデータの通信などの大きな電力を必要とする動作にかかる時間を極力少なくしています。
その結果、ボタン電池1個で約1年間の稼動が可能なほど、従来のBluetooth機器よりも大幅に消費電力を削減することが出来ています。
しかし、通信速度は低くなっているため、画像データや動画データなど、大規模データの通信には不向きです。
また、規格上の最大通信速度はのBluetooth4.0で1Mbps、Bluetooth5.0で2Mbpsとされていますが、省電力などの要因からおよそ10kbpsで運用されています。
電波到達距離はBluetooth4.0で数十メートル、Bluetooth5.0において通信速度を125kbpsに設定した場合で最大400メートルまで電波を到達させることができますが、こちらも省電力などの要因からおよそ5メートルまでの非常に短い距離に設定し、運用されることが多いです。
接続の確立やデータの通信などの大きな電力を必要とする動作にかかる時間を極力少なくしています。
その結果、ボタン電池1個で約1年間の稼動が可能なほど、従来のBluetooth機器よりも大幅に消費電力を削減することが出来ています。
しかし、通信速度は低くなっているため、画像データや動画データなど、大規模データの通信には不向きです。
また、規格上の最大通信速度はのBluetooth4.0で1Mbps、Bluetooth5.0で2Mbpsとされていますが、省電力などの要因からおよそ10kbpsで運用されています。
電波到達距離はBluetooth4.0で数十メートル、Bluetooth5.0において通信速度を125kbpsに設定した場合で最大400メートルまで電波を到達させることができますが、こちらも省電力などの要因からおよそ5メートルまでの非常に短い距離に設定し、運用されることが多いです。