これ

すごくいいです。

Raspberry Pi用2.8インチ TFTモニタ特別セット
TechShare
売り上げランキング: 5,355

おもな素晴らしいところ

  • raspberry piに供給してる電源から、液晶の電源もとれる(電源ひとつだけでok)
  • HDMIをつなげなくても、raspberrypiのconsole画面を見ることができる
  • 物理的なボタンでshutdown/bootができるようになる

動かすまでに最低限ひつようなこと

  1. 液晶とGPIOピンヘッダのハンダ付け
  2. 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タイプでは、module ft6x06_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の時の設定方法を追記しておいた。