BOOX Mira Pro と Raspberry Pi を使って最新の気象情報を表示するパネルを作る方法を紹介します.
はじめに
家族が毎日気にする情報といえば,気象情報.雨が降るかはもちろん気になるし,気温や風の強さによっては服装も変えないといけない.であれば,リビングの壁に常に最新の気象情報が便利になるはず!ということで,Raspberry Pi を使って作ってみました.
必要なもの
Raspberry Pi の他には下記のものが必要になります.
- 電子ペーパーディスプレイです.解像度は 3200×1800で,Kindle と同じく16段階のグレースケール表示対応で表示が綺麗です.
- ディスプレイを壁に固定するための金具です.
- 上記の金具を壁に固定するのに使用します.フックは使わず,樹脂部品と釘のみを使います.
Raspberry Pi の設定
BOOX Mira Pro への出力は Raspberry Pi で行います.BOOX Mira Pro をデジタルサイネージとして使用するにはいくつか設定が必要となります.
出力解像度の変更
BOOX Mira Pro は解像度が 3200×1800 なので,この解像度で出力を行うように設定します.
Raspberry Pi の解像度の設定は,/boot/firmware/usercfg.txt
で hdmi_mode
を指定することで簡単に変更できますが,この方法で指定できるのは下記にリストアップされている解像度に限られます.
残念ながら3200×1800 はリストにありません.そこで,下記のようなカスタム設定を/boot/firmware/usercfg.txt
に記載します.
1 2 3 4 5 6 7 |
framebuffer_width=3200 framebuffer_height=1800 max_framebuffer_width=3200 max_framebuffer_height=1800 hdmi_group=2 hdmi_mode=87 hdmi_timings=3200 1 48 32 80 1800 1 3 5 54 0 0 0 10 0 183422400 3 |
上記では,解像度 3200×1800,フレームレート 10を指定しています.
再起動すると有効になります.
フレームバッファの書き換え
今回の用途の場合,静止画像だけを全面表示することが必要になります.実現方法はいくつかあると思いますが,フレームバッファを直接書き換えるのが手っ取り早いです.こういった用途に便利に使える fbi
コマンドを導入しておきます.
1 |
% sudo apt-get install -y fbi |
下記のように実行すると,display.png
を全面表示できます.
1 |
% sudo fbi -1 -T 1 -d /dev/fb0 --noverbose display.png |
画面消灯防止
デフォルトだと10分経過すると画面が消灯してしまうので,これを防止するために,/boot/firmware/cmdline.txt
に consoleblank=0
を追記します.
1 |
console=serial0,115200 dwc_otg.lpm_enable=0 console=tty1 root=LABEL=writable rootfstype=ext4 consoleblank=0 rootwait fixrtc quiet splash |
表示する画像の生成
表示用の3200×1800 のグレーススケール画像を準備します.
以下に留意して表示したい情報を詰め込むと仕上がりが良くなります.
- 濃淡の活用
- 文字を全て黒で描画するのではなく,16bit スケールが可能にする濃淡を活かすと,表現の幅が広がります.
- フォント
- 色が使えない分,使用するフォントが印象を大きく左右します.例えば Frutiger のような視認性に優れたフォントを数字の描画に使用すると,すっきりして見やすくなります.
以上を踏まえて,こんな感じの画像を生成するプログラムを作成しました.
雨量や風速に応じて濃さを変えて描画することで,パット見て状況が捉えられるように工夫しています.
ソースコード等は下記から取得可能です.
表示例
先ほどの画像を fbi
コマンドで表示するとこんな感じになります.
コントラストが高いので,グレースケールでも非常に見やすいです.
我が家では,前述の e-ink_weather_panel を自宅の Kubernetes クラスタで動かして,2分毎更新表示するようにして運用しています.
コメント