コンテンツへスキップ

1

ラズベリーパイ用の5インチのタッチパネルLCDモニタを買ってみた。HDMIなので、タッチパネル無しでよければ、ラズベリーパイの限りではない。
3.5インチのラズパイと同サイズのものも多く出回っているが、HDMIでなくSPIのものがほとんどなので、こちらを選んだ。

LCD
LCD

例によってAliexpress

27.03ドル(送料込) お店は、DIY ZONE

発注からshippedまで1日、受取まで計14日。
玄関受け渡しで、受取サイン要。

梱包は、サイズ合わせた緩衝材付きの箱入り。意図して叩きつけたりしない限り、大丈夫と思う。

梱包は十分
梱包は十分

お約束どおり、取説の類は一切無い。(´・ω・`)

例によってまず動かしてみる

今回は、ラズベリーパイ3を使った。IOをはめ込み、付属のHDMI折り返し治具を繋ぐ。組み立ては、以上(´・ω・`)

ラズパイとLCDを合体
ラズパイとLCDパネルを合体
HDMIを折り返す。これは賢いなぁ
HDMIを折り返す。これは賢いなぁ

普通にラズパイのUSBコネクタにのみ給電する。
5V2Aの電源で、IO接続の給電でパネルも駆動した。ちなみに、パネルの右上には、もともと電圧不足アイコンがたまに出てたので、それで大丈夫ということは、LCDモニタ自体の消費電力は低そう。

そして、苦もなく画面が表示され・・・・おや?欠けてる。

表示がかけてる
表示が欠けてる

横800に対して、VGAで表示してるみたいだ。自動では切り変わらないのね。
たしか、config.txtにディスプレイの設定があったような。。。

ラズパイ.orgのconfig.txtの資料を確認する。
ん・・・あれ、まじか!!DMTの800x480ってない。と、思ったら、そのずっと下のほうに、カスタマイズ設定の方法が載っていた。以下の内容をすでにhdmi_groupの記述があるところあたりに書き足す。

> sudo nano /boot/config.txt

# DMT
hdmi_group=2
# CUSTOM MODE
hdmi_mode=87
# width 800 height 480 framerate 60Hz aspect 6(15:9)
hdmi_cvt=800 480 60 6
# Normal DVI mode (No sound)
hdmi_drive=1

で、rebootする。

出た出た
出た出た

タッチパネル

さて、タッチパネル・・・
何を設定すれば良いのか。SPIを使ってるということはわかるけど、ドライバとか必要なんだろうか。そう、こんなときは、グーグル先生に聞いてみよう。
すると、ほどなく判明。同じくconfig.txtに書き足せば、良いようだ。

framebufferは、後述のキャリブレーションでうまくいかなくなるので、追記。dtparam=spi=onがコメントアウトされてるところあたりに書き足す。

> sudo nano /boot/config.txt

# the console framebuffer width in pixels
framebuffer_width=800
# the console framebuffer height in pixels
framebuffer_height=480
# SPI enable
dtparam=spi=on
# touch panel param
dtoverlay=ads7846,penirq=25,speed=10000,penirq_pull=2,xohms=150

これでrebootすると、タッチパネルが使えるようになった。

キャリブレーション

タッチパネルが使えるようになったけど、若干位置があってないので、キャリブレーションを行う。Xのアプリでできるようだ。
「xinput_calibrator」をインストールして実行する。'-'と'_'が、変わるので注意。

> sudo apt-get install xinput-calibrator
> xinput_calibrator

キャリブレーション画面
キャリブレーション画面

赤い十字表示が4ヶ所順に表示されるので、タッチパネルを正確にタッチする。

このとき、十字が4ヶ所表示されなかったり、ミスクリック判定される場合は、config.txtの記述が間違ってる可能性がある。

終了すると、結果が表示される。

キャリブレーション結果
キャリブレーション結果

結果の「Section "InputClass”」の内容を、指定の'/etc/X11/xorg.conf.d/99-calibration.conf'に記述する。ほとんどの場合、フォルダごと無いと思うので、以下な感じで。"186 3956 288 3924"のところは、 実際のキャリブレーション結果を反映のこと。

> sudo mkdir /etc/X11/xorg.conf.d
> sudo nano /etc/X11/xorg.conf.d/99-calibration.conf

Section "InputClass"
	Identifier	"calibration"
	MatchProduct	"ADS7846 Touchscreen"
	Option	"Calibration"	"186 3956 288 3924"
	Option	"SwapAxes"	"0"
EndSection

そして、再びrebootすると、ピッタリになった。

しかし、これが27ドルかぁ、すげぇな。