2015/11/12

Waveshare 3.5 Spotpear TFTパネルをRPi2に付けて・・

cocopar™-3-5インチタッチパネル をRaspberry-Pi2/bに繋いでみてからのこと。

何も考えないでやると、そのページ情報から「英文の説明書、インストールファイルは、
https://www.dropbox.com/s/2s02o4jgvnexdov/3.5inch%20RPi%20LCD.7z?dl=0」と書かれているので、素直にダウンロードして(これはセットアップ済みのRasbianイメージ)SDに焼いて起動するんだそうな。

製造メーカのWaveshareのページ へ行くと、やはりRasbianイメージと若干のツールという形で説明されている。

とりあえず、どっちもやってみて、どっちもちゃんと動きましたが、カーネルが違ってたり、OSアップデートするとだめとか書かれてて・・使えねーっす。

ということで調べたら、ちゃんといいのがあるじゃないですかぁ
https://github.com/notro/fbtft/wiki
を読んで、ふむ。色んなLCDデバイスに対応しているらしいと。しかも現在はRaspberry Pi Foundation kernelに取り込まれているので、raspi-updateってやればモジュールが入る。

https://github.com/notro/fbtft/issues/215
ここがWaveshare 3.5 Spotpearについての記事。冒頭では、ああ・・Waveshareはうまくいかないのか?と不安になりつつ読み進めると汎用のflexfbを使ってやれば大丈夫と。
ホ。でも面倒なのね。

$ modprobe flexfb width=320 height=480 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
$ modprobe fbtft_device rotate=90 name=flexfb speed=16000000 gpios=reset:25,dc:24
ってやってモジュールを入れると、/dev/fb1 が出来上がる。
/usr/share/X11/xorg.conf.d/99-fbturbo.confの/dev/fb0を/dev/fb1にして
$ startx
するとLCDにデスクトップが出てくる。

うん。これでいいかと思ったら、記事の中に
https://github.com/swkim01/waveshare-dtoverlays
が紹介されている。素晴らしい!これなら簡単です。OSやカーネルを汚さないで済みます。

素のRasbianイメージからのスタートだとしても
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo raspi-configでSPIイネーブルにする
$ sudo rpi-update
$ sudo reboot

$ git clone https://github.com/swkim01/waveshare-dtoverlays.git

$ cd waveshare-dtoverlays
$ sudo cp waveshare-dtoverlays/waveshare35a-overlay.dtb /boot/overlays/
/boot/config.txt のdtparam=spi=onの次に
dtoverlay=waveshare35a
を追記してリブート。起動するとLCDが初期化されてバックライトが消えた状態に。

/usr/share/X11/xorg.conf.d/99-fbturbo.confの/dev/fb0を/dev/fb1に変更して
$ startx
すればLCD上でX11が立ち上がる。

https://github.com/notro/fbtft/wiki は最近更新された。fbtft_deviceを使うとDeviceTreeOverlay
を使うよりもっと簡単!っていう話だ。
が、残念ながら手持ちのwaveshare-35aはまだサポートされていないようだ。waveshare-32bならサポートされているらしい。

因みに、タッチスクリーンが付いているのだが、キャリブレーションはやってない。