GPIO

  • 電圧出力は3.3V。
  • GPIO2,3はプルアップ固定。その他のピンはソフトで設定可能。
  • PWM用ピン
    • Software PWM available on all pins
    • Hardware PWM available on GPIO12, GPIO13, GPIO18, GPIO19
  • SPI用ピン
    • SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8),CE1 (GPIO7)
    • SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18);CE1 (GPIO17); CE2 (GPIO16)
  • I2C用ピン
    • Data: (GPIO2); Clock (GPIO3)
    • EEPROM Data: (GPIO0); EEPROM Clock (GPIO1)
  • Serial用ピン
    • TX (GPIO14); RX (GPIO15)

GPIOピンのピン番号を指定する方法(RPi.GPIO)

  • GPIO.BCM: 機能に依存した呼び方。BCM(Broadcom SOC Channel)ピン番号。デフォルトの設定。
  • GPIO.BOARD: コネクタ上に並ぶピンの物理的(Physical pin)な番号を指定する方法。物理ピン番号

使用後

  • GPIOピンを解放する。→ GPIO.cleanup() 
    • プルアップ/プルダウン抵抗を無効にして、GPIOピンの動作を「入力」に戻します。
    • 影響を受けるのは、ソースコードの中で割り当てた、全てのGPIOピンです。
    • 特定のGPIOピンだけ解放したい場合は、
         Aだけ:GPIO.cleanup(A) A,B: GPIO.cleanup([A,B])

Permissions

  • GPIOポートを使用する前に、ユーザーをgpioグループに登録する必要があります。
  • piユーザーはデフォルトでメンバーです。
  • 他のユーザーは手動で追加する。
    • $ sudo usermod -a -G gpio

例:(pythonの場合)


ライブラリのインポート
import RPi.GPIO as GPIO

GPIOピンのピン番号を指定
GPIO.setmode(GPIO.BCM)

入出力設定
GPIO.setup(11, GPIO.OUT)  <- GPIO11 
GPIO.setup(12, GPIO.IN)              <-GPIO12

プルダウン/アップを伴った入力設定
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

データの入力
GPIO.input(12)

データの出力
GPIO.output(11, True)    /   GPIO.output(11, 1)         <-    出力High
GPIO.output(11, False)   /   GPIO.output(11, 0)         <-    出力Low   

簡単なプログラム(Python): GPIOの9,11番ピンを使って下図の様な回路を作り、

下記のプログラムをgpio.pyと保存し、ターミナルで python3 gpio.py  と実行して下さい。LEDが1秒間隔にオンオフします。


mport RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)    # GPIO番号指定   
GPIO.setup(17, GPIO.OUT)    # LEDピンを出力に設定
GPIO.output(17,0)                     # LED消灯

for a in range(10):
    GPIO.output(17, 1)                # LED点灯
    time.sleep(1)                           # 1秒待機
    GPIO.output(17, 0)                # LED消灯
    time.sleep(1)                           # 1秒待機

GPIO.cleanup()                           # GPIOを解放