最近、新型コロナウィルスの感染拡大の影響でパルスオキシメーター(血液中の酸素濃度測定機器)が品薄になっています。
パルスオキシメーターについて検索していたら、簡単な自作方法が公開されていました。
電子工作の知識ゼロでも30分程度で作れたので、作り方をメモしておきます。
コロナで大人気のパルスオキシメーター
パルスオキシメーターは、指先を入れると心拍数と血中の酸素濃度を測定してくれる機械です。
新型コロナ肺炎を発症して重症化すると、自覚がなくても血中酸素濃度が低下して危篤状態になるそうです。
低酸素症を早めに検知するには
新型コロナ肺炎を患う患者をより多く迅速に特定し、それらの患者をより効果的に治療するひとつの方法がある。その方法では、病院または医院でのコロナウイルス検査を待つ必要はない。普及型の医療器具を使って無症候性の低酸素症を早期に発見することが求められる。その器具とは「パルスオキシメーター」であり、ほとんどの薬局で処方箋なしに購入できる。
アリババなど中国の通販サイトでは普通に売ってましたが、日本の通販サイトではほとんど売り切れ状態になっています。
血液中の酸素濃度測定機器「一般家庭の購入控えて」新型コロナ | NHKニュース
2020年5月2日 4時46分
新型コロナウイルスの感染拡大で、血液中の酸素濃度を測るパルスオキシメーターと呼ばれる医療機器が不足し始めていて、メーカーは、感染の有無を判断できる機器ではないとして、一般家庭での購入はできるだけ控えるよう呼びかけています。
マスクやエタノールなどに続いて、どうやらパルスオキシメーターも転売ヤーに買占めされてしまったのではないか?と思います。
発想の転換で、市販品を買えないのであれば、材料を集めて自分で作っちゃいましょう!
パルスオキシメーターの材料
パルスオキシメーターの作り方を調べたら、簡単な方法と難しい方法がありました。
- 簡単な自作方法:M5Stackという電子工作用のキットで作る。
- 難しい自作方法:センサーなどのパーツを買ってハンダ付けして組立てる。
今回は、簡単なM5Stackで作る方法で行きます。😀
必要な材料は、
- M5Stackの本体
- M5Stack用の心拍センサーユニット
- Windows10のパソコン
です。
パソコンはMacやLinuxでもOKですが、今回はWindowsを使いました。
M5Stackとは?
M5Stackは、電子工作用の小さなコンピューターです。
センサーなどパーツをつないで、いろんな機械を自作できます。
M5Stackは、小型のマイコンモジュール。
M5Stackは、320 x 240 TFTカラーディスプレイ、microSDカードスロット、スピーカーを備えたコンパクトで便利な開発モジュールです。ESP32を搭載しているため、Wi-FiおよびBluetooth通信を扱え、Arduino環境での開発が可能です。
さらに専用の拡張モジュールを縦に積み重ねていくことで機能を追加することができます。
M5Stackは機能や仕様の違いで、グレードがいくつか分かれています。
- M5Stack Basic:一番基本的なモデル
- M5Stack Gray:Basicモデルに加速度・ジャイロ・磁気のセンサーなどが追加された上位モデル
など、いろいろ製品があります。
Flashメモリ容量に着目すると、Basicは4MB、Grayは16MBという違いがありました。
(参考)M5Stackシリーズのスペックの違い
今回は、一番基本のモデルである「M5Stack Basic」を使ってみます。
M5Stackの購入方法
M5Stackは、Amazonなどの通販で買えます。
今回はスイッチサイエンスさんから購入しました。
M5Stack Basicのセットアップ
最初に、M5Stack Basicをパソコンから操作できるように準備作業をやります。
(参考)
↑こちらの記事を参考にして、M5Stackをパソコンにつなぎ、「Hello World」を表示させるまでの作業を行います。
ArduinoIDEをインストール
https://www.arduino.cc/en/Main/Software から、ArduinoIDEをダウンロードします。
今回は「Windows ZIP file for non admin install」を選びました。
「arduino-1.8.12-windows.zip」というバージョンの圧縮ファイルでした。
これを解凍して出てきたフォルダ内にある「arduino.exe」をクリックするとArduino IDEが起動します。
USBドライバーのインストール
M5Stack Basicは、WindowsパソコンとUSBケーブルでつないで使うときに、「CP210X」というチップを使っているそうなので、これのドライバー(制御用ソフト)をインストールしておきます。
https://m5stack.com/pages/downloadを開き、CP210X Driverというものをダウンロードします。(自分のOSに合ったものをダウンロード)
使用するポート番号の確認
M5Stackを附属のUSBケーブル(USB Type-Cケーブル)でWindows10パソコンと接続します。
Windows10でデバイスマネージャーを開き、「ポート(COMとLPT)」にある「Silicon Labs CP210x USB to UART Bridge」というデバイスを探します。
このデバイスの末尾に「(COM3)」などとCOMポート番号が表示されているので、この番号(3など)を控えておきます。
(参考)
ボードマネージャーを追加
Arduino IDEを起動して、M5StackのCPU(ESP32)を使うためのソフトウェアを追加します。
(1)「ファイル」→「環境設定」をクリックして環境設定の画面を開きます。
(2)「追加のボードマネージャーのURL」の右にあるボタンをクリックします。
(3)URLの入力 ダイアログ画面が開くので下記のように入力してOKをクリックします。
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
URLを入力したら、「OK」ボタンをクリックします。
esp32のボードを追加
Arduino IDEでM5Stack(ESP32)を認識できるようにします。
ボードマネージャーを開き、設定します。
(1)ボードマネージャを開く
「ツール」→「ボード…」→「ボードマネージャ…」と選択します。
(2)ボードマネージャ
ボードマネージャが開いたら、「esp32」と入力し、下のウィンドウに「esp32 by Espressif Systems」という名前のものが出るので、「インストール」をクリックします。
M5Stackライブラリのインストール
Arduino IDEでM5Stack用のプログラムを書くときに必要となるライブラリーを追加します。
次にM5Stackのライブラリをインストールします。
(1)「ライブラリを管理」を開く
「スケッチ」→「ライブラリをインクルード」→「ライブラリを管理…」の順に選択します。
(2)ライブラリマネージャ
ライブラリマネージャの画面が開くので、「m5stack」と入力し、「M5Stack by M5Stack」という名前のライブラリを選択して「インストール」をクリックします。
ボードの設定
「ツール」を開いて、ボードの各項目を設定します。
下記のように設定してください。
シリアルポートはデバイスマネージャーで確認したCOM?を選びます。
例えば「COM3」だった場合は、「COM3」を指定します。
HelloWorldの表示
Arduino IDEからM5Stackに小さな動作確認用のプログラムを書きこんでみます。
ここではM5Stackの液晶モニターに「HelloWorld」という文字を表示させるプログラムを作成します。
「ファイル」→「スケッチ例」→「M5Stack」→「Basics」→「HelloWorld」の順に選択して「HelloWorld」のスケッチを開きます。
M5Stackが接続されているのを確認して、「スケッチ」→「マイコンボードに書き込む」を選択すると、コンパイルしてからM5Stackに書き込まれます。
正常に完了すると、自動的に再起動して下記の写真のようにHelloWorldと言う文字が表示されます。
ここまでで、M5Stackを使うための準備ができました。
次は、いよいよM5Stackでパルスオキシメーターの自作です。
パルスオキシメーターの自作
(参考)
↑この記事の説明通りに作業すると、パルスオキシメーターが完成します。
細かい作業の説明が省略されていたので、ちょっとだけ補足。
MAX30100libを使う
- Arduino IDEを起動してメニューから、「ツール」→「ライブラリを管理」をクリックします。
- ライブラリーマネージャーの画面が開くので、「検索をフィルター」に「MAX30100」と入力します。
- 「MAX30100lib by OXullo Intersecans」という名前のライブラリーを選択して「インストール」をクリックします。
GitHubからソースコードをダウンロード
下記のWebページで公開されているプログラムのソースコードを入手します。
GitHub - hibigaku/m5stack-max30100
- 「Clone or download」の緑色のボタンをクリックします。
- 「Download ZIP」の青色のボタンをクリックします。
- ダウンロードした「m5stack-max30100-master.zip」を解凍します。
- 解凍して出てきた「m5stack-max30100-master」というフォルダーを「m5stack-max30100」という名前に変更します。(末尾の「-master」を削る)
プログラムをコンパイルして書き込む
- Windows10パソコンとM5Stack BasicをUSB Type-Cケーブルで接続します。
- M5Stack Basicと心拍センサーユニットを付属のGroveケーブルで接続します。
- 先ほどダウンロードしたプログラムのソースコードをArduino IDEに読み込みます。
- Arduino IDEのメニューから、「ファイル」→「開く」をクリックして、ファイルの場所は「m5stack-max30100」を選び、ファイルは「m5stack-max30100.ino」を選び、「開く」ボタンをクリックします。
- Arduino IDEのメニューから、「スケッチ」→「マイコンボードに書き込む」をクリックします。
しばらく待っていると、M5Stackの画面に心拍数と血中酸素濃度を示す数字が表示されます。
心拍センサーユニットの赤いLED部分に軽く指先を乗せると、数秒後に数値が変わります。
これで、M5Stackを使ったパルスオキシメーターの完成です!
M5Stack純正の心拍・血中酸素センサでパルスオキシメーターを作ってみました。MAX3010xチップのバージョンの違いも勉強になりました。https://t.co/iF2VEx4z0z#IoT #pulse_oximeter #M5Stack pic.twitter.com/TRNDSQoQ8q
— 日比 学 (Hibi) (@ghibi) 2020年5月3日
(M5Stack Basicで通信機能付き心拍・血中酸素モニタを作る(MAX30100) - Qiita)
M5Stackの参考書
M5Stackのより詳しい使い方は、参考書などからも学べます。
今回は、M5Stackを使った簡単な方法でパルスオキシメーターを自作しましたが、電子工作の知識がある方なら、自分で回路を設計して作ることもできます。
秋月電子などでパルスオキシメーターのセンサーユニットが販売されていたので、詳しい方は難しい方法で自作にチャレンジしてみてはいかがでしょうか!?
M5Stackや電子工作は面白そうなので、時間があったらもっと調べてみたいです。
パルスオキシメーターの使い方
M5Stack用の心拍センサーユニットは、指をあまり強く押し付けるとエラーになるのか?数値がゼロになったりします。(やや不安定?)
本当は指のホルダーがあって、センサーと皮膚の距離が適切に保たれるようにすべきなのでしょう。
=市販のパルスオキシメーターみたいに、指をはさむクリップの形をしていれば理想的かも。
コロナに感染しないのが一番良いですが、万一感染&発症したかもしれない状態になったらすぐに保健所や病院に連絡して、自宅で待機している間もパルスオキシメーターで血中酸素濃度を測定しておきましょう。
血中酸素濃度が90%よりも下がってきたら危険なので、すぐに病院へ行ってください。
(参考)血中酸素濃度の正常値は96%~99%の間だそうです。
血中酸素飽和度とは血液中の酸素の量の事でSpO2と呼ばれています。値は%で表し、血液中の酸素の濃度が満タンだと100%、正常値で99~96%と言われています。