follow me

aitendoの2.2インチTFT液晶をRasPiで使う

aitendoの2.2インチTFT液晶をRasPiで使う
aitendoのと言っていますが、同じものをAliExpressで入手しました。
届かない危険性は高いですが、AliExpressは安いので。。。
5枚セットで入手したので、つぶしても心配ありません。
せっかくなので、Raspberry Pi以外でも使いたいところです。


値段はaitendoの半額ですが、まったく同じです。


解像度は240x320とそれなりの大きさです。2.2インチであればコレぐらいが手頃でしょう。
QVGAという事で、フォントサイズを調整すればコンソールとして使えるか期待が持てる処です。
さっそく、Raspberry Piと繋ぎました。
LCDドライバとしては、fbtftを使用する予定だった為、結線方法はAdafruit 2.2と同じにしています。
具体的にはこの様な結線になります。
Adafruit 2.2は低解像度の古いモデルも存在するので、コントローラがILI9340のモデルの情報を元にしてください。
SDカードは使用する予定がないので一部結線していない状態になります。
ILI9340Raspberry Pi
BLGPIO18
SCKSCLK
MOSIMOSI
CSCE0
RSTGPIO25
D/CGPIO24
VIN3.3V
GNDGND



fbtftはバイナリを拾うのではなく、ソースから真面目に入れる必要がありました。
バイナリだと、コントローラがILI9340の物は含まれて居ませんでした。
Raspberry PiだとKernelのビルドに時間が掛かる為、x86_64環境でクロスビルドしてしまいます。
ざっくりと手順を記載します。
$ sudo aptitude install git gcc make libncurses5-dev
$ mkdir raspi
$ cd raspi
$ git clone git://github.com/raspberrypi/linux.git
$ export KERNEL_SRC=~/raspi/linux
$ git clone git://github.com/raspberrypi/tools.git
$ export CCPREFIX=~/raspi/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin/arm-bcm2708-linux-gnueabi-
$ cd linux
$ make mrproper
$ gunzip -c config.gz > .config      Raspbianから拾ってきたconfigです。(/procに転がってます。)
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make oldconfig
fbtftをKernelに追加。
$ cd drivers/video
# git clone https://github.com/notro/fbtft.git
ファイルを編集します。
Add to drivers/video/Kconfig: source "drivers/video/fbtft/Kconfig"
Add to drivers/video/Makefile: obj-y += fbtft/
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make menuconfig
FB_TFT、CONFIG_FB_TFT_ILI9340、FB_TFT_FBTFT_DEVICEを有効にします。
自分はmにしておきました。
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} make
$ export MODULES_TEMP=~/raspi/modules/
$ ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} make modules_install
$ cd ~/raspi/tools/mkimage
$ ./imagetool-uncompressed.py ${KERNEL_SRC}/arch/arm/boot/zImage
RaspberryPiに新しいカーネルイメージ(kernel.img)を/bootにコピー、~/raspi/modules/に出したものをRaspberryPiに一式コピー。

起動時にモジュールがロードされる様に設定します。(SPIを利用する為、SPIも読み込まれる様に変更します。)
/etc/modprobe.d/raspi-blacklist.confから"blacklist spi-bcm2708"をコメントアウトします。
/etc/modulesに"fbtft_device name=adafruit22a"を追記します。

以下内容で/sbin/fbterm-loginを作成します。
#!/bin/bash
# example: fbterm-login fb1 tty1
export FRAMEBUFFER=/dev/$1
exec /usr/bin/fbterm -r 1 /bin/login < /dev/$2
/etc/inittabを書換え、コンソールが自動で表示されるようにします。
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/sbin/fbterm-login fb1 tty1
無事コンソールが表示されました。
これだと醜いので横向きに変更したいと思います。


横向きに変える方法は2通りあり、fbconsoleで回転させるかドライバで回転させるかします。
fbconsoleで変更する場合は、/usr/bin/fbtermの実行オプションで-rを利用します。
デバイスで変更する場合は、以下に記載がある"rotate"パラメータを利用します。
https://github.com/notro/fbtft/wiki/fbtft_device

無事横向き表示になりました。


フォントサイズを8dotまで落としてみました。
情報量は大きくなりましたが、少し潰れるフォントもあります。
8dotで可読性の高いフォントを探した方が良さそうです。
ls -lしたときに1行で表示されないと少し使いにくいですし。
aitendoの2.2インチTFT液晶をRasPiで使う | 0 件のコメント | アカウント登録
サイト管理者はコメントに関する責任を負いません。