Python

【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. 練習問題

以下の課題に挑戦してみましょう。

  1. スイッチを使用してLEDをオンオフするコードを作成してください。
  2. 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ピンを活用してデバイスを操作し、さらに応用プロジェクトに挑戦してみてください。