今さらきけない「ラズパイってなんですか?」
今さらきけない「ラズパイってなんですか?」 第5回 GPIOって何ですか? 機能や役割は?
Raspberry Pi(ラズパイ)には「GPIO」(General Purpose Input/Output:汎用入出力)と呼ばれる40ピンのインターフェースが用意されています。GPIOは、ラズパイのUSBポートを上にして正面から見たとき、左上が1番ピン、その隣が2番というように、左/右の順番で奇数/偶数の形で構成され、最後の右下が40番ピンとなります。これらは物理的に配置されたピン番号であるため「物理ナンバー」と呼ばれます。ちなみにGPIOはラズパイ独自のものではなく、他の組み込み型コンピューターなどにも用意されている機能です。
今さらきけない「ラズパイってなんですか?」
第12回 キャラクターディスプレイモジュールって何ですか
第11回 抵抗? コンデンサー? IC? ラズパイで扱う電子パーツについて教えて!
第10回 ラズパイでLチカって何ですか
第9回 ラズパイでWindowsとやり取りするにはどうしたらいいですか
第8回 「Windowsでラズパイを使う」って何ですか
第7回 ラズパイで使う「コマンド」って何ですか
第6回 ターミナルソフトって何ですか
第5回 GPIOって何ですか? 機能や役割は?
第4回 ラズパイを使う準備って何をしたらいいですか
第3回 Raspberry Pi OSって何ですか
第2回 ラズパイってどうしたら使えますか
第1回 ラズパイってなんですか
一覧ページへ
ラズパイでGPIOを使う
ラズパイに用意されているGPIOに電子回路を接続すると、電子デバイスの制御ができます。ラズパイはもともと教育用に開発されたマイコンですので、電子回路の制御を学べるように設計されており、手軽に回路を作れることが特徴です。
GPIOを使うと、LEDを点灯/点滅させたり、液晶ディスプレイを接続して文字を表示させたり、気温/湿度センサーを接続してその値を読み込ませたり、モーターを回すこともできます。この他にも赤外線センサーを接続すれば、対象物との距離を測ることもできます。
GPIOには、電源を取れるピンが用意されています。1番ピンは3.3V、2番ピンと4番ピンは5Vの電源を得られます。またGND(グラウンド、マイナス極)の役割をするのは9、14、20ピンなどとなっています。この他、それぞれのピンには役割が与えられており、I2Cというデバイス間の通信に使うのが3番ピンと5番ピン、SPIという通信方式には19、21、23番ピンを使います。主な番号割り当ては以下の表になります。
GPIOで使うピン
また物理ナンバーの他に「GPIOナンバー」と呼ばれるものがあります。これはラズパイのボードを設計したブロードコムが設定したピン番号で、Pythonなどで作られたプログラムでGPIOを使用する場合に使います。Pythonでよく使うライブラリーの代表として「RPi.GPIO」や「GPIOZero」がありますが、
- GPIO.setmode(GPIO.BCM)
- led = LED(17)
といった指定をするときにはGPIOナンバーを使うことになります。
なおRPi.GPIOでは物理ナンバーによる指定もできますが、後々のことを考えると、役割を物理ナンバーでなくGPIOナンバーで覚えた方がよいです。筆者も当初物理ナンバーを使っていましたが、GPIOナンバーの方が分かりやすいので覚え直しました。ただラズパイを触ってそれほど時間が経っていない場合は、慣れていないので物理ナンバーの方が覚えやすいですね。
こうした機能の割り当てを一覧にしたのが以下の図です。これを見ると分かりますが、利用するピンの近くにはGNDが設けられており、すっきりとピンを利用できるように配慮されています。
ところでラズパイはデジタル信号しか扱えませんので、電圧を出力しているか、出力していないかのどちらかで信号の入出力を行います。電圧が出力されている場合を「HIGH」、出力されていない場合を「LOW」と呼び、このときに出力される電圧は3.3Vです。電子工作の基本として、LEDを点滅させる「Lチカ」がありますが、これはピンのHIGHとLOWを切り替えているため電源がオン/オフし、LEDが点滅するのです。逆にデバイスからの信号を受けるとき、受けた状態をHIGH、受けていない状態をLOWとして検知します。
GPIOとデバイスをつなぐ方法はさまざまです。「HAT」と呼ばれる、GPIO全体のコネクターを覆う形で接続するタイプのほか、実験レベルではジャンパー線を使ってブレッドボードとつないで利用する方法もあります。ホビーでラズパイを動作させる際には、ブレッドボード上に回路を構成してラズパイのGPIOとつなぐことが多いでしょう。本連載の後の回ではブレッドボード上にさまざまな回路を作ってラズパイを動かす仕組みについて解説する予定です。
ラズパイでカメラとディスプレイを使う
ここで第1回に掲載した写真を再掲しますが、これを見るとGPIOの他に、ラズパイのSoCの周りに2つのコネクターがあることが分かります。左にあるのがディスプレイ用のインターフェース(DSI)、真ん中にあるのがカメラ用のインターフェース(CSI)です。ここには名前の通り、ディスプレイとカメラを接続して使います。
ディスプレイはさまざまなものが発売されていますが、秋月電子通商ではラズベリーパイ財団公式のディスプレイが販売されています。タッチスクリーンにも対応しているので、簡単な操作であればこのディスプレイだけで済むので便利です。
カメラは、ラズベリーパイ財団公式としては以下の3製品が販売されています。
- Camera Module V2(4000円程度)
- PiNoir Camera Module V2.1(5000円程度)
- Raspberry Pi High Quality Camera(7000円程度)
一般的にラズパイでカメラを使う場合は、Camera Module V2を用います。例えば監視カメラとして使ったり、AIプログラムの画像認識用カメラとして活用したりします。
PiNoir Camera Module V2.1は「Noir」(フランス語で“黒”の意味)とあるように、IR(赤外線)を利用した撮影が可能です。暗所撮影で活躍しますが、その際は赤外線LEDライトなどが必要になります。
Raspberry Pi High Quality Cameraは撮像部だけのモジュールで、単体では使用できません。別途カメラ用のレンズが必要になります。その代わりイメージセンサーは対角 7.9mm(1/2.3インチ)と大きく、かなり高精細な画像を撮影できます。レンズは「CSマウント」もしくは「Cマウント」のものが使えます。Raspberry Pi High Quality Cameraに適合する、焦点距離6mmのCSマウント対応広角レンズ(3500円程度)と、16mmのCマウント対応望遠レンズ(7500円程度)が用意されています。
なおラズパイ本体と同様に、これらのカメラは販売サイトによって価格がかなり違います。最近は半導体不足の影響か、世界中でラズパイが供給不足になっているので、びっくりするような値段で売られているものもよく見ます。カメラモジュールの場合も今年の冬あたりはかなり高い値段で販売されていました。
ただしスイッチサイエンスや秋月電子通商、千石電商、RSコンポーネンツ、Digi-Key、ケイエスワイといったサイトであれば、多少の価格差はあるものの、適正価格で購入できますので参考にしてください。スイッチサイエンスの場合は在庫切れになっていても、商品が入荷した際にメールで通知してくれるサービスもありますので、利用するとよいでしょう。