
3Dプリンターの印刷は数時間に及ぶことが多い。その間、温度や進捗を確認するたびにアプリを立ち上げるのは手間だ。専用の小型ダッシュボードをデスクに置いておけば済む話だが、市販品は少なく、あっても本体より高価になりがちだ。
GitHubユーザーのKeralots氏(Reddit: AdvertisingFormal746)が公開した「BambuHelper」は、そのニーズをほぼ最小限のコストで解決する。ESP32-S3 Super Mini(約480円)と1.54インチのST7789 240×240 SPIディスプレイ(約480円)、合計約960円のハードウェアで、ノズル温度、ベッド温度、ファン速度、印刷進捗、残り時間などをアーク型ゲージとともにリアルタイム表示するダッシュボードだ。
プリンターとの通信はMQTT over TLSを使う。接続方式は2種類あり、P1S/X1C/A1 Miniなどはプリンター本体のMQTTブローカーにLAN経由で直接接続する。H2/P2シリーズなどクラウド専用モデルはBambu Labのクラウド経由で接続し、ブラウザのCookieから取得したアクセストークンで認証する。
マイコン上でこの実装を動かすにはいくつかの工夫が必要だった。TLS接続はWiFiClientSecureがセッションあたり約40KB のヒープを消費するため、クラウドAPIの呼び出しとMQTT接続を同時に張ることができない。またプリンターが送信するステータスメッセージは10〜20KBに及ぶため、ArduinoJson 7のフィルター機能で必要なフィールドだけを抽出し、深くネストされたフィールドはmemmem()でバイト列を先に探してから部分的にパースするアプローチをとった。P1Sのように差分のみを送るプリンターには、初回接続時にフル状態を要求し、以後のデルタ更新をマージして状態を維持する仕組みも実装されている。現時点でのRAM消費は328KBのうち約48KBで、余裕がある。
セットアップにPlatformIOなどのツールチェーンは不要だ。GitHubのReleasesページからバイナリをダウンロードし、ESP Web Flasherを使ってブラウザからフラッシュできる。初回起動時はESP32がキャプティブポータルを立ち上げ、Wi-Fi設定やプリンター情報をブラウザ上で入力するだけで使い始められる。
ESP32-S3を使えば2台のプリンターを同時監視することもでき、印刷中のプリンターを自動的に前面に表示するスマートローテーション機能も備える。筐体のSTLファイルはMakerWorldにコミュニティメンバーが公開しており、3Dプリンターがあれば合わせて製作できる。
現時点でP1SとH2Cでの動作が確認されており、ソースコードはGitHubで公開されている。

