水瓶座列車

どこまで行けるか、とりあえず発車します。

Raspberry Pi 3B+ のGPIOピン割り当ての解説

f:id:aquarius999:20201102180712j:plain

 

RaspberryPi 3B+(以下ラズパイ)には、40ピンのGPIOピンがあります。

このGPIOピンの機能を理解していないとブレッドボードを使ってのセンサーの接続もできません。

ラズパイのGPIO40ピンについて、各ピンにはどういう機能設定ができるのかは、

ラズパイのサイトに記載されていますが、私の理解を深める意味も兼ねて解説したいと思います。

 

 

 

 

  1.ラズパイのGPIOピンについて

 

GPIOピンは、ラズパイのこの位置にあります。

f:id:aquarius999:20201102181440p:plain

 

まあすぐにわかりますね。

しかし注意しなければならないのは、ピン番号順にGPIO番号が割り振られていません

結構面倒です。

なので、どのピンがどのGPIO番号なのかを把握しておく必要があります。

 

一番手っ取り早いのは、ラズパイ用のT字型GPIO拡張ボードに各ピンの機能が記載されているのですぐわかります。

 

 これがT字型GPIO拡張ボードで、各ピンに機能とGPIO番号が記載されています。

f:id:aquarius999:20201102181401j:plain

 

GPIOピンは、機能設定しなければGPIO機能として使用することができます。

どういうことかというと、

デスクトップ画面のラズパイ設定で、I2CやSPI、UARTを有効/無効にする設定がありますが、

無効の状態ではGPIOとして使用できます。

しかし、センサーなど接続するにはこれらを有効にしなければなりません。

 

GPIOとして使うメリットは様々ありますが、シリアル通信で使えるピンは決まっているので、

GPIOとして使いたい場合は、 シリアル通信線の機能が割り当たっていないピンを使うべきです。

 

単にGPIO番号だけを知りたい場合は、ラズパイのターミナルから

  $ pinout

を実行すると、

f:id:aquarius999:20190109220055p:plain

 

こんな感じで、GPIOピンに対応したGPIO番号が表示されます。

 

 

 

  2.I2Cの使用

 

I2Cの通信線は2線で構成されており、

・SDA1(データ線)は、GPIO2

・SCL1(クロック線)は、GPIO3

になります。

ラズパイの設定でI2Cを有効にするとI2C通信線としてこの2線を使用することができます。

 

I2Cは、デバイスを最大112個接続することができますが、1つのラインに多くて5個ぐらいがほとんどです。

複数のデバイスに同時に通信を行うと通信線を共有しているので、どうしても遅延が発生します。

なので、LCDのように通信量が多いデバイスは1ラインに1デバイスが一番効率が良いです。

 

  3.SPIの使用

 

SPIの通信線は、4線で構成されており、 ラズパイはSPI0とSPI1の2チャンネルあります。

各チャンネルのGPIOの割り当ては次のとおりです。

SPI0

 MOSI - GPIO10

 MISO - GPIO9

 SCLK - GPIO11

 CE0 - GPIO8

 CE1 - GPIO7

 

SPI1

 MOSI - GPIO20

 MISO - GPIO19

 SCLK - GPIO21

 CE0 - GPIO18

 CE1 - GPIO17

 CE2 - GPIO16

 

SPIは、I2Cと違ってスレーブアドレスが存在しないので、CE*を使用して通信を行います。

SPI0は、CEが2つあるので2つのデバイスが接続可能、

SPI1は、CEが3つあるので3つのデバイスが接続可能になります。

 

CEってチップイネーブルの略だそうですが、初めて耳にしました。

よく使われるのは、SS(スレーブセレクト)やCS(チップセレクト)だと思いますが、

CEもよく使われるのでしょうか?

まあ、どちらにせよ目的のデバイスを動作させるために使用する線だということは変わりありません。

 

  4.UARTの使用

 

UARTは、TX/RXの2線で構成なので調歩同期式で通信します。

GPIOの割り当ては、

・TXは、GPIO14

・RXは、GPIO15

です。

UARTは、 I2CのスレーブアドレスやSPIのチップセレクト線が無いので、

1ラインに1デバイス接続になります。

また、調歩同期式なので、スタートビット/ストップビットで通信を行います。

GPSセンサーなどがよくUARTを使っています。

 

  5.電源の使用

 

バイスに電力を供給するための電源がGPIOピンに割り当てられています。

3.3V - ピン番号1、17

5V  - ピン番号2、4

GND - ピン番号6、9、14、20、25、30、34、39

 

ブレッドボードの電源ラインとジャンプワイヤでつないだり、直接デバイスと接続します。

 

  6.最後に

 

組み込みやセンサーの勉強をする前に、

まずは理解しておきたい通信線と電源が割り当たっているGPIOピンについて解説しました。

とりあえず、これを把握しているとデバイスの接続が簡単にできるようになります。

そして、センサーの制御を行うサンプルコードを動作させる際に、

プログラム動作のイメージができ理解度が深まると思います。

 

ここで紹介しましたGPIO拡張ボードは、

このセンサーセットに入っているものを使用しました。

もしGPIO拡張ボードの購入を考えているなら、

このようなセンサーとセットになっているものがおすすめです。

 

 

<関連・おすすめ記事>

RaspberryPi 4Bと3B+のスペック比較解説 - 水瓶座列車

Raspberry Pi (ラズパイ)で役に立つ書籍のおすすめランキングベスト5 - 水瓶座列車

RaspberryPi (ラズパイ)で使用できるカメラのおすすめランキングベスト5 - 水瓶座列車

RaspberryPi 3B+でロジックアナライザを使ってI2Cの波形を取得する方法 - 水瓶座列車

Bluetoothでマルチペアリング(複数台接続)できるマウスのおすすめランキングベスト5 - 水瓶座列車

Bluetoothでマルチペアリング(複数台接続)できるキーボードのおすすめランキングベスト5 - 水瓶座列車