お知らせ
- [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