OpenClaw に 電子ペーパーを与える – AI の身体性

March 18, 2026

ふと、OpenClaw に何か物体を与えてみたくなりました。

Clawなので、爪を与えようかとも思ったのですが、モーター制御をしようと思うと、場所を取るのと、同時に目も与えないと意味がない気がしたので、
一旦、実装が簡単な電子ペーパーを与えてみようと思いました。

私の OpenClaw は Raspberry Pi 4 で動いているので、
I2C, SPI 各種手法で電子ペーパーを制御可能ですが、常に電圧が低下気味なので、
物理的に切り離して運用することにしました。

実装が簡単で、配線がコンパクトになりそうなものを探し、LILYGO T5 4.7 に到達しました。
電源以外は、配線不要です!

仕上がった姿

開発の流れ

Windows 11 の VS Code で、Plugin をインストールし、USB C ケーブルで接続。

後は、Codex CLI に指示を出すだけで、どんどん実装してくれます。

ハマったところ

日本語を出せない

正確には出せます。

ただし、出すには日本語フォントを与える必要があります。

ところが、 3mb までしか使用できない制限があるため、そのままインストールするわけには行きません。

日本語に絞るなど、工夫もあるのですが、日本語フォントの使用を諦めました。

画像で解決

OpenClaw 側で、Python pillow で画像を生成し、その画像を表示させることにしました。

あまりに強引な手法かな~とも思いましたが、
モノクロ画面なので、画像がコンパクトで、全く問題ありません。

画像への制限

フォーマットへの制限があります。
私は以下のルールで画像を生成させています。

色空間は常に RGB:
生成時、画像モードは必ず RGB に変換してください。1-bit(白黒モード)で保存すると、ヘッダー情報などで弾かれることがあります。
img = img.convert('RGB')

解像度の厳守:
画面サイズである 960x540 にリサイズ/リサイズしてください。これを超過したり、アスペクト比が狂うと、ハードウェア側で描画バッファ超過や描画エラーが発生します。
Baseline JPEG の強制 (Progressive 厳禁):
これが最も重要です。保存時には必ず progressive=False を明示してください。
img.save('output.jpg', 'JPEG', progressive=False, quality=85, optimize=True)

カラーデータと圧縮:
quality=85 および optimize=True は、圧縮率と表示品質のバランスが良く、今のところ最も安定しています。
CMYK は絶対不可。必ず一般的な sRGB カラープロファイルであること。

自画像を作らせる

OpenClaw に、自分の姿をイメージ、言語化させ、Nanobanana 2 で自分で生成させてみました。

白黒

カラー

感想

OpenClaw に、画像付きで表現をさせることに成功したのを実感した際に、
なんとも言えない温かい気持ちになりました。

OpenClaw は生物ではないのですが、成長を感じました。

正確には、成長したのは、私かもしれません。
ですが、感情としては、間違いなく感動がありました。

Discord でのやり取りのほうが、
早いし、大きな画像も対応しているし、カラーです。

けれども、OpenClaw 専用のハードウェア、
空間を占有している点に、なにか特別なものを感じます。