Arduino MKR GSM 1400で作るスマートリストバンド:Hologram IoT × Azure × Power BIで患者見守り
プロジェクト概要
新型コロナウイルス感染症(COVID-19)の軽症・無症状患者が自宅療養する際、健康状態の急変と外出リスクを同時に監視するウェアラブルデバイス「SmartWristband」を開発しました。Arduino MKR GSM 1400を核に、心拍センサー・非接触温度センサー・GPS・セルラー通信を一体化し、取得データをHologram IoT SIM経由でAzure IoT Hubへ送信。Cosmos DBに蓄積したデータをPower BIダッシュボードで医師・患者双方が可視化し、機械学習による悪化予測アラートを実現しています。
主要ハードウェア
| 部品 | 役割 |
|---|---|
| Arduino MKR GSM 1400 | メインMCU、LTE Cat M1/NB-IoT通信、充電回路内蔵 |
| LTEアンテナ | MKR GSM同梱品 |
| Hologram Global IoT SIM | グローバルローミング対応データ通信 |
| DFRobot心拍センサー | 光学式心拍測定(指先/手首) |
| IR温度センサー (MLX90614等) | 非接触体表温度測定 |
| 3.7V LiPoバッテリー (800mAh) | 約8日駆動(5分間隔測定時) |
システムアーキテクチャ
デバイス側(5分ごとのサイクル)
- RTC同期(NTPサーバーから時刻取得)
- 心拍・体温・バッテリー電圧・装着検知・GPS位置を取得
- JSONペイロード生成
- TLS/SSLでAzure IoT HubへMQTT送信(証明書認証)
- ディープスリープへ移行
クラウド側
- Azure IoT Hub: デバイス認証・メッセージ受信(Free tierで開発可能)
- Stream Analytics Job: IoT Hub→Cosmos DBへリアルタイム転送
- Cosmos DB (Core/SQL API): JSONドキュメントストア
- Power BI: 医師用ダッシュボード(全患者俯瞰・個別詳細・ML予測・アラート)、患者用モバイルダッシュボード
データフローとスキーマ
{
"time": "2021-12-28T11:22:00Z",
"id": "patient_001",
"geoLat": 35.6895,
"geoLng": 139.6917,
"isWorn": true,
"heartrate": 72,
"temperature": 36.8,
"battery": 3.85
}
Stream Analyticsクエリ例:
SELECT
time, id as name, geoLat as latitude, geoLng as longitude,
isWorn, heartrate, temperature, battery
INTO [cosmosdb-output]
FROM [iothub-input]
ダッシュボード設計
医師用ダッシュボード
- 全患者カード:名前・ステータス・体温・心拍・バッテリー・在宅フラグ
- 個別レポート:バイタル推移グラフ、地図上の位置、デバイス情報
- 機械学習予測:今後6〜24時間の体温・心拍トレンド予測(Power BI組込ML)
- アラート:体温≥37.5℃、心拍≥100bpm、未装着、外出検知 → メール通知+ダッシュボードハイライト
患者用ダッシュボード
- 現在の心拍・体温・バッテリー残量・充電予測時間
- 予測グラフ・位置情報は非表示(不安軽減)
- モバイルレイアウト最適化(Power BIモバイルアプリ対応)
開発手順(抜粋)
Step 1: 環境準備
- Arduino IDE / Web Editor インストール
- Hologramアカウント作成・SIMアクティベート
- Azureアカウント作成(無料枠利用可)
- Power BI Desktop インストール
Step 2: MKR GSM証明書設定
MKR NB 1500向けチュートリアル(Hackster掲載)に従い、デバイス証明書を生成・ECCX08チップへ書き込み。SHA-1サムプリントを控えておく。
Step 3: ハードウェア配線
- 心拍センサー → A5
- 温度センサー → A4 (I2C)
- SIMカード挿入、アンテナ接続、LiPo接続
Step 4: Azureリソース作成
- IoT Hub (Free tier) 作成、デバイス登録(サムプリント設定)
- Cosmos DB アカウント・データベース・コンテナ作成
- Stream Analytics Job で IoT Hub → Cosmos DB 接続、クエリ設定、開始
Step 5: デバイスファームウェア書き込み
GitHubリポジトリ Andrei-Florian/SmartWristband からコード取得。`secrets.h` に IoT Hub ホスト名・デバイスID・証明書サムプリント・`DEVELOP_MODE`/`RELEASE_MODE` 切替を設定。
Step 6: Power BIレポート作成
- Cosmos DB コネクタでデータ取得
- データ型変換(数値・日付・緯度経度カテゴリ)
- DAXメジャー作成(患者属性・閾値判定・予測)
- ビジュアル配置・モバイルレイアウト調整
- 発行・共有・アラート設定
コスト試算(100デバイス・2週間運用)
- デバイス材料費: €70 × 100 = €7,000(筐体込み、再利用可)
- 通信費 (Hologram): €5/台/2週間 × 100 = €500
- バックエンド (Azure): €30/2週間(スケール固定)
- 合計: 約 €7,530(台数増でもバックエンド費用はほぼ変わらずスケールメリット大)
今後の展開
- SpO2(血中酸素飽和度)測定追加:心拍センサーの赤外/赤色2波長から算出可能、ハード変更不要
- 胸部パッチ型温度センサーで精度向上
- 3Dプリント筐体で小型化・快適性向上
- オープンソース化済み:GitHubで全資産公開
セキュリティ・プライバシー
- 位置情報はデバイスで処理せずクラウドで暗号化処理
- IoT Hub〜Cosmos DB間はTLS暗号化
- Power BIアクセスはAzure AD認証・ロールベースアクセス制御
製造プロセス
- 集積回路(IC):現代エレクトロニクスを支える微小強力チップ
- Raspberry Pi、MCP9808、InfluxDB、Grafanaで作る家庭温度モニター
- エモーションセンサー&EEG:リアルタイム感情検知のための低コストハードウェア
- スマートホーム連携向けマルチポジション温度センサーシステム
- UnifiedWater v1 - 完全なArduino水質センサーキット
- MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
- 川の健康を見守る:Arduinoベース水質監視システム「MyRiver」
- Arduino MKRバンドルで作るセキュアIoTパズルボックス:ステップバイステップガイド
- Arduino Nano製ウェザーステーション:気圧・温湿度・UV・時計表示付き
- MOSMusicプロジェクトキット: MOSFET、Arduinoで音楽同期照明制御
- 酸素(O2)センサーを理解する:役割、配置、故障の兆候