第17回 GPIOの電源ピン

今回からラズベリーパイのGPIOコネクタを使った電子工作をしていきます。最初はGPIOコネクタの電源ピンについて理解を深めます。

目次

最初の電子工作

最初の電子工作は「LEDを光らせる」回路の製作です。

ラズベリーパイ内部には、以下の図のように内部には電池に相当する機能があり、GPIOコネクタのピンに接続されています。

ラスベリーパイの内部電池機能

これからこの内部の電池機能を使い、LEDを点灯させる回路を製作して、実際にLEDを光らせてみます。

ラズベリーパイ内部電源を使用したLED点灯

今回製作する回路は、プログラムでLEDを点灯制御するのではなく、単にLEDを光らせるだけです。

これだけ?という感じですよね。ずいぶん簡単に思われるかもしれませんが、実際にやってみようとするといろいろ疑問が出てくると思います。

ラズベリーパイや電子工作が初めての場合、「そもそもラズベリーパイのGPIOコネクタはどうやって使うのか」「LEDはそもそもどうやって接続すれば光るのか」など、わからないことがたくさんでてきそうです。

そこで今回と次回の記事では、LEDを光らせる回路の製作を通して、ラズベリーパイや電子工作に関連するいろいろな知識を詳しく説明していきます。今後、ご自身で電子工作をする上で役に立つようにラズベリーパイの仕様などの説明もしますので、ぜひひとつひとつをご自身の知識として習得してみてください。

GPIOのピン番号

ラズベリーパイのGPIOコネクタは、以下のように金属の端子(「ピン」とも呼びます)が40本並んでいて、どのピンも外見は同じですよね。

ラズベリーパイのGPIOピン

これらのGPIOコネクタのピンを区別するために、それぞれのピンに番号が割り振られています。

具体的には以下のように番号が割り振られています。

ラズベリーパイGPIO物理ピン番号

これだけですと話は簡単なのですが、これからちょっとややこしくなります。

ラズベリーパイのGPIOコネクタのピン番号は、上の割り振り以外にもうひとつの割り振り方があります。

つまり、ピン番号は2系統あり、同じピンでも2通りの番号が割り振られています。この2系統のピン番号は今後の説明で適宜どちらかを使用していきますので、最初に詳しく説明します。

2系統のピン番号とは、ひとつは上で説明した物理的なピンに順番に番号をつけている「物理ピン番号」、もうひとつは「GPIO番号」です。

なんて説明されても、なんのこっちゃって感じですので、それぞれ詳しく説明します。

物理ピン番号

物理ピンの番号は先ほど説明したように、文字通り物理的にピン番号を順番に割り振っています。なお「物理ピン番号」という言葉はこのシリーズ記事で使用する言葉です。海外サイトも含めて呼び方にブレがありますので、このシリーズ記事では「物理ピン番号」に統一して説明をします。

先ほどの例では標準タイプのラズベリーパイのGPIOコネクタで説明しましたが、小型のRaspberry Pi Zeroシリーズも同じく以下のように番号が割り振られています。ラズベリーパイの機種が変わってもピン番号は変わらないようになっています。

Raspberry Pi Zero GPIOの物理ピン番号

このシリーズでは、電子工作をする場合には主にこの「物理ピン番号」を使います。

例えば、回路を組み立てる際に「このワイヤをGPIOコネクタのピン○番に接続して…」などのような説明をします。その際に使用するピン番号はこの「物理ピン番号」を使用します。説明するときは明示的に「物理ピン番号で何番」と明記するようにしますので、ピンを間違えないように注意していただければと思います。

ところで、40本のGPIOピンを特定する場合、この「物理ピン番号」だけで十分な気がしますよね。

でもNode-REDで制御する場合やPythonなどでプログラムを作る場合、次に説明する「GPIO番号」という系統がよく使われます。

GPIO番号

「GPIO番号」は、先ほどの「物理ピン番号」のように40本すべてのピンに番号が振られているわけではありません。

第2回の記事で、GPIOピンはプログラムで電気的な制御ができることを説明しました。

GPIOコネクタのピンは40本ありますが、実はすべてのピンがプログラムで制御できるわけではないんです。プログラム制御できるのは40本のうち28本で、残りの12本は後ほど詳しく説明しますが、電源の用途として使用されています。

この28本のGPIO番号による割り当ては以下のようになっています。

ラズベリーパイのGPIO番号

例えば、物理ピン番号「3番」は、GPIO番号「2番」になっている、というわけです。

物理ピン番号とGPIO番号の対応は規則性がありません。でも、なぜこのような番号割り振りになっているのか、その背景を見ていきましょう。

ちょっと話はそれますが、普段利用しているPCのプロセッサは、Windowsであれば「Intel」や「AMD」、Macintoshの場合は「Apple Silicon(M1など)」や「Intel」ですよね。

ラズベリーパイのプロセッサは、すべてのモデルでブロードコム社の「BCMシリーズ」というものが使用されています。このプロセッサには非常に多くのピンがあり、その中にGPIOピン(プログラムで電気的な制御ができるピン)もあります。

