Raspberry Pi 4 を含むすべての Raspberry Pi の最大の利点は、ロボットからレトロゲームコンソール、おなら検出器まで、あらゆる種類の素晴らしい装置を構築できることです。これらのプロジェクトを可能にするセンサー、モーター、ライト、その他の周辺機器のほとんどは、Pi の GPIO (汎用入出力) ピンセットに接続します。これらのピンは、Pi の中心にあるシステム オン チップ (SoC) に直接接続され、Pi が HAT (Hardware Attached on Top) と呼ばれる外部コンポーネントおよびアドオンと通信できるようにします。2014 年の Raspberry Pi B+ 以降のすべての Pi モデルには 40 個の GPIO ピンがありましたが、Pi Zero および Zero 2 W には、ピンまたはワイヤをはんだ付けできる穴が 40 個あります。はんだごてを持っていなくても心配はいりません。お選びいただける最高のはんだごてのリストがあります。
このガイドは、Raspberry Pi 4 の新機能を反映するように更新されました。Raspberry Pi 4 には引き続き 40 個の GPIO ピンが搭載されていますが、追加の I2C、SPI、UART 接続がいくつか利用できます。
何を製作するにしても、Raspberry PiのGPIOピン配置、つまり各ピンのピンマップと機能の説明を知っておく必要があります。ピンの中には電圧やロジックを提供するものもあれば、グランド、そして様々なインターフェースに接続するものもあります。これらについては以下で詳しく説明します。
汎用入力出力(GPIO)ピン
GPIOはRaspberry Piの最も基本的でありながら、アクセスしやすい機能です。GPIOピンはデジタルであるため、オフとオンの2つの状態を持ちます。電流の受信方向(それぞれ入力、出力)と送信方向を持ち、Python、JavaScript、Node-REDなどのプログラミング言語を使用してピンの状態と方向を制御できます。
GPIOピンの動作電圧は3.3Vで、最大消費電流は16mAです。つまり、抵抗器(抵抗器のカラーコードを参照)を介して、1つのGPIOピンから1個または2個のLED(発光ダイオード)に安全に電力を供給できます。ただし、DCモーターなど、より大きな電流を必要とする場合は、GPIOピンを損傷しないように外付け部品を使用する必要があります。
PythonでGPIOピンを制御するには、まず事前に記述されたコードのライブラリをインポートする必要があります。最も一般的なライブラリはRPi.GPIOで、Raspberry Piの初期の頃から何千ものプロジェクトの作成に使用されてきました。最近では、GPIO Zeroという新しいライブラリが導入され、Pythonや基本的な電子工学の初心者にとってより簡単な入門ツールとなっています。どちらのライブラリもRaspberry Pi OSにプリインストールされています。
GPIO ピンには複数の名前があります。最も明白な最初の参照は、GPIO 上の「物理的な」位置です。GPIO の左上から始まり、つまり micro SD カードが挿入されている場所に最も近いピンには、3V3 電源を供給する物理的なピン 1 があります。そのピンの右側には、5V 電源を供給する物理的なピン 2 があります。各列を下に行くにつれてピン番号が増加し、ピン 1 はピン 3、5、7 と進み、ピン 39 に達します。この列の 1 から 39 までの各ピンは奇数シーケンスに従っていることがすぐにわかります。また、ピン 2 から始まる列では、4、6、8 と進み、40 に達するまで偶数シーケンスに従います。物理的なピン番号付けは、ピンを見つける最も基本的な方法ですが、Raspberry Pi 用に書かれたチュートリアルの多くは、異なる番号付けシーケンスに従っています。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
Broadcom (BCM) のピン番号(GPIOピン番号とも呼ばれます)は、一般ユーザーにとって複雑に思えるかもしれません。GPIO17、22、27が論理的な番号付けをほとんど考慮せずに連続して並んでいるからです。BCMのピンマッピングは、Raspberry Piのシステムオンチップ(SoC)に直接接続されているGPIOピンを指します。つまり、プロジェクトで使用するセンサーやコンポーネントをRaspberry Piの頭脳に直接接続できるということです。
Raspberry Piのチュートリアルのほとんどでこのリファレンスが使用されています。これは、Raspberry Pi Foundationが公式にサポートしているピン番号体系だからです。BCMのピン番号体系を使い始め、学習するのがベストプラクティスです。使い続けるうちに、自然に身に付くでしょう。また、BCMとGPIOのピン番号体系は同じであることにもご注意ください。例えば、GPIO17はBCM17と同じです。
一部のGPIOピンには、I2C、SPI、またはUARTプロトコルを使用する様々なデバイスとのインターフェースを可能にする代替機能があります。例えば、GPIO3とGPIO4は、I2Cプロトコルを使用してデバイスを接続するために使用されるSDAおよびSCL I2Cピンでもあります。これらのピンをこれらのプロトコルで使用するには、Raspberry Pi OSの「Preferences」メニューにあるRaspberry Pi Configurationアプリケーションを使用してインターフェースを有効にする必要があります。
I2C、SPI、UART: どれを使用しますか?
I2C、SPI、UARTの具体的な違いについては後述しますが、特定のデバイスに接続するためにどれを使用すればよいか迷っている場合は、仕様書を確認するのが近道です。例えば、ある小さなLEDスクリーンではSPIが必要で、別のスクリーンではI2Cが必要になるかもしれません(UARTを使用するものはほとんどありません)。製品に付属するドキュメント(もしあれば)を読めば、通常、どのPiピンを使用すればよいかが分かります。
Raspberry Pi 4をお使いの方は、I2C、SPI、UARTのピンがさらに多く利用できるようになったことにご注意ください。これらの追加インターフェースはデバイスツリーオーバーレイを使用して有効化され、4つのSPI、I2C、UART接続を追加できます。
I2C - インターインテグレーテッドサーキット
I2Cは、I2C規格を用いてデバイスを接続するための低速2線式シリアルプロトコルです。I2C規格を使用するデバイスは、マスターとスレーブの関係を持ちます。マスターは複数存在できますが、各スレーブデバイスには、メーカーがNXP(旧Philips Semiconductors)から取得した固有のアドレスが必要です。つまり、各デバイスは固有のものであり、ユーザーやコンピュータがi2cdetectなどのLinuxコマンドを使用して検出できるため、単一のI2C接続で複数のデバイスと通信できます。
前述の通り、I2CにはSDAとSCLの2つの接続があります。これらはSDA接続との間でデータを送受信することで機能し、速度はSCLピンで制御されます。I2Cは、LCD/OLEDスクリーン、温度センサー、フォトレジスターなどと併用するアナログ/デジタルコンバーターなど、様々なコンポーネントをプロジェクトに迅速かつ簡単に追加できる手段です。標準的なGPIOピンよりも少し理解しにくい部分もありますが、I2Cを学習することで得られる知識は、現場で使用するための高精度センサーの接続方法を理解する上で大いに役立ちます。
Raspberry Pi には、GPIO 2 と 3 (SDA と SCL) の 2 つの I2C 接続があり、これらは I2C0 (マスター) 用で、物理ピン 27 と 28 は、Pi が互換性のある HAT (Hardware Attached on Top) アドオン ボードと通信できるようにする I2C ピンです。
SPI - シリアルペリフェラルインターフェース
SPIは、Raspberry Piに互換性のあるデバイスを接続するための別のプロトコルです。Raspberry Piと接続されたデバイスの間にマスタースレーブ関係が存在するという点で、I2Cに似ています。
SPIは通常、マイクロコントローラとシフトレジスタ、センサー、さらにはSDカードなどのコンポーネント間の短距離データ送信に使用されます。データはマスター(Raspberry Pi)からのクロック(GPIO11のSCLK)を使用して同期され、Raspberry PiからMOSIピン(GPIO GPIO10)を介してSPIコンポーネントに送信されます。MOSIはMaster Out Slave Inの略です。コンポーネントがRaspberry Piに応答する必要がある場合、MISOピン(GPIO9)を介してデータを返信します。MISOピンはMaster In Slave Outの略です。
UART - 汎用非同期受信機/送信機
一般的に「シリアル」と呼ばれるUARTピン(送信GPIO14、受信GPIO15)は、ヘッドレスセットアップ(キーボードやポインティングデバイスを使わずにRaspberry Piに接続する)のためのコンソール/ターミナルログインを提供します。通常、ヘッドレスRaspberry Piセットアップを行う最も簡単な方法は、ネットワーク経由、または直接USB接続(Raspberry Pi Zeroの場合)経由でRaspberry Piを制御することです。
ネットワーク接続がない場合は、ターミナルコンソールを実行しているコンピューターからシリアルケーブルまたはUSBシリアルボードを使用して、ヘッドレスPiを制御することもできます。UARTは非常に信頼性が高く、追加の機器を必要とせずにPiにアクセスできます。Raspberry Pi設定アプリケーションでシリアルコンソールを有効にすることを忘れないでください。おそらくこれを行いたくないでしょうが、必要に応じてUARTサポートが利用可能です。
グランド(gnd)
グラウンドは一般的にGND、gnd、または-と呼ばれますが、すべて同じ意味です。GNDはすべての電圧を測定できる基準点であり、電気回路を完成させる役割も担っています。これはゼロ点であり、LEDなどの部品を電源とグラウンドに接続すると、部品は回路の一部となり、電流がLEDに流れて光を生み出します。
回路を構築する際は、繊細な部品に問題が生じないよう、電源を投入する前に必ずアース接続を行ってください。Raspberry PiにはGPIOに沿って8つのアース接続があり、各アースピンは1つのアース接続に接続されています。そのため、どのアースピンを使用するかは、個人の好みや部品接続時の利便性によって決まります。
5V
5Vピンは、ACアダプターからの5V電源に直接アクセスできます。Raspberry Pi本体が使用する電力よりも少ない電力で動作します。これらのピンからRaspberry Piに直接電力を供給できるだけでなく、他の5Vデバイスにも電力を供給できます。これらのピンを直接使用する場合は、接続前に電圧を注意深く確認してください。電圧レギュレータやヒューズなど、Raspberry Piを保護するための安全機能がバイパスされてしまうためです。これらの安全機能をバイパスする電圧を高く設定すると、Raspberry Piが動作不能になる可能性があります。特に5Vと3.3Vを同時に接続した場合、Raspberry Piが数秒で動作しなくなる可能性があります。私たちも以前、このような状況に陥ったことがあります。
3対3
3Vピンは、コンポーネントに電力を供給し、LEDをテストするために安定した3.3V電源を供給するために存在します。実際には、このピンをビルドに組み込むことは稀ですが、特別な用途があります。LEDをGPIOに接続する際は、まずLEDが正しく配線され、点灯することを確認する必要があります。LEDの長い方の脚(アノード)を抵抗を介して3.3Vピンに接続し、短い方の脚(カソード)をいずれかのグランド(gnd)ピンに接続することで、LEDが点灯し、動作していることを確認できます。これにより、プロジェクトからハードウェアの障害が排除され、自信を持ってプロジェクトの構築を開始できます。
詳細: Raspberry Piの使い方
詳しくはこちら:すべてのテクノロジーオタクがRaspberry Piを所有すべき理由
詳細: ヘッドレスRaspberry Piのセットアップ方法
さらに詳しく:Raspberry Piユーザーが知っておくべき25以上のLinuxコマンド
レス・パウンダーは、トムズ・ハードウェアのアソシエイトエディターです。クリエイティブテクノロジストとして、7年間にわたり、老若男女を問わず、教育と啓発のためのプロジェクトを手がけてきました。Raspberry Pi Foundationと協力し、教師向けトレーニングプログラム「Picademy」の執筆・提供にも携わっています。