Raspberry Pi/初級/8分で読める/
ラズパイでSSD1306 OLEDを表示する配線とPythonコード
SSD1306 OLEDはI2Cで扱える小型ディスプレイです。Raspberry PiではSDAをGPIO2、SCLをGPIO3へ接続し、I2Cを有効化してから表示を確認します。
WIRING ORDER
配線順序プレビュー
Tsunagu IoT Learn / Raspberry Pi
- 1STEP 1SSD1306 VCC から Raspberry Pi 3.3V(物理ピン1など) へここからSSD1306 VCC→ここへRaspberry Pi 3.3V(物理ピン1など)
確認: 3.3V対応モジュールとして扱うのが安全です。
- 2STEP 2SSD1306 GND から Raspberry Pi GND(物理ピン6など) へここからSSD1306 GND→ここへRaspberry Pi GND(物理ピン6など)
確認: 電源とI2C信号の基準を共通にします。
- 3STEP 3SSD1306 SDA から Raspberry Pi GPIO2/SDA1(物理ピン3) へここからSSD1306 SDA→ここへRaspberry Pi GPIO2/SDA1(物理ピン3)
確認: I2Cのデータ線です。
- 4STEP 4SSD1306 SCL から Raspberry Pi GPIO3/SCL1(物理ピン5) へここからSSD1306 SCL→ここへRaspberry Pi GPIO3/SCL1(物理ピン5)
確認: I2Cのクロック線です。
用意するもの
- Raspberry Pi 4 / 5 などGPIOを使える本体
- SSD1306 OLEDディスプレイ(I2C)
- ブレッドボード
- ジャンパーワイヤー
配線
| 接続元 | 接続先 | 確認点 |
|---|---|---|
| SSD1306 VCC | Raspberry Pi 3.3V(物理ピン1など) | 3.3V対応モジュールとして扱うのが安全です。 |
| SSD1306 GND | Raspberry Pi GND(物理ピン6など) | 電源とI2C信号の基準を共通にします。 |
| SSD1306 SDA | Raspberry Pi GPIO2/SDA1(物理ピン3) | I2Cのデータ線です。 |
| SSD1306 SCL | Raspberry Pi GPIO3/SCL1(物理ピン5) | I2Cのクロック線です。 |
配線元、配線先、コードのピン番号を同じ画面で確認できます。
手順
- 1Raspberry Piの電源を切った状態でVCC、GND、SDA、SCLを配線します。
- 2raspi-configなどでI2Cを有効化します。
- 3i2cdetectで0x3Cなどのアドレスが見えるか確認します。
- 4必要なPythonライブラリを準備します。
- 5Pythonコードを実行し、OLEDに文字が表示されるか確認します。
SSD1306に文字を表示するPythonコード
pythonfrom PIL import Image, ImageDraw
import board
import busio
import adafruit_ssd1306
i2c = busio.I2C(board.SCL, board.SDA)
oled = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
oled.fill(0)
oled.show()
image = Image.new("1", (oled.width, oled.height))
draw = ImageDraw.Draw(image)
draw.text((0, 0), "Hello IoT", fill=255)
draw.text((0, 16), "SSD1306", fill=255)
oled.image(image)
oled.show()動かないときの確認
- SDAをGPIO2、SCLをGPIO3へ接続しているか
- I2Cを有効化しているか
- OLEDのI2Cアドレスが0x3Cか確認したか
- VCCとGNDを逆にしていないか
よくあるミス
- SDAとSCLを逆に接続する
- I2Cを有効化せずにコードだけ実行する
- 実際のアドレスが0x3Dなのに0x3Cのままにする
次に試すこと
OLED表示ができたら、BME280やDHT22などのセンサー値を画面に出すと、配線とコードのつながりを実感しやすくなります。
デモで配線を確認する