【Python】第9章第6回:IoTデバイス制御(GPIOとRPi)
Warning: preg_match(): Compilation failed: regular expression is too large at offset 35805 in /home/wp769435/a-mun.com/public_html/wp-content/plugins/easy-table-of-contents/easy-table-of-contents.php on line 1806

本記事では、Raspberry Piを使用したIoTデバイス制御の基礎を学びます。GPIOピンの使い方と、Pythonでの制御方法を具体例とともに解説します。
0. 記事の概要
この記事を読むメリット
- IoTデバイス制御の基礎を理解:物理デバイスをPythonで操作する方法を学べます。
- Raspberry Piを活用:実際のプロジェクトに役立つスキルが身につきます。
- ハードウェアとソフトウェアの連携スキル:GPIOピンを使用した制御技術を習得できます。
この記事で学べること
- GPIOピンの基本的な使い方
- PythonでLEDやセンサーを制御する方法
- 実践的なIoTプロジェクトの基本構成
1. IoTデバイス制御の基本とは?

1.1 IoTとは?
IoT(Internet of Things)は、物理デバイスをインターネットに接続し、遠隔で制御やデータ収集を行う技術です。主な応用例として以下があります。
- スマートホーム: 家電や照明を遠隔操作。
- 農業IoT: 温度や湿度センサーを使用した効率的な作物管理。
- 医療IoT: バイタルデータの収集や患者モニタリング。
1.2 GPIOピンとは?
GPIO(General Purpose Input Output)は、Raspberry Piのハードウェアピンで、デバイスとの接続や制御に使用します。主な機能は以下の通りです。
- LEDの点灯・消灯
- スイッチやセンサーの入力信号の読み取り
- モーターの制御
2. GPIOとRPiの使い方

2.1 ハードウェアの準備
Raspberry Piを使ったIoTプロジェクトでは、以下の機材を準備します。
- Raspberry Pi本体
- Breadboard(ブレッドボード)
- ジャンパーケーブル
- LED、抵抗、センサーなどのデバイス
2.2 コード例:LEDを点灯する
# 必要なライブラリをインポート
import RPi.GPIO as GPIO
import time
# GPIOのモードを設定
GPIO.setmode(GPIO.BCM)
# ピン番号を設定
LED_PIN = 18
GPIO.setup(LED_PIN, GPIO.OUT)
# LEDを点滅させる
for i in range(10):
GPIO.output(LED_PIN, GPIO.HIGH) # 点灯
time.sleep(1) # 1秒待つ
GPIO.output(LED_PIN, GPIO.LOW) # 消灯
time.sleep(1) # 1秒待つ
# GPIOのクリーンアップ
GPIO.cleanup()
動作解説
- GPIO.setmode: GPIOピンの番号付け方式を指定。
- GPIO.setup: 使用するピンを出力モードに設定。
- GPIO.output: ピンのHIGH/LOWを切り替えてLEDを制御。
- GPIO.cleanup: 使用後にピン設定をリセット。
3. 実践例:温度センサーのデータ取得

3.1 サンプルコード
# 温度センサーのデータを取得するコード
import Adafruit_DHT
# センサーの種類とピンを指定
SENSOR = Adafruit_DHT.DHT11
PIN = 4
# 温度と湿度を取得
humidity, temperature = Adafruit_DHT.read_retry(SENSOR, PIN)
if humidity is not None and temperature is not None:
print(f"温度: {temperature:.1f}°C, 湿度: {humidity:.1f}%")
else:
print("センサーからデータを取得できませんでした")
動作解説
- Adafruit_DHT: DHTセンサーのライブラリ。
- read_retry: センサーからデータを再試行しながら取得。
- データ表示: 温度と湿度をフォーマットして出力。
4. 練習問題
以下の課題に挑戦してみましょう。
- スイッチを使用してLEDをオンオフするコードを作成してください。
- DHTセンサーのデータをファイルに保存するプログラムを作成してください。
5. 練習問題の解答と解説
問1の解答例
# スイッチでLEDを制御
import RPi.GPIO as GPIO
import time
LED_PIN = 18
SWITCH_PIN = 23
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)
GPIO.setup(SWITCH_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
while True:
if GPIO.input(SWITCH_PIN) == GPIO.LOW:
GPIO.output(LED_PIN, GPIO.HIGH) # スイッチが押されたら点灯
else:
GPIO.output(LED_PIN, GPIO.LOW) # スイッチが離されたら消灯
except KeyboardInterrupt:
GPIO.cleanup()
6. まとめ
本記事では、Raspberry Piを使用したIoTデバイス制御の基礎を学びました。GPIOピンを活用してデバイスを操作し、さらに応用プロジェクトに挑戦してみてください。