🐧 Linux 総合学習プラットフォーム
Raspberry Pi セットアップ ・ 中級

GPIOピンの概要

ラズパイの大きな特徴は、基板上に並ぶ40本のピン(GPIOヘッダ)です。GPIOは汎用入出力の意味で、LEDを光らせたりセンサーの値を読んだりと、電子工作で外部の部品とやり取りするための出入口です。ピンには電源(3.3V/5V)・GND・信号用が混在しており、配置を間違えると故障の原因になります。配置を確認するには pinout、各ピンの状態を見るには raspi-gpio を使います。

Raspberry Pi を一般的なパソコンと並べたとき、いちばん目を引く違いは何だろう。基板の縁に2列で並ぶ40本のピン、GPIOヘッダだ。

GPIO は General Purpose Input/Output(汎用入出力)の略で、その名のとおり「汎用的に」入力にも出力にも使える端子である。

出力に使えばLEDを点灯させたりモーターを回す信号を送ったりできる。入力に使えばスイッチの押下やセンサーの値を読み取れる。

🔗
たとえGPIOは、プログラムと外の現実世界(電子部品)をつなぐ出入口。光らせる・動かす・読み取る、の窓口だ。

つまりGPIOは、Raspberry Pi のプログラムと外の現実世界(電子部品)とをつなぐ出入口だ。これがあるからこそ、Raspberry Pi は画面の中だけで完結せず、温度を測る・人を検知する・物を動かすといった、いわゆる電子工作やIoTの土台になる。

ソフトウェアの知識を、実際に光る・動くという物理的な結果に結びつけられるのが、GPIO を学ぶ醍醐味だ。だが、その出入口にはひとつ厳しい掟がある。

⚡ 40本すべてが信号用、ではないのか

40本のピンはすべてが信号用というわけではなく、役割が混在している。

大きく分けると、電源を供給するピン(3.3Vと5V)、基準となる0Vのグラウンド(GND)、そして自由に使える信号用のGPIOピンの3種類だ。

💡
ポイントGPIOの信号は3.3Vで動作する。5Vではない。5Vの信号を入力ピンに直接かけると基板を壊す恐れがある。

ここで最も重要な注意が電圧である。Raspberry Pi のGPIO信号は3.3Vで動作し、5Vではない。

5Vのピンはあくまで部品へ電気を供給するための電源であって、信号のやり取りに使うものではない。5Vの信号をGPIOの入力ピンに直接かけると、基板を壊す恐れがある。

40ピンGPIOヘッダ(2列・先頭を抜粋)奇数列(物理1,3,5…)偶数列(物理2,4,6…)1 : 3.3V 電源2 : 5V 電源(信号に使わない)3 : GPIO2 (信号)4 : 5V 電源5 : GPIO3 (信号)6 : GND (0V)11 : GPIO17 ←物理11=GPIO17… GND / 信号が交互に並ぶ電源(3.3V/5V)・GND・信号用GPIOが混在。挿す前に役割を必ず確認

同じ理由で、配線を1つ隣のピンに挿し間違えると、信号用のつもりが電源やGNDにつながって故障につながる。

つまずき1つ隣のピンに挿し間違えるだけで故障につながる。電源を入れたまま抜き挿しせず、一度電源を落としてから作業する。

だからこそ、つなぐ前にどのピンが何の役割かを示すピン配置を必ず確認することが、Raspberry Pi の電子工作における最初の安全策になる。電源を入れたまま配線を抜き挿しするのも避け、必ず一度電源を落としてから作業するのが基本だ。

🔍 どのピンが何なのか、どう確かめるのか

どのピンが電源か、GNDか、どの番号のGPIOかを確かめるのに便利なのが pinout コマンドだ。

pinout ……基板の向きに合わせた40ピンの配置図と、各ピンの役割を色分けでターミナルに表示する。

Raspberry Pi OS には標準で入っており、ターミナルで pinout と打つだけで、基板の向きに合わせた40ピンの配置図と、各ピンの役割が色分けでターミナルに表示される。

配線するときは、この表示を実機の向きと見比べながら、目的のピンの位置を一本ずつ数えて確かめるのが安全だ。あわせて基板のリビジョンやメモリ容量といった情報も出るので、手元の機器の素性をざっと確認するのにも役立つ。

