小型OLEDディスプレイをコンソールとして使う
ちょっと秋葉原による時間があったので 128×64のELディスプレイを買ってきました。価格は580円でした。ネットでこの辺の情報を調べていたら「コンソール」として使えるというのを見かけたので試してみました。
とても小さいです。既にピンがついているのでブレッドボードだったら簡単に使えますね?
既にi2cを配線してしまっているので横からポリウレタン導線をつかってパッチしていきます。正直久しぶりすぎて疲れた。1時間くらいかけてようやく4本を配線した感じです。今回は、vccは3.3Vの方に接続しました。裏は汚いのでお見せできません。
マニュアルにも書いて有りましたが配線が間違ってなかったら 0x3c として接続されることがわかります。
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --
ドライバはいつもお世話になっている Adafruit 社が出してくれているので利用します。
sudo apt-get install git
cd /home/pi/local
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install
サンプルコードもついていますので起動してみます。
cd ~/local/Adafruit_Python_SSD1306/examples
python stats.py
縦が64ドットあるので 8×8フォントだと4行表示できるのでいい感じです。 stats.py の中に解像度を指定している箇所があるので変更しておきましょう。ディフォルトだと32ドットで起動してきます
次にやってみたかったコンソール表示をしてみます。
やり方は上記のサイトのままで動きます。
rootユーザで実施します。
cp oled /bin/oled
chmod a+x /bin/oled
export DEBIAN_FRONTEND=noninteractive
apt-get install console-data
次に /etc/fb.modes の最後についきます。
mode "128x64-60"
# D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
geometry 128 64 128 64 8
timings 39722 48 16 33 10 96 2
endmode
サービスとして今回道入した oled を動かすために /etc/systemd/system/oled.service を作成します。
[Unit]
Description = oled daemon
After = multi-user.target
# After=display-manager.service
[Service]
ExecStartPre=/bin/bash -c "/bin/sleep 10; /bin/chvt 1; /bin/fbset '128x64-60'; /bin/setfont 'alt-8x8'"
ExecStopPost=/bin/bash -c "/bin/fbset '800x600-60'; /bin/setfont 'default8x16'"
ExecStart = /bin/oled
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target
自動起動を登録します
systemctl enable oled
この状態で再起動ししばらくすると下のように表示されます。
これは便利だと思います。仮にネットワークアドレスが不明な場合など小さいながらもコンソールが使えるので気合で頑張れる(乗り切れる)はずです。USB接続のキーボードを使えば普通に動きます。(キーボードが日本語キーボードの場合には raspi-configで設定をしておくと良いです)、また先のリンク先にも書いていますが画面が狭いのでプロンプトを export PS1=">"
にしておくと良いですね。
最後に日本語フォントを利用するためにフォントを道入しておきます。
こちらのフォントを指定すればプログラム(python)内で指定すれば利用できるようになります。極小ですが読めます。
考えも特になくディスプレイ付けてしまったのでボタン取り付けて表示される内容を切り替えれるなどしておきたいです。