スマートピルディスペンサー:精密な服薬管理システム
開発動機
既存のピルディスペンサーは、非電動・自動ともに薬のセットを人手で行う必要があり、患者が介助者に依存する課題がありました。特にコロナ禍で介助が困難になったため、薬の自動仕分け・排出、障害者対応、遠隔設定・監視を可能にする「SmartPill」を開発しました。
システム構成
1. SmartPillディスペンサー(ハードウェア)
薬の収納・仕分け・排出を行い、患者向けインターフェースとして機能。
2. SmartPill Webアプリ(クラウド)
医師・家族が薬の種類・用量・服用時刻を遠隔設定、服用履歴を監視。
ディスペンサー機構
全パーツ3Dプリント(PLA)。主要構成:
- ベース:超音波センサー取付穴、カップへ薬を落とすフラップ
- スライダー:薬容器を支持、内部に電子部品収納スペース
- サイドパーツ:湿気・ほこり防止
- Nextion 7インチタッチパネル:大画面UI、音声・光フィードバック
- トップパーツ:ドラムと容器を分離、保護
- Parallax 360°サーボ:ドラム回転で容器選択
- ドラム:外部投入口と容器を連結
- バックドア:スライダー着脱用
- スピーカー:音声案内
- 超音波センサー(HC-SR04):カップ取り外し検知
- 薬容器×4:各々SG90サーボで排出量制御(拡張可能)
電子回路
- Arduino Mega 2560:サーボ制御(PWM)、Nextion通信、RTC(I2C)、AVR-IoTボードとUART通信
- AVR-IoT WA開発ボード:WiFi経由でAWS IoT CoreへMQTT接続
- IRフォトトランジスタ/LED:薬排出検知(各容器)
- 16ch PWM/サーボドライバー(I2C)
Webアプリケーション
技術スタック
- フロントエンド:Ionic + Angular(TypeScript, HTML, CSS)
- バックエンド:AWS API Gateway (HTTP API) + Lambda + DynamoDB
主要画面・機能
- ログイン/患者登録
- 薬設定画面:薬名、容器番号、重量、服用時刻(朝/昼/夜)を複数選択
- 履歴画面:服用日時、薬名、患者名をアイコン付きリスト表示
- 削除確認ダイアログ付き薬削除機能
ルーティング・状態管理
Angularルーターで画面遷移。編集画面はID有無で新規/編集を判別。post.service.tsでAPI通信(GET/POST/PUT/DELETE)を一元化。
AWSクラウドアーキテクチャ(サーバーレス)
- AVR-IoTボード → AWS IoT Core (MQTT) → Lambda → DynamoDB
- Webフロントエンド:S3静的ホスティング
- バックエンドAPI:API Gateway + Lambda
- スケジューラ:EventBridge(cron式で朝/昼/夜の服用時刻にLambdaトリガー)
主要AWSリソース設定
- DynamoDBテーブル:
smartpill-pills(薬設定)、smartpill-history(履歴) - Lambda関数:各APIエンドポイント対応、DynamoDBフルアクセス権限(本番では最小権限に)
- IoT Coreルール:
confirmationpillトピック受信でLambda起動 - EventBridgeルール:UTC cronで
smartpill-dispensepillLambda定期実行 - API Gateway:HTTP API、Lambda統合、ルート設定
- S3バケット:静的ウェブホスティング有効化、
index.htmlをエントリーポイントに
AVR-IoTボード ファームウェア
Microchip純正CLI例を拡張。USART1(RX/TXピン)でArduino Megaと通信。カスタムMQTTトピックdispensepill購読、confirmationpill送信。JSONパーサー内蔵。
通信プロトコル
dispensepill(AWS→IoT→Arduino)
// AWSからIoTボードへ(MQTT JSON)
{
"cmd": "dispensepill",
"npills": 2,
"intake": { "time": "morning" },
"pills": {
"1": { "pill": "Ibuprofeno", "qty": 1, "deposit": 1, "weight": 200 },
"2": { "pill": "Paracetamol", "qty": 2, "deposit": 2, "weight": 500 }
}
}
// IoTボードからArduinoへ(UART)
D Ibuprofeno 1 1 200 D Paracetamol 2 2 500 \n
confirmationpill(Arduino→IoT→AWS)
// ArduinoからIoTボードへ
pill 1
// IoTボードからAWSへ(MQTT JSON)
{ "time": "morning", "state": "ok" }
リポジトリ
- Webアプリ:smartpill-webui
- Lambda関数:smartpill-lambda
- AVR-IoTコード:smartpill-avriot
- Arduinoファームウェア:smartpill-arduinofw
- 3Dモデル:Thingiverse(STEP/STL)
製造プロセス
- 睡眠薬の科学と製造:古代の療法から現代薬理学へ
- 経口避妊薬:歴史、メリット、リスク、製造
- スマートバーテンダー:Raspberry Pi駆動の自作カクテルステーション
- スマート信号機:IoTで実現する適応型街路灯
- インテリジェントスマートゴミ箱:IoTセンサーで廃棄物収集を最適化
- スマートプラントIoT:ArduinoとAzureで作る接続型グリーンハウス
- UnifiedWater v1 - 完全なArduino水質センサーキット
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- Really Smart Box: IoT対応スマート収納ボックス – 重量・温湿度をSigfoxで送信
- Autodeskスマートマニュファクチャリング:ワークフロー自動化と製品開発の連携
- スマートマニュファクチャリング解説:IoTで生産を変革する