私の服薬システム~STM32マイコンでタッチ入力・アラート表示~

© CC BY 4+ visibility1676
© CC BY 4+
visibility1676

現在稼働している自作服薬システムをバージョンアップ。従来の機能に加えて私が欲しいプラスアルファ機能を実装し、STM32+TouchGFXでグラフィカルに前回服薬日付を表示・服薬入力を可能としました。

  • 最優秀賞STM32マイコンとTouchGFX GUIチャレンジ
動画
開発素材

ツール

システム構成
system image

上記構成図はSTM32+TouchGFXを利用した部分のものであり、システム全体の一部となります。

通信について

Wi-FiにはESP8266、通信はシリアル通信のATコマンド(Wi-Fi通信コマンド)を使用しました。

下図のESP8266のイメージはピンの数が同じというだけのものを代わりに使用しています。

3Vは当初STM32からとっていましたが電力不足のようで動作不安定だったので別で電源をとっています。

ESP8266配線図 ブレッドボードで配線
ESP8266配線

2024/7/6 通信部分改良

ブレッドボードを基板にはんだづけしたものに置き換えようとしたときに、STM32がArduinoピン配置と同じということだったのでユニバーサル基板でなくArduinoに嵌るように作られている基板がいいと考え探していたところ、スイッチサイエンスにESP-WROOM-02(ESP8266)がすでに実装されている素晴らしいものを見つけました!

https://www.switch-science.com/products/2619

こちらを購入し上記のブレッドボード部分はこちらに差し替えました。

ジャンパワイヤによる配線がなくなりスッキリしました

実際にはうまく動かないなど紆余曲折ありましたが、最終的に正常に動作するようになり、電源を別でとる必要もなくなりました。

全体構成

システム全体は、以下の図のようになります。

点線枠で囲った部分は2021に自作・自宅運用しているもので、ここに機能を付加するべく今回STM32マイコン(STM32U5G9J-DK2)+TouchGFXを使用しました。

なお今回SoracomのLTE-M ボタン(IoTボタン)を使用して外出先からも記録できる機能も追加しました。

ストーリー

今回の開発のきっかけ

以前より現在稼働中の自作服薬システムに機能追加をしたいと思っていました。

そんな中「STM32マイコンとTouchGFX GUIチャレンジ」が開催され、STM32で実現可能ならば同時に実装してしまおうと思いました。

既存の自作服薬システム

2021年に製作したものが我ながら便利で、現在も使い続けています。

https://elchika.com/article/4bbe61d9-ebaa-44b8-a334-34aef64c7351/

この既存システムでできることは以下の③つとなります。

①頭痛薬の服薬日時を記録

②環境データ(気温・湿度・気圧・騒音・照度)を30分おきに記録

③①②を照らし合わせてグラフ表示

今回追加した機能

近年、以下のことから追加機能が欲しいと思っていました。

  • 薬を頭痛薬以外にも服薬記録したい→頭痛薬含め3種類

<頭痛薬以外の薬について>

  • 皮膚科で処方されているアレルギーの薬は痒みが出たときに飲むのが、「落ち着いてくるとだんだん間隔があいてきます」と言われており、それを記録して間隔がどうなっているか確認したい

  • 定期的(12時間おき)に服用しないといけない薬ができこれが驚くほど飲み忘れるのでアラートを出したい

上記から、

  • 3種類の薬の服薬記録

  • うち1つは飲み忘れアラート表示(音声通知はやかましいためあえて行わない)

  • それぞれの薬について前回服用の時刻を確認可能にする

という機能を実装することにしました。

また、私は数字を覚えるのがすごく苦手で一日に何回もアレクサに今日の日付を尋ねている状況があり(うちにはディスプレイ表示タイプのアレクサ(Amazon Echo)がありますが、ランダムに画面が切り替わり時々しか日付を表示してくれない)、今回のシステムは常に電源ONの想定なのでトップ画面に日付を表示させるようにしようと思いました。

2024/7/14 STM32スタンド(筐体)の作成

操作する際ににちょうどよい角度で置けるスタンドを3Dプリンタで作成しました。

自作スタンドを利用している様子 横から見たところ

2024/8/2 環境値の表示

温度・気圧・湿度を表示させるようにしました!

TouchGFXこだわりポイント

  • 飲み忘れアラートがぬるっとしたアニメーションで出てくるところ

  • 読み込み中(通信中)の画面をサークルタイプのプログレスバー(Circle Progress)をモーダル表示させて表現

  • 画面遷移をスライド移動(TouchGFXで簡単に設定できて便利です!)

難しかったところ

今回通信をさせようと思いESP8266を使用したので、その部分の実装(C++)がかなり難しかったです。

デザインもTouchGFXが優秀とはいえやはり実装者にデザインセンスは必要で(あたりまえですが)その部分の難しさもありました。

紆余曲折あり結局STM32の実装部分はほぼすべてmemetan氏が行いました。

  • memetan(息子)・・・開発主担当
  • とり子(母)・・・アイデア・メインユーザ(服薬する人)・開発サブ・ドキュメント・筐体作成・動画・にぎやかし

使ってみた感想

まだ長くは使ってないものの、自画自賛ですがとても使用感が良いです!

飲み忘れアラートがとても役に立っています。

また常に日付が表示されているのも、目をやるだけですぐに日付がわかるのでとても便利です。

今後の課題

常に輝度がMAXなので、一定時間使っていない場合輝度を落としたい。(ただし常に日付表示したいのでスリープにはしたくない)

せっかく同じGASで取得できるので、TOP画面に環境値も表示したい 2024/8/2対応

メンバー
  • user
    とり子 @siroitori0413
    • リーダー兼開発者
  • user
    MEMETAN @memetan
    • ソフトウェア開発
    • ハードウェア

関連イベント
  • event STM32マイコンとTouchGFX GUIチャレンジ2024-05-08 開催
  • event ヒーローズ・リーグ 20242024-09-02 開催
  • event アバナードHuman Impactリーグ2024-09-02 開催
user
最優秀賞 @STM32マイコンとTouchGFX GUIチャレンジ

決勝審査会(https://mashupawards.connpass.com/event/318148/)にて決定


同じニオイがする作品
  • event All IoT化システム
  • event 僕とロッϟボ††娘:
  • event M5Stackがスタックできる超音波風速計
  • event 色の変化でCO2濃度が分かる光るオブジェ

イベントまとめ

コンテストまとめ

作品を登録しよう

モノづくりしている人に、つくった作品を見てもらえ、リアクションがもらえるかも?

close

目次