🐧 Linux 総合学習プラットフォーム
実機制御 GPIO/I2C/SPI・RT ・ 上級

ピン配置の確認

実機制御の事故の多くは「どのピンが何か」の取り違えから起きます。物理ピン番号(基板上の1〜40)とBCM番号(SoC内部の論理番号)は別物で、配線前に対応表を確認することが欠かせません。Raspberry Piでは pinout コマンドでヘッダ図を、raspi-gpio get で各ピンの現在の機能(入出力・プルの状態)を確認できます。新しめの環境では pinctl/pinctrl 系のツールでラインの割り当てを点検します。電源(3.3V/5V)とGNDの位置を取り違えると機器を壊すため、まず図で確かめてから配線します。

実機制御でのトラブルやハードウェア破損の多くは、プログラムの誤りではなく「どのピンが何なのか」の取り違えから起こります。LEDをつないだつもりが電源ピンに挿していた、入力に5Vをかけてしまった、GNDの位置を間違えた——こうした配線ミスは、コードをいくら見直しても直りません。だからこそ、配線を始める前にピン配置(ピンアウト)を正確に把握することが、何よりの事故防止になります。GPIOの操作以前の、いちばん物理的で地味な、しかし最も重要な確認作業です。

物理ピン番号とBCM番号

Raspberry Piの拡張ヘッダには40本のピンが並んでいます(古い初代の一部を除く)。ここで混乱のもとになるのが、ピンに2つの番号体系があることです。ひとつは基板上の物理的な並び順で振られた「物理ピン番号」(1〜40。ヘッダの端から数えた位置で、ボードを決まった向きに置いたときの番号)です。もうひとつはSoC内部の論理的な番号である「BCM番号」(GPIO2、GPIO17 のように呼ぶ。BCMはSoCのメーカー名Broadcomに由来)で、libgpiodのライン番号や多くのプログラム、Pythonライブラリはこちらを使います。たとえば「物理ピン11番」と「GPIO17(BCM17)」は同じ1本のピンを別の数え方で呼んでいるだけ、という関係です。両者の間に規則的な対応関係はなく、表で引くしかありません。配線の説明が物理番号で書かれているのか、BCM番号で書かれているのかを取り違えると、まったく別のピンをいじってしまい、動かないだけならまだしも、電源ピンを触って機器を壊すことにもつながります。さらに40本の中には、自由に使えるGPIOピンのほか、3.3V電源・5V電源・GND(グラウンド)が固定で割り当てられたピンが混在しており、これらは入出力には使えません。どれが電源・GNDかを把握しておくことが、最初の安全確認になります。

pinout で全体像をつかむ

Raspberry Pi OS には、ヘッダの全体像を一目で確認できる pinout というコマンドが用意されています(GPIO Zeroパッケージに付属)。ターミナルで `pinout` と打つと、ボードの図とともに、各ピンが何か——どれが3.3V/5V、どれがGND、どれがGPIO何番か、I2CやSPI、UARTに割り当てられているピンはどれか——が色分けで一覧表示されます。さらに、いま動いているボードのモデルやメモリ容量といった情報も併せて示されるため、手元の機種に合った正確なピン配置が得られます。配線の前にこの図を出して、「使おうとしているピンは本当にGPIOか」「物理番号とBCM番号の対応は合っているか」「すぐ隣に電源やGNDが来ていないか」を確かめるだけで、多くの初歩的な事故を防げます。紙の早見表は機種違いで誤ることがありますが、このコマンドは実機の情報に基づくぶん信頼でき、印刷物が手元になくても一発で正しい対応表が出るのが強みです。

raspi-gpio と gpioinfo で現在の状態を見る

ピンの「配置」だけでなく「今どういう状態か」を確認するのも重要です。`raspi-gpio get` を実行すると、各ピンについて現在の機能(入力か出力か、あるいはI2CやSPI等のALT機能に割り当てられているか)、レベル(HIGH/LOW)、プル(プルアップ/プルダウンの設定状態)が一覧で表示されます。特定のピンだけ見たいときは `raspi-gpio get 17` のように番号を添えます。これにより、「設定したつもりの向きになっているか」「期待した電圧が出ているか」「他の機能に取られていないか」をその場で点検できます。たとえばI2Cを有効にしたあとに該当ピンを見ると、ALT機能としてI2Cに割り当てられている様子が確認でき、これらのピンを汎用GPIOに転用すると衝突することが分かります。

同じことを別のツールからも確認できます。libgpiod側からは gpioinfo で、各ラインの名前・向き・used(予約済み)状態が一覧でき、どのラインが空いているかを見分けられます。また新しめのRaspberry Pi OS(とくにPi 5)では pinctrl(環境によっては pinctl と表記されることもあります)系のツールが標準で、`pinctrl get` を打つと raspi-gpio と同様にピンごとの機能・レベル・プルを確認できます。Pi 5では従来の raspi-gpio に代わってこの pinctrl が推奨される位置づけになっています。これらは見る角度や対応環境が少しずつ違うので、手元の環境で使えるものを把握し、組み合わせて使うと確実です。いずれにせよ「通電する前に、各ピンが想定どおりの状態か」を一度目で確かめる、という点検の習慣が事故を減らします。

配線の事故防止と実務の勘どころ

確認のうえで、配線時に最も気をつけるべきは電源とGNDの取り違えです。3.3Vや5Vのピンを、GPIOのつもりで信号線として使うとデバイスやPiを壊します。とくにRaspberry PiのGPIOは3.3V系であり、入力ピンに5Vを直接加えるとSoCが破壊されます。3.3Vピンとすぐ隣の5Vピンを挿し間違えるだけで機器を壊しかねないので、図での位置確認は省略できません。5V論理のセンサやモジュールをつなぐときは、レベル変換回路を挟むか、3.3V対応品を選びます。また、出力ピンから取り出せる電流はわずか(ピン単体でも全体合計でも上限がある)なので、モータや多数のLEDを直結せず、ドライバICやトランジスタを介して電力は別系統から供給します。実務の手順としては、まず pinout で物理位置と役割を確認し、BCM番号と物理番号の対応をメモし、配線後に raspi-gpio get や gpioinfo で各ピンの向き・プル・予約状況を点検してから通電する、という流れを習慣にします。「図で確かめてから挿す、通電前に状態を点検する」——この一手間が、壊さず安全に実機制御を進める最大のコツです。

この項目に出てくる用語

GPIOじーぴーあいおー
汎用入出力ピン。LED点灯やボタン読み取りなど実機制御の土台。
プルアップ/プルダウンぷるあっぷぷるだうん
入力ピンを既定でHIGH/LOWに固定する抵抗設定。

関連コマンド

raspi-gpiogpioinfopinctrl

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