Raspberry Piの公式Pythonライブラリ「RPi」を使ってできること
🐍 はじめに
ここでは、Raspberry Piの公式Pythonライブラリ「RPi」を使ってできることを整理します。
特にRPi.GPIO
を中心に、センサーやアクチュエータ制御など、Pythonからハードウェアを直接扱う方法の概要をまとめます。
「RPi」とは、一般的にRPi.GPIO
モジュールを指します。これはRaspberry PiのGPIOピンをPythonから制御するための公式・定番ライブラリです。
2022年以降、新しい機種ではgpiozero
やRPi.GPIO
互換APIを使うケースが増えています。
🔌 GPIO制御の基本機能
1. ピンモード設定
-
BCM番号または物理ピン番号で指定可能
-
GPIO.setmode(GPIO.BCM)
/GPIO.setmode(GPIO.BOARD)
-
不使用時は
GPIO.cleanup()
で安全に解放
2. 入力ピンとして利用
-
ボタンやスイッチの状態取得
-
プルアップ/プルダウン抵抗の内蔵制御
-
GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP)
-
3. 出力ピンとして利用
-
LED点灯やリレー制御
-
GPIO.setup(pin, GPIO.OUT)
-
GPIO.output(pin, GPIO.HIGH)
/GPIO.LOW
-
4. PWM制御
-
LEDの明るさ調整やモーター回転数制御
-
pwm = GPIO.PWM(pin, 周波数)
-
pwm.start(デューティ比)
/pwm.ChangeDutyCycle(%)
-
⏱ イベント検知機能
1. エッジ検出
-
ボタン押下などの立ち上がり/立ち下がり検出
-
GPIO.add_event_detect(pin, GPIO.RISING, callback=func)
-
2. デバウンス処理
-
機械スイッチのチャタリング対策
-
bouncetime
パラメータで簡単に設定
-
🛠 応用例
センサー系
-
温度・湿度(DHT11/DHT22)
-
距離測定(HC-SR04)
-
光センサー、赤外線センサー
アクチュエータ系
-
サーボモーター(PWM制御)
-
DCモーター(モータードライバ経由)
-
リレー(家電制御)
通信系
-
I2C/SPI/UARTの直接制御(
smbus
やspidev
と併用)
😄 RPi.GPIOを使う嬉しさ
-
学習コストが低い:数行でLED点滅などが可能
-
公式サポート&情報量豊富:Raspberry Piの教材や記事の多くがこのライブラリを前提
-
イベント駆動が容易:ループでポーリングせずに割り込み的処理ができる
-
幅広い互換性:古いモデルから最新モデルまで対応
⚠ 注意点
-
RPi.GPIO
はLinux上のRaspberry Piでしか動作しません。PCや仮想環境では利用不可(テスト用のモックライブラリは存在します) -
複数プロセスで同じGPIOピンを同時に触らないこと
-
高電圧・大電流のデバイスを直接接続しない(必ずドライバICやリレーを経由)