LoginSignup
1
4

More than 3 years have passed since last update.

【RaspberryPi】中華 LCD から米 LCD に乗り換えた話

Last updated at Posted at 2020-01-31

【Python】raspberry pi を置き時計に仕立てる
のその後です。あれからもう1年経とうとしているんですね。

RaspberryPi はもう手放せない愛機となりました。
サーバー機としての性能は申し分ないです。ファンついてないから静かだし。
筐体も邪魔にならないので不満はありません。ただ1つを除いては。

液晶ディスプレイが OFF できない

RaspberryPi を個室に置いて楽しんでいるのですが、寝るときに困ってます。
HDMI 接続のため液晶ディスプレイが点きっぱなしなのです。

部屋を暗くしても煌々と、光り輝いているわけです。

使い終わったらシャットダウンするような使い方なら問題ないんですが、サーバー機として使いたいのでシャットダウンは想定していません。

一応 HDMI の出力は OFF できるけど

以下のコマンドで出来るらしいというところまでは調べてます。
参考:Raspberry PiでHDMIで接続したディスプレイの制御

# OFF
$ tvservice -o

# ON
$ tvservice -p
$ fbset -depth 8
ioctl FBIOPUT_VSCREENINFO: Invalid argument
$ fbset -depth 24
ioctl FBIOPUT_VSCREENINFO: Invalid argument
$ xrefresh -d :0.0

でも一旦 OFF にすると、どうやっても ON にならないんですよねぇ。
しかも液晶ディスプレイのバックライトは結局点灯しっぱなしで RaspberryPi からは制御不可。

IMG_20200131_1725.jpg
¥3,000 のモニターでは所詮ここまで、ということなのでしょう。
お値段相応ではありますが。

バックライトまで消灯できる LCD が欲しい

ありました。執筆時点で ¥7,000 と倍近くの値段です。
【楽天市場】Adafruit PiTFT Plus 480x320 3.5 TFT 【2441】:マルツオンライン

しかし、良いものは買うべき。
ポチッと購入しました。
IMG_20200131_1727.jpg

PiTFT のセットアップ

Adafruit PiTFT 3.5" Touch Screen for Raspberry Pi にある Easy Install をやってみました。

$ cd ~
$ wget https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/adafruit-pitft.sh
$ chmod +x adafruit-pitft.sh
$ sudo ./adafruit-pitft.sh
Select configuration:
4. PiTFT 3.5" resistive touch (320x480)

SELECT 1-5: 4
Select rotation:
3. 270 degrees (landscape)

SELECT 1-4: 3

TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

エラーになりました。
全然 Easy じゃないっすね。

調べてみると似たようなエラーに遭遇した人がいたようで、
Adafruit customer service forums
「今朝、もう一度やってみたらうまくいったよ!」
と書いてあったので再起動したのかな、と思ったらその通りでした。

$ sudo reboot

$ sudo ./adafruit-pitft.sh
Select configuration:
4. PiTFT 3.5" resistive touch (320x480)

SELECT 1-5: 4
Select rotation:
3. 270 degrees (landscape)

SELECT 1-4: 3
Would you like the console to appear on the PiTFT display? [y/n] n
Would you like the HDMI display to mirror to the PiTFT display? [y/n] y

どーなってんだ?
と思いましたが、私の方でもうまくいったのでヨシとします。
ちなみに1番目の [y/n] に yes と応答するとコンソール起動になり、GUI 起動しなくなります。この記事を読んでお試しいただく方はご注意ください。

バックライトを消灯してみる

で、本命のバックライト消灯ってどうするのよ?
Adafruit PiTFT 3.5" Touch Screen for Raspberry Pi の 30 ページに書いてありました。

なるほど、GPIO #18 に対してコマンドを送ればいいってことですね。分かります。
(ホントは分かってない)

$ gpio -g mode 18 pwm
$ gpio pwmc 1000
$ gpio -g pwm 18 100
$ gpio -g pwm 18 1023
$ gpio -g pwm 18 0

というコマンドを入れてみましたが反応がありません。ん?こっちが本物?

$ sudo sh -c 'echo "0" > /sys/class/backlight/soc\:backlight/brightness'

IMG_20200131_1726.jpg
おぅ、いぇい。
無事 LCD のバックライトが消灯しました。画面は真っ暗です。
再び点灯させるには "0""1" に変えて実行すれば良いようで、これなら自動化できますね。

省エネ性能ってどうよ?

余談ですが、バックライトは電気を食うらしいです。
ということはバックライトを消灯できるようになった今、それなりの省エネが期待できるのでは?

以下の表は、それぞれ LCD を装着して可能な限り消灯し
12時間アイドルした後の計測結果です。

LCD 消費電力 CO2 排出量
HDMI 0.22kWh 0.12kgco2
PiTFT 0.10kWh 0.05kgco2

思った以上にバックライトの消費電力は大きいものだったようです。

まとめ

ほぼ同サイズ、ほぼ同機能で倍のコストがかかる LCD の交換でどうなるか少し不安でしたが、想像以上の結果が出てとても満足です。交換して正解でした。

次回はバックライト消灯を自動化してみようと思います。

2020.05.03 追記

ファームウェアアップデートを実施したら、消灯しなくなりました。
adafruit-pitft.sh を再実行してインストールしたところ、brightness ファイルの更新ではなく

# 再起動後初回実行
$ gpio -g mode 18 pwm
$ gpio pwmc 1000

# 点灯
$ gpio -g pwm 18 1023

# 消灯
$ gpio -g pwm 18 0

で動作するように変わってました。
こっちの方が正規のやり方のような気がしてたので、結果オーライですかね。

1
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4