ここで一つ落とし穴がある。ピン番号の数え方には2つの流儀があるのだ。

💡
ポイントピン番号には物理番号(ボードピン番号)とGPIO番号(BCM番号)の2系統がある。たとえば物理11番=GPIO17。

ヘッダの物理的な並び順で1〜40と数える「物理番号(ボードピン番号)」と、チップ上の信号名で呼ぶ「GPIO番号(BCM番号)」である。

たとえば物理ピンの11番は GPIO17 にあたる、というように両者は対応している。配線図やライブラリがどちらの番号で書かれているかを取り違えると、別のピンを操作してしまう。pinout の表示はこの対応関係を把握する助けになる。

📟 配線が正しいか、プログラムを書く前に分かるか

配線したあと、各ピンが今どういう状態にあるかを確認するには raspi-gpio コマンドが役立つ。

raspi-gpio get ……全ピンの機能(入力/出力)・電圧レベル(0/1)・プルアップ/プルダウンを一覧表示。raspi-gpio get 17 で1本だけ確認。

raspi-gpio get と打つと、全ピンについて、入力か出力か(機能)、現在の電圧レベル(0か1か、つまりLowかHigh)、内部のプルアップ/プルダウン抵抗の状態などが一覧で表示される。raspi-gpio get 17 のように番号を付ければ、そのピンだけを確認できる。

出力の確認だけでなく、入力の確認にも使える。たとえばスイッチをつないだピンを raspi-gpio get 17 で見ながらスイッチを押し、値が0と1で切り替わるかを確かめれば、配線が正しいかをプログラムを書く前にチェックできる。

コツLEDが光らないときは raspi-gpio get で、そのピンが本当に出力で値が1(High)かを見れば、原因がプログラムか配線かを切り分けられる。

「LEDが光らない」というときも、raspi-gpio get でそのピンが本当に出力になっていて値が1(High)になっているかを見れば、プログラム側の問題か配線側の問題かを切り分けられる。

学習や動作確認の場面では、コマンドからピンの状態を直接読めるこの道具が、目に見えない電気の状態を確かめる窓口になる。なお、ピンを操作・確認するコマンドは管理者権限を求めることがあるため、うまく動かないときは sudo を付けて試す。

⚠ 初心者がいちばん壊しやすいのは、どこか

初心者がつまずく定番を挙げていく。

まず物理番号とGPIO番号の取り違えで、隣や全く別のピンを操作してしまうパターンだ。配線図やサンプルコードがどちらの番号体系かを最初に確認する癖をつけよう。

次に多いのが、3.3Vと5Vを混同して5VをGPIOにかけ、基板を傷めてしまう事故である。信号は3.3V、という原則を徹底する。

つまずきLEDを直接つなぐと電流を流しすぎて壊すことがある。電流を抑える抵抗を間に入れるのが基本だ。

また、LEDを直接つないで電流を流しすぎて壊す失敗もよくあるので、電流を抑える抵抗を間に入れるのが基本だ。

配線をずらして1ピン隣に挿してしまう、向きを間違えて電源とGNDを取り違える、といった物理的なミスも事故のもとだ。つなぐ前後に pinout と raspi-gpio で確認する習慣が効く。

実務では、こうしたGPIOの操作はコマンドだけでなく Python の gpiozero ライブラリなどプログラムから制御するのが一般的だ。ピン配置の確認に pinout、状態の確認に raspi-gpio、本番の制御はプログラム、という役割分担になる。

センサーやディスプレイの多くは I2C や SPI といった通信方式でつなぐ。その場合は事前に raspi-config の Interface Options で対応する機能を有効化しておく必要がある。

まずは pinout でピン配置を頭に入れ、raspi-gpio で状態を読めるようになることが、安全に電子工作へ踏み出すための確かな第一歩だ。

つまずいたら、LEDを1つ光らせる、ボタンの押下を読む、という小さな成功体験から積み上げると、ピン配置と電圧の感覚が自然に身につく。

この項目に出てくる用語

GPIOじーぴーあいおー
汎用入出力。外部の電子部品とやり取りするピン。
ピン配置ぴんはいち
GPIOヘッダの各ピンが何の役割かを示す並び。

関連コマンド

pinoutraspi-gpio

▶ 学習アプリでこの続きを学ぶ・演習する