Mana Blog Next

自宅IoT、仕事と家庭、カメラ、筋トレ生活

【小さいは正義】Raspberry Pi Zeroに最適な有機ELミニ液晶「PiOLED」

f:id:mana-cat:20170819221725j:plain

Raspberry Pi Zeroに最適な有機ELミニ液晶「Adafruit PiOLED」が販売開始になりましたのでレポートします。

モノクロ1インチ有機ELディスプレイ搭載

これまで、GPIO経由でディスプレイを取り付けようとしたら、「ピンを全て占有してしまってセンサーを取り付けられなかった。大失敗!」といった苦い経験はありませんか?

Adafruit PiOLED は、モノクロ 128x32 有機ELディスプレイを搭載し、あらゆるRaspberry Piシリーズに簡単に取り付けることができます。このミニディスプレイはI2Cピンのみを使用しているので、ボタン、LED、センサーなどに多くのGPIO接続が可能になります。

そう、小さいは正義なのです。

購入方法

海外では Pimoroniで販売されています。個人輸入に抵抗がない方は検討してみてはいかがでしょうか。

2017/08/21追記 国内でも販売開始になりました!スイッチサイエンスさんで販売開始です。

www.switch-science.com

ただ小さいだけじゃない!PiOLED 3つの特長

(1) 有機ELディスプレイのため可読性が高い

PiOLEDのディスプレイは小さく、わずか約1インチ。もちろん小さいだけではなく、有機ELディスプレイは高コントラストで可読性にも優れています。

スクリーンは128x32 pixel の白色OLEDで構成されています。また、ご存知の方も多いと思いますが、有機ELディスプレイは自発光するためバックライト不要です。

(2) PiOLEDのセットアップはとても簡単

提供元のAdafruitはSSD1306チップセット用のPythonライブラリを公開しています。このサンプルコードでは、Pythonイメージングライブラリを使用して、好きなように画像やテキストを描画することができます。

また、再生レートは30fpsあるため、アニメーションやシンプルなビデオも表示できそうです。

(3) はんだ付け不要

組立のためのはんだ付け不要。完成品で動作テスト済み。PythonのプラグインをインストールするだけでOK。オリジナルのPi 1、B +、Pi 2、Pi 3、Pi Zeroを含むRaspberry Piで動作します。

セットアップ手順

今回は Raspberry Pi Zero W を使ってセットアップ手順を紹介します。
まだこの段階では、PiOLEDをRaspberry Pi のGPIOピンに接続しないでください。

RPi.GPIO ライブラリのインストール

まず、 RPi.GPIO ライブラリをインストールします。ライブラリを使用する前に、いくつかの依存関係がインストールされていることを確認します。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install build-essential python-dev python-pip
$ sudo pip install RPi.GPIO

次に、以下のコマンドを実行して、Python Imaging ライブラリ、python-smbus ライブラリをインストールします。

$ sudo apt-get install python-imaging python-smbus

最後に、以下のコマンドを実行してgitをインストールし、最新のAdafruit SSD1306 Pythonライブラリのサンプルコードをダウンロード後、実行します。

$ sudo apt-get install git
$ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
Cloning into 'Adafruit_Python_SSD1306'...
remote: Counting objects: 112, done.
remote: Total 112 (delta 0), reused 0 (delta 0), pack-reused 112
Receiving objects: 100% (112/112), 34.60 KiB | 0 bytes/s, done.
Resolving deltas: 100% (57/57), done.
Checking connectivity... done.
$ cd Adafruit_Python_SSD1306
$ sudo python setup.py install
running install
running bdist_egg
running egg_info
~省略~
Using /usr/lib/python2.7/dist-packages
Finished processing dependencies for Adafruit-SSD1306==1.6.1

I2C の有効化

raspi-configでI2Cを有効にします (既にI2Cが有効化されている場合、この手順は不要です)

$ sudo raspi-config

いったんRaspberry Pi 本体をシャットダウンをし、PiOLED をRaspberry Pi のGPIOピン に取り付けます。

$ sudo shutdown -h now

取り付けが終わったら、Raspberry Pi を起動します。

f:id:mana-cat:20170819221353j:plain

以下のようにi2cdetect コマンドで PiOLEDのアドレス0x3cが表示されたのを確認します。

$ 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: -- -- -- -- -- -- -- --

サンプルプログラムの実行

それでは全ての準備が完了したので、サンプルプログラムを実行してみましょう。

$ cd Adafruit_Python_SSD1306/
$ sudo python examples/stats.py

そうすると、ディスプレイで IPアドレス、CPU使用率、メモリー使用率、ディスク使用量が表示されるようになります。

f:id:mana-cat:20170819221035j:plain

(補足:たとえプライベートIPアドレスだとしても、我が家では晒さないルールになっているので隠しています。理由はここでは割愛)

起動時にバックグラウンド実行する手順

Raspberry Pi起動時に今回紹介したサンプルプログラムをバックグラウンドで常時実行したいときの手っ取り早い方法として、 /etc/rc.local で最終行のexit 0の前に、以下のように追記します。

$ sudo nano /etc/rc.local

sudo python /home/pi/Adafruit_Python_SSD1306/examples/stats.py  &

これで、Raspberry Pi 起動時から IPアドレス、CPU使用率、メモリー使用率、ディスク使用量が常時表示されるようになります。

まとめ

有機ELディスプレイが思った以上に良くて、何台か欲しくなってしまうほどの完成度でした。はんだ付けも要らない完成品なのがとても良いですね。

今回紹介したAdafruitが公開しているサンプルコードだけでも、とても便利に使えそうですね。
我が家では、IoTプラレールなどのオモチャの発車・停車ステータスを表示するために使おうと考えています。(IoTプラレールについては過去記事参照)

ぜひ、皆さまのご家庭でも楽しくご利用下さい。