これ
すごくいいです。
売り上げランキング: 5,355
おもな素晴らしいところ
- raspberry piに供給してる電源から、液晶の電源もとれる(電源ひとつだけでok)
- HDMIをつなげなくても、raspberrypiのconsole画面を見ることができる
- 物理的なボタンでshutdown/bootができるようになる
動かすまでに最低限ひつようなこと
- 液晶とGPIOピンヘッダのハンダ付け
- raspberrypiでソフトウェアのセットアップ
(追記: resistiveタイプとcapacitiveタイプで設定方法違うので注意)
ソフトのsetup方法はふたつある
その1 installerを落としてきて実行
以下コマンドでインストールできる。最後に、raspiを起動した時に液晶にconsole画面を表示するかと、取り付けたボタンでshutdownするか聞かれる。
$ wget http://adafru.it/pitftsh
$ mv pitftsh pitft.sh
$ chmod +x pitft.sh
$ sudo ./pitft.sh -t 28r -r #resistiveタイプ
$ sudo ./pitft.sh -t 28c -r #capacitiveタイプ
$ sudo reboot
以上。公式サイトの説明はこちら
その2 真心を込めたコマンド手入力で設定
心を込めたい(細かい設定がしたい)方はこちらで。
必要なdebファイルを落としてくる。
$ cd ~
$ wget http://adafruit-download.s3.amazonaws.com/libraspberrypi-bin-adafruit.deb
$ wget http://adafruit-download.s3.amazonaws.com/libraspberrypi-dev-adafruit.deb
$ wget http://adafruit-download.s3.amazonaws.com/libraspberrypi-doc-adafruit.deb
$ wget http://adafruit-download.s3.amazonaws.com/libraspberrypi0-adafruit.deb
$ wget http://adafruit-download.s3.amazonaws.com/raspberrypi-bootloader-adafruit-20140917-1.deb
インストール
$ sudo dpkg -i -B *.deb
2013年の9月に出たバージョンより新しいraspbian使ってる人は、99-fbturbo.confを動かしとく必要がある
$ sudo mv /usr/share/X11/xorg.conf.d/99-fbturbo.conf ~
再起動
$ sudo reboot
moduleを入れて、xwindowを起動してtft液晶に表示 (※追記 resistiveタイプとcapacitiveタイプでmoduleが違う)
resistiveタイプ
$ sudo modprobe spi-bcm2708 $ sudo modprobe fbtft_device name=adafruitts rotate=90 $ export FRAMEBUFFER=/dev/fb1 $ startx
capacitiveタイプ(※追記)
$ sudo modprobe spi-bcm2708 $ sudo modprobe i2c-bcm2708 $ sudo modprobe fbtft_device name=adafruitct28 rotate=90 $ export FRAMEBUFFER=/dev/fb1 $ startx
表示されたら成功。さきほどのmoduleを毎回起動するコマンドを打たなくて済むように、etc modulesを編集
resistiveタイプ
$ sudo vim /etc/modules spi-bcm2708 fbtft_device
capacitiveタイプ (※追記)
$ sudo vim /etc/modules i2c-bcm2708 spi-bcm2708 fbtft_device
modprobe fileを作って、設定を書く。そして再起動
$ sudo vim /etc/modprobe.d/adafruit.conf
options fbtft_device name=adafruitrt28 rotate=90 frequency=32000000
$ sudo reboot
touchscreenのcallibration用のファイル作成
- resistiveタイプ ``` bash $ sudo mkdir /etc/X11/xorg.conf.d $ sudo vim /etc/X11/xorg.conf.d/99-calibration.conf
Section “InputClass” Identifier “calibration” MatchProduct “stmpe-ts” Option “Calibration” “3800 200 200 3800” Option “SwapAxes” “1” EndSection
+ capacitiveタイプ (※追記)
``` bash
$ sudo mkdir /etc/X11/xorg.conf.d
$ sudo vim /etc/X11/xorg.conf.d/99-captouch.conf
Section "InputClass"
Identifier "captouch"
MatchProduct "ft6x06_ts"
Option "SwapAxes" "1"
Option "InvertY" "1"
Option "Calibration" "0 320 0 240"
EndSection
xwindowを液晶で見るために毎回FRAMEBUFFERをexportしなくてすむように設定を追記
$ sudo vim ~/.profile
export FRAMEBUFFER=/dev/fb1
ここからtouchscreenの設定
- resistiveタイプ
bash $ sudo vim /etc/udev/rules.d/95-stmpe.rules SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
module stmpe_tsをremoveして再install
$ sudo rmmod stmpe_ts; sudo modprobe stmpe_ts
touchscreenができていることを確認 (うまく起動出来てないと、存在しない)
$ ls -l /dev/input/touchscreen
drwxrwxrwx 1 root root 6 Nov 12 27 15:04 /dev/input/touchscreen -> event2
- capacitiveタイプ(※追記)
bash $ sudo vim /etc/udev/rules.d/95-ft6206.rules SUBSYSTEM=="input", ATTRS{name}=="ft6x06_ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen"
capacitiveタイプでは、moduleft6x06_ts
を使うbash $ sudo rmmod ft6x06_ts; sudo modprobe ft6x06_ts
touchscreenをテストしてみる
test用のmoduleをinstallして、実際にタッチしてみると入力が確認出来る
$ sudo apt-get install evtest tslib libts-bin
$ sudo evtest /dev/input/touchscreen
rotationを変えたりした後、callibrationを自動で行うためのツールがある
$ wget https://github.com/adafruit/PiTFT_Extras/raw/master/pitft_touch_cal.py
$ sudo mkdir /etc/X11/xorg.conf.d/
$ chmod +x pitft_touch_cal.py
$ sudo ./pitft_touch_cal.py
manualで設定するcallibrationツールを利用することも出来る
$ sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_calibrate
touchscreenを使って線を描画するテストができる
$ sudo TSLIB_FBDEVICE=/dev/fb1 TSLIB_TSDEVICE=/dev/input/touchscreen ts_test
はまったところ
- 液晶は表示出来るけど、touchscreenが反応しない
dmesgでだめっぽいの出てる。
$ dmesg |grep stmpe-spi
[ 12.464470] stmpe-spi spi0.1: unknown chip id: 0x0
[ 12.482715] stmpe-spi: probe of spi0.1 failed with error_log(' ' . var_export(, true)) -22
installer を使わずにやっていると、stmpe_tsをremoveしようとした時に、not currently loadedと言われる。これは、stmpeが動いてないからぽい。
$ sudo rmmod stmpe_ts; sudo modprobe stmpe_ts
Error: Module stmpe_ts is not currently loaded
解決編
いろいろ試してうまくいかず、きっとこれ不良品だなadafruitめ!と思ったが、なんのことはなかった。 このtft2.8サイズの液晶には、静電容量方式のタッチパネルと、加圧を検知する抵抗膜方式のタッチパネルの2種類が存在したのだ。知らなかった。そして、当然セットアップ方法が違う。正しく公式サイトの手順通りに設定したら、きちんとtouchscreen動きました。
adafruit 最高っス!
公式サイト
静電容量方式のセットアップ (capacitive touchscreen)
抵抗膜方式のセットアップ(resistive touchscreen)
このブログの記事をさかのぼって、capacitiveの時の設定方法を追記しておいた。