千石で売ってる4inchのタッチディスプレイがあります ( http://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-4R4Y# )
これですね
安くて、ちょうどRaspberryPiにあうので、早速これをRaspberryPi2で使いたいので、必要な設定を紹介します。いろんなサイトに載ってるのですが、新しいOSだと設定が変わっていて、結構違うので今の(2015年9月)最新の設定方法を載せます。
1. SPIを有効にする
SPIは標準で無効になってますが、液晶との通信につかうので有効にします。/boot/config.txtでかんりされてます。ついでにI2Cも有効にします。
1 |
sudo nano /boot/config.txt |
で開いたら
1 2 3 4 |
dtparam=spi=on dtparam=i2c=on dtparam=i2c1=on dtparam=i2c_arm=on |
1 |
sudo reboot |
1 2 3 4 5 6 7 |
dmesg | grep spi [ 4.267650] bcm2708_spi 3f204000.spi: DMA channel 2 at address 0xf3007200 with irq 77 [ 4.287179] bcm2708_spi 3f204000.spi: DMA channel 4 at address 0xf3007400 with irq 20 [ 4.333979] ads7846 spi0.1: touchscreen, irq 497 [ 4.349000] input: ADS7846 Touchscreen as /devices/platform/soc/3f204000.spi/spi_master/spi0/spi0.1/input/input2 [ 4.372183] bcm2708_spi 3f204000.spi: SPI Controller at 0x3f204000 (irq 80) [ 4.384192] bcm2708_spi 3f204000.spi: SPI Controller running in dma mode |
2. FBTFTドライバのインストール
液晶用のドライバをインストールしてもう一度再起動します(しなくても続けられますが、気になる人は念のため)
1 2 |
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update sudo reboot |
3. フレームバッファの変更
映像出力をHDMIからLCD出力へ切り替えます(/dev/fb0を/dev/fb1にする)
1 |
sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf |
でファイルを開いて以下のようにfb1にします。
1 2 3 4 5 6 |
Section "Device" Identifier "Allwinner A10/A13 FBDEV" Driver "fbturbo" Option "fbdev" "/dev/fb1" Option "SwapbuffersWait" "true" EndSection |
4. touchscreeの関連パッケージのインストール
1 |
sudo apt-get install xinput evtest libts-bin |
5. Module情報の更新
/etc/modulesにつながってるモジュールに関して記載できます。ここに液晶とタッチデバイスについて書きます。
1 |
sudo nano /etc/modules |
でひらいたら
1 2 3 4 |
snd-bcm2835 flexfb width=480 height=320 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 fbtft_device debug=3 rotate=0 name=flexfb speed=16000000 gpios=reset:25,dc:24 |
このようにします
6. /boot/cmdline.txt
1 |
sudo nano /boot/cmdline.txt |
にて、中身をこのようにします。これは全部1行で改行なしです
1 |
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait fbtft_device.custom fbtft_device.name=flexfb fbtft_device.gpios=dc:24,reset:25 fbtft_device.bgr=1 fbtft_device.speed=16000000 fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo dma.dmachans=0x7f35 console=tty1 consoleblank=0 fbtft_device.fps=50 fbtft_device.rotate=270 |
7. configにTouchデバイスを教える
Touchデバイスに関しての設定をします。
1 |
sudo nano /boot/config.txt |
でconfigファイルを開いたら以下の行を最後に追加します。
1 |
dtoverlay=ads7846,cs=1, penirq=17, speed=1000000, swapxy=1 |
これが重要です。ここが古いOSだと違うけど、新しいのはここでads7846を指定しないといけない
8. タッチデバイスのキャリブレーション
タッチの位置を調整します。
1 |
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf |
にて(ファイルがすでにある場合は削除)
1 2 3 4 5 |
Section "InputClass" Identifier "calibration" MatchProduct "ADS7846 Touchscreen" Option "Calibration" "3900 240 3900 240" EndSection |
これで完了です。あとは便利な設定をしておきましょう
9. 自動ログイン
パスワードを聞かれないようにします。
1 |
sudo nano /etc/inittab |
にて
1 |
1:2345:respawn:/bin/login -f pi tty1 </dev/tty1>/dev/tty1 2>&1 |
のコメントアウトを外します。
10. X自動起動設定
1 |
sudo nano /etc/rc.local |
にて
su -l pi -c startx
を中身に追加してこんな風にします。
1 2 3 4 5 6 7 8 |
_IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi su -l pi -c startx exit 0 |
11. 再起動
1 |
sudo reboot |
これで全部完了です。再起動すればディスプレイに映像が出て、画面タッチも使えるようになります