Raspberry PiのGPIOを活用してハードウェアを接続しよう

  • URLをコピーしました!

今回はRaspberry Piに搭載されたハードウェアインタフェースであるGPIOについて解説したいと思います。GPIOの使用事例も公開していますので、Raspberry Pi を使って電子工作に挑戦してみたい方は、ぜひ参考にしてみてください。

また、Raspberry Piの活用事例についても以下の記事で紹介していますので、あわせてご覧ください。

目次

Raspberry Piとは

出典:ラズベリーパイ財団

ラズベリーパイ(Raspberry Pi)はイギリスのラズベリーパイ財団が教育用に開発したボードコンピュータです。

最新(2022/07/現在)のRaspberry Pi 4では、ARMアーキテクチャを採用したBroadcom製の高性能SoC BCM2711を搭載しており、1.5GHzで動作するARM Cortex-A72が4コアとマイコンボードの中では非常に高速な処理能力を持っています。また、ユーザーがアクセス可能な40ピンのGPIOも搭載しており、外部ハードウェアを制御することが可能です。

詳細なスペックは以下の通りです。

CPUBroadcom BCM2711 プロセッサクワッドコア A72 ( ARM v8 )1.5GHz 64 ビット SoC
メモリ2/4/8GB LPDDR4 SDRAM
Wifi2.4 GHz / 5.0 GHz IEEE 802.11ac
USBUSB 2.0 ポート x 2 、 USB 3.0 ポート x 2
BluetoothBluetooth 5.0
GPIO40 ピン GPIO ヘッダ
ビデオmicro HDMI ポート x 2(最大 4Kp60 をサポート)、 2 レーン MIPI CSI カメラポート
オーディオ4 極ステレオ出力およびコンポジットビデオポート
マルチメディアH.265 ( 4Kp60 デコード)、 H.264 ( 1080p60 デコード、 1080p30 エンコード)、OpenGL ES 3.0グラフィックス

今回はOpenCVを使った画像処理アプリケーションを実行するデバイスとしてRaspberry Pi 4を使用します。Raspberry Piを使用することで、場所を選ばずに設置でき、カメラなどと組み合わせてIoTやエッジAIのアプリケーションを構築できます。

Raspberry Pi本体は以下の記事でレビューをしていますので、あわせてご覧ください。

GPIOとは

GPIO(General Purpose Input Output)とはRaspberry Piを外部のハードウェアと接続するために用意されたインタフェースです。上記写真の基板上の40ピンのピンヘッダがGPIOです。このGPIOを介して外部と通信を行ったり、アクチュエータ(駆動装置)を制御することが可能になります。

Raspberry Pi 4BのGPIOには以下の表のようなピン番号と機能が割り振られています。これらのピンから入出力される信号をRaspberry Pi上のプログラムからコントロールすることができます。

上のRaspberry Pi 4の基板画像の左上からPin No 1となり、右下がPin No 40の並びとなります。これらのPin Noが下記表に対応しています。

GPIOのピンアサイン一覧

今回はRaspberry Pi 4BのGPIOを紹介しましたが、Raspberry Pi のバージョンによりピンNoや機能が異なりますのでご注意ください。

電源ピンとGNDピン

電源ピン

Raspberry Pi 4の電源ピンは5V、3.3Vの電源を外部に供給することができるピンとなります。
写真は冷却ファンの電源をRaspberry Pi 4のGPIOから供給しています。

また、以下のページで紹介したようなDACなど外部に接続して動作するデバイスに対して使用できます。

必要な電源がRaspberry Pi 4から供給できる定格電流を超えるデバイスを接続したり、3.3V、5V以外の電圧を必要とする回路を接続する場合は、別途電源回路を用意する必要があります。

GND(グランド)ピン

グランドは電子回路で扱う電気の電位基準点で0Vを示します。アースとか接地とも呼ばれ基本は大地の電位のことですが、一般的にはプリント基板のグランドパターンや筐体のケースそのものを大地の代わりとして扱います。

例えば、外部にSPIやI2Cで通信を行う機器を接続した場合、GNDを接続することで基準となる0Vを元にHi、Lowを判定します。そのため、GNDを接続していない場合はHi、Lowが正しく判定できずにうまく通信を行うことができません。

GPIOの活用法

ここからは実際にGPIOを使ってハードウェアを制御した活用例を紹介していきます。

ハードウェアPWMを出力する

外部ハードウェアをON/OFFではなく、リニアに制御したい場合に役立つPWM信号をGPIOから出力する方法です。Raspberry PiのGPIO制御ライブラリpigpioを使ってPWM信号を出力し、オシロスコープで波形を計測してみました。

pigpioではハードウェアPWMとソフトウェアPWMが使用できますが、こちらの記事ではハードウェアPWMを使用しました。PWMの周波数やデューティー比の指定方法についても、ソースコードと合わせて解説していますので是非ご活用ください。

DCモーターを制御する

Raspberry PiでDC(ブラシ)モーターを制御した事例です。
以下の記事ではRapsberry PiからのPWM信号を受けて、モーターに電流を流すためのモータドライバIC、L298Nについて解説しています。

モータドライバIC、L298Nを使って実際にDCを駆動している方法を解説しています。GPIOとモータードライバIC、モーターを接続する方法とソースコードを公開しています。

サーボモーターを制御する

駆動する位置を指定して制御することができるサーボモーターをGPIOを使って制御する方法を解説しています。
出力するPWMのデューティーによりモーターの停止位置を決められるらめ、ロボットの手足やラジコンのステアリングなどに活用できるモーターです。
今回は小型のモーターで負荷も取り付けていないため(軽量の負荷であれば同様の構成で行けると思います)、モーターの駆動用電源もRaspberry Pi 4のGPIOから取っています。

まとめ

今回はRaspberry Pi のGPIOについて解説してみました。電子工作には必須となりますので、ぜひGPIOへアクセスするプログラムの作成にも挑戦してみてください。

また、Raspberry Piでのハードウェア制御をさらに深く学びたい方にはUdemyの以下の講座がおすすめです。

Raspberry Pi Picoで作る!USBショートカットキーデバイス。Pythonで手軽に電子工作しよう! icon


それでは、また次の記事でお会いしましょう。

参考

よかったらシェアしてね!
  • URLをコピーしました!
目次