2021/08/23に公開した『M5Stackと心拍センサーを使って血中酸素飽和度と心拍数を見える化するプログラム』(いわゆるパルスオキシメーター)を改良し、計測したデータをネットワーク上のMQTTサーバを介してモニタリングできるようにしました。
このプログラムを使うと、複数台のM5Stackパルスオキシメーターを1台以上のPCでモニタリングすることができます。
モニタリングできるデータは、各M5Stackで計測した酸素飽和度(SpO2)、心拍数、心拍パルスです。
データの配信にMQTTを使用しており若干のタイムラグ(通常数十~数百ミリ秒)が生じます。
※2021/08/25 LINE通知に対応しました。
このプログラムを使うとパルスオキシメーターのような機能を使うことができますが、医療機器認証を受けた医療機器ではないので精度や信頼性・安定性が保証されません。
センサーに対して指の置き方や圧のかけ方などで計測される値がかなり変化することを確認しています。
詳細は『M5Stackと心拍センサーを使って血中酸素飽和度と心拍数を見える化するプログラム』の注意事項をご覧ください。
このプログラムは長時間の連続稼働テストやエラー発生時の検出と復旧について十分な検証・テストが未実施です。
シビアな環境での使用にあたっては十分に考慮した上ご判断ください。
複数台のM5Stackで計測した酸素飽和度や心拍数などのデータを1台または複数台のパソコンでモニタリングすることができます。
M5Stackに搭載したセンサープログラムが計測したデータをApache ActiveMQ(MQTT)に向けて送信し、ActiveMQが稼働中のモニタープログラムに対して計測データを配信、モニタープログラムは受信したデータをグラフィカルに表示します。
管理可能な台数は、Apache ActiveMQサーバを実行するコンピュータの処理性能とネットワーク帯域に依存します。
※2021/08/25
LINE通知に対応しました。
MQTTサーバとの接続断、通信異常、心拍未検出状態などを通知できます。
LINE通知の使用にあたってはLINEアカウントよりトークンの発行と取得したトークンをC#ソースへの反映が必要です。
データを送受信するためのWi-Fi環境も必要です。
このプログラムは、『M5Stackと心拍センサーを使って血中酸素飽和度と心拍数を見える化するプログラム』をネットワーク対応版にしたセンサープログラム(以下センサープログラム)と、計測したデータを表示するモニタープログラム、データ配信のApache ActiveMQで構成されます。
正しく接続できていると、モニタープログラムが起動した時点でActiveMQに送信されたデータが配信され画面上に表示されます。
起動時に引数として表示対象のデバイスIDを与えると、受信したデータのうちデバイスIDが一致するデータだけを絞り込んで表示します。(未指定の場合は受信したデータをすべて表示します)
SpO2_Monitor.exe 《表示対象のデバイスID》
モニタープログラムでは血中酸素飽和度により表示の色分けを行います。
SpO2(%) |
背景色 |
文字色 |
96以上 |
黒 |
白 |
90~95 |
黄色 |
黒 |
75~89 |
ピンク |
黒 |
74以下 |
赤 |
白 |
モニタープログラムが最後にデータを受信してから30秒以上受信が途絶えた場合は、画面上に「通信異常」と表示されます。
また、最後に心拍を検出してから30秒以上経過すると画面上に「心拍検出できず(n秒経過)」と表示されます。
ActiveMQの使用を前提としていますがMQTTであればもっと軽量のものでも代用可能だと思います。
モニタープログラムで監視しなくともPythonなどでMQTTの配信を受け取り、異常を検知したらLINEで送信するなどしてもよいのではないかと考えています。
心拍パルスを表示するために15~20ミリ秒程度に一度の間隔でセンサーから値を取得しMQTTサーバに配信しています。この間隔をあけるか止めることでネットワークへの負荷をさげることができます。
送信頻度を少なくすることでより多くのM5Stackを接続できるようになるはずです。
コロナ禍で感染拡大が続き、十分に健康状態がモニタリングされていない環境下で宿泊療養、自宅療養が増えてきたことに対してなにかできないかと作ったプログラムです。
長時間の連続稼働時にどうなるのか、エラー発生は正しく検出され正しく復旧できるのか、そもそも装置の信頼性はどの程度なのか、作っていていろいろな疑問や懸念は湧きましたが、そこにとらわれてしまうよりまず世の中に公開して、あとはよりよい改良を施してくれる方の登場に委ねようと思い公開しました。
※2021/08/25
ActiveMQがダウンしてしまうとモニタープログラムの更新が止まってしまう現象を確認しました。
[…] 以前作成した『複数台のM5Stackと心拍センサーを使ったパルスオキシメーターを集中的にモ…』の簡易版になります。以前の版ではActiveMQなどのセットアップが必要など動かすためにはややハードル高めの準備が必要でしたが、今回の版ではWebサービスのkintoneを使うことで簡単に素早くセットアップできるようになっています。 […]