ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

部屋の中心で飽差を叫ぶ!

(2019-04-22 初稿 - 2021-05-13 転記・修正 - 2021-12-02 追記)

はじめに

以下の記事後、飽差についての報告も要望があった。

Raspberry Pi3で温度を測る

飽差は、植物の生育を管理するうえで、重要な指標とのこと。

飽差とは

誤解を恐れずに言えば、「空気中にどれくらい水蒸気を放出できるか」を示す指標。
単位は、g/m3 で、1立方メートル当たりの水分の重さで表す。

植物は、飽差が大き過ぎると気孔が閉じて、小さすぎると蒸散が起こりにくくなる。
このため、植物の生育のためには、換気や冷房よる除湿やミスト噴霧による加湿などの方法で、適度な飽差に管理することが必要。
一般的に、飽差は、3〜6g/m3くらいで管理することが良いと言われている。

飽差の詳細は、以下のサイトを参照のこと。

飽差の計算

飽差の計算は、上記2番めのサイト、または、以下のサイトを参照のこと。

以下のとおり、水蒸気圧、飽和水蒸気量を求め、飽差を計算することができる。

水蒸気圧(WVP) = 6.1078*10^((7.5*気温/(気温+237.3)))
飽和水蒸気量 (SWVA) = 217*WVP/(気温+273.15)
飽差(HD)    = (100-相対湿度)*SWVA/100 

上記のとおり、温度と湿度がわかれば、飽差は計算によって求めることができる。

温度と湿度のセンサー

今回の目的のために、新たに温度と湿度のセンサーを購入した。
1個500〜600円なので、財布には優しい。

このセンサーはDHT22が温度・湿度センサーで、既にハンダ付けされて付属のケーブルでつなぐだけのAM2302を購入した。
以下、このセンサーをAM2302と呼ぶ。

AM2302のつなぎ方

最初に買ったAM2302は、つなぎ方を間違えて壊してしまった。(-_-;)
写真を載せるので、付属ケーブルの接続方法を確認すること。

+    ⇒ pin1
out ⇒ pin7
-     ⇒ pin9

f:id:hymd3a:20210513100734j:plain

AM2302の端子

温度と湿度を測る

接続完了後、以下のとおりプログラムをダウンロードしてインストールする。

まず、python3の pip を事前にインストール。既にインストールされていれば、不要。

$ sudo apt-get update
$ sudo apt-get install python3-pip

プログラムをダウンロードし、ライブラリをインストールする。

(2021-12-02 追記)

以下のライブラリは開発元で非推奨とのこと、正常動作しなくなってしまった。(^_^;)

お手数ですが、今後は以下のページを参考に。

(追記終了)

$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
$ sudo python3 setup.py install

温度の計測テスト。

$ cd /home/pi/Adafruit_Python_DHT/examples
$ python3 ./AdafruitDHT.py 2302 4
Temp=27.1* Humidity=58.6%

上記のとおり、温度と湿度が表示されれば、正常に作している。

さっそくプログラムに付属している simpletest.py を修正し、飽差を計算する関数(calc_hd)を書き加えた hd.py スクリプトを作成する。
(以下、修正部分を赤字で示す)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# Copyright (c) 2014 Adafruit Industries
# Author: Tony DiCola

import Adafruit_DHT
# add H.Y 2019-04-22
def calc_hd(temp,humidity):
     WVP=6.1078*10**(7.5*temp/(temp+237.3)) # Water Vapor Pressure
     SWVA=217*WVP/(temp+273.15) # Saturated Water Vapor amount
     return (100-humidity)*SWVA/100

# Adafruit_DHT.DHT22, or Adafruit_DHT.AM2302.
sensor = Adafruit_DHT.AM2302

# Example using a Raspberry Pi with DHT sensor
# connected to GPIO23.
pin = 4

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

# calc humidity Defict
# add H.Y 2019-04-22
hd = calc_hd(temperature, humidity)

if humidity is not None and temperature is not None:
    print('温度= {0:0.1f} ℃, 湿度= {1:0.1f} %, 飽差(HD)= {2:0.2f} g/m3'.format(temperature, humidity, hd))
else:
    print('Failed to get reading. Try again!')
$ hd.py
温度= 26.9 ℃, 湿度= 57.7 %, 飽差(HD)= 10.84 g/m3

上記のように、表示されればスクリプトは正常動作している。

つぶやいてみる

twitterでつぶやくために、詳細は以下のページを参照のこと。

上記のページのbashスクリプトを修正して、以下のスクリプトを作成する。

#!/bin/bash
echo "現在時刻は $(date +"%Y-%m-%d %H:%M:%S") です。「ひゃまだ家」の部屋の $(/home/pi/bin/hd.py) で、Raspberry Pi3のCPU温度は $(vcgencmd measure_temp) です。(^^♪" | /usr/local/bin/tw --pipe

上記ページのとおり、作成したスクリプトをcrontabに登録して、実際につぶやくと以下のとおりになる。

現在時刻は 2019-04-22 20:43:42 です。「ひゃまだ家」の部屋の 温度= 27.0 ℃, 湿度= 57.7 %, 飽差(HD)= 10.90 g/m3 で、Raspberry Pi3のCPU温度は temp=53.7'C です。(^^♪</
pre>

実際にtwitterでつぶやいている様子は、以下のようになる(かなり無駄なつぶやきが多い^^;)。

おわりに

不明な部分があったら、hymd3a アット gmail.comか、上記のtwitterアカウントにダイレクトメールして質問を。

それでは、また。

関連ページ