「MAX30105」タグアーカイブ

Wio Terminal でパルスオキシメータを制作

前回はWio Terminalの基本機能の一部を堪能させていただきました。

Wio Terminal でカメラ画像を表示2 ー LovyanGFX 編 ー

今回は少し応用でWio Terminal を用いてパルスオキシメータを作ってみました。
トレンディーでしょ?ウフフ

 

 

心拍数センサ MAX30105

センサにはMAX30105を使用しました。
赤、緑、赤外線LEDと高感度光子検出器を搭載したモジュールで、
粉塵や血中酸素飽和度(SpO2)などを測ることができます。

Wio Terminalとの接続

MAX30105をWio Terminalの4ピンのGroveコネクタに接続します。

 

Wio Terminalの回路図を紐解くと2個のGroveコネクタの左側がハードウェアI2Cとつながっておりました。

 

パルスオキシメータ動作

酸素飽和度(SpO2)、脈拍数と心電図を表示しています。
心拍に合わせてブザーで音も出しています。

ブザー音の演出も功を奏し、いい感じの仕上がりとなりました♪

Arduino コード

MAX30105のライブラリは以下にございます。
 https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library

以下のサンプルコードを参考にコーディングしました。

 

Wio TerminalのLCD表示は以下を参考にいたしました。
 https://wiki.seeedstudio.com/Wio-Terminal-LCD-Linecharts/

 
ブザー音出力は以下を参考にしました。
 https://wiki.seeedstudio.com/Wio-Terminal-Buzzer/

 

 

参考

TouchDesigner + Arduino + MAX30105 で心電図!

お母ちゃんが何やら面白そうなプログラミングツールを使って動画作成しており、書籍も購入していたので私もこっそりその本を紐解いてみると、なんとArduino連携もできるとの事で触ってみました♪

それこそがTouchDesigner!

ここではセンサで指先のヘモグロビン濃度を取得し、この値で画像を動かします!

TouchDesignerとは

オペレータという様々な機能をもった箱をつないで動画を生成するビジュアルプログラミングツールです。KinectやArduinoなどの外部デバイスとの連携も可能です。

お母ちゃんが購入した書籍は以下。オールカラーで見やすく、使用事例も多く掲載されています。辞書的に使用することもできそうです。

インストール

以下からDLしてインストール
 https://www.derivative.ca/099/Downloads/Default.asp

インストール後、うながされるままにサインイン作業しライセンスを取得します。無料のノンコマーシャル版のライセンスは動画出力サイズが1280✕1280で制限されますが、十分使えます。

心拍数センサ構成

センサMAX30105をArduinoと接続 (I2C通信)し、センサに指先を置いてヘモグロビン濃度を取得します。

部品

  • マイコンArduino UNO
  • MAX30105搭載 粒子センサモジュール

     赤外線で指先の血流みて心拍数導出してるっぽい。
     前に長男くんが気管支炎で入院したときも同じようなセンサを
     足の指につけて心拍数と血流酸素濃度測ってたなぁ。。。

    Arduino用ライブラリは以下
     https://github.com/sparkfun/SparkFun_MAX3010x_Sensor_Library

 

Arduino IDEコード

MAX30105のライブラリExampleのExample4_HeartBeat_Plotter.inoをそのまま使用しました。

TouchDesignerプログラム

動作

いきなりですがつくったプログラムの動作を御覧ください。

 

#touchdesigner で 心電図 #arduino #MAX30105

Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

センサの値を取り込んで長女ちゃんが描いてくれたハートを動かして心電図を作成しました!

プログラム(結線)

TouchDesignerを起動し、新規作成 ([File] – [New])で いざプログラミング!

