ラズパイでOLEDに文字表示

この記事では、Raspberry Piと0.91インチのOLEDディスプレイを使って、文字を表示するまでのやり方を説明していく。Adafruit CircuitPythonドライバーを使ってI2C通信で表示する。また、OLEDディスプレイは「DSD TECH/OLED 0.91インチディスプレイ」を使った。

DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート Arduino ARM用
DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート Arduino ARM用

0.91インチのOLEDディスプレイ:解像度128 * 32、非常にクリア、黒の背景、青色のテキスト表示。 IIC(I2C)インタフェース:SPIインタフェース画面よりも4つのPIN(VCC、GND、SCL、SDA)だけが簡単です。 他のセンサーを接続するために、さらに多くのポートを残すことができます。

Amazon

開発環境

今回の開発環境はこちら。

項目バージョン
ラズパイRaspberry Pi zero WH
OLEDディスプレイDSP TECH 0.91インチディスプレイ
Pythonバージョン3.7.3

ラズパイとOLEDディスプレイとの通信はI2Cになるので、ラズパイでI2Cを使用できるように初期設定を済ましておこう。

I2Cの初期設定はこちらを参考に

ラズパイとOLEDディスプレイの配線

ラズパイとOLEDディスプレイの配線はこちら。OLEDディスプレイの電源は5Vとなっているが、3.3Vでも動作する。ラズパイのGPIOが3.3V入出力なので、OLEDディスプレイも3.3Vにした。

OLEDディスプレイRaspberry Pi
GNDGND
VCC3.3V
SCLSCL(GPIO3)
SDASDA(GPIO2)

アドレスの確認

ラズパイとOLEDディスプレイの配線ができたら、次のコマンドを実行してI2Cデバイスのアドレスを確認しよう。3cがOLEDデバイスのアドレスとなっている。

$ sudo i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- -- 

ライブラリのインストール

Adafruit CircuitPython SSD1306のインストール

「DSP TECH 0.91インチディスプレイ」ではメインチップにSSD1306が使われている。「Adafruit Python SSD1306」ライブラリが公開されいてるが、こちらはdeprecatedとなっており、開発が止まっているようだ。今後は、CircuitPythonのライブラリを推奨のようなのでそちらを使う。次のコマンドを実行して「Adafruit CircuitPython SSD1306」をインストールする。

$ sudo pip3 install adafruit-circuitpython-ssd1306

Adafruit CircuitPython SSD1306

DSD TECH/OLEDディスプレイの仕様はこちら

必要なライブラリのインストール

また、それ以外の必要なライブラリもインストールしておく。

$ sudo pip3 install adafruit-blinka
$ sudo pip3 install pillow

このままだと、pillow関係のエラーが出てしまったので、次のモジュールもインストールした。

$ sudo apt-get update
$ sudo apt-get install libopenjp2-7
$ sudo apt install libtiff5

フォントのインストール

OLEDディスプレイに文字を表示させるには、ラズパイにフォントをインストールする必要がある。今回は定評のある「Noto Fonts」の日本語版をインストールした。ちなみに「Noto Fonts」とは、GoogleがAdobeと協力して作成したフォントファミリーだ。

$ sudo apt-get install fonts-noto-cjk

インストールしたフォントは/usr/share/fonts/ディレクトリ下に置かれている。

 $ ls /usr/share/fonts/opentype/noto/
NotoSansCJK-Black.ttc      NotoSansCJK-Light.ttc    NotoSansCJK-Thin.ttc    NotoSerifCJK-ExtraLight.ttc  NotoSerifCJK-Regular.ttc
NotoSansCJK-Bold.ttc       NotoSansCJK-Medium.ttc   NotoSerifCJK-Black.ttc  NotoSerifCJK-Light.ttc       NotoSerifCJK-SemiBold.ttc
NotoSansCJK-DemiLight.ttc  NotoSansCJK-Regular.ttc  NotoSerifCJK-Bold.ttc   NotoSerifCJK-Medium.ttc

