小型カラーTFTディスプレイのST7735はだいぶ前にArduino上で動かした記事や、MicroPythonで動かした記事など、当ブログで何度か取り上げた。
ST7735はCircuitPython用ドライバがあるのでBlinkaをインストールしたラズパイや、ラズパイ用のPythonライブラリも存在するためラズパイであれば問題なく使えるのだが、Blinka非対応のNano Pi Neoでは通常使えない。が、前回記事にてラズパイ用のGPIO制御PythonライブラリRPi.GPIOをNano Pi Neoに対応させたことでST7735ディスプレイを動かす事が出来たので方法を記事にまとめる。
ST7735ディスプレイとNano Pi Neoを接続する
SPIの他にGPIOへの配線が必要。ST7735側のDCピン・RESETピンをNano Pi Neo側のGPIOピンA0・A1にそれぞれ接続した。
ST7735 | Nano Pi Neoピン番号 | 備考 |
---|---|---|
DC(A0) | 11 | GPIOA0(PA0) |
Vcc | 17 | 3.3V |
SDA | 19 | SPI0_MOSI |
GND | 20 | GND |
RESET | 22 | GPIOA1(PA1) |
SCK | 23 | SPI0_CLK |
CS | 24 | SPI0_CS |
LED | – | 150Ωを介して3.3Vへ |
ST7735のPythonライブラリ
ライブラリは、Adafruit社によるCircuitPython用ドライバをベースにインタフェースがカスタマイズされた以下の物を使った。
このドライバはBlinka無しでも使えるように、ディスプレイとマイコンの間はspidev経由でSPI通信、RPi.GPIO経由でGPIOを叩くよう変更されている。RPi.GPIOはラズパイ専用のライブラリだが、前回記事で取り上げたようにOPi.GPIOというライブラリに少し手を加えてNano Pi Neo2上でRPi.GPIO互換ライブラリとして使うことが出来るので、これを利用する。
Pythonライブラリのインストール
ST7735のPythonドライバ本体はPyPIに登録されておりpipでインストール可能。但し、デバイスへのアクセスにroot権限が必要なため、インストールもroot権限で行う。
sudo pip install st7735 numpy
サンプルプログラムが画像処理ライブラリPillowを使っているのでこちらもインストール。
sudo pip install Pillow
サンプルプログラムの実行
ドライバと一緒にGitHubに置かれているサンプルプログラム(image.py)を少し改造し、以下のプログラムを作成した。
import sys
from PIL import Image
import ST7735 as ST7735
if len(sys.argv) < 2:
print("Usage: {} <image_file>".format(sys.argv[0]))
sys.exit(1)
image_file = sys.argv[1]
WIDTH = 128
HEIGHT = 128
# Create ST7735 LCD display class.
disp = ST7735.ST7735(
port=0,
cs=0,
dc=11,
rst=22,
rotation=0,
width=WIDTH,
height=HEIGHT,
offset_top=0,
offset_left=0,
invert=False,
spi_speed_hz=10000000
)
# Initialize display.
disp.begin()
# Load an image.
print('Loading image: {}...'.format(image_file))
image = Image.open(image_file)
# Resize the image
image = image.resize((WIDTH, HEIGHT))
# Draw the image on the display hardware.
print('Drawing image')
disp.display(image)
DCピンとRSTピンの指定について
ST7735クラスのコンストラクタの引数dcとrstにDCとRSTの各ピンの接続先は、上の表に書いた通りNano Pi NeoボードのPA0とPA1なので、それぞれのピン番号11と22を指定している。
プログラムを実行して画像を表示
引数に画像ファイルを指定すれば、画像が表示される。実行にはsudoを付けてroot権限が必要。
sudo python st7735image.py fuji0.jpg
下はST7789に写真を表示した時の様子。

まとめ
ST7735のラズパイ用ドライバを使って、Nano Pi Neo上のPythonでST7735に画像表示をすることが出来た。中華製シングルボードコンピュータも、ちょっとした工夫でラズパイ用のPythonドライバを使える事が分かったのは収穫。素直にラズパイ買えばいいじゃんという話もあるが、ラズパイは相変わらず入手困難だし、選択肢の一つとしてアリじゃないかなと思う。
コメント