USB/LAN コネクタを下側にした基板上のコネクタ
BCM 名称 Pin Pin 名称 BCM BCM 名称 Pin Pin 名称 BCM 3.3V 1 2 5V 2 I2C SDA (8) 3 4 5V 3 I2C SCL (9) 5 6 GND 4 (GPIO 7) 7 8 (15) UART TxD 14 GND 9 10 (16)UART RxD 15 17 (GPIO 0) 11 12 (GPIO 1) 18 27 (GPIO 2) 13 14 GND 22 (GPIO 3) 15 16 (GPIO 4) 23 3.3V 17 18 (GPIO 5) 24 10 SPI MOSI (12) 19 20 GND 9 SPI MOSO (13) 21 22 (GPIO 6) 25 11 SPI SCLK (14) 23 24 (10) SPI CE0 8 GND 25 26 (11) SPI CE1 7 0 ID SD (30) 27 28 (31) ID SC 1 5 (GPIO 21) 29 30 GND 6 (GPIO 22) 31 32 (GPIO 26) 12 13 (GPIO 23) 33 34 GND 19 (GPIO 24) 35 36 (GPIO 27) 16 26 (GPIO 25) 37 38 (GPIO 28) 20 GND 39 40 (GPIO 29) 21
- ( ) → wPI ピン・アサイン (C言語ライブラリ用 ?)
- BCM → GPIO番号
- Pin → 実際のピンアサイン
GPIOを操作する「gpio」コマンドは「Wiring Pi」ライブラリを使用する。(通常は標準実装されている。)
$ gpio -vここでの出力に Type: Unknown が表示されている場合古いライブラリの可能性あり。
$ gpio readall +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 4B--+---+------+---------+-----+-----+
$ gpio -g read 16
$ gpio -g mode 16 out
$ gpio -g write 16 1
RPI.GPIO は Python Software Foundation からリリースされている GPIO を制御するパッケージ。(Raspbian full にはインストール済、Raspbian lite にはインストールされていない。)
使用するには、Pythonのプログラムの先頭で import 宣言をする。$ import RPi.GPIO as GPIORPi.GPIO を呼び出す場合、RPi.GPIO.setup() というようにドット(.)で呼び出す。毎回 RPI.GPIO と書くのは長なるので、importする際に別名を付けることができる。別名は「as 別名」で指定。
$ import RPi.GPIO as GPIO以後、GPIO.setup() というように呼び出すことができる。
$ GPIO.setmode(GPIO.BCM) # GPIO番号を設定 $ GPIO.setmode(GPIO.BOARD) # 基板の物理ピン番号を設定
$ GPIO.setup(ピン番号, GPIO.OUT) # 出力指定 $ GPIO.setup(ピン番号, GPIO.IN) # 入力指定例: GPIO 21ピンを出力に設定
$ GPIO.setup(21, GPIO.OUT) # GPIO21番ピンを出力に設定
$ GPIO.output(ピン番号, 1) # ピンの出力を3.3Vにする $ GPIO.output(ピン番号, 0) # ピンの出力を0Vにする例: GPIO 21ピンを3.3V出力に設定^
$ GPIO.output(21, 1) # GPIO21番ピンに3.3V出力する
$ GPIO.input(ピン番号) # ピンの電圧状態読み取る実際にはピンの電圧状態が返るので、結果を変数に入れたり表示する。
$ print GPIO.input(ピン番号) # ピンの電圧状態を得る
$ GPIO.cleanup() # GPIO設定をリセット