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 ピン |
---|---|
VCC | 5Vピン |
DATA | GPIO4(ピン7) |
GND | GNDピン |
抵抗を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)
コードの解説
Adafruit_DHT.DHT22
でセンサーの種類を指定read_retry()
でデータの取得をリトライ付きで実行- 取得データの表示とエラーハンドリング
- 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を使用して温湿度センサーからデータを取得する方法について解説しました。センサーの選定からセットアップ、プログラム作成、データの可視化までの流れを理解することで、自宅やオフィスの環境モニタリングに活用できます。ぜひ試してみてください!
コメント