Kindle のディスプレイ応用例

ガジェット
スポンサーリンク

Kindle Paperwhite を Raspberry Pi で収集したセンシングデータの表示パネルとして使う方法を紹介します.

スポンサーリンク

はじめに

Kindle Paperwhite をディスプレイとして見た場合,以下のスペックとなります.

解像度
1072×1448.
FullHD には足りませんが,720p よりも画素数が多いです.
色深度
4bit グレースケール.
単純な白黒では無いので,境界部分にアンチエイリアスが適用された綺麗な表示ができます.
DPI
300.
最近の iPhone が 326 なので,ほとんど遜色ありません.

というわけで,白黒表示させるだけであれば,性能は十分.

表示例

実際にパネルとして使ってみるとこんな感じの表示になります.

コントラストが圧倒的で,ディスプレイや白黒液晶とは段違いの視認性が得られます.それでいて,低消費電力.言うことなしです.

このような表示を行うための全体の流れは次のようになります.

  1. 表示したい内容を画像ファイルとして生成
  2. 画像ファイルを Kindle の画面に描画

以下,それぞれについて具体的な内容を説明します.

コード

まず,Kindle に表示したい内容の画像を標準出力に出力するスクリプトを用意します.この際,画像ファイルは 1072×1448 サイズでグレースケール 8bit の PNG ファイルの形式とします.

Python の PIL を使う場合,以下のようにします.

私の場合,下記のような画像を生成するコードを用意しました.スクリプト全体を記事の末尾につけてありますので参考にしてください.

次に,この画像データを定期的に Kindle に送りつけて表示するために,下記のようなスクリプトを用意します.

KINDLE_IP および ['python' , 'create_image.py'] は環境に合わせて書き換えてください.

実行すると,Kindle に SSH ログインした上でホスト側から流し込んだ画像データを draw.png という名前で保存し,そのファイルを eips コマンドで表示します.なお,最初に powerd および framework を停止しています.

eips, powerd, framework については『Kindle Paperwhite のパネル化』で紹介しています.

あとは,ホスト側にて cron + setlock の組み合わせでこのコマンドが自動実行されるようにすれば,ディスプレイの完成です.

画像生成コード例

最後に,私がセンシングデータの描画のために使っている画像生成コードを紹介します.

フォントを使い分けるため PIL で地道に描画しているのコードはちょっと長めですが,やっていることは以下の内容です.

  • InfluxDB の REST API を使って,センシングデータを取得.
  • レイアウトを意識しながら画像として描画 (大半がこの部分のコード)
  • 生成した画像を PNG 形式で標準出力に出力

なお,フォントの使い分けしないのであれば,イラストソフトで SVG を作っておき,数字だけ文字列置換してから SVG から PNG に変換するのが手軽だと思います.

コメント