PythonとRaspberry Piで温湿度センサーからデータを取得する方法

IT技術

Raspberry Piを使用して温湿度センサーからデータを取得する方法について詳しく解説します。本記事では、センサーの選定からセットアップ、Pythonコードによるデータ取得までをステップバイステップで紹介します。


スポンサーリンク

温湿度センサーの選定

Raspberry Piで使用できる代表的な温湿度センサーには、以下のものがあります。

DHTシリーズ(DHT11、DHT22)

  • DHT11
    • 精度: 温度±2°C、湿度±5%
    • 測定範囲: 温度0~50°C、湿度20~90%
    • コストが低く、初心者向け
  • DHT22(AM2302)
    • 精度: 温度±0.5°C、湿度±2%
    • 測定範囲: 温度-40~80°C、湿度0~100%
    • 高精度で幅広い用途に適している

BME280(Bosch製)

  • 温度、湿度、気圧を同時に測定可能
  • 精度: 温度±1°C、湿度±3%
  • I2CおよびSPI接続に対応

AM2320

  • I2C接続対応
  • 精度: 温度±0.5°C、湿度±3%
  • シンプルで高精度な測定が可能

必要なハードウェア

 



ハードウェア一覧

  • Raspberry Pi(モデル3以降推奨)
  • 温湿度センサー(例:DHT22)
  • 抵抗(10kΩ)
  • ブレッドボードとジャンパーワイヤー

配線方法(DHT22の例)

DHT22 ピンRaspberry Pi GPIO ピン
VCC5Vピン
DATAGPIO4(ピン7)
GNDGNDピン

抵抗をDATAピンとVCCピンの間に接続してプルアップします。


ソフトウェアのセットアップ



必要なPythonライブラリのインストール

ターミナルを開いて、以下のコマンドを実行します。

sudo apt update
sudo apt install python3-pip
pip install Adafruit_DHT

Python環境の確認

以下のコマンドでPythonのバージョンを確認し、問題がないか確認します

python3 --version

Pythonコードで温湿度データを取得



以下のPythonコードを使用して、DHT22から温湿度データを取得します。

import Adafruit_DHT
import time

# センサーの種類とGPIOピン設定
sensor = Adafruit_DHT.DHT22
pin = 4  # GPIO4を使用

while True:
    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('センサーからデータを取得できませんでした')
    time.sleep(2)
コードの解説
  1. Adafruit_DHT.DHT22 でセンサーの種類を指定
  2. read_retry() でデータの取得をリトライ付きで実行
  3. 取得データの表示とエラーハンドリング
  4. 2秒ごとにデータを更新

データの可視化



取得したデータをより見やすくするために、Matplotlibを使用してグラフ化することができます。

ライブラリのインストール

pip install matplotlib

データのプロット

以下のコードを実行して、温湿度の推移を可視化します。

import Adafruit_DHT
import matplotlib.pyplot as plt
import time

sensor = Adafruit_DHT.DHT22
pin = 4

temp_data = []
hum_data = []
time_data = []

for i in range(10):
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        temp_data.append(temperature)
        hum_data.append(humidity)
        time_data.append(time.strftime('%H:%M:%S'))
        print(f'温度: {temperature:.1f}°C  湿度: {humidity:.1f}%')
    else:
        print('データ取得エラー')
    time.sleep(2)

plt.plot(time_data, temp_data, label='温度 (°C)')
plt.plot(time_data, hum_data, label='湿度 (%)')
plt.xlabel('時間')
plt.ylabel('値')
plt.legend()
plt.show()

まとめ

本記事では、Raspberry PiとPythonを使用して温湿度センサーからデータを取得する方法について解説しました。センサーの選定からセットアップ、プログラム作成、データの可視化までの流れを理解することで、自宅やオフィスの環境モニタリングに活用できます。ぜひ試してみてください!

コメント

タイトルとURLをコピーしました