2021年2月1日月曜日

Raspberry Piで温度と湿度を計測する。(DHT22 AM2302使用)

以前、「Nature RemoとGASを使って温度・湿度をリアルタイムで記録する。」でビニールハウス内の温度・湿度をリアルタイムで記録できるようにしました。これは、なかなか便利に使えています。

ただし、湿度に関してはNature Remoの測定範囲が30~70%であるため、湿度がほぼ100%になることもあるビニールハウス内で測定目的に使用するには向かなかったですね。もちろん、トリガーとしては使えます。温度の測定のみを目的とするのであれば、温度センサーのみの、Nature Remo mini、もしくはmini2でよさそうです。


さて、本題になりますが、より汎用性を持たせるためRaspberry Pi(ラズベリーパイ )を使い温度・湿度を測定、リアルタイムでスプレッドシートに記録できるようにしていきたいと思います。


Raspberry Piというのは、いろいろ使える安価なシングルボードコンピュータです。Raspberry Piを使うことで、測定項目を自由に設定でき、さらにバッテリーでの駆動が可能なので電源のない場所でも測定ができます。

ちゃんと比較はしていませんが、おそらく、価格としても、出来合いの高機能測定器を購入するよりは、相当抑えられそうな気がします(たぶん)。

最初は、必要なものが揃っているスターターキット的なもの購入してしまった方が、使い始めやすいかもです。私が購入したのは、LABISTSのこちら。あとは、初期設定用にディスプレイとキーボードとマウスが必要になりますが、設定さえしてしまえばSSHやリモートデスクトップから使えます。


今回はまず、温度と湿度の測定までを行います。

Linuxコマンドによる操作、そして、ほぼ無知の電子工作と、覚えよう覚えようと思いつつ後回しになっていたPythonが必須となりますので、脳みそフル回転です(笑)。

Raspberry Piは、Raspberry Pi 4 Model B、4GBメモリ、Raspberry Pi OS。温湿度センサーモジュールは、DHT22 AM2302を使用。



方法はいろいろとあるようですが、一番簡単そうだった↓を参考にさせていただきながら、設定をしていきます。




まずは、Raspberry Piと温湿度センサーモジュール DHT22を接続。

DHT22側:Raspberry Pi側(ピン番号)
DAT:GPIO26(37)
VCC:3.3V(17)
GND:GND(39)


Pythonはあらかじめインストールされていますので(Python3系を使用)、次に、Githubからセンサーの値を取得するためのライブラリをインストールします。
$ sudo git clone --recursive https://github.com/freedom27/MyPyDHT
$ cd MyPyDHT
$ sudo python3 setup.py install

作業フォルダの作成。移動。
$ cd
$ mkdir Python
$ cd Python
$ mkdir MyPyDHT

温度、湿度の値を取得するためのPythonコードを作成。「MyPyDHT」フォルダに保存。
ファイル名は「te_hu.py」。
#!/usr/bin/env python3

# センサー制御取得
import MyPyDHT

# 測定の開始(26は、接続したGPIOポート)
humidity, temperature = MyPyDHT.sensor_read(MyPyDHT.Sensor.DHT22, 26)

# 結果の表示
print("Temperature = " + str(temperature) + " \nHumidity = " + str(humidity))

実行。
$ python3 te_hu.py
Temperature = 11.5
Humidity = 47.9

……ということで、とりあえず、温湿度センサーから温度と湿度の値を取得できるようになりました。

(たまにエラーが出ますが、モジュール側で値を出力しているタイミングがあるらしく、それを外れるとエラーが返ってくるみたいです。こちら参照。)

これを定期的に取得してデータを保存するのですが、たいしたデータ量でもないですし、データベースに格納するより、Google スプレッドシートにダイレクトに記録してしまった方が便利そうだなぁ、と思って調べたら、まさしくそんな事をやっている方がおられて解説がありました。先人たちの知恵は偉大ですね。

次回は、Raspberry Piで温度と湿度の値を定期的に取得して、スプレッドシートに記録してみます。






Twitter(@nkkmd)、Instagram(@nkkmd)も日々更新中です。