本文へ
ハクソク

世界を動かす技術を、日本語で。

プリンターの作り方

元記事: 原文(nishantjosh.dev)

概要

  • Xteink X3 を使った電子ペーパーのプリンター化体験記
  • IPPプロトコル によるMacBookからの直接印刷実現
  • メモリ制約 を解決するための独自画像処理パイプライン構築
  • BonjourやmDNS を活用したドライバレスプリンター発見
  • 印刷結果は SDカード保存 と画面表示に対応

Xteink X3をプリンター化するまで

  • Xteink X3 は完全プログラマブルなe-inkディスプレイデバイス
  • CrossPoint firmware に独自機能(ブートアニメーション、サイコロ、QRコード)追加
  • ファイル転送は ホットスポット経由のWebアップロード で手間がかかる仕様

「紙のように使いたい」発想とIPP探索

  • 紙のような操作感 を求め、MacBookから印刷する方法を模索
  • Internet Printing Protocol (IPP) を調査し、プリンターとして認識される要件を分析
  • モノクロ出力・300dpi・片面印刷 などの機能をアドバタイズ
  • Apple rasterとPWG raster 形式をサポート、Mac側で画像変換

BonjourとmDNSによるプリンター発見

  • Bonjour で_ipp._tcpサービス名「penguin」としてネットワークに公開
  • 対応フォーマットやアドレス もアドバタイズに含める
  • macOSのドライバレス発見 には_universalサブタイプ追加が必要
    • ESP-IDFのmDNS APIを直接利用し、Arduinoラッパーを回避

メモリ制約と画像処理パイプライン

  • Letterサイズ・300dpi画像 は約8.4MB、X3のRAMは400KB
  • Wi-Fiやプリンタサーバー も同時稼働のため、RAM残量は6.8KB
  • SDカードをmmapのように使う案 は不採用、C3のメモリマッピングはフラッシュ専用
  • ディスプレイRAMをバッファとして活用 し、画像を逐次処理
    • 受信した画像を行単位で縮小・ディザリングし、即座にディスプレイへ転送
    • 完全なページが到着するまで、作業領域を再利用

実際の印刷体験と成果

  • Previewでpenguinがプリンタ一覧に表示
  • Mushoku Tenseiのマンガ画像 を印刷し、Xteinkに即時表示
  • 印刷速度は約1秒 で完了、画質も良好
  • プリンタサーバーはX3本体で動作、Wi-Fiネットワーク参加や独自ホットスポット「literate-penguin」起動も可能

保存・閲覧機能と成果物

  • 印刷済みページはSDカードにBMP形式で保存
  • 本体から印刷履歴の閲覧も可能
  • 出力トレイは「フォルダ」 として実装
  • CrossPoint forkに全コード公開、プリンター実装も含む

提供: ハクソク · 要約更新:

AIによる日本語要約です。内容は原文とあわせてご確認ください。

Hacker Newsの議論を読む

Hackerたちの意見

ついにスタートレックのPADDが手に入ったね!

└

わお!!そんなこと考えたことなかった。

これすごい!!!理にかなってるよね。まさに電子書籍リーダーの使い方って感じ。

└

紙みたいに見えるなら、紙みたいに動いてほしいよね。

最近Xteinkをよく見るんだけど、X3とX4どっちを買った方がいいかな?理由はよくわからないけど、eInk中毒だから、どうしても欲しいんだよね。

└

X3がX4の後継機って面白いよね。唯一の欠点は、X4にはUSB-Cポートがあるのに、X3にはないこと。

└

俺は全部持ってるけど、X4 Proが一番だと思う。バックライトがあって、他のにはそれが本当に足りなかったんだよね。

└

1ヶ月くらい前にx4を買ったけど、全然後悔してない。大げさに聞こえるかもしれないけど、やっとスマホから解放された感じ。外出中に退屈な時は、サッと取り出して、前に読んでたところから再開できる。koboで読むのはもっと快適だけど、携帯性と…正直なところ、その魅力は最高だね。

これは素晴らしいアイデアだね!

コンセプトはすごく好きなんだけど、なんでPDFに印刷しなかったのかな?このデバイスはPDFを表示できないの?

└

これを考えてたんだけど、PDFのレンダリングは400KBのRAMのデバイスにはかなり負担がかかるんだよね。実際に動かすためにはたくさんのものが必要だけど、ROMにはそれが収まらないし。キンドルはRAMがたくさんあるけど、これはそうじゃなかった。

└

多分無理だと思う。RAMが足りてないみたいだし、CPUもそれに耐えられるか分からない。

Hacker Newsで議論の続きを見る