ESP32の画面をAIエージェントに渡す「esprec」、USB 1本でPNG化

組み込み機器のUIを直したあと、それが意図どおりに表示されているかを確かめる手段は限られる。実機の画面をスマートフォンで撮るか、目で見て判断するくらいだ。コーディングを任せているAIエージェントには、画面を見る手段そのものがない。

Tig氏が公開したツール「esprec」は、ESP32の画面に映っているものをカメラを使わずに取り出す。デバイス側は最後に描画した内容の全画面コピーをRGB565形式で保持しておき、コマンドを受けるとUSBシリアル経由で送り出す。受け取ったホスト側がPNGの静止画やGIFに組み立てる。同氏がターミナルUI向けに作った「tuirec」の組み込み版にあたる。

デバイス側はキャプチャと送出だけを担い、PNGやGIFの生成はしない。ホスト側がフレームを要求し、整合性を検査してから後処理する。通信は「ESPREC1」という形式で、テキストとして安全なbase64にメタデータとラスターのCRCを添え、途切れや改変を検出したらその場で失敗させる。

製品側のファームウェアには条件がある。部分的な描画転送だけでは足りず、最後に描いた画面全体をRGB565で持っておく必要がある。送出中はESP_LOGの出力を止めないと、ログがペイロードを壊す。

同氏は自分が使っているプロンプトも挙げている。UIを書き込んだエージェントに、仕様と合っているかを自分で確かめさせる。機能ごとのゴールデン画像を作り、QEMU上のファームウェアがそこから外れたらCIで落ちるテストを組む。HTMLのモックアップを渡してLVGLで実機にUIを作らせ、キャプチャしながら一致するまで直させる。

動きのある画面も記録できる。キャプチャ中はbase64への変換を通さず、画面のコピーをRAMに、収まらなければSPIFFSへ書き込む。後からホストが読み出し、記録した時刻の間隔でGIFを組み立てる。ESP32では約5Hzで、連続保存は解像度を4分の1の80×60に落としてフラッシュの書き込み速度に合わせている。通信速度115200bpsでは、全画面の静止画1枚に数秒かかるとしている。

ホスト側はPythonのパッケージとして配布し、snapshotやrecord、spoolといったコマンドを備える。ライセンスはApache-2.0を採る。ESP32のUIをAIエージェントに任せて反復させたい人には、試す価値のある作りだろう。

関連情報

fabsceneの更新情報はXで配信中です

この記事の感想・意見をSNSで共有しよう
  • URLをコピーしました!

最新記事

YouTube / PodCast

【PR】読んで役立つ注目記事

目次