3-1-1. Waveshare3.2インチLCDのセットアップ
Raspberry Pi と Waveshare 3.2inch RPi LCD (V3)。
以下、TomoSoftさんの Waveshare3.2インチLCDをRaspberryで動作させる を、参考にさせていただいた。
FBTFTというLCD用の、フレームバッファドライバが必要で、Waveshare3.2インチLCDは、このドライバの device name が ”waveshare32b” でサポートされているとのこと。
1. Raspberry Piの設定
①. ファイルシステムを拡張する。
sudo raspi-config → 「Expand Filesystem」を選択して拡張する
②. X11関連のファイルを自動で実行させないように、次のOptionの行をコメントにする。
sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf
#Option “fbdev” “/dev/fb0″ ← をコメントにする。
#Option “fbdev” “/dev/fb0″ ← をコメントにする。
③. SPI機能を有効にする。
sudo nano /etc/modprobe.d/raspi-blacklist.conf
#blacklist spi-bcm2708 ← をコメントにする。
#blacklist spi-bcm2708 ← をコメントにする。
④. 設定変更後、再起動する。
sudo reboot
2. ドライバのインストール
①. FBTFTドライバをカーネルにインストールする。
sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update
②. インストール後、再起動する。
sudo reboot
③. SPIが生成されているかを確認する。
dmesg | grep spi での、正常時表示。
[ 0.000000] Linux version 3.12.34+ (pi@raspi2) (gcc version 4.8.3 20140106 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11) ) #1 PREEMPT Sun Dec 7 22:39:06 CET 2014 [ 5.844607] bcm2708_spi bcm2708_spi.0: DMA channel 2 at address 0xf2007200 with irq 77 [ 6.041786] bcm2708_spi bcm2708_spi.0: DMA channel 4 at address 0xf2007400 with irq 20 [ 6.283305] bcm2708_spi bcm2708_spi.0: SPI Controller at 0x20204000 (irq 80) [ 6.457789] bcm2708_spi bcm2708_spi.0: SPI Controller running in dma mode [ 21.290605] fbtft_device: spidev spi0.0 500kHz 8 bits mode=0x00 [ 21.303891] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00 [ 21.349306] fbtft_device: Deleting spi0.0 [ 21.453169] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00 [ 21.473176] fbtft_device: fb_ili9340 spi0.0 48000kHz 8 bits mode=0x00 [ 21.834484] ads7846_device: Deleting spi0.1 [ 22.174302] graphics fb1: fb_ili9340 frame buffer, 320x240, 150 KiB video memory, 4 KiB DMA buffer memory, fps=20, spi0.0 at 48 MHz [ 22.215451] ads7846 spi0.1: touchscreen, irq 187 [ 22.252593] input: ADS7846 Touchscreen as /devices/platform/bcm2708_spi.0/spi_master/spi0/spi0.1/input/input3
④. FBTFTドライバの動作確認
次のコマンドでカーネルモジュールをロードする。
sudo modprobe fbtft_device name=waveshare32b rotate=270
270度回転させて、HDMIや電源のケーブルが上側になるようにする。
dmesg | grep fbtft_device での、正常時表示。
[ 21.263843] fbtft_device: SPI devices registered: [ 21.290605] fbtft_device: spidev spi0.0 500kHz 8 bits mode=0x00 [ 21.303891] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00 [ 21.321442] fbtft_device: 'fb' Platform devices registered: [ 21.337939] fbtft_device: bcm2708_fb id=-1 pdata? no [ 21.349306] fbtft_device: Deleting spi0.0 [ 21.362119] fbtft_device: GPIOS used by 'waveshare32b': [ 21.393322] fbtft_device: 'reset' = GPIO27 [ 21.413265] fbtft_device: 'dc' = GPIO22 [ 21.422677] fbtft_device: SPI devices registered: [ 21.453169] fbtft_device: spidev spi0.1 500kHz 8 bits mode=0x00 [ 21.473176] fbtft_device: fb_ili9340 spi0.0 48000kHz 8 bits mode=0x00
3. HDMI側への出力からLCD側への出力の切替
以下のコマンドを実行し、framebaffer番号で出力の切替を行う
con2fbmap [仮想コンソール番号] [framebaffer番号]
コンソールを HDMI から LCD に切り替えるには
con2fbmap 1 1 ← これで LCD に表示されればOK
HDMI側に出力を戻すには
con2fbmap 1 0
X Window を LCD に表示するには
FRAMEBUFFER=/dev/fb1 startx
HDMI側に出力を戻すには
con2fbmap 1 0
X Window を LCD に表示するには
FRAMEBUFFER=/dev/fb1 startx
元に戻るには
FRAMEBUFFER=/dev/fb0 startx
4. 小さなコンソール画面でも多くの文字を表示可能に、フォントを切り替えるには
sudo nano /etc/default/console-setup ← このファイルを修正
CODESET="guess"
FONTFACE="Terminus“
FONTSIZE="6x12“
CODESET="guess"
FONTFACE="Terminus“
FONTSIZE="6x12“
5. 起動時にカーネルモジュールをロードさせるには
sudo nano /etc/modules ← 一番下に以下の行を追加。
fbtft_device name=waveshare32b rotate=270
fbtft_device name=waveshare32b rotate=270
6. 起動画面から LCD に表示させるさせるには
boot configulationファイルを修正して、起動時に HDMI/TV 出力の /dev/fb0 の変わりに、
LCD の /dev/fb1 を使用するよう、/etc/modules の一番下に以下の行を追加。
fbcon=map:10 fbcon=rotate:1 fbcon=font:ProFont6x11