GPIO(ジーピーアイオー)とは | 意味や読み方など丁寧でわかりやすい用語解説
GPIO(ジーピーアイオー)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
汎用入出力 (ハンヨウニュウショウツリョク)
英語表記
GPIO (ジーピーアイオー)
用語解説
GPIO(ジーピーアイオー)とは、General Purpose Input/Outputの略称で、汎用的な入出力端子を意味する。マイクロコントローラやシングルボードコンピュータ(SBC)などのプロセッサが、外部の電子部品やデバイスと直接、電気的な信号をやり取りするためのインターフェースである。この端子の最も重要な特徴は、その「汎用性」にある。特定の機能に限定されず、ソフトウェアによって入出力のどちらか一方に設定し、デジタル信号(HIGH/LOWの電圧状態)を自由に制御できる点が、組み込みシステムやIoTデバイス開発において非常に重要となる。
GPIOの概要は、コンピュータの頭脳であるCPUやマイクロコントローラが、現実世界の物理的な変化(ボタンが押された、センサーが光を検知したなど)を認識したり、現実世界に影響を与えたり(LEDを点灯させる、モーターを動かすなど)するための、直接的な「窓口」のようなものだと理解できる。通常のPCでは、キーボードやマウス、ディスプレイなどのデバイスはUSBやHDMIといった規格化されたインターフェースを介して接続されるが、組み込みの世界では、もっと単純な電気信号レベルでの制御が必要となる場面が多い。例えば、たった一つのLEDを点灯させたい場合や、単純なオン/オフを検出したい場合、専用の複雑なインターフェースを必要とせず、GPIOを使えば直接的にかつ容易に制御が可能となる。これにより、システム設計の自由度が高まり、コストや複雑さを抑えながら、様々な独自の機能を実現できるのである。
詳細に入ると、GPIOは主に二つの基本的なモードを持つ。一つは「入力モード」であり、外部から加えられる電圧の状態をプロセッサが読み取る際に使用する。例えば、外部に接続された押しボタンが押されたかどうかを検出する場合、ボタンが押されるとGPIOピンに特定の電圧(一般的にはHIGH、または電源電圧レベル)が印加され、押されていない場合は別の電圧(LOW、またはグラウンドレベル)が印加される。プロセッサはこの電圧変化をデジタル信号として認識し、ソフトウェアでその状態を判断できる。この際、ボタンが押されていない状態でもピンの電圧が不安定になる「フローティング状態」を防ぐために、内部または外部のプルアップ抵抗やプルダウン抵抗を利用することが一般的である。プルアップ抵抗は、通常時にピンをHIGHの状態に保ち、ボタンが押されたときにLOWに引き下げる方式であり、プルダウン抵抗はその逆で、通常時にLOWに保ち、ボタンが押されたときにHIGHに引き上げる方式である。
もう一つは「出力モード」であり、プロセッサがGPIOピンを通じて外部に電圧を供給する際に使用する。例えば、LEDを点灯させたい場合、GPIOピンを出力モードに設定し、ソフトウェアからHIGH信号を出力すると、ピンから電圧が供給されてLEDが点灯する。LOW信号を出力すればLEDは消灯する。この出力される電圧レベルは、プロセッサの動作電圧(一般的には3.3Vや5V)に依存する。重要なのは、GPIOピンが供給できる電流には限界があることだ。大電流を必要とするデバイス(例えばモーター)を直接GPIOピンに接続すると、プロセッサが損傷する可能性があるため、トランジスタやリレーなどのドライバ回路を介して制御する必要がある。また、LEDを接続する場合も、過電流によるLEDやGPIOピンの損傷を防ぐため、適切な電流制限抵抗を直列に接続することが必須である。
GPIOは、単純なオン/オフ制御だけでなく、より複雑な通信プロトコル(I2C、SPI、UARTなど)の機能を持つピンと兼用されている場合も多い。これらの専用機能を持つピンは、GPIOとして設定するのではなく、その通信プロトコル用のインターフェースとして設定して利用される。しかし、特定のプロトコルを用いない限りは、汎用的な入出力ピンとして利用できるため、多岐にわたる用途に応用可能である。
具体的な応用例としては、Raspberry Piのようなシングルボードコンピュータがその代表である。Raspberry Piには数十本のGPIOピンが搭載されており、Pythonなどのプログラミング言語を用いた簡単なスクリプトで、LEDの点滅、スイッチの状態読み取り、人感センサーや温湿度センサーといった各種センサーからのデジタル信号取得、小型LCDディスプレイの制御など、様々な電子工作やプロトタイピングが可能である。これらの制御は、専用のライブラリやフレームワークを利用することで、レジスタを直接操作するような低レベルな知識がなくても、初心者でも比較的容易に行うことができる。
GPIOを扱う上での注意点として、まず接続する外部デバイスの電圧レベルを確認することが挙げられる。異なる電圧レベルのデバイスを直接接続すると、故障の原因となるため、必要に応じてレベルシフタを使用する。次に、電流制限を常に考慮し、適切な抵抗を挿入するか、ドライバ回路を介して接続すること。そして、静電気放電(ESD)にも弱いため、電子部品を取り扱う際はアースを取るなどの対策も重要である。最後に、プロセッサの種類やボードによってGPIOピンの配置(ピンアサイン)や機能が異なるため、必ず利用するボードの公式ドキュメントやピン配置図を確認することが不可欠である。これらの注意点を守ることで、安全かつ効果的にGPIOを活用し、様々なシステムを構築できるのである。