
【Klipper×浮世絵】動く北斎が印刷状況を伝える!自作額縁LEDでEnder-3 V2のサイバー和風モニタを作った
はじめに:3Dプリンターの進捗確認、もっと江戸感を出そう
3Dプリンターで造形している最中、進捗や温度の確認はどうされていますか?
私の愛機のひとつEnder-3 V2はKlipper化しているため、Webブラウザやスマホからリアルタイムに状況を確認できます。
ただ、作業中に温度などが気になって、わざわざPCの別タブを開いたりスマホの画面を点灯させたりするのが、だんだん手間に感じてきました。
Klipper化したときに、もともとついていたディスプレイは取り外して「ディスプレイレス」仕様にしていました。
そこで、前回の記事で3Dプリントした「額縁付きのLEDパネル」を活用し、葛飾北斎の浮世絵『神奈川沖浪裏』がプリンターの状態に合わせてダイナミックに動くサイバー和風モニタを制作しました!
完成形のお披露目:名画が3Dプリンターの鼓動とシンクロする

まずは完成したモニタの様子から。
横64×縦32ドットの LEDパネル全体に北斎の『神奈川沖浪裏』を描き出し、プリンターのステータスに応じて以下のように画面が動きます。
印刷中(Printing): 大波が大きくせり上がり、白波の飛沫(しぶき)が激しく舞い散ります。波間の押送船もグラグラと揺れ動きます。
待機中(Standby / Idle): まるで呼吸をしているかのように、波がゆったりと穏やかに上下します。
加熱中(Heating): 朝焼けの空が茜橙や緋色(赤)にメラメラと揺らめき、富士山頂から熱気が立ちのぼります。
完了時(Complete): 富士山から眩しい旭光が差し込み、波頭が山吹色の金色にキラキラと輝いて造形終了を知らせてくれます。
右上の空のスペースには、プリンターのリアルタイム情報(残り時間、進捗率%、進捗バー、ノズル/ベッド温度)をすっきりと配置。
単なる情報表示用の無機質なモニタではなく、「デスクの上に飾れる動くインテリアアート」としても機能するように仕上げました。
ただし、解像度が荒いのと、さすがLEDディスプレイなので輝度が高すぎてもう少し見やすくする調整が必要そうです。
この辺りはまたいずれ。
使用したハードウェア・部材構成
今回のハードウェア構成は非常にシンプルです。配線は給電用のUSB-Cのみ。
LEDパネル: 64×32ドット P3 HUB75 RGB LEDマトリクスパネル
ピクセルピッチ3mmのコンパクトなパネルです。
マイコンボード: Waveshare ESP32-S3-RGB-Matrix
最大のポイントはこれ! パネル背面のHUB75コネクタに直接ドッキングできる形状になっているため、背面に挿すだけで配線作業が終わります。パネルにもよると思いますが、今回は電源ケーブルも不要でした。
額縁外装: 以前3Dプリントしたオリジナル額縁
A1 miniで2分割プリントしたPETG製の額縁パーツでパネルを挟み込み、卓上インテリアとしての佇まいを整えました。
3Dプリンター環境: Klipper化済み Creality Ender-3 V2

開発奮闘記
比較的スムーズではありましたが、実際に動かすまでには数々の壁がありました。AIを使いつつトラブルを潰していった開発プロセスを共有します。
ポイント①:画面が真っ暗!?特殊ドライバIC(FM6124HJ)の罠
最初にライブラリ(`ESP32-HUB75-MatrixPanel-I2S-DMA`)のサンプルを書き込んだ際、LEDパネルが完全に真っ暗で何も表示されず頭を抱えました。
配線ミスを疑いましたが直挿しボードなので配線はありません。
調べてみると、使用しているLEDパネルに搭載されているドライバICが一般的なものではなく、FM6124HJというちょっと古いタイプであることが判明。P3より低密度なパネルでは古くて安定したものはよく見かけます。
この辺りは前回の額縁の時に調べてはいたのですが、新規に作ったこともありハマりました。
コード上で以下のように明示的にドライバと通信クロックを指定することで、無事に鮮やかな光が灯りました!
mxconfig.driver = HUB75_I2S_CFG::FM6126A;
mxconfig.i2sspeed = HUB75_I2S_CFG::HZ_10M; // 10MHzAIはうまいこと動くようにFM6126Aの設定でやってくれました。
近い名前のICだと同じ設定が使えることがLEDだとよくあります。
ポイント②:Moonraker APIでWi-Fi経由のリアルタイムステータス取得
KlipperのAPIサーバーである「Moonraker」は、HTTPリクエストで手軽にプリンター情報をJSONで返してくれます。
以下のエンドポイントへGETリクエストを投げるだけで、必要な情報が1発ですべて取得できます。
http://<MOONRAKER_IP>:7125/printer/objects/query?print_stats&extruder&heater_bed&display_statusESP32のWi-Fi経由で1秒おきにポーリングし、`ArduinoJson` で温度(現在値・目標値)、印刷進捗率、経過時間をパースして残り時間を計算しています。
ポイント③:オンボードBOOTボタンによるスマート操作
ESP32-S3に備わっている「BOOTボタン(GPIO 0)」をUI操作用として有効活用しました。
短押し: 「通常モード(残り時間・進捗バー)」と「詳細モード(ノズル・ベッドの目標温度表示)」の切り替え
長押し(700ms): ディスプレイ輝度を3段階(暗 25 / 中 65 / 明 120)で切り替え
長押し時には中央に「L1:MIN」「L2:MID」といったインジケータが1.5秒間ポップアップ表示されます。夜間の印刷時にも眩しくない親切設計です。
ビルド時の設定(Arduino IDE)
ボード: `ESP32S3 Dev Module`
USB CDC On Boot: `Enabled`
PSRAM: `OPI PSRAM`
Flash Size: `16MB`
使用ライブラリ:
`ESP32-HUB75-MatrixPanel-I2S-DMA` (by mrfaptastic)
`ArduinoJson` (v6 または v7)
おわりに・作ってみた感想
3Dプリントした額縁とLEDパネル、そしてKlipperの連携によって、「実用ツール」と「インテリアアート」が心地よく融合したモニタが完成しました。
プリンターが動き出すと同時にデスク脇の波が激しくうねり、印刷完了と共に朝日が射し込む様子は、見ているだけでものづくりのモチベーションを高めてくれます。
今回はAIエージェントを利用しながら、「文字がはみ出るなら極小フォントを作ろう」「メモリを節約するために差分で波を動かそう」といった課題を一つずつクリアしていくプロセス自体が非常にエキサイティングでした。
Klipperユーザーの方や、デスク周りの自作ガジェットに興味がある方は、ぜひ挑戦してみてください!

最後まで読んでいただきありがとうございます!「スキ」やフォローをいただけると励みになります。