先日やっとRaspberry Pi Zero WHを手に入れまして、早速LCDを接続してミニPCを作ろうと思ったのですが、案外手こずったのでここに手順を記します。
0.目次
1. 準備するもの
2.LCDにデスクトップを表示する編
OSの導入などの手順は省きます。
OSのバージョンの差等によってうまくいく、行かないあるかもしれませんが、当環境はこの投稿時点の最新verです。
https://www.instructables.com/Rasberry-Pi-Zero-W-With-Arduino-TfT-ili9341/
これからの手順はほとんど上のサイトを参考にしています。
上のサイトでは若干いらないのでは?と思う部分があったので省略して、自分がいると思った部分だけ載せます。
Step.1
LCDとラズパイzeroを下の通り、ワイヤリングしていきます。
MOSIピンをGPIO 10 (SPI_MOSI)
MISOピンをGPIO 09 (SPI_MISO)
SCKピンをGPIO 11 (SPI_CLK)
CSピンを GPIO 08 (SPI_CE0_N)
DCピンをGPIO 24
ResetピンをGPIO 23
またLCDには3.3Vを供給します。
LCDのLEDピンには5Vと抵抗(1kくらい)で繋ぎます。
Step.2
ターミナルを起動し、下のコマンドでラズパイコンフィグを開きます.
sudo raspi-config
3 Interface Options -> P4 SPIよりSPIを有効化(enabled)します。
また、ここを参考に起動時にGUIが立ち上がらないようにしてください。
Step.3
次に下のコマンドを実行し、ファイルをnanoエディタで開きます。
自分はnanoが分かりやすいので使っていますが、他のでも大丈夫です。
エディタの使い方等は他のサイトを参照ください。
sudo nano /boot/config.txt
下にスクロールし、"dtparam=i2c_arm=on" , "dtparam=spi=on" の2文のコメントを外します。
最後に、ファイルの最後の部分に下の文を追記します。
dtparam=rotate=90 dtparam=speed=48000000 dtparam=xohms=100 dtparam=debug=4 gpu_mem=64
Step.4(重要)
sudo nano /boot/cmdline.txt
ファイルを開き、"root wait"の後に、スペースを挟んで下の一文を挿入します。
この文の後に改行はいれず、スペースだけにしてください。
fbcon=map:10 fbcon=font:ProFont6x11
これを挿入したらファイルを保存して閉じます
次に下のコマンドでファイルを開きます。
sudo nano /etc/modules
ファイルを開いたらファイルに下の5行を追加します。
spi-bcm2835 snd-bcm2835 i2c-bcm2708 flexfb fbtft_device
ここでひとまず再起動します。
ここまでの手順をミスなく行えれていれば、下の図のように、LCDにカーネル読み込みが表示され、最終的にコマンドラインが表示されます。
(HDMIディスプレイには起動時のカーネル読み込みみたいな部分だけ表示されると思います。)
この画面でCUIの操作はできるのですが、"startx"を打ってGUIに以降するにはもう少し作業が必要です。ここでstartxを打つとフリーズします。
Step.5
下のコマンドでファイルを開きます。
sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf
ファイルを開くとどこかに"fb0"という表記があると思います。
ここを"fb1"に変更し、保存してファイルを閉じます。
"reboot"コマンドで再起動すると、このLCDでGUIを表示できるようになります。
この手順はGUIを起動するにあたって、ディスプレイを選択するようなもので、fb0にあたるのがHDMI,fb1にあたるのがこのLCDです。
なのでこのLCDでGUIを起動するにはfb1に変更する必要があり、逆に元の状態に戻す(ディスプレイで表示するように戻す)にはfb0にまた変更する必要があります。
ここで"startx"コマンドを入力し、デスクトップを表示してみた結果が下の画像です。
最初、CUI画面をLCDで見るのではなく、HDMIで出力したくなった場合どこをどうすればいいのか分からなかったのですが、いろいろ試すとStep.4で追記した"fbcon=map:10"という部分が肝心なようで、これを追記することによってCUIがLCDに移行しているようです。
3.HDMI出力をLCDへコピーする編
ここで、先程の手順の状態のまま、HDMI出力をLCDへコピーすると、操作しなければならないコマンドラインがコピーの出力で見えなくなってしまいます。
なので、コマンドライン,CUIの表示をHDMI側に戻す必要があり、そのためには先述の通りStep.4で追記した"fbcon=map:10"を削除するのと、Step.5で述べたように"fb0"に変更します。
その上でStep.6へ進みます。
Step6.
以下の6コマンドを順に実行するだけです(要ネット環境)
sudo apt-get install cmake sudo git clone https://github.com/tasanakorn/rpi-fbcp.git mkdir build cd build cmake /home/pi/rpi-fbcp make sudo install fbcp /usr/local/bin/fbcp
すべてエラーなく完了したら、下のコマンドを実行してください。
fbcp &
すると、LCDにディスプレイのコピーが表示されると思います。
下の画像は実際に表示してみた画像です。
先程のデスクトップ画像より、HDMIをコピーしている分アイコンが小さいのがわかります。