経緯
とある非常勤の授業において学生さんから下記の質問あり
「呼吸を検知できるセンサーがないか?」
具体的な用途として
「呼吸の可視化、例えば:呼吸の頻度、呼吸時の気流の大きさによって、ライトの明るさ、画面のイメージを変えたい」
とのことで、呼吸センサを探してみた
MPRLS Ported 気圧センサモジュール
スイッチサイエンスにて発見
他の気圧センサと異なり、ボードの中央に搭載されたメタルポートにチューブを取り付けて、息を吹き付けるなど、その密閉空間内の気圧を測定するモジュールです。sip & puffと呼ばれる息操作インターフェイスや、真空チャンバーや他の加圧容器内の圧力測定に使用するのに最適なセンサです。
とのことで、気圧センサの中でも呼吸を検知する用途に適しているとのこと。
ハードウェア準備
スイッチサイエンスHP内にある「ガイド」を参照してピンヘッダ、ソケットとジャンプワイヤをはんだ付け
Arduino Testの項にある下記を参考に、センサとArduinoを接続
- Connect Vin to the power supply, 3-5V is fine. Use the same voltage that the microcontroller logic is based off of. For most Arduinos, that is 5V
- Connect GND to common power/data ground
- Connect the SCL pin to the I2C clock SCL pin on your Arduino. On an UNO & '328 based Arduino, this is also known as A5, on a Mega it is also known as digital 21 and on a Leonardo/Micro, digital 3
- Connect the SDA pin to the I2C data SDA pin on your Arduino. On an UNO & '328 based Arduino, this is also known as A4, on a Mega it is also known as digital 20 and on a Leonardo/Micro, digital 2
The MPRLS has a default I2C address of 0x18 and cannot be changed!
上に習って、下記の通り配線
センサ側のVIN(下図赤色)→Seeeduino(Arduino)の5V
センサ側のGND(下図黒色)→Seeeduino(Arduino)のGND
センサ側のSCL(下図黄色)→Seeeduino(Arduino)のA5
センサ側のGND(下図青色)→Seeeduino(Arduino)のA4
ソフトウェア準備
Install Arduino Librariesを参考にライブラリをインストール
Basic Exampleを試してみた。
hPaの単位系のほうが使いやすそうなので、少し改変してシリアル出力するようにした
ArduinoIDE上の「シリアルプロッタ」を起動して収縮チューブに息を吹き込んでみると・・・
→実行結果参照
#include <Wire.h>
#include "Adafruit_MPRLS.h"
// You dont *need* a reset and EOC pin for most uses, so we set to -1 and don't connect
#define RESET_PIN -1 // set to any GPIO pin # to hard-reset on begin()
#define EOC_PIN -1 // set to any GPIO pin to read end-of-conversion by pin
Adafruit_MPRLS mpr = Adafruit_MPRLS(RESET_PIN, EOC_PIN);
void setup() {
Serial.begin(115200);
Serial.println("MPRLS Simple Test");
if (! mpr.begin()) {
Serial.println("Failed to communicate with MPRLS sensor, check wiring?");
while (1) {
delay(10);
}
}
Serial.println("Found MPRLS sensor");
}
void loop() {
float pressure_hPa = mpr.readPressure();
Serial.print("Pressure (hPa): "); Serial.println(pressure_hPa);
// Serial.print("Pressure (PSI): "); Serial.println(pressure_hPa / 68.947572932);
delay(50);
}
実行結果
Youtube映像埋め込みできないのでリンクはこちらから
※マイクの調子が良くないので後日再収録予定
息操作インターフェイス「sip & puff」
上記息操作インターフェイスについて調査したところ、下記PDFを発見
アメリカ化学会資料「Teaching Chemistry to Students with Disabilities: A Manual for High Schools, Colleges, and Graduate Programs Edition 4.1」,翻訳資料
https://www.rcast.u-tokyo.ac.jp/content/000009036.pdf
sip & puffインタフェースについて調べてみると
「空気圧を使用してデバイスに信号を送信するために使用される支援技術。主に手を使わない人が利用(- wikipedia)」とある。
視線による文字入力と組み合わせることで、息を吐いて入力文字を確定、息を吸うことで一文字削除、というような使い方が想定される。
もしくは、視線入力で自由な線を引きながら絵を描く際、ペンの太さ(手でいうところの力の入れ具合)を息で行うなど、様々な用途が検討できる。