画面ダブルクリックで 以下のオペレータ選択画面が開きます。各タグ内から使用するオペレータを選択・配置します。

 

  1. Arduino連携しシリアルデータ取得
    DAT (Data)タブからSerialオペレータを選択・配置してArduinoからのシリアルデータを取得します。
    オペレータを選択しプロパティを開く (ショートカット p)


    Port:PCに接続したArduinoのポートを選択
    Baud Rate:115200を選択

    以上でSerialオペレータにデータがリアルタイム表示されます。

  2. シリアルデータの選択
    DATタブからSelectオペレータを選択・配置してSerialオペレータと結線して最新のシリアルデータのみを取得するようにします。


    Select Rows:by Indexを選択
    Start Row Index, End Row Index:1を選択
    Select Cols:by Valueを選択

    以上でSelectオペレータに最新のシリアルデータのみが表示されます。

  3. 最新シリアルデータをCHOPデータに変換
    CHOP (Channel Operators)タブからDAT toオペレータを選択・配置してDAT値のシリアルデータをCHOP用の値に変換します。

    First Column is:Valuesを選択

    以上でCHOPデータに変換されます。

  4. CHOPデータをプロット
    CHOPタブからTrailオペレータを選択・配置してCHOPオペレータ出力と結線してデータをプロットします。
  5. CHOPデータ化したセンサのシリアルデータをフィルタリング
    シリアルデータのバイアスを除去したかったのでCHOPタブからAudio Filterオペレータを選択・配置・結線します。

    Filter:High Passを選択
    Cutoff Units:Logarithmicを選択
    Filter Cutoff:0.47

    以上でセンサデータの脈拍を取ることができました。4. と同様にプロットしてます。

  6. フィルタリングされたデータを2乗して正の値に変換
    CHOPタブからMathオペレータを選択・配置・結線します。


    Channel Post OP:Squareを選択してデータを2乗

    更にRangeタブを選択

    From Range:0-40000として出力データをなんとなく正規化

  7. 出力値を更にフィルタリング
    出力値はかなり急峻に変化するためCHOPタブからFilterオペレータを配置・結線し値の変化を緩やかにします。


    Type:Left Half Gaussianを選択
    Filter per Sample:Onにしてデータプロット表示

    ここまでの動作はこんな感じ↓

     

    センサ出力 #touchdesigner

    Home Made Garbageさん(@homemadegarbage)がシェアした投稿 –

  8. 表示させる画像を追加
    TOP (Texture Operators)タブからMovie File Inオペレータを配置。


    File:表示する画像データを指定
    ここでは長女ちゃんが描いたハートを使用します。

  9. 画像サイズをデータ出力値で変更
    TOPタブからFitオペレータを配置してMovie File Inオペレータを結線します。


    7. のFilterオペレータの右下の”+”をクリックして、chan1をFitオペレータにドラッグすると各種変数の選択ウィンドウが開きます。Export to Scale Xを選択してFilterオペレータの出力で画像のX軸を変えます。同様にExport to Scale Yとも連携させて画像サイズをFilterオペレータ出力値で変更させます。

所感

比較的簡単にセンサと映像を連動することができました!まだまだ勉強必要ですが人間インターフェースVJも夢ではなさそうです 🙄 ♪

Electrocardiogram Using TouchDesigner & Arduino

I created an electrocardiogram using TouchDesigner. The image moves according to the value of the sensor connected Arduino.

Sensor Configuration

Measure the heart rate with a sensor MAX30105.

Parts

  • Microcomputer Arduino uno

     

Arduino IDE Code

I used Example4_HeartBeat_Plotter.ino in Library Example of MAX 30105 .

The Touchdesigner program

Operation

 

#touchdesigner #arduino electrocardiogram #MAX30105

Posts shared by Home made garbage (@homemadegarbage)-

