ラズパイにて、有機ELディスプレイのサンプルコードを動かす


お知らせ

  • [2020.10.10]新しいラズパイイメージではエラーが出たため、参照先を変更しました。

はじめに

ラズベリーパイにて、電子工作でよく使われる
[0.96インチ 128x64ドット有機ELディスプレイ]を動作させたいと思います。

紹介する内容

  • 128x64ドット有機ELディスプレイの概要
  • ラズベリーパイ3+を使い、IPアドレスの表示(サンプルコード実行)

0.96インチ 128x64ドット有機ELディスプレイ - SSD1306

0.96インチ 128x64ドット有機ELディスプレイは、SSD1306が搭載されいている安価な表示モジュールです。

SSD1306デバイスは、I2C通信(2線シリアル)とSPI通信(4線シリアル)の
2つの方式を対応していますが、販売されているものはどちらかになります。
今回は、私が秋月電子で購入したものは、I2C通信となります。

作業環境

  • ラズベリーパイ3
    • Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 armv7l GNU/Linux
    • Python 3.6.6 (default, Jan 24 2019, 20:40:14)

機材

※型名が購入先のリンクになっています。

項目 型名 備考
ラズベリーパイ3 指定なし
有機ELディスプレイ 0.96inch 128x64ドット表示 I2C制御 秋月電子
ブレッドボード 指定なし
ジャンパーケーブル 4本

接続図

 接続図は以下となります。

手順

  • I2C接続を確認する
  • 必要なモジュールをインストールする
  • サンプルコードを実行する

I2C接続を確認する

下記のコマンドでデバイスが接続されているかわかります。

$ i2cdetect -y 1

"3c"がI2Cアドレスとなります。

"3c"が"--"と表示される場合、接続が正しくないことが考えられます。
また、購入先によって、I2Cアドレスが異なる場合があります。
異なる場合は、サンプルプログラムにて、I2Cアドレスを指定することが必要です。

必要なモジュールをインストールする

サンプルプログラムは、
Adafruit_CircuitPython_SSD1306

を使わせていただきます。

ただし、上記のみをインストールしてもいろいろと足りないと怒られるので、
以下の手順で行いました。

libjpeg-devのインストール

pillowのインストールで足りないと怒られるので、事前にインストール

$ sudo apt-get install libjpeg-dev

venvによる環境管理

この手順は必須ではありませんが、環境を分けます。

$ python3 -m venv env
$ source env/bin/activate
(env) $ 

Adafruit_SSD1306以外をインストール

(env) $ pip install pillow
(env) $ pip install RPi.GPIO
(env) $ pip install Adafruit-GPIO

Adafruit_SSD1306をインストール

(env) $ pip install adafruit-circuitpython-ssd1306
(env) $ pip install pillow
(env) $ git clone https://github.com/adafruit/Adafruit_CircuitPython_SSD1306

サンプルプログラムを実行する

サンプルプログラムを修正する

サンプルプログラムは、下記に配置されています。

./Adafruit_CircuitPython_SSD1306/examples/ssd1306_stats.py

サンプルコードは、128x32ドット用のコードになっています。
初期化を128x64ドット用に置き換えます。

disp = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)

disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c)

サンプルプログラムを実行する(ssd1306_stats.py)

(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_stats.py 

ラズベリーパイのIPアドレス、CPU使用率、メモリ使用率、ディスク使用率が表示されます。

それ以外のサンプルの実行結果

(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_pillow_animate.py


※文字がスクロールします。


(env) $ python ./Adafruit_CircuitPython_SSD1306/examples/ssd1306_bonnet_buttons.py



(env) $ python ssd1306_pillow_images.py 



参考