Wio LTEで始める生体信号計測
ABEJA Inc.
Hiroyuki Ootaguro
(2017/12/04)
Wio LTEを使って何か作りたい!!
・てっとっりばやく計測データをすぐクラウドに挙げられる時代がきた
・身の回りのもので何か面白いもの…
Motivation
2
「なにか生体情報を計測してクラウドに蓄積・分析・異常検知する!」
Motivation
3
パルスオキシメーター
転載元:http://www.nihonkohden.co.jp/manufacturing/technology/topics.html
全体構成
4
可視化&異常検知
Lambda FuncKinesis Firehorse Amazon S3
パルスオキシメーター
+
計測回路
(省略可能)
全体構成
5
可視化&異常検知
Lambda FuncKinesis Firehorse Amazon S3
パルスオキシメーター
+
計測回路
(省略可能)
クラウド側デバイス側
可視化&異常検知
信号処理系Kinesis Firehorse Amazon S3(省略可能)
全体構成
6
プローブ
+
計測回路
人体(指)に光を当て、 吸光応答を出力する
可視化&異常検知
信号処理系Kinesis Firehorse Amazon S3
プローブ

+
計測回路
(省略可能)
全体構成
7
計測回路からの出力を取り込み、クラウド側へ
データ送信をする (主役)
可視化&異常検知
信号処理系Kinesis Firehorse Amazon S3
プローブ
+
計測回路
(省略可能)
全体構成
8
WioLTEからのデータを受取り、
整形し後段(Kinesis)への架け橋となる
Fluentd
(Open Source Data Collector)
※構成次第では不要(後述)
可視化&異常検知
信号処理系
プローブ
+
計測回路
(省略可能)
全体構成
9
受け取ったストリームデータを処理し、
「Zero Administration(ゼロ管理)」で「ダイレクト」に
ストレージへデータ格納
Kinesis Firehorse Amazon S3
※ Kinesis = フルマネージド型リアルタイム大規模ストリーミングサービス
※ Amazon S3 = クラウドストレージ(オブジェクトストレージ)
可視化&異常検知
Kinesis Firehorse Amazon S3
プローブ
+
計測回路
(省略可能)
全体構成
10
計測データから血中酸素飽和度の算出を行う。
算出結果を後段(Datadog)へ転送する
信号処理系
Hb→ヘモグロビン
HbO2→酸素化ヘモグロビン
※デバイス側で計算しても良い。(理想)
計算に関していろいろ試行錯誤したいので
ロジックは一旦クラウド側に持つようにした
信号処理系Kinesis Firehorse Amazon S3
プローブ
+
計測回路
(省略可能)
全体構成
11
データを監視し、可視化及び異常があればアラートをする
可視化&異常検知
Datadog社が提供する
インフラ監視を想定した監視SaaS
MLベースの異常検知機能あり
※CPU・メモリ使用率等のメトリクスの
代わりに、計算した「血中酸素飽和度」を
入れる
Wio LTEの開発環境セットアップ / HelloWorldする
↓
プローブ+計測回路を用意し、結合。WioLTE側にA/D変換・データ送信ロジック記述
↓
Fluentd側の構築 (デバイスとの結合用HTTPエンドポイント用意)
↓
AWS上のリソース(Kinesis Firehorse/S3/Lambda)の構築
※Terraformを利用
↓
Fluentd側の設定追加(デバイスからきた情報をKinesis Firehorseに転送)
↓
Datadogの設定
実装ステップ
12
WioLTEの初期化
13
← LTEモジュールに電源供給をする
← LTEモジュールの初期化
← APN(Access Point Name)の設定
WioLTE (データ転送)
14
←HTTP POST
WioLTE (Tips)
15
←RSSI (電波強度)の取得
←NTP時刻同期
(ntp.nict.jp)
←時間取得(RTCから..?)
回路設計
16
非反転増幅
501倍 BPF(バンドパスフィルタ)
0.33〜15.9 [Hz]
※出力オフセット
※学生時代にサクッと設計した回路です。
使うプローブ等によってゲイン等の調整が必要です。
回路実装
17
プローブ端子
増幅回路+BPF
完成
18
ANT
Wio LTE本体
プローブ
計測回路
Fluentd側の用意
19
← HTTP Port8888でLISTEN
PayloadはJSONを仮定
←KinesisFirehorseへ転送する
Fluentd側の用意
20
Dockerを活用すると秒で立てられます
WioLTE + Fluentdの結合
21
計測データ(Sample)
時間→
出力電圧(mV)
さくっとネット越しにデータがとれました!
AWS上のサービス用意
22
IoTデバイスからのデータ集積・分析を考えると、
アーキテクチャが似てくる (結構同じになってくる場合も)
仕事でも趣味でも同じ or 似たようなアーキテクチャ
をもう一度作りそうだな…
Infrastructure as Code(IaC)の導入
TerraformによるIaCの例
23
例)tf-test-bucket-taguroというS3バケットを作成しなさい。
ついでに、Object作成時にLambda関数も呼び出しなさい
Terraformingのご紹介
(既に作ったAWSリソースからTFコードを生成する)
24
既に作ったリソースからTerraform用コードを
自動生成するツール
ここまでのコードは後日AdventCalenderの時に
まとめます。
DATADOGでHR(Heartrate)がでるようになった
26
登壇前の緊張がバレル
27
28
運動したり緊張したり
プローブが外れると
メールがくるようになった!!!
・Wio LTE予想以上に簡単だった
・Datadog, サーバーメトリクス監視用だが、普通に使える・・・笑
・Docker + Terraformの活用により、インフラ(サービス側)も手軽に用意できるようになった
・WioLTE + AWSのマネージドサービス+その他SaaS等の活用で、「やりたいこと」を叶える一
連のデータフロー・ロジックを楽に実装できるようになった
・IoTを活用したソリューションがサクッと作れようになった。
・SORACOM Funnelを活用すれば、Fluentdいらなかったかも・・・(勉強不足ですみませ
ん…><)
気づき
30

Wio LTEで始める生体信号計測