Noto Fonts

OLEDディスプレイに文字表示

それではラズパイで、OLEDディスプレイに文字を表示させてみよう。Adafruitのサンプルプログラムを元にプログラミングした。OLEDディスプレイの解像度は128x32

import board
from PIL import Image, ImageDraw, ImageFont
import adafruit_ssd1306


i2c = board.I2C()
oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c, addr=0x3c)

# Clear display.
oled.fill(0)
oled.show()

# Create blank image for drawing.
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)


font = ImageFont.truetype("/usr/share/fonts/opentype/noto/NotoSansCJK-DemiLight.ttc", 13)
font2 = ImageFont.truetype("/usr/share/fonts/opentype/noto/NotoSansCJK-DemiLight.ttc", 10)

# Draw the text
draw.text((0, 0), "こんにちは、世界!", font=font, fill=255)
draw.text((0, 17), "This is OLED test.", font=font2, fill=255)

# Display image
oled.image(image)
oled.show()

OLEDディスプレイでHello world!表示
OLEDディスプレイでHello world!表示

OLEDディスプレイにいろいろ表示するサンプルプログラムが、GitHubで公開されているので参考に。

Adafruit CircuitPython SSD1306サンプルプログラム

この記事で使った関連製品はこちら

DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート Arduino ARM用
DSD TECH 2 PCS OLED 0.91インチディスプレイ IIC I2C シリアルポート Arduino ARM用

0.91インチのOLEDディスプレイ:解像度128 * 32、非常にクリア、黒の背景、青色のテキスト表示。 IIC(I2C)インタフェース:SPIインタフェース画面よりも4つのPIN(VCC、GND、SCL、SDA)だけが簡単です。 他のセンサーを接続するために、さらに多くのポートを残すことができます。

Amazon
Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス
Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス

Amazon
正規代理店商品 Raspberry Pi 4 Model B (8GB) made in UK element14製 技適マーク入
正規代理店商品 Raspberry Pi 4 Model B (8GB) made in UK element14製 技適マーク入

Amazon

Raspberry Piの参考書

Raspberry Pi クックブック 第2版 (Make:PROJECTS)
Raspberry Pi クックブック 第2版 (Make:PROJECTS)

本書は、全世界で多くのユーザーの支持を集めているマイコンボード「Raspberry Pi」を使いこなすためのレシピ集です。ハードウェアの基本、オペレーティングシステムの使い方、ネットワーク接続、Pythonプログラミングの基本を紹介した上デ、実際の作品製作に必要になる、高度なPythonプログラミング、GPIO(汎用入出力)、モーター、センサー、ディスプレイなどの使い方へと解説を進めていきます。

Amazon
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero/Zero W対応
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero/Zero W対応

本書ではRaspberry Pi Zero / Zero Wの概要から必要な周辺機器の説明、OSの導入やセットアップなどといった準備、そしてLinuxに初めて触れる人に向けてLinuxの基礎やシェルの操作などを解説しています。また、準備が整ったら実際に電子部品をRaspberry Pi Zero / Zero Wで制御する方法も解説しました。

KindleAmazon
Raspberry Pi ZeroによるIoT入門- Zero W 対応
Raspberry Pi ZeroによるIoT入門- Zero W 対応

本書は、大人から子供まで、初心者の方でも、ラズパイZeroとラズパイZero WをIoTのデバイスとして使いこなせるようになることを目的とした入門書です。また、ラズパイZeroとラズパイZero WをUSBケーブル1本でパソコンに接続できる便利な「Zero over USB」について、日本で初めて詳しく解説しました。

Amazon

Amazonでお得に購入するなら、Amazonギフト券がオススメ!

コンビニ・ATM・ネットバンキングで¥5,000以上チャージすると、プライム会員は最大2.5%ポイント、通常会員は最大2%ポイントがもらえます!
Amazonギフト券

あなたにおすすめ