ごきげんよう。ビールは一日4パイントまで、ソラコムCREの岡田です。暑い日が続きますが、みなさまいかがお過ごしでしょうか。
さて、この記事では先日開催された SORACOM Discovery 2023 のプロトタイピングコーナーで開発・展示した「スマートコースター」の構成や技術的なポイントを紹介します。
本記事内で紹介している制作物(コンセプト、回路、システム実装など)は社員がプロトタイピングしたコンセプト実装です。その性質上、回路構成やシステムには改善の余地があります。
この制作物の構成をソラコムが推奨するものではありません。また、ソラコムによる実装に関する動作保証やサポートはありません。
実装を参考にする場合は自身の責任において実施してください。
コンセプト
このプロダクトのコンセプトは、社内で開催されたアイデアソンの時に出たアイデアの一つです。
アイデアソンに集まったメンバーはたまたまお酒好きな人たちが多いグループでした。あるメンバーから「お酒を飲むとつい飲みすぎてしまうので、二日酔いや悪酔いを防ぎたい」という話題があり、イッキ飲みを防いだりチェイサーとしての水の摂取を促すようなデバイスがあると面白いよね、という話になりました。
ここでは、たとえば飲んだ量が確認できたり、なにかしらの方法で通知を出すことでユーザーにインタラクションするような形が構想されました。
スマートコースターの構成
上記の構想を踏まえ、現実的な形に収めるためコースター型のデバイスに重さを検知するための圧力センサ(アナログセンサ)とインタラクションのためのフルカラーLEDを搭載したコースター型のデバイスということで「スマートコースター」という呼称になりました。
材料
- コースター本体
- 有名な均一価格ショップで購入した、飲み物を載せると重さでスイッチが入りLEDが点灯する「光るコースター」のような製品(220円)の外装を利用
- 圧力センサ
- 2kgまでの範囲で抵抗値が変化するアナログセンサ
- Amazonで購入、詳細スペック不明
- フルカラーLED x 3
- Seeeduino XIAO ESP32S3
- リチウムポリマーバッテリー(300mAh)
- その他抵抗、線材、ユニバーサル基板
内装とケーシング
最終的にケーシングされたスマートコースターは上記のようになっています(左がコースター上面、右が底面)。既製品の組み合わせで実装したため若干複雑な配線になっていますが、以下のような構成です。
- 既製品のコースターを分解し、プラスチック成形部品を適宜カットして部材を配置
- 押しボタンスイッチが露出していた穴部分(写真右側バッテリー上)の裏側に圧力センサ(写真左側)を配置
- 穴部分からコンビニの割り箸の先端をカットしたものを通し、圧力センサを押し込むことで重さを検知
ちなみに制御に利用している Seeeduino XIAO ESP32S3 が露出している部分は本来ボタン電池の収納場所でギリギリ蓋が閉まりますが、充電やデバッグのため展示中は開放状態で使用していました。
システム
スマートコースターの全体的なシステム構成を以下に示します。
動作の概要
- Seeeduino XIAO(ESP32S3)のWi-Fi、および WireGuard-ESP32-Arduino を利用して SORACOM Arc 経由で SORACOM に接続
- HTTPエントリポイントにデータを送信し SORACOM Harvest Dataに蓄積
- 圧力センサのセンサ値を SORACOM Lagoonで可視化・アラートの Slack 通知
- 一定量の減少を検知した場合に「イッキ飲みしていませんか?」、一定時間重さの変動がない場合に「水分を摂取しましょう」といったアラートをSlackに通知
- データを送信するしきい値や無負荷時のLEDの点灯色をメタデータサービスで管理
プログラム
実装はこちら → sayacom/discovery2023-smart-coaster
スマートコースターではセンサデータの取得・サンプリングと並行して通信やLED出力を実行する必要があります。ESP32の高性能さを活用し同時に複数のタスクを並行動作させるため、FreeRTOSによるマルチタスク構成をとっています。
具体的には下記の4つのタスクを実行し、一部のタスク間連携にはキューを利用することで実装の責務分離とスケジュール実行の効率化を図っています。
- 圧力センサのデータの取得とフィルタリング
- フルカラーLEDの制御
- SORACOM Harvest へのデータ送信
- メタデータサービスによる設定値の取得
今回の実装で特に工夫したポイントは、SIM(通信回線)に情報を紐づけられる「メタデータサービス」の活用です。実はケーシング済みのものとブレッドボード上に構築した回路では同じ部材・構成のはずなのになぜか圧力センサの値が違って出力され、そのままでは個体ごとに都度スケッチを書き換える必要がありました。
しかし、メタデータサービスにしきい値などのパラメータを保存し、デバイス側から取得する構成のプログラムとしたことで個体(SIM または SIM グループ)ごとにユーザーコンソールから設定値を任意に変更できるようになったため、ハードウェア側のファームウェアをほぼ同一のプログラムで動作させることができました。
おわりに
プロトタイピングコーナーには多くのお客様にお立ち寄りいただき、スマートコースターを含めさまざまな感想やお客様からの相談をいただきました。特に今年は猛暑のため水分摂取量の管理や、重さを利用した製品を検討されているお客様の関心の高さがうかがえました。
ちなみに展示の際はケーシングしたものとブレッドボード上に回路を構成した(プロトタイピングっぽさのある)バージョンの2つを展示していたのですが、ケーシングしたものを見て「どこで売ってますか?」というご質問を受けました。スマートコースター自体は上記のとおり外装のみ既製品を利用した手作りデバイスなのですが、完成品っぽく見えたとすればとても嬉しく思います(喜)。
一方で、重さの計測は圧力のかかる場所や部材などによって変動が大きくなってしまうため物理量への変換は時間の関係で諦めざるを得なかったことと、もともとの光るコースターの素材をあまり活かせなかったのが残念でした。
今回スマートコースターのコンセプトの実装を通して、個人的には小さい Wi-Fi 対応マイコンが入手しやすくなったことで小型のデバイスも SORACOM に接続し活用できることと、メタデータサービスの認知度や活用法を広めていきたいと感じています。
― ソラコム岡田 (hisaya)