Raspberry Pi KIOSK(5)WaveShare SPI LCD


よく見かけるSPI接続の3.5インチLCDです。タッチパネル用割り込みピンが17番でSPI1(Auxiliary SPI)のCS1とぶつかっているため、SPI1を使うとタッチパネルが反応しなくなります。

 

作業の前にRead-only Root-FSを書き込み可にします。

sudo mount -o remount,rw /mnt/boot-ro
sudo vi /mnt/boot-ro/config.txt
最後の行のinitramfs initrd.gzをコメントアウトして再起動する
sudo reboot

必要なカーネルモジュールをロードするようにします。

sudo vi /etc/modules-load.d/fbtft.conf
spi-bcm2835
flexfb
fbtft_device

コンソールを設定します。

sudo vi /boot/cmdline.txt
fbcon=map:1 fbcon=font:ProFont6x11を追加

fb0をfb1に変更します。

sudo vi /usr/share/X11/xorg.conf.d/99-fbturbo.conf

WaveShare SpotPear 3.2″ and 3.5/4.0″ TFT LCD overlays for the Raspberry PI and PI 2の手順に従ってオーバーレイをインストールします。最後の「:swapxy=1」が大事です。

git clone https://github.com/swkim01/waveshare-dtoverlays.git
sudo cp waveshare-dtoverlays/waveshare35a-overlay.dtb /boot/overlays/waveshare35a.dtbo
sudo vi /boot/config.txt
dtoverlay=waveshare35a:swapxy=1

タッチパネル用セットアップ

sudo apt-get install xserver-xorg-input-evdev
sudo cp -rf /usr/share/X11/xorg.conf.d/10-evdev.conf /usr/share/X11/xorg.conf.d/45-evdev.conf
sudo apt-get install xinput-calibrator

仮のキャリブレーション結果を/usr/share/X11/xorg.conf.d/99-calibration.confに書き込みます。

sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3900 200 200 3900"
        Option  "SwapAxes"      "0"
EndSection

再起動します。

SSHからxinput_calibratorを実行します。

DISPLAY=:0.0 xinput_calibrator

xinput_calibratorの出力を/usr/share/X11/xorg.conf.d/99-calibration.confに書き込みます。

sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "ADS7846 Touchscreen"
        Option  "Calibration"   "3916 230 238 3864"
        Option  "SwapAxes"      "0"
EndSection

Read-only Root-FSを書き込み不可に戻します。

sudo vi /boot/config.txt
最後の行のinitramfs initrd.gzのコメントアウトをはずして再起動する
sudo reboot