メインのラズパイ3B+にセンサー管理やらセサミ鍵やらたくさんのデータが集まり過ぎてすぐに落ちてしまうようになったので2台目のラズパイ3B+を導入しました。
それを機に7インチタッチセンサー付きディスプレイでキオスクモードにしてリレーのスイッチ オン・オフの表示専用にしました。その様子など書いていきます。
7インチ・HDMI 1024x600 タッチスクリーンモニタ
ebayで買った
買ったお店は在庫切れになってしまいましたが、こちら↓と同じものを買いました。
LCD 1024x600ドライバ
ドライバーは以下からダウンロードしました。
1 |
$ wget https://www.waveshare.com/w/upload/1/1e/LCD-show-180817.tar.gz |
こちらに↓数種類のサイズのドライバーがおいてあるようです。
こちら↓は製造元の取説など。
ドライバーインストール
ドライバーは/bootにコピーしてそこで解凍してインストールします。
1 2 3 4 5 6 |
$ sudo cp /home/pi/LCD-show-180817.tar.gz /boot/ $ cd /boot $ sudo tar xzvf /boot/LCD-show-180817.tar.gz $ cd LCD-show $ sudo chmod +x LCD35-show $ ./LCD35-show |
インストールが終わったら自動的に再起動。
LCD35-showを実行したら続いて1024×600のドライバーもインストール
1 2 3 |
$ cd /boot/LCD-show $ sudo chmod +x LCD7-1024x600-show $ ./LCD7-1024x600-show |
こちらも再起動する。
1024x600解像度変更
設定はドライバーで設定してくれているのでdisplay_rotate=3だけ設定する。その他のオプションはうまく行かない時に使うといいかもしれません。
1 2 3 4 5 6 7 8 9 |
$ sudo vim /boot/config.txt #max_usb_current=1 #hdmi_group=2 #hdmi_mode=87 #hdmi_cvt=1024 600 60 3 0 0 0 <span class="s1">display_rotate=3 #回転 </span> #hdmi_ignore_edid=0xa5000080 |
LCD35-showだとタッチができないのでLCD7C-showを入れた
タッチができないので、違うのを試す。↓これでうまくいった。
1 2 3 4 5 |
$ cd /home/pi $ git clone https://github.com/goodtft/LCD-show.git $ chmod -R 755 LCD-show $ cd LCD-show/ $ sudo ./LCD7C-show |
7インチタッチスクリーンディスプレイの注意点
以下の注意点を理解しておきましょう。
- ディスプレイの電源は、ラズパイのUSBに接続しないとタッチパネル使えない!!
- 電源オフにしてバックライトを消してもタッチセンサーは生きているのでタッチはできます。
Chromiumを全画面に設定
2つ目のラズパイ3+のモニタをGPIOコントロール画面にする。
起動時にchromium/Singleton*削除
~/.config/chromium/Singleton*、正常に終了できなかった場合に残るので再起動前にCronで削除する。
1 2 |
$ crontab -e #以下追加 @reboot rm -rf ~/.config/chromium/Singleton* |
.config/lxsession/LXDE-pi/autostartを編集する
これを変更、いらないのはコメントアウト「#」しておく。
1 2 3 4 5 |
$ vim /home/pi/.config/lxsession/LXDE-pi/autostart @lxpanel --profile LXDE-pi @pcmanfm --desktop --profile LXDE-pi @xscreensaver -no-splash #@point-rpi これいらない |
こちらでchromiumを起動する。
1 2 3 4 5 6 7 8 |
$ vim /home/pi/.config/lxsession/LXDE-pi/autostart #無い場合は新規 @xset s off #スクリーンセーバーをオフ @xset -dpms #Energy Star (DPMS)をオフ @xset s noblank #Xのロゴマークを表示する #@unclutter #マウスカーソルの表示を消す。使う場合はapt-getでunclutterしておく↓ @xserver-command=X -nocursor #マウスカーソルの表示を消すunclutterのどちらでも可 #chromiumをキオスクモードで起動 @chromium-browser --noerrdialogs --kiosk --incognito http://192.168.31.53:8000/test.html |
マウスカーソルをunclutterを使って消す場合は、以下のようにインストールしておく。
1 |
$ sudo apt-get install unclutter |
マウスカーソルはどちらにしてもタッチすると表示、指を離すと0.5秒くらいは表示されます。
現状はこれでもできるけど、LXDE-pi/autostartがなくなった?みたいなので他の案として、使えなくなったらsystemdでやる。
systemdでやったほうがいいかな?まぁしばらく放置。
画面を回転させたらタッチの位置がおかしくなったので改善
取説通りに設定してみる
この取説↓の「How to rotate Touch direction:」の部分。
http://www.lcdwiki.com/res/MPI7002/7inch_HDMI_Display-C_User_Manual(En).pdf
1 2 3 4 5 6 7 8 9 10 11 12 |
$ sudo apt-get install xserver-xorg-input-libinput $ sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/ $ sudo vim /etc/X11/xorg.conf.d/40-libinput.conf # touchscreenの部分Option "CalibrationMatrix" "0-1 1 1 0 0 0 0 1"を追加。 Section "InputClass" Identifier "libinput touchscreen catchall" MatchIsTouchscreen "on" Option "CalibrationMatrix" "0-1 1 1 0 0 0 0 1" MatchDevicePath "/dev/input/event*" Driver "libinput" EndSection |
でもタッチできなくなった・・・??と思ったらMicroUSBケーブルが電源のみで通信対応のではなかった。通信もできるMicroUSBケーブルだったらちゃんとタッチも使えた。
180度回転の場合は「Option “CalibrationMatrix” “-1 0 1 0 -1 1 0 0 1″」にする。
ここにあったキャリブレーションの取説。キャリブレーションはしなくていい。
http://www.lcdwiki.com/res/PublicFile/How_to_calibrate_the_Capacitive_Touch_Screen-V1.0.pdf
1 |
<del>$ sudo apt-get install xserver-xorg-input-evdev</del> |
1 2 3 |
<del>$ sudo rm /etc/X11/xorg.conf.d/99-calibration.conf $ sudo touch /etc/X11/xorg.conf.d/99-calibration.conf $ sudo apt-get install xinput-calibrator</del> |
起動時にエラーになった。
タッチがうまく行ったと思ったら・・・起動時に以下のようなエラーになった。
エンター押せば先に進むけど・・・キーボード接続しないといけないのが辛い。
「Cannot access to console, the root account is locked」の部分、なにかファイルがおかしいみたい。
1 2 3 4 5 |
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT mmcblk0 179:0 0 119.3G 0 disk ├─mmcblk0p1 179:1 0 41.8M 0 part /boot └─mmcblk0p2 179:2 0 119.2G 0 part / |
fstabがおかしくなってたので以下のようにした。
1 2 3 4 |
$ sudo vim /etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 |
これ↓で解決した。suloginをバックアップにして新しくする。
1 |
$ sudo mv /sbin/sulogin /sbin/sulogin.back |
うまく行かなかった方法
こちら↓のやり方はこのディスプレイではうまくいきませんでした。メモとして残しておきます。
1 2 |
<del>$ cd /home/pi/script/LCD-show $ sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb</del> |
1 |
<del>$ DISPLAY=:0.0 xinput_calibrator</del> |
赤い+字が表示されるので正確にタップしていく。4回。うまくいくと以下のような表示になる。失敗が多い。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<del> $ DISPLAY=:0.0 xinput_calibrator Calibrating standard Xorg driver "Fondar Fondar USB Touch" current calibration values: min_x=0, max_x=65535 and min_y=0, max_y=65535 If these values are estimated wrong, either supply it manually with the --precalib option, or run the 'get_precalib.sh' script to automatically get it (through HAL). --> Making the calibration permanent <-- copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf' (/usr/share/X11/xorg.conf.d/ in some distro's) Section "InputClass" Identifier "calibration" MatchProduct "Fondar Fondar USB Touch" Option "MinX" "56387" Option "MaxX" "57043" Option "MinY" "19280" Option "MaxY" "19408" Option "SwapXY" "1" # unless it was already set to 1 Option "InvertX" "0" # unless it was already set Option "InvertY" "0" # unless it was already set EndSection </del> |
ううん・・・タッチがぜんぜん違う方にタッチされる・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<del>$ sudo vim /etc/X11/xorg.conf.d/99-calibration.conf Section "InputClass" Identifier "calibration" MatchProduct "Fondar Fondar USB Touch" Option "MinX" "56260" Option "MaxX" "57498" Option "MinY" "19290" Option "MaxY" "19333" Option "SwapXY" "1" # unless it was already set to 1 Option "InvertX" "0" # unless it was already set Option "InvertY" "0" # unless it was already set EndSection </del> |
コレ入れて再起動してもダメ。
コメント