LoginSignup
0
1

目次

1.前回のまとめ
2.有機ELディスプレイ
3.Raspberry Pi Pico WとI2C通信する
4.コーディング
5.まとめ

1.前回のまとめ

houwouです。
前回の投稿でRaspberry Pi Pico Wと気圧センサMPL115A2、温湿度センサDHT20のI2C通信が無事に成功しました。
今回は有機ELディスプレイで遊んでみようと思います。

2.有機ELディスプレイ

有機ELディスプレイは0.96インチ 128×64ドット有機EL(OLED)白色を使用します。
仕様は秋月電子通商さんが掲載している取扱説明書で確認。
裏面のチップ抵抗R11をR12に付け替えることでスレーブアドレスが0x78から0x7Aに設定変更できるらしい。
SSD1306.jpg

3.Raspberry Pi Pico WとI2C通信する

Raspberry Pi Pico Wのピンアサインを公式サイトで確認する。
Raspberry Pi Pico Wのピンアサイン
今回もSDAはGP12、SCLはGP13を使用してI2C0で接続する。

次は有機ELディスプレイのピンアサインを確認、と思ったらSSD1306の取扱説明書には詳細なことが書いてありすぎて解読不可能。
でも親切なことに基盤にピンアサインが書いてあった。
VDDには3.3Vを供給、GNDはそのまま接地、SDAとSCLはそれぞれRaspberry Pi Pico WのSDAとSCL(今回はGP12とGP13)に接続。(DHT20と一緒)

これまで接続していた気圧センサMPL115A2と温湿度センサDHT20も同時にI2C接続したのがこちら。
SSD1306回路図.jpg
20230928_211931.jpg

念のため今回もスレーブアドレスを確認。

i2c_scan.py
from machine import Pin, I2C

i2c = I2C(0, sda=Pin(12), scl=Pin(13), freq=100000)

print(i2c.scan())
shell
>>> %Run -c $EDITOR_CONTENT

MPY: soft reboot
[56, 60, 96]
>>>  

60の0x3Cが仲間になった。
あれ?0x78じゃないのか?
SSD1306-i2c.jpg
取扱説明書を見れば解決した。
言われてみれば単純なことだった。
0x3Cは0011 1110で0x78は0111 1100。
0011 1110を左シフトすると0111 1100と一致する。
一桁目は読み書きのモード切替に使用するらしい。
ということで無事に接続成功!

4.コーディング

SSD1306はライブラリが豊富という噂通り、Thonnyの「パッケージを管理」でPyPIのMicropythonライブラリを検索すると1件ヒットしたのでそれをインストール。
SSD1306-lib1.jpg
SSD1306-lib2.jpg
SSD1306-lib3.jpg

無事にインストールできたので、先人の知恵を借りながらコーディングしていく。(ライブラリ内のコードは割愛)
参考:ラズパイPicoでSSD1306有機ELディスプレイの使い方 MicroPython編

main.py
from machine import Pin, I2C
import ssd1306

i2c = I2C(0, sda=Pin(12), scl=Pin(13))

display = ssd1306.SSD1306_I2C(128, 64, i2c)

while True:
    display.fill(0)
    display.text('SSD1306 TEST', 5, 2, True)
    display.text('TEMP: 27.5C', 5, 18, True)
    display.text('HUMI: 66.6%', 5, 34, True)
    display.text('PRES: 1023.1hPa', 5, 50, True)

    display.show()

20230929_232659.jpg
見事成功!

5.まとめ

これで一通りのペリフェラルを接続することに成功した。
次回は少し実用性を考えた温湿度気圧計を設計してみる。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1