Makato-kanのアイコン画像
Makato-kan 2025年09月15日作成 (2025年09月19日更新)
製作品 製作品 閲覧数 518
Makato-kan 2025年09月15日作成 (2025年09月19日更新) 製作品 製作品 閲覧数 518

M5stickCと温湿度センサーで飽差表示する

M5stickCと温湿度センサーで飽差表示する

はじめに

植物の育成環境調べるに飽差(g/立方メートル)という値が便利と聞いたので、M5StickCにセンサーをつけてつくりました。

※飽差とは現在の空気に あとどの位水分が入る余地があるかを表している値で温度と湿度で変化し、植物の育成に適した値があるそうです。
※計算は小数点を含むのですが単純に計算式を書いて計算できたので念の為エクセルにも同じ計算式を
 作って値がほぼ同じ(小数点1桁まで比較)になったのでそのまま使っています。

部品表

名称 個数
M5stickC かM5stickC-Plus 1つ
DHT11 1つ
電線 赤 黒 白 各10cm位 計3本

※ 電線は秋月などで片方のみピンコネクタが付いているジャンパー線を使うと良いかも。(半田付け必要)
※DHT11にはプルアップ抵抗必要ですがプログラム内部でプルアップしています
※M5stickC-plusの場合 画面表示が小さく出ます。

開発環境

名称 バージョン
arduinoIDE 2.3.6
ボードマネージャ M5stack 2.1.4
ライブラリマネージャ M5stickC -M5Stack 0.3.0
ライブラリマネージャ DHT sensor library by Adafruit 1.4.6
ライブラリマネージャ M5stickCPlus -M5Stack

※ M5のボードマネージャはVer3.x.xを使うとコンパイル時エラーでます。

回路

※DHT11の配線はVCCを3.3V ・GND・データは26ピンに接続します。
配線図
この絵ではセンサーと本体の向きが合っていませんが実際に作るときは向きを合わせて作ると配線が簡単です
※ 配線図はログインしていないと見えないみたいです。その場合はほんのちょっと見える緑のマークを押すと画像がポップアップします。

プログラム

温湿度と飽差測定サンプル

#include <M5StickC.h> //#include <M5StickCPlus.h> #include "DHT.h" #define DHTPIN 26 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { M5.begin(); gfesp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); dht.begin(); M5.Lcd.setRotation(5); M5.Lcd.fillScreen(BLACK); M5.Lcd.setTextColor(WHITE); M5.Lcd.setTextSize(3); pinMode(DHTPIN, INPUT_PULLUP); Serial.begin(9600); } void loop() { delay(1500); float h = dht.readHumidity(); float t = dht.readTemperature(); //String data1 = String(t)+" "+String(h); //Serial.println( data1); // float saturationPressure = saturationVaporPressure(t); float currentVaporPressure = vaporPressure(saturationPressure, t); float hd = vaporPresureDeficit(currentVaporPressure,h); // M5.update(); M5.Lcd.fillScreen(BLACK); M5.Lcd.setCursor(10, 15); M5.Lcd.printf("%.2f", dht.readTemperature()); M5.Lcd.setCursor(10, 45); M5.Lcd.printf("%.0f", dht.readHumidity()); M5.Lcd.setCursor(80, 45); M5.Lcd.printf("%.1f", hd); delay(500); } //飽和水蒸気圧[hPa]の計算(Tetensの近似式を使用した) float saturationVaporPressure(float t) { return 6.1078 *( 10 * (7.5 * t) / (t + 273.2)); } //飽和水蒸気量[g/㎥]の計算(理想気体の状態方程式による) float vaporPressure(float saturationPressure, float t) { return 217 * saturationPressure /(t +273.2); } //飽差[g/㎥]の計算(飽和水蒸気量と相対湿度より計算) float vaporPresureDeficit(float currentVaporPressure,float h) { return currentVaporPressure * ((100 - h)/100); }

おまけ エクセルで 飽差の計算

温度値の入力セルはF3 湿度値の入力セルはF4
F5セルに入れる計算式

=SUM(F8*(100-F4)/100)

F7セルに入れる計算式

=SUM(6.1078*10 * (7.5*F3)/(F3+273.2))

F8セルに入れる計算式

=SUM(217* F7/(F3+273.2))

飽差の値(g/立方メートル)はF5セルにでます。

DHT11の取付

ピンヘッダーに直接DHT11をハンダつけしてグルースティックを溶かして絶縁しています。
最初紙粘土を使ったら水分含んでいるのでダメでした。

1
Makato-kanのアイコン画像
屋外で温度湿度を測定し記録するので、壊れやすいと思い大量にDHT11とESP-WROOM-02を購入したのですが思いのほか壊れなかったので、何にでもDHT11をくっつけています。
ログインしてコメントを投稿する