Python Tkinterとラズパイで自分専用のダッシュボードアプリを作ってみる #4 室内の温湿度を計測する
机の上を整理したくダッシュボードを作ります。
概要
デジタルダッシュボード作成 第四弾。 温度と湿度を測定するDHT22を購入したので、ラズパイと接続させ動作するのか確認します。
この記事はそのメモやまとめです。 すでに設定済みの項目がいくつかある。 試行錯誤しながらやったので、手順として不要かもしれない。あくまでメモ用。
実装したい内容とか整理
ここでは ・温度 ・湿度 をラズパイ上できちんと計測してくれるかまでやります。
測定準備
https://zenn.dev/hasegawasatoshi/articles/f4708b23077cf7
の記事を参考にしました。 DHT22の接続は+/OUT/-になっているので、これをラズパイの2(5v)/7(GPIO4)/9(GND)に接続しました。
ラズパイ側の準備をします。
# 必要となるパッケージインストール
sudo apt-get install libgpiod2
# 仮想環境の作成
python -m venv .venv
. .venv/bin/activate
# adafruit-circuitpython-dht をインストール
pip install adafruit-circuitpython-dht
測定用のコードを準備します。
基本的にはそのままですが、board.D4と自分の環境に合わせたボード番号に変更しています。
import time
import board
import adafruit_dht
dhtDevice = adafruit_dht.DHT22(board.D4)
while True:
try:
# Print the values to the serial port
temperature_c = dhtDevice.temperature
temperature_f = temperature_c * (9 / 5) + 32
humidity = dhtDevice.humidity
print(
"Temp: {:.1f} F / {:.1f} C Humidity: {}% ".format(
temperature_f, temperature_c, humidity
)
)
except RuntimeError as error:
# Errors happen fairly often, DHT's are hard to read, just keep going
print(error.args[0])
time.sleep(2.0)
continue
except Exception as error:
dhtDevice.exit()
raise error
time.sleep(2.0)
測定
準備ができたので実際に動かしてみます。
. .venv/bin/activate
python sample.py
$ python sample.py
Temp: 79.3 F / 26.3 C Humidity: 55.3%
Temp: 79.3 F / 26.3 C Humidity: 55.5%
Temp: 79.3 F / 26.3 C Humidity: 55.6%
Temp: 79.3 F / 26.3 C Humidity: 55.7%
Temp: 79.3 F / 26.3 C Humidity: 55.5%
Temp: 79.3 F / 26.3 C Humidity: 55.4%
Temp: 79.3 F / 26.3 C Humidity: 55.5%
Temp: 79.3 F / 26.3 C Humidity: 58.4%
Temp: 79.5 F / 26.4 C Humidity: 69.2%
Temp: 79.5 F / 26.4 C Humidity: 77.7%
Temp: 79.7 F / 26.5 C Humidity: 79.2%
Temp: 79.7 F / 26.5 C Humidity: 71.9%
Temp: 79.9 F / 26.6 C Humidity: 66.1%
Temp: 79.9 F / 26.6 C Humidity: 61.9%
Temp: 79.9 F / 26.6 C Humidity: 59.6%
Temp: 80.1 F / 26.7 C Humidity: 57.9%
Temp: 80.1 F / 26.7 C Humidity: 56.8%
....
いい感じに取れてそうです!
今自室にある温度計と湿度計は
温度:26.5
湿度:50%
でした。
そもそもこの2つのデバイスの位置がだいぶ離れているので数値が違っているようですが、温度についてはほぼほぼ同じ値でした。
次やりたいこと
- 上記の測定結果を利用してダッシュボードに反映させる
- ラズパイ1台で完結するタイプと計測結果をWindowsに転送してWindows上でダッシュボード表示させる2つのパターンを考えたい