Raspberry Pi 5 の GPIOLinux が動く Pi 5 で、Python(gpiozero)からピンを操作する
Raspberry Pi 5 はマイコンではなく「小さな Linux PC」ですが、40 ピンのヘッダで LED やセンサーを直接つなげます。Pi 5 から GPIO の担当チップが RP1 に変わったため、古い記事の RPi.GPIO はそのままでは動きません。gpiozero を使うのが確実です。
- Raspberry Pi 5 8GB
CONTENTSこの記事の目次+
01 — 40-PIN HEADER
40 ピンヘッダ
- 3.3V:物理 1・17 番
- 5V:物理 2・4 番(USB-C から来る電源そのもの)
- GND:物理 6・9・14・20・25・30・34・39 番
- GPIO:残り。プログラムでは「GPIO17」など BCM 番号で指定する
- I2C:GPIO2(SDA)・GPIO3(SCL)= 物理 3・5 番
物理ピン番号と GPIO 番号は別物です。ターミナルで pinout と打つと、自分の Pi の配置図が表示されます。
02 — GPIOZERO
gpiozero で L チカ
from gpiozero import LED
from time import sleep
led = LED(17) # GPIO17(物理 11 番ピン)
while True:
led.on()
sleep(0.5)
led.off()
sleep(0.5)配線:物理 11 番(GPIO17)→ 抵抗 220Ω → LED アノード、LED カソード → 物理 9 番(GND)。Raspberry Pi OS には gpiozero が最初から入っています。python3 blink.py で実行し、Ctrl+C で止めます。
led.blink() と書くだけで点滅もできます(バックグラウンドで動くので、その後の処理を続けられます)。
03 — INPUT
ボタン入力
from gpiozero import Button
button = Button(27) # GPIO27。内部プルアップが有効になる
button.wait_for_press()
print("押された")配線:GPIO27(物理 13 番)とGND(物理 14 番)の間にボタン。gpiozero の Button は初期状態でプルアップを有効にするので、ボタンを押すと GND に落ちて「押された」と判定されます。
04 — PI VS MCU
マイコン(ESP32)との違い
| 項目 | Raspberry Pi 5 | ESP32-S3 / M5Stack |
|---|---|---|
| OS | Linux が動く | OS なし(プログラムだけ) |
| 起動 | 数十秒 | 一瞬 |
| タイミング精度 | OS の都合でずれる | 正確(PWM やサーボ向き) |
| 得意なこと | カメラ・AI・ネットワーク・画面 | センサー・モーター・電池駆動 |
| 消費電力 | 大きい(5V 5A 推奨) | 小さい(電池で動く) |
「Pi 5 が頭脳、ESP32 が手足」という組み合わせもよく使います。ESP32 を USB でつないでシリアル通信するか、Wi-Fi 越しにデータを送れば、精密なタイミングや電池駆動は ESP32 に任せられます。
05 — WATCH OUT
注意点
rpi-lgpio という互換パッケージもありますが、新しく書くなら gpiozero にします。
物理 2・4 番は 5V。隣の GPIO に挿し間違えると壊れます。配線前に pinout で確認します。
sudo shutdown -h now で止めて、電源を抜いてから抜き差しします。
06 — CHECK YOURSELF
理解チェック
Q1GPIO17 は物理何番ピン?答えを見る
11 番。隣の 9 番が GND なので L チカに使いやすい。
