メインコンテンツへスキップ

Raspberry Piの公式Pythonライブラリ「RPi」を使ってできること

🐍 はじめに

ここでは、Raspberry Piの公式Pythonライブラリ「RPi」を使ってできることを整理します。
特にRPi.GPIOを中心に、センサーやアクチュエータ制御など、Pythonからハードウェアを直接扱う方法の概要をまとめます。

「RPi」とは、一般的にRPi.GPIOモジュールを指します。これはRaspberry PiのGPIOピンをPythonから制御するための公式・定番ライブラリです。
2022年以降、新しい機種ではgpiozeroRPi.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の直接制御(smbusspidevと併用)


😄 RPi.GPIOを使う嬉しさ

  • 学習コストが低い:数行でLED点滅などが可能

  • 公式サポート&情報量豊富:Raspberry Piの教材や記事の多くがこのライブラリを前提

  • イベント駆動が容易:ループでポーリングせずに割り込み的処理ができる

  • 幅広い互換性:古いモデルから最新モデルまで対応


⚠ 注意点

  • RPi.GPIOはLinux上のRaspberry Piでしか動作しません。PCや仮想環境では利用不可(テスト用のモックライブラリは存在します)

  • 複数プロセスで同じGPIOピンを同時に触らないこと

  • 高電圧・大電流のデバイスを直接接続しない(必ずドライバICやリレーを経由)