PiTFT Plus 2.8 Capacitive セットアップ
Raspberry Piの周辺機器見てたら、良さげなディスプレイがありました。Raspberry Pi 2/3とほぼ同じサイズ感。タッチパネルにGPIOに接続された押しボタン付きとなかなか良さそう。仕事でも何かと使えそうなので購入。セットアップしてみたら予想外にハマったのでメモっておきます。
環境は以下です。
- Raspberry Pi 3
- PiFTF Plus 2.8inch Capacitive
- Raspbian Jessie with PIXEL(2016/09/23 released)
PiTFT Plus - Raspberry Pi A+/B+/2用 2.8インチTFT+静電容量式タッチスクリーン液晶
- 出版社/メーカー: スイッチサイエンス
- メディア: エレクトロニクス
- この商品を含むブログを見る
以降は、以下の記事の通り初期セットアップされていることが前提となります。
PiTFTとRaspberry Piの接続
まずPiTFTの箱。
スイッチサイエンスさんいつもお世話になってまーす!
中身はこんな感じ
特に説明書とかは無いので勘で接続。といってもピンペッダに挿すだけなので迷うことはないと思います。
こうしか無いだろ!ってくらいフィット感あります。
接続はこれでOK。
画像表示設定
まずは画像が表示されるように設定します。
以下でPiTFT用のセットアップを実施。
$ curl -SLs https://apt.adafruit.com/add-pin | sudo bash $ sudo apt-get install raspberrypi-bootloader $ sudo apt-get install adafruit-pitft-helper $ sudo adafruit-pitft-helper -t 28c
2行目は結構時間かかるので、コーヒーでも飲みながらゆっくり待ちましょう。最後の行のsudo adafruit-pitft-helper -t 28c
のオプションは、タッチパネルがCapacitiveタイプだと28c
、Resisterタイプだと28r
になります。自分はCapacitiveタイプを買ったので28c
を選択します。
ここで一旦再起動すればOKなはずなのだけど一向に表示されません。この後すごいハマったのですが、色々調べた結果+野生の勘で/boot/config.txt
を1行修正すればOKでした。まずは以下コマンドでファイル編集します。
$ sudo vim /boot/config.txt
以下のように修正
修正前 dtoverlay=pitft28c,rotate=90,speed=32000000,fps=20 修正後 dtoverlay=pitft28-capacitive,rotate=90,speed=32000000,fps=20
再起動
$ sudo shutdown -r now
これで画面が正しく表示されます。
中々良い感じです。
タッチパネルキャリブレーション
タッチもこの状態で一応効くのですが、座標がおかしいのでキャリブレーションします。以下実行すると自動でキャリブレーションできます。
$ sudo adafruit-pitft-touch-cal -t 28c
しかし、ここにも罠が。udevが正しく設定されていません。タッチパネルのドライバを確認するために以下実行。
$ dmesg | grep ft6
以下のように表示されるので、ft6236
を使っていることがわかります。
[ 4.067558] input: ft6236 as /devices/platform/soc/3f804000.i2c/i2c-1/1-0038/input/input0
udevファイル(/etc/udev/rules.d/95-ft6206.rules
)を見ると、なぜかft6206
で設定されています。これが原因のようなので、まずファイル名変更(変えなくてもよいけど紛らわしいので念のため)。
$ sudo mv /etc/udev/rules.d/95-ft6206.rules /etc/udev/rules.d/95-ft6236.rules
続いて、中身を書き換えます。
$ sudo vim /etc/udev/rules.d/95-ft6236.rules
以下のようにft6206
をft6236
に書き換えます。これが大事。大事マンブラザーズ。
SUBSYSTEM=="input", ATTRS{name}=="ft6236", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
ここで一旦再起動します
$ sudo shutdonw -r now
起動したら以下実行します。
$ ls -l /dev/input/touchscreen
以下のような表示が出たらudevの設定はOKです。
lrwxrwxrwx 1 root root 6 10月 20 00:24 /dev/input/touchscreen -> event0
以下でタッチテストができます。
$ sudo evtest /dev/input/touchscreen
ただ、ここでタッチの上下、左右軸が反対なことに気が付きます。参考リンク一生懸命見ながら調べると /etc/X11/xorg.conf.d/99-calibration.conf
の設定が効いてなさそうなことがわかったので以下コマンドで編集します。
$ sudo vim /etc/X11/xorg.conf.d/99-calibration.conf
MatchProductがft6x06_ts
になっているのでft6236
にします。だだ、今度はタッチ範囲の縦横比がおかしくなったので、Option "Calibration"の数字も240と320を入れ替えます。結局以下のように書き換えました。
Section "InputClass" Identifier "captouch" MatchProduct "ft6236" Option "SwapAxes" "1" Option "InvertY" "1" Option "Calibration" "0 240 0 320" EndSection
これでOK。
まとめ
ディスプレイ使うだけなのに、もの凄い大変でした。ズバリの情報がネットに無かったので、動いたの半分くらい運が良かったです。また1年くらいたったら、セットアップの仕方変わってそうなのが怖いところですね…。本家にpull requestした方が良いのかなぁと思いつつも、過去の経緯とかもわかっていないので、ここに知見だけでも残しておくことにします。メーカのAdafruitが設定も済んだ全部入りイメージを公開しているので、初心者の方は素直にそちらを使った方が良さそうです。そちらならスッと動く…と思います(試してないです)。
PiTFT動かした感じは、かなり良い感じです。といっても普通にRaspbian操作するのは実用的ではないので、自分でフルスクリーンの専用アプリを作って楽しむのが良さそうと思いました。
2017/12/25追記: 今買うなら、以下の「Quimat 3.5インチタッチスクリーンディスプレイ」の方が個人的にはオススメです。参考まで。
参考リンク
Raspberry Pi 3, PiTFT and a modern kernel (bluetooth support!) – TurboTurbo!
GitHub - adafruit/Adafruit-PiTFT-Helper: Script to configure an installed PiTFT
GitHub - adafruit/Adafruit-Occidentalis: A collection of drivers, configuration utilities, and other useful things for single-board computers from Adafruit
GitHub - adafruit/Adafruit-PiTFT-Helper: Script to configure an installed PiTFT
raspbery pi 3 PITFT PLUS - Raspberry Pi Forums
Capacitive Touchscreen Configuration | Adafruit 2.8" PiTFT - Capacitive Touch | Adafruit Learning System