実は、このプロセッサ本体のGPIOピンは53本もあるんです。このBCMプロセッサの53本のGPIOピンのうち、GPIO 0番〜GPIO 27番の28本がラズベリーパイのGPIOコネクタに接続されています。

例えばBCMプロセッサのGPIO 2番は、以下のようにラズベリーパイのGPIOコネクタの物理ピン番号3番ピンに接続されています。

GPIOピン配線

つまり「GPIO番号」とは、BCMプロセッサのピンの番号を意味しています。

Node-REDやPythonでGPIOピンを制御するときに「BCM」という単語も出てきます。またそれほど見かけるわけではありませんが、人によってはこの番号のことを「BCM番号」と呼んだりしています。この言葉の背景も頭の片隅に置いておいてください。

GPIOの番号自体は連番になっているものの、配置は結構バラバラですよね。ちゃんと並べてくれればいいのに、という気もしますが、これは仕方ない面もあります。

先ほど説明したように、拡張コネクタのGPIOピンはBCMプロセッサのGPIOピンから配線して接続されています。BCMプロセッサにはGPIOピン以外にも非常に多くのピンがあり、さらに基板上には他の配線もたくさんあります。

このような状況ですので、BCMプロセッサのGPIOピンを拡張コネクタ上に連番で並べようとすると、どうしても配線が交差してしまいうまく配線できなくなってしまいます。そのため、GPIOコネクタピンでは、GPIO番号がバラバラになってしまっています。

配線の交差を少なくする設計方法もありますが、そうすると製造コストが高くなってしまいます。ということで、このような配列になっています。

GPIOの最初の理解

GPIOコネクタのピン番号が2系統あることはわかりました。

ところで、物理ピン番号はすべてのピンに番号が割り振られていますが、GPIO番号が割り振られていないピンがあります。この割り振られていないピンが、このシリーズで最初に理解する「電源ピン」です。

ラズベリーパイには、以下のように内部に「3.3V」と「5V」の電池相当の機能があり、これがいくつかのGPIOコネクタピンに接続されています。

GPIOの電源ピン

このようにプラス側は「3.3V」が2本、「5V」が2本のピンに接続されています。またマイナス側は8本のピンに接続されています。

なんだかまた疑問が湧いてきてしまいますね。

まず最初の疑問として、そもそもなぜGPIOピンには電源ピンが用意されているのか、さらになぜ「3.3V」や「5V」という2種類の電圧が用意されているのでしょうか。まずはこの疑問を解明しましょう。

ラスベリーパイで電子工作をする場合、センサーを接続して気温などいろいろなデータを測定するケースがありますよね。センサで何かを測定する場合、センサには電源が必要(電池などで電圧を加えることが必要)になります。

センサに必要な電源

センサを使った電子工作をするときに、ラズベリーパイのGPIOコネクタから電源が取れないと、別に電源を用意する必要が出てきてしまいます。このようなケースを想定して、GPIOコネクタには電源ピンが用意されています。

それでは、なぜ「3.3V」と「5V」の2種類のピンがあるのでしょうか。

これは実際のセンサー部品を見ながら理解していきましょう。

例えば、センサーで気温や湿度を測定したい場合は、以下のような温度・湿度・大気圧が同時に測定できるセンサが利用できます。

温湿度・大気圧センサ
https://akizukidenshi.com/catalog/g/gK-09421/(秋月電子通商)

このサイトを見ると、以下のようにセンサの仕様が書いてあります。その中に、このセンサが必要とする電源電圧が書かれています。

BME280仕様

(秋月電子通商のサイトより、引用・加工)

このセンサは電源として「1.71V〜3.6V」が必要なことがわかります。

次に他のセンサも見てみましょう。

例えば、何かの物体までの距離を測定したい場合、以下のような距離センサがあります。

超音波距離センサ
https://akizukidenshi.com/catalog/g/gM-11009/(秋月電子通商)

同じようにセンサの仕様が書いてあります。

SR04

(秋月電子通商のサイトより、引用・加工)

このセンサは電源として「5V」が必要なことがわかります。

このようにセンサを動作させるためには電源が必要ですが、その電源電圧はセンサによって異なっています。

実は「3.3V」と「5V」の電源があると、ほとんどのセンサやその他の電子部品の電源に対応できるんです。そのため、GPIOコネクタのピンには「3.3V」と「5V」の2種類の電源ピンが用意されています。

これで「3.3V」「5V」の電源ピンはわかりましたが、電池のマイナス側は「Ground」という名前の8本のピンに接続されているのも謎ですよね。

まずマイナス側のピンの呼び方ですが、一般的に0Vを意味する場合に「Ground」という言葉が使われます。日本語では「グランド」や「グラウンド」と呼んでいます。また「Ground」を省略して「Gnd」「GND」などと表記されることもあります。

この電池のマイナス側のピンですが、8本もあるというのも不思議ですよね。このピンは内部ではすべて電気的に接続されています。それだったら1本で十分という気もします。

これにはいくつか理由がありますが、詳しく説明すると専門的な知識も必要になりますので、ここでは簡単に説明しておきます。

