記事一覧へ戻る
Raspberry Pi/はじめて/6分で読める/

ラズパイGPIOのBCM番号と物理ピン番号の違い

Raspberry Piでは、GPIO18のようなBCM番号と、物理ピン12のようなコネクタ上の番号が別物です。コードと配線で番号の基準がズレると、正しく配線しているつもりでもLEDが動きません。

WIRING ORDER

配線順序プレビュー

レッスン用図解
Tsunagu IoT Learn / Raspberry Pi
  1. 1STEP 1Raspberry Pi GPIO18(物理ピン12) から 抵抗を通して LEDの長い足(アノード) へ
    ここから
    Raspberry Pi GPIO18(物理ピン12)
    抵抗
    ここへ
    LEDの長い足(アノード)

    確認: コードではGPIO.setmode(GPIO.BCM)を使い、18と書きます。

  2. 2STEP 2LEDの短い足(カソード) から Raspberry Pi GND(物理ピン6など) へ
    ここから
    LEDの短い足(カソード)
    ここへ
    Raspberry Pi GND(物理ピン6など)

    確認: GNDピンは複数ありますが、どれも共通の基準です。

用意するもの

  • Raspberry Pi 4 / 5 などGPIOを使える本体
  • LED 1個
  • 330Ω前後の抵抗 1本
  • ブレッドボード
  • ジャンパーワイヤー

配線

接続元接続先確認点
Raspberry Pi GPIO18(物理ピン12)抵抗を通してLEDの長い足(アノード)コードではGPIO.setmode(GPIO.BCM)を使い、18と書きます。
LEDの短い足(カソード)Raspberry Pi GND(物理ピン6など)GNDピンは複数ありますが、どれも共通の基準です。

配線元、配線先、コードのピン番号を同じ画面で確認できます。

手順

  1. 1GPIO.setmode(GPIO.BCM)を使うか、GPIO.BOARDを使うかを先に決めます。
  2. 2この記事ではBCM番号を使うため、コード上のLED_PINは18にします。
  3. 3実際のピンヘッダーでは物理ピン12の位置にジャンパーワイヤーを挿します。
  4. 4GNDは物理ピン6などのGNDへ戻します。

BCM番号GPIO18でLEDを点滅させるPythonコード

python
import RPi.GPIO as GPIO
import time

LED_PIN = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)

try:
    while True:
        GPIO.output(LED_PIN, GPIO.HIGH)
        time.sleep(1)
        GPIO.output(LED_PIN, GPIO.LOW)
        time.sleep(1)
finally:
    GPIO.cleanup()

動かないときの確認

  • BCM番号18と物理ピン12を混同していないか
  • GPIO.setmode(GPIO.BCM)になっているか
  • LEDに抵抗を直列に入れているか
  • GNDへ戻る線があるか

よくあるミス

  • GPIO18と書いて物理ピン18に挿してしまう
  • GPIO.BOARDのサンプルコードとBCMの配線図を混ぜる
  • ピンヘッダーを逆向きに数えてしまう

次に試すこと

BCM番号と物理ピン番号の対応に慣れたら、LEDだけでなくボタンやセンサーでも、コードと配線の番号を同じ基準で確認しましょう。

デモで配線を確認する