ラズパイに小さいLCDを付けてデスクトップを表示する

 AliExpressで購入した1.3inchのIPS液晶を活用できることが分かったので、まずは液晶にRaspbianのデスクトップを表示するまでの手順を紹介します。

【調査中】2021現在の最新OSでは動作しません。

 最新の環境で構築したところ、LCDが点かなくなりました。この記事で利用している、flexfbとfbtft_deviceというカーネルモジュールがKernel5.4で無くなってしまったようです。対応方法は現在調べていますが、使う場合はRaspberryPiOSを2020-08-20よりも前に戻す必要があります。(kernel4.19のもの。)

https://github.com/notro/fbtft/wiki#fbtft_device-and-flexfb-are-gone-in-54

用意するもの

  • RaspberryPi 本体と電源(Zeroと3B+と4Bで確認しました。)
    ※4Bは後述する設定を追加する必要があります。
  • OS(Raspbian StretchとBusterで確認)
  • 1.3inch IPS液晶(ST7789)

Raspbian Busterでは動きませんでした。
★2019/11/22追記
 同じ設定方法でBusterでも動作しました。

Busterで動いている様子

RaspbianStretchのダウンロード

 古いバージョンのRaspbianはRaspbianのダウンロードが遅いとき、または古いバージョンを使いたい時はミラーサイトで紹介しているミラーサイトからダウンロードできます。Stretchの最終バージョンは下記の2019-04-09です。

  http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2019-04-09/

セットアップ

 下記のブログを参照してセットアップします。今回の記事ではrc.localを使わずsystemdを使う方法、解像度の設定、接続ピンについて補足します。

 超ちっちゃいCS無しの激安IPS液晶にRaspberry Piから画面を出す方法。(OMORODIVE)

補足

サービスの起動

 元記事では、fbcpを起動する方法にrc.localを使っていますが、systemdを使う方が失敗しません。下記の手順でサービスを追加します。

①Unitファイルの作成

 /lib/systemd/systemにminilcd.serviceファイルを作成します。(minilcdは任意)

sudo vi /lib/systemd/system/minilcd.service

②Unitファイルの中身

 Unitファイルには下記のように書き込みます。

[Unit]
Description=Service for 1.3inch lcd display
After=lightdm.service

[Service]
Type=forking
ExecStart=/usr/local/bin/fbcp
Restart=always
User=pi

[Install]
WantedBy=multi-user.target

③サービス

 下記のようにコマンドを実行してサービス登録します。

sudo systemctl daemon-reload
sudo systemctl enable minilcd.service

 すべての設定が終わったら再起動して動作確認してください。

解像度について

 今回使用した1.3inchのLCDは解像度は240×240なのですが、それ以外でも拡大・縮小して表示することができます。LCDに表示する解像度は/boot/config.txtの下記の行を変更します。元記事では300×300で設定されています。

 解像度を上げると実用性はないですが、VNCで接続する時に広くデスクトップを使うことができます。

●240×240にしたい場合

hdmi_cvt=240 240 60 1 0 0 0

●1024×768にしたい場合

hdmi_cvt=1024 768 60 1 0 0 0

 設定できる最小は80×80が限度でした。(それ以下は表示されず。)

変更可能なGPIO

 /etc/modprove.d/fbtft.confを書き換えればRST,DC,BLKと接続するGPIOは変更可能です。元記事ではreset=RST=GPIO27, dc=DC=GPIO25, led=BLK=GPIO24で説明されています。

 ちなみにBLKはバックライトLEDの点灯制御なので3.3VかGNDでも可能。(GND接続の場合は少し暗くなります)

gpios=reset:27,dc:25,led:24

コンソール(CUI)での使用

 コンソールで使用したい場合は下記のコマンドを実行後、再起動すると表示されるようになります。

con2fbmap 1 1
sudo raspi-config nonint do_boot_behaviour B2

★raspi-config nonintのオプション
do_boot_behaviour B1はコンソール(ログイン必要)
do_boot_behaviour B2はコンソール(オートログイン)

ラズパイ4Bでの設定

 ラズパイ4Bでは、この設定を行うとGPUの動画再生支援を受けられなくなり全体の動作が遅くなる場合があります。

/boot/config.txtを編集する。

[pi4]セクションの下記の1行をコメントアウトします。

#dtoverlay=vc4-fkms-v3d

その他知ってると便利な技

 自分でセットアップした時に使った技を紹介します。

VNC ServerのON/OFFコマンド

 raspi-configをコマンドラインで実行する。で紹介してますが、下記のコマンドを実行するだけでVNC ServerのON/OFF切り替えが可能です。

# VNC ServerをONにする。
sudo raspi-config nonint do_vnc 0

# VNC ServerをOFFにする。
sudo raspi-config nonint do_vnc 1

AliExpressでの購入

 AliExpressだと2019/11/21時点で¥248ぐらいで購入可能です。(日数も送料もかかるのでそんなに個数必要ない方はAmazonの方がいいでしょう。)

1.3 inch IPS 液晶の一覧

AliExpressでの購入時の注意

  • 配送日時は指定できません。
  • 届くまでに日数がかかります。(数週間~2カ月ぐらい)
  • 問い合わせ・不良品や返品等の対応は英語でする必要があります。
  • 送料もかかります。(無料配送は追跡できない等のデメリットがあるのでお勧めしません。)

おわりに

 今回はBarrierというキーボード・マウス共有ソフトを実行する時にモニターが必要になったため、小さい液晶を使えば実現できそうだったので試したところ上手く行きました。(Barrierの詳細については後日また記事にします。)

 他にもラズパイの稼働状況を目視できるので便利かもしれません。

 IPS液晶なので結構綺麗に見えます。是非挑戦してみましょう。

ラズパイに小さいLCDを付けてデスクトップを表示する” に対して1件のコメントがあります。

  1. zero user より:

    有用な記事ありがとうございます。
    元記事含めて呼んで設定したのですが、なぜか表示されるのはモニタ側でSPIスクリーン側ではない状況です。なにかチェックのポイントなどありますでしょうか?
    OSがbursterではダメなのでしょうか。。。。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です