ラズベリーパイのGPIOコネクタに限らず、似たようなシステム(Arduinoなど)でもグラウンドピンは複数あります。

このグラウンドピンはよく利用するので、設計しやすくするために(配線を容易にするために)複数用意されています。また、GPIOコネクタにたくさんの部品を接続する場合、それら部品のマイナス側を1本のグラウンドピンに接続すると、グラウンドピンに電流が集中してしまい熱の問題や動作安定性などの問題が出てきます。他にも理由はありますが、電子回路ではグラウンドは非常に大切なものと理解していただければと思います。

次回の記事では、「5V」ピンと「Ground」ピンを使用してLEDを光らせる回路を製作します。

GPIO電源ピンの電気的仕様

GPIOコネクタの電源ピンには、3.3Vと5Vの電圧が供給されていることがわかりました。

この電源ピンの使う場合、接続する回路には注意が必要です。

この電源ピンは「電池のようなものなんだ!」ということで、なんでも接続できそうに思いますが、電流を多く必要とする部品は直接接続することはできません。

これらのピンの電圧は「3.3V」「5V」ですが、使える電流には制限があります。この制限を超えて使用するとラズベリーパイが壊れる可能性もありますので、電子工作をする場合は注意するようにしてください。

「3.3V」ピン(物理ピン番号1番)と「5V」ピン(物理ピン番号2番と4番)では仕様が異なりますのでそれぞれ以下に説明します。

「5V」ピンの電気的仕様

「説明します」なんて書いておきながらなんですが、「5V」ピンで利用できる電流の上限は明示されていないんです。これは、電源アダプタの容量(ワット数)やラズベリーパイの動作状況により変わってくるためです。この背景について説明します。

「5V」ピンは、以下のようにUSB電源コネクタから直接接続されています。また、このUSB電源コネクタはラズベリーパイ本体も使用しています。

5V系電源

つまり、GPIOの5Vピンで利用できる電流上限は、理論的には

「電源アダプタの供給電流」 −「ラズベリーパイ本体の消費電流」

となります。ただし、ラズベリーパイ本体の消費電流は動作ソフトウエア、Wi-Fi使用状況、接続しているUSB機器によって変わります。

となると、「5V」ピンからどのぐらいの電流を使ってよいかよくわかりませんよね。

それほど強い根拠のある数値ではありませんが、目安としては数百mA程度というのが安全な値だと思います。

ラズベリーパイ向けに、プロセッサの熱を逃すためにCPUファンが販売されています。このCPUファンは、GPIOコネクタの「5V」ピンと「Ground」ピンに接続して使用します。

このファンの消費電流を調べると、公式サイトで販売されているものは60mA、他の通販サイトでラズベリーパイ用として販売されているものは100mA〜120mAのものが多いようです。

また、公式サイトで販売されているタッチディスプレイもGPIOコネクタの「5V」ピンに接続して使用します。このディスプレイの場合は550mA程度消費するようです。ただ、550mA程度使用する場合は電源アダプタはかなり余裕のあるものが必要と思われます。

一般に入手できる電源アダプタの場合はCPUファン程度、つまり100mA程度で利用するのが安全と思われます。

「3.3V」ピンの電気的仕様

「3.3V」ピンは、ラズベリーパイ内部ではUSB電源コネクタから供給される5V電源から生成しています。5V電源から生成した3.3V電源は、GPIOコネクタの「3.3V」ピンだけでなく、他のGPIOピンなどにも利用されます。

3.3V電源

このように、電子部品により5Vから3.3V電源を生成しているわけですが、この部品自体にも電流の上限があります。さらに、3.3V電源は他のGPIOピンでも使用されています。そのため、「3.3V」ピンを使用する場合は、他のGPIOピンのことも回路も考慮する必要があります。

公式サイトでは、「3.3Vピン」と「GPIOピン」利用できる電流は、合計で50mAとされています。「3.3Vピン」の電流上限値は明示されていませんが、「GPIOピン」はそれぞれの上限値は16mAとなっています。(GPIOピンの電気的仕様については、実際にGPIOピンを使うときに詳しく説明します)

なお、3.3V系で利用できる電流は50mAだからといって、50mAギリギリで設計することは避けるようにしてください。理由は、使用する部品によって性能にばらつきがあること、また周囲の温度や経年変化でも消費する電流が変わってくるため、ギリギリで設計すると場合によっては上限を超えてしまうためです。

このように「50mA」などの電気的な仕様が提示されている場合は、上限値の7〜8割程度の範囲内で利用するようにします。

以上、いろいろと細かい説明になってしまいましたが、GPIOを利用する際は、

電流はなるべく少なくする

ということがポイントになります。

次回以降、実際に回路を製作していきますが、このような電流の制限などにも注意して説明していきます。今回説明した具体的な数値は覚える必要はありませんが、ラズベリーパイのGPIOコネクタには利用できる電流の上限がある、ということはぜひ覚えておいてください。

更新履歴

日付 内容
2022.5.17 新規投稿
通知の設定
通知タイミング
guest
0 コメント
本文中にフィードバック
全てのコメントを見る
目次