Raspberry Piは、愛好家、教育者、専門家の間でお気に入りになっている多用途のシングルボードコンピューターです。その最も強力な機能の1つは、汎用入力/出力(GPIO)ピンを介して物理的な世界と対話する機能です。初心者向けで強力なプログラミング言語であるPythonを活用することにより、これらのGPIOピンを制御して、シンプルなLEDブリンカーから複雑なホームオートメーションシステムまで、幅広いプロジェクトを構築できます。このブログ投稿では、Raspberry Piを使用してPythonでGPIOを制御することの基本について説明します。
GPIOピンの理解
GPIOピンは、Raspberry Piの多用途のインターフェイスであり、LED、センサー、モーターなどなどの外部デバイスを接続および制御できます。 Raspberry Piのモデルによっては、特定のパターンで配置されたさまざまな数のGPIOピンが見つかります。これらのピンは、入力または出力のいずれかとして構成できます。
- 入力: 外部デバイス(たとえば、ボタン、センサー)から信号を読み取ります。
- 出力: 信号を外部デバイス(LED、リレーなど)に送信します。
プログラミングの側面に飛び込む前に、Raspberry Piのピンレイアウトを理解することが不可欠です。モデルに固有の正確な情報については、公式のRaspberry PI GPIOピンアウト図を参照してください。
Raspberry Piをセットアップします
PythonでGPIOピンの制御を開始するには、Raspberry PIが正しくセットアップされていることを確認してください。
- 最新のRaspberryPi OSをインストールしてください: Raspberry PiがRaspberry Pi OSの最新バージョンを実行していることを確認してください。公式のRaspberry Pi Webサイトからダウンロードして、Raspberry Pi Imagerなどのツールを使用してSDカードにフラッシュできます。
- システムを更新します: 端末を開き、次のコマンドを実行してシステムパッケージを更新します。
sudo apt update
sudo apt upgrade -y
sudo apt install python3-rpi.gpio
最初のgpio pythonスクリプトを作成します
シンプルなプロジェクトから始めましょう:LEDを点滅させます。次のコンポーネントが必要です。
- Raspberry Pi
- 導かれた
- 220-OHM抵抗器
- ブレッドボードとジャンパーワイヤ
LEDの配線:
- LEDの長脚(アノード)を抵抗器からGPIOピン17に接続します。
- ラズベリーPIの地面(GND)ピンにLEDの短い脚(カソード)を接続します。
それでは、LEDを制御するためにPythonスクリプトを書きましょう。
LEDをPythonで点滅させます
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Set GPIO pin 17 as output
LED_PIN = 17
GPIO.setup(LED_PIN, GPIO.OUT)
try:
while True:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
time.sleep(1) # Wait for 1 second
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(1) # Wait for 1 second
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup() # Reset GPIO settings
説明:
-
import RPi.GPIO as GPIO
:RPI.GPIOライブラリをインポートします。 -
import time
:睡眠機能用のTimeモジュールをインポートします。 -
GPIO.setmode(GPIO.BCM)
:GPIO PIN番号のスキームをBCM(Broadcom Soc Channel)に設定します。 -
GPIO.setup(LED_PIN, GPIO.OUT)
:GPIOピン17を出力ピンとして構成します。 -
try
ブロックには、LEDを1秒ごとにオンとオフにする無限のループが含まれています。 -
GPIO.cleanup()
:GPIO設定をクリーンアップして、クリーンな出口を確保します。
スクリプトを実行します
スクリプトを保存します blink_led.py
次のコマンドを使用して実行します。
python3 blink_led.py
GPIOピン17に接続されているLEDが、毎秒オンとオフを点滅させる必要があります。スクリプトを停止するには、押します Ctrl + C
.
プロジェクトを拡大します
LEDを点滅させると、さまざまなセンサーとアクチュエーターを組み合わせることで、より複雑なプロジェクトを探索できます。ここにあなたが始めるためのいくつかのアイデアがあります:
- ボタンの相互作用: 物理ボタンを使用してLEDを制御します。これには、GPIOピンを入力として設定し、Pythonスクリプトでその状態を読み取ることが含まれます。
- センサーデータロギング: 温度やモーション検出器などのセンサーを使用してデータを収集し、分析のためにログに記録します。
- ホームオートメーション: GPIOコントロールをWebインターフェイスまたはモバイルアプリと統合することにより、リモートでアプライアンスを制御します。
ボタンを制御します
LEDを制御するボタンを追加して、前の例を拡張しましょう。必要です:
- プッシュボタン
- 10K-OHM抵抗器
- 追加のジャンパーワイヤ
ボタンの配線:
- ボタンの片レッグをGPIOピン27に接続します。
- もう一方の脚を10K-OHM抵抗器を介して地面(GND)ピンに接続します。
これがボタンでLEDを制御するためのPythonスクリプトです。
import RPi.GPIO as GPIO
import time
# Use BCM GPIO numbering
GPIO.setmode(GPIO.BCM)
# Define GPIO pins
LED_PIN = 17
BUTTON_PIN = 27
# Set up GPIO pins
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(BUTTON_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
try:
while True:
button_state = GPIO.input(BUTTON_PIN)
if button_state == GPIO.HIGH:
GPIO.output(LED_PIN, GPIO.HIGH) # Turn LED on
else:
GPIO.output(LED_PIN, GPIO.LOW) # Turn LED off
time.sleep(0.1)
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()
説明:
- GPIOピン27は、ボタンが押されないときに安定した状態を確保するために、プルダウン抵抗を備えた入力として設定されます。
- スクリプトは、ボタンの状態を継続的に読み取り、ボタンが押されたときにLEDをオンにします。
ベストプラクティスと安全のヒント
GPIOピンを使用する場合、ラズベリーPIまたは接続されたコンポーネントの損傷を避けるために、ベストプラクティスを遵守することが重要です。
- ハードウェアを接続するときに電源を切る: ハードウェアを接続または切断する前に、常にRaspberry Piをオフにして、短絡を防ぎます。
- 現在の制限抵抗を使用します。 特にLEDを使用する場合は、適切な抵抗器を使用してコンポーネントを保護します。
- ダブルチェック配線: GPIOピンの偶発的な損傷を防ぐために、すべての接続が正しいことを確認してください。
- 注意を払って扱います: Raspberry Piとコンポーネントを慎重に処理して、静的排出を避けてください。
結論
Raspberry PiでPythonでGPIOピンを制御すると、インタラクティブで自動化されたプロジェクトを作成する可能性のある世界が開かれます。 LEDを点滅させるなどの単純なタスクから、複数のセンサーとアクチュエーターを含むより複雑なシステムまで、GPIOコントロールのマスタリングは、Raspberry Pi愛好家にとって基本的なスキルです。このガイドで概説されている手順に従い、ベストプラクティスを順守することで、エキサイティングで革新的なプロジェクトを構築するための道を進むことになります。
幸せな留め!