RTOS使用の電子ペーパーとサーボモーターによる視覚効果のあるカレンダー
電子ペーパーでの画像/UI表示と同時操作への対応
技術スタック
- マイコン: ESP32-S3
- 言語: C++
- ライブラリ: FreeRTOS
- ライブラリ: ESP32Servo
概要
サークルの部室に置くカレンダーを作りたいと考えてチームで制作した,電子ペーパーとサーボモーターを組み合わせたデバイスです. 当初はGoogleカレンダーから予定を同期して表示することを目指していましたが,制作期間が足りず,最終的には電子ペーパーへの文字と画像の表示までの実装となりました.
電子ペーパーは3色表示の4.2インチパネルをSPIで接続し,テキストを中央揃えで描画する画面と,ビットマップ画像を全面に描画する画面を切り替えます. 画面の切り替えに合わせてサーボモーターを動かし,表示の変化に動きを伴う視覚効果を加えました.
操作には4つのボタンを使い,いずれもGPIO割り込みで入力を受け付けます. 割り込みハンドラでは前回の入力時刻をクリティカルセクションで保護しながら参照し,一定時間内の連続入力を無視します. 受け付けた入力はFreeRTOSのタスク通知でメインタスクに伝え,メインタスクは通知が届くまでブロックして待機します. これにより,描画やサーボの動作中にボタンが押されたり複数のボタンが同時に押されたりしても,処理が重複せず一度だけ実行されるようにしています.