Program

  1. Serial data from Arduino acquisition

    Select and place the Serial operator from the DAT (Data) tab and obtain serial data from Arduino.

    • Port: Select the Arduino port connected to the PC
    • Baud Rate: 115200
       
  2. Selection of serial data.

    Select and place the Select operator from the DAT tab and wire it with the Serial operator so that only the latest serial data is acquired.

    • Select Rows: By Index
    • Start Row Index, End Row Index: 1
    • Select Cols: by Value
       
  3. Convert latest serial data to CHOP data

    Select and place the DAT to operator from the CHOP (Channel Operators) tab and convert the serial data of the DAT value to the value for CHOP.

    • First Column is: Values
       
  4. Plot CHOP data

    Select and place the Trail operator from the CHOP tab and wire it with the CHOP operator output and plot the data.
     

  5. CHOP filter serial data of sensorized sensor

    I wanted to eliminate the bias of the serial data, so I selected the Audio Filter operator from the CHOP tab.

    • Cutoff Units: Logarithmic Filter
    • Cutoff: 0.47
       
  6. Square the filtered data and convert it to a positive value

    Select, place, and wire Math operators from the CHOP tab.


    Channel Post OP:Square
     

    From Range: 0-40000 for Normalize output data
     

  7. Further filtering the output value

    Since the output value changes quite abruptly, arrange and wire the Filter operator from the CHOP tab and gently change the value.

    • Type:Left Half Gaussian
    • Filter per Sample:On
       

    The operation so far is as follows.

     

    Sensor output #touchdesigner

    Posts shared by Home made garbage (@homemadegarbage)-


     

  8. Add image to display

    Place the Movie File In operator from the TOP (Texture Operators) tab.

    File: Specify image data to display

    Here I will use the heart drawn by my daughter.

  9. Change image size with data output value

    Place the Fit operator from the TOP tab and connect the Movie File In operator.


    Click the “+” in the lower right of the Filter operator in 7. and drag chan1 to the Fit operator to open the selection window for various variables. Select Export to Scale X and change the X axis of the image with the output of Filter operator. Likewise with Export to Scale Y, let’s change the image size with Filter operator output value.

使用触摸器和 arduino 的心电图

我用触摸设计器创建了一个心电图。图像根据连接 arduino 的传感器的值移动。

传感器配置

使用 max30105 传感器测量心率。

部分

arduino ide 代码

我在库中使用了 Example4_HeartBeat_Plotter.ino max 30105 的示例。

touch名牌程序

操作

 

#touchdesigner #arduino 心电图 #MAX30105

家庭共用的垃圾 (@homemadegarbage)-

程序

  1. 来自 arduino 采集的串行数据

    从 “dat (数据)” 选项卡中选择并放置串行运算符, 并从 arduino 获取串行数据。

    • 端口: 选择连接到 pc 的 arduino 端口
    • 波特率: 115200
       
  2. 选择串行数据。

    从 “dat” 选项卡中选择并放置 “选择” 运算符, 并将其与串行运算符连接, 以便只获取最新的串行数据。

    • 选择行: 按索引
    • 开始行索引, 结束行索引: 1
    • 选择 “冷却器: 按值”
       
  3. 将最新串行数据转换为 chop 数据

    从 “通道操作员” 选项卡中选择 dat 并将其放置给操作员, 并将 dat 值的串行数据转换为 chop 的值。

    • 第一列是: 值
       
  4. 绘制停止数据

    从 “chop” 选项卡中选择并放置 trail 运算符, 并将其与 chop 运算符输出连接并绘制数据。
     

  5. 传感器的 chop 滤波器串行数据

    我想消除串行数据的偏差, 因此我从 “op” 选项卡中选择了音频筛选器运算符。

    • 截止单位: 对数滤波器
    • 截止时间: 0.47
       
  6. 将筛选后的数据平方, 并将其转换为正值

    从 “op” 选项卡中选择、放置和连接数学运算符。


    通道发布时间: 范围


    正方形: 0-40000, 用于归一化输出数据
     

  7. 进一步筛选输出值

    由于输出值变化相当突然, 请从 “op” 选项卡排列筛选器运算符并将其连接起来, 然后轻轻更改该值。

    • 类型: 左半高斯
    • 每个示例筛选器: 打开
       

    到目前为止的操作如下。

     

    传感器输出 #touchdesigner

    家庭共用的垃圾 (@homemadegarbage)-


     

  8. 添加要显示的图像

    将影片文件从 top (纹理操作员) 选项卡放在运算符中。

    文件: 指定要显示的图像数据

    在这里, 我将用我女儿画的心。

  9. 使用数据输出值更改图像大小

    将 “适合” 运算符从 “top” 选项卡中放置, 然后将 “影片文件连接” 运算符连接到 “”。


    单击7中 “筛选器” 运算符右下角的 “+”。并将 chan1 拖动到 “适合” 运算符, 以打开各种变量的选择窗口。选择 “导出以缩放 x”, 并使用 “筛选器” 运算符的输出更改图像的 x 轴。同样, 对于 “导出到缩放 y”, 让我们使用 “筛选器” 运算符输出值更改图像大小。