毎回Raspberry PiのGPIOの配置を確認するのにGoogleで検索しているのがばからしくなってきたので、ここにRaspberry PiのModel AとModel BとModel B+のGPIOの配置を載せておきます。
ついでにGPIOの基本的な説明も載せておきます。
Raspberry PiのGPIOはほとんどの人が下記の配置になります。
Pin01~Pin26までがRaspberry Pi Model AとModel B用です。Pin27~Pin40はModel B+で追加されたGPIOです。
Pin01: 3.3V | Pin02: 5V(基盤上で一番隅にあるPIN) |
Pin03: GPIO2/SDA1 I2C | Pin04: 5V |
Pin05: GPIO3/SCL1 I2C | Pin06: Gnd |
Pin07: GPIO4/GPCLK0 1 Wire | Pin08: GPIO14/UART0_TXD |
Pin09: Gnd | Pin10: GPIO15/UART0_RXD |
Pin11: GPIO17 | Pin12: GPIO18/PWM_CLK |
Pin13: GPIO27/PCM_DOUT | Pin14: Gnd |
Pin15: GPIO22 | Pin16: GPIO23 |
Pin17: 3.3V | Pin18: GPIO24 |
Pin19: GPIO10/SPI0_MOSI | Pin20: Gnd |
Pin21: GPIO9/SPI0_MISO | Pin22: GPIO25 |
Pin23: GPIO11/SPI0_SCLK | Pin24: GPIO8/SPI0_CEO |
Pin25: Gnd | Pin26: GPIO7/SPI0_CE1 |
Pin27: GPIO0/ID SD | Pin28: GPIO1/ID SC |
Pin29: GPIO5 | Pin30: Gnd |
Pin31: GPIO6 | Pin32: GPIO12 |
Pin33: GPIO13 | Pin34: Gnd |
Pin35: GPIO19 | Pin36: GPIO16 |
Pin37: GPIO26 | Pin38: GPIO20 |
Pin40: Gnd | Pin41: GPIO21 |
Pin2が起点になります。Raspberry Piの基板上の一番隅っこにあるPinがPin2です。
GPIOの最大出力電流は50mAまでです。
GPIOの入出力電圧は3.3Vです。
GPIOに3.3Vを超える電圧を入力した場合、壊れる可能性が高いです。
Raspberry Pi ModelAとModelBには別にP5というコネクタがありますが、ここでは無視します。ModelAとModelBでGPIOが足りなくなった場合は、調べてみてください。GPIOが4つ手に入ります。
5V電源から取れる最大電流はUSB電源の最大電流-(700mA Model B or 500mA Model A)になります。USB電源の最大電流が1Aの場合でUSBポートを使っていなければ、Model Bの場合300mA、Model Aの場合500mA使うことができます。Model B+は600mA使っているのでUSB電源の最大電流-600mAの電流を5V電源で使うことができます。
Raspberry PiのGPIOには内部に50kオーム程度のプルアップとプルダウン抵抗があるので、わざわざ抵抗をつけてプルアップやプルダウンをする必要はないです。
プルダウンの仕方(プルアップはPUD_UP)
GPIO.setup(23, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
プログラムでGPIOを呼び出すときにBCMとBOARDという2つのモードがあるけど、BCMを使ったほうがわかりやすい。
GPIO.setmode(GPIO.BCM) #私の推奨
GPIO.setmode(GPIO.BOARD)
hoge = 23
こういうとき、BCMだとGPIO23を呼び出してくれる。
BOARDだとPin23→GPIO11/SPI0_SCLKを呼び出す。
単純な入出力にGPIOを使いたい場合は、特殊能力が何も付いていないGPIOを使うと幸せかもしれない。
平凡なGPIO
GPIO17, GPIO22, GPIO23, GPIO24, GPIO25
Model B+: 上記に加えて、GPIO5, GPIO6, GPIO12, GPIO13, GPIO16, GPIO19, GPIO20, GPIO21, GPIO26
例えばGPIO18(Pin12)の場合は、平凡なGPIOとしても使えるけど、モーターをコントロールするPWMとしても使えます。平凡なGPIOが余っている場合、平凡な用途にはわざわざ特殊なPin(この場合Pin12)を使わずに平凡なGPIOを使いましょう。
GPIOの古い配置図
Raspberry PiのModel AとModel Bを販売開始時に買った人は、古い配置になっている可能性があります。古い配置はPinの配置が3つ異なります。
GPIO2→GPIO0
GPIO3→GPIO1
GPIO27→GPIO21
ほとんどの人が新しい配置に該当しますが見分け方は下記になります。
Raspberry Piから
cat /proc/cpuinfo
Revisionの項目が0002または0003の場合は古い配置になって、それ以外は新しい配置になります。
古い配置
Pin01: 3.3V | Pin02: 5V(基盤上で隅にあるPIN) |
Pin03: GPIO0/SDA1 I2C | Pin04: 5V |
Pin05: GPIO1/SCL1 I2C | Pin06: Gnd |
Pin07: GPIO4/GPCLK0 1 Wire | Pin08: GPIO14/UART0_TXD |
Pin09: Gnd | Pin10: GPIO15/UART0_RXD |
Pin11: GPIO17 | Pin12: GPIO18/PWM_CLK |
Pin13: GPIO21/PCM_DOUT | Pin14: Gnd |
Pin15: GPIO22 | Pin16: GPIO23 |
Pin17: 3.3V | Pin18: GPIO24 |
Pin19: GPIO10/SPI0_MOSI | Pin20: Gnd |
Pin21: GPIO9/SPI0_MISO | Pin22: GPIO25 |
Pin23: GPIO11/SPI0_SCLK | Pin24: GPIO8/SPI0_CEO |
Pin25: Gnd | Pin26: GPIO7/SPI0_CE1 |
ちょっとした間違いだと思いますが,Pin40⇒Pin39,Pin41⇒Pin40だと思います.