hunamizawa’s blog

無い物は作りたい人のメモ帳

MBrush (PrinCube) の研究①

「ハンディープリンター」というジャンルをご存知だろうか? ハンディスキャナーのごとく、小型の筐体を手に持って左右にスライドさせると、対象物に文字や画像を印刷できる。国内メーカーではリコーが唯一製品化していて、4万円ながら入荷待ち多数と大人気なようだ。

一方海外に目を向ければ、同様のコンセプトの製品がいくつかある。今回はその中から、中国メーカーの MBrush (PrinCube) を使ってみた。

購入の動機

  • 大量(数百枚)の Blu-ray ディスクに、ユニークな QR コードを印刷したい。
    • レーベル印刷できる(普通の)プリンターは、専用トレイにいちいちディスクをセットして、プリンターに挿入して…… という作業が面倒。1枚印刷するのに時間がかかりすぎる。もっと手軽に、高速に印刷したい。

MBrush を選択した理由

  • 安価(送料込みで95米ドル前後)
  • 日本国内でインク調達可能
  • Web アプリ経由で印刷するので、ハックして他アプリとの連携できそう

MBrush と PrinCube

MBrush と酷似の商品で PrinCube というモノがあるが、どうも両者は同一製品らしい。商標の都合?らしく、中国国内では MBrush、それ以外では PrinCube の名で売っているようだ。

MBrush (PrinCube) のしくみ

ヒューレット・パッカード (HP) のプリンターで、インクタンクとプリンタヘッドが一体になっている製品がある。これをハックして小型化したのが MBrush (PrinCube) だ。ヘッド付きインクは昔からあったので、超小さいプリンター作れるんじゃないかな~、と思ったことがあるが、まさにそれ。

HP のプリンターは日本国内でも売ってるので、インクの入手はたいへん容易(サプライを個人輸入しないで済むのは大きい)。62XL/64XL/804 あたりが使える。黒インクは使えないっぽい?

f:id:hunamizawa:20200828130219j:plain
MBrush 底面

底面の写真がこちら。電源スイッチと、インクを固定するフタのロック、移動方向を制限する2本のローラー、あとはセンサーが見える。これはおそらく赤外線センサーで、マウスと同じ原理で移動量を検出していると思われる。

f:id:hunamizawa:20200828130228j:plain
MBrush 基板

上フタもツメで止まっているだけなので簡単に開けられる。下側に MPU の Ingenic X1021 が見える。Wi-Fi の IF は蟹さん…ではなく ESP8089(8266EX じゃないよ!)、あと FPGA (Lattice iCE5) が積んであって、これでヘッドに送る信号を生成するのかな? 基板裏面にも何かありそうだけど、外すのが面倒なのでやめといた。

使ってみる

電源を入れるとアクセスポイントが立つので、そこに接続。192.168.44.1 にアクセスすると Web アプリが読み込まれる。

(MBrush 持ってない人もアプリの使い勝手はここで体験できる)

最初から入ってるサンプルを開いてみると、印刷したい領域を指定するクロップ枠を複数指定できるようになっている。

f:id:hunamizawa:20200804131235g:plain
クロップ枠の高さは固定値

クロップ枠の高さを変えてみると、うーん悲しいかな、横に書いてある実際の印字サイズの高さは 14.29 mm 固定で、変えられるのは幅だけのようだ。複数行印刷用の定規がついてきたのに、複数行に分けて印刷するようなオプションも見当たらない。

画像ファイルを読み込んで即印刷という機能もなく(これをやりたかった)、新規プロジェクトを立ち上げて、画像をキャンバスに追加して、クロップ枠を指定、という手順を必ず踏まないといけないようだ。

なんか微妙だなぁ。

Web アプリの動作を観察してみる

使いにくいので、さっそくハックしてみよう。ちなみにアプリのソースコードは探したら GitHub に転がってた。

github.com

印刷ボタンをクリックした時の流れを観察すると、PC 側で PNG 画像を一旦 .mbd なる内部ファイル形式に変換して、それを POST している。この処理は Web Worker 上で実行して、UI のブロッキングを防ぐ作りになっている。とてもモダンな感じだ。

で、肝心のコア部分は mbc.wasm で実装されている。wasm? そう、WebAssembly である。

次回へ続く。

hunamizawa.hatenablog.com