目的
aitendoさんで取り扱っているとても安価なOLEDモジュールをRaspberry Piでも使えるようにする
aitendoさんのOLEDはドライバはSSD1306系の物が多く解像度が違うだけなので、今回利用したAdafruit SSD1306ライブラリで動作する物と思われます。
利用した部品
- OLED with キャリーボード
OLED with キャリーボード [OLED1306-066SMD]
http://www.aitendo.com/product/6994 - Raspberry Pi 2 Model B
電源
3.3V単一電源 (Raspberry PiのGPIOから取り出しのみで動作させています)
組み立て
キットなのでチップ部品とOLED付きのフラットケーブルはんだ付けが必要となります、また写真にあるようにI2C+電源の最低限の配線で制御したい場合は、多少の配線が必要となります
気をつける点
- aitendoさんのホームページにC4, C4 1μF とありますが C4, C5となります
- R1のランド印刷がありません R2につけましたが動作電源3.3Vのみでは必要ありません
- チップLEDを光らせるためには別途チップ抵抗が必要です(チップLEDをハンダ付けする必要はありません)
チップ部品の仮止め
ランドの片側に薄くハンダを載せチップ部品を上に載せ軽くランドを温めて部品を落とすように仮止めします。
※抵抗が間違った位置にあります、後の写真では正の位置にあります
チップ部品の本止め
その後逆側のチップ部品の足をハンダ付けし、仮止めした方を本止めします。
フラットケーブルのハンダ付け準備
端子部分にハンダを少し流しておき、フラットケーブル位置を慎重に合わせます
フラットケーブルのハンダ付け
端子部分に軽く小手先をあてると、吸着されるようにくっついて行きます
怪しい部分は念のため小手先にほんの少しハンダを載せフィルムを抑えます
配線を加える
DataSheetとにらめっこをしても分からない部分がありましたが下図で動作しました。
- BS1/BS2 : High/Low でI2C動作モードとなります
- D3-D7 : GND (こちらは実施しなくても動作しますがノイズ防止用)
- VBAT : +3.3V (内部の昇圧回路利用のため)
- RES : プルアップ
こちらを実施しないと内部のドライバICがリセットを繰り返しi2cdetectで見つかったり見つからなかったりしますのでご注意を - D1/D2 : 束ねてSDAとして利用します
Raspberry Pi との接続
下図のように接続します
RaspberryPiから制御
OSはRaspbianを利用しています。
i2cを有効にしておいて下さい。
接続確認
下記のようになればひとまず成功です
$ 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: -- -- -- -- -- -- -- --
SSD1306 OLED Library Driverをダウンロード&インストール
$ git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
$ cd Adafruit_Python_SSD1306/
$ sudo python setup.py install
Image LibraryとしてPillowが必要でした。
Exampleを実行
$ cd examples
$ sudo python animate.py
文字が流れるようにアニメーションで表示されれば成功です、Pythonベースで制御できるので利用しやすいですね CPU利用率17%程と高いのがとても気になりますが...
Tips
下記のようなケースはいずれも配線/ハンダ付けを確認 or 適切にHigh/Lowになっているかどうかを確認して下さい。
接続した瞬間Raspberry Piの挙動がおかしくなる
リセットやKernelPanicを起こす
ショート等の可能性があり危険な状態です、即座にデバイスを切断して下さい
i2cdetectを実施する度に結果が異なる
めちゃくな表示となる
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- 05 06 -- -- 09 0a -- -- 0d 0e --
10: -- 11 12 -- -- 15 16 -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- 3a -- -- 3d 3e --
40: -- 41 42 -- -- 45 46 -- -- 49 4a -- -- 4d 4e --
50: -- 51 -- -- 54 55 -- 57 58 -- 5a 5b -- 5d 5e --
60: 60 61 -- -- 64 65 -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
3c が表示されたり、何も表示されなかったり
参考サイト
ありがとうございました!
- aitendoさんの各製品毎のデータシート/図面/コード
- oledssd1306をi2c制御
http://jsdiy.web.fc2.com/oledssd1306/ - Adafruit SSD1306 OLED Display Driver for Raspberry Pi
https://hallard.me/adafruit-ssd1306-oled-display-driver-for-raspberry-pi/