Categories: 工作・開発

ESP32-C3とRustで作る卓上の猫、触るとゴロゴロ鳴き22分で休憩を促す

集中して作業していると、つい休憩を取り忘れてしまう。そんな場面に、見ていて和む形で応えてくれるガジェットがある。GitHubで「esp-pet」として公開された、ESP32-C3で動く卓上の電子ペットだ。「SSD1306」のOLEDに猫の顔を表示し、周囲の温度や湿度、明るさに反応しながら、作業の合間に「撫でて」とねだってくる。

猫の振る舞いは、置かれた環境によって変わる。暗くなると眠り、明るくなるとあくびをして目を覚ます。気温が高いと喉が渇いたそぶりを見せ、寒いと震える。タッチセンサーに触れると、ゴロゴロと喉を鳴らす。明暗の判定にはLDR(光が当たると抵抗値が変わる素子)を、温度と湿度の計測には「DHT」センサーを使っている。

面白いのは、タッチセンサーの長押しで切り替わる作業タイマーだ。約22分が過ぎるとブザーが鳴り、猫が「撫でて」と要求してくる。席を立って休憩を取るきっかけにする狙いで、一定時間の集中と短い休憩を繰り返すポモドーロ・テクニックのような時間管理を、猫の世話という形に落とし込んでいる。

技術的に目を引くのは、ファームウェアがすべてRustで書かれている点だ。ESP32の開発はArduinoやC言語向けのESP-IDFが一般的だが、この作品はRustの標準ライブラリを使い、「esp-idf-svc」と「esp-idf-hal」というクレート(部品化されたライブラリ)を通してESP-IDFを呼び出している。猫のアニメーションや音、環境の監視は、状況に応じて動作を切り替えるステートマシンで管理する。触られた回数や設定はNVS(電源を切っても消えないメモリ領域)に保存し、再起動しても覚えている。

制作者は電気の扱いが得意ではなかったが、ESP32をきっかけにのめり込んだという。ピン配置図の読み方やはんだ付け、部品同士がどう通信するかを学びながら組み上げた。3Dプリントは友人の誕生日に間に合わなかったため、ユニバーサル基板に部品をはんだ付けし、時計の空き箱にピンで固定して仕上げている。電源はUSB-Cから取る。専用の道具がなくても、手元の部品と学ぶ意欲があればインタラクティブな小物を作れることを示す一台だろう。

関連情報

FabScene編集部

FabScene編集部