Categories: 工作・開発

ESP32向けデジタル時計ファームウェアを個人が開発ーー多数のディスプレイに対応するライブラリと統合

ESP32で動くデジタル時計を作りたいが、手持ちのディスプレイに対応したコードを探すのは面倒だ。ある開発者が公開した「retro_clock」は、ディスプレイ抽象化ライブラリとの統合により、この問題を解消した。

retro_clockは、ESP32向けのNTP同期式デジタル時計ファームウェアだ。レトロなセグメント表示風のフォントで時刻を表示する。開発者が新たに公開したディスプレイ抽象化ライブラリ「htcw_esp_panel」と組み合わせることで、16種類以上のESP32開発ボードとディスプレイの組み合わせに対応した。

htcw_esp_panelは、ESP32のLCD Panel APIとLCD Touch APIを抽象化し、ディスプレイやタッチパネル、電源管理の設定を簡略化するライブラリだ。SPI、I2C、I8080、RGB、MIPIといったディスプレイ接続方式に対応する。タッチパネルはI2CとSPIをサポートし、GPIOボタンやSDカード(SPIまたはMMC)の制御機能も備える。

QRコードで初期設定、スマートフォンから操作

retro_clockの初期設定はスマートフォンから実行する。起動時に表示されるQRコードを読み取ってアクセスポイントに接続すると、設定用ポータルが開く。Wi-FiのSSIDとパスワード、タイムゾーン、12時間/24時間表示の切り替えを設定できる。設定完了後は自動でNTPサーバーと同期し、時刻表示を開始する。

元々はTTGO T1 Display向けに開発されたが、htcw_esp_panelとの統合により対応デバイスが拡大した。カスタムキットへの対応も可能で、ブラウザー上で動作するPanel Generator Toolを使えば、独自のディスプレイ構成を定義するヘッダーファイルを生成できる。

開発者によると、大型ディスプレイでベクターフォントを描画する際に処理が追いつかない場合があるという。また、一部のタッチコントローラー(FT6x36)でフリーズが発生する問題があったが、最新版ではデバイスへのアクセス頻度を制限するレートリミッターを追加して対処した。ソースコードはGitHubで公開されており、PlatformIOから利用できる。

関連情報

retro_clock(GitHub)

FabScene編集部

FabScene編集部