温湿度センサ読み取り
概要
4-Sensorsリーフに搭載された温湿度センサの値を読み取って、シリアルモニタに表示するサンプルです。
使用するリーフ
以下のリーフを使用します
Type | Name | Q’ty |
---|---|---|
AZ62 | Connector Cover | 2 |
AI01 | 4-Sensors | 1 |
AX07 | Back to back | 1 |
AP02 | ESP32 MCU | 1 |
AV04 | 2V~4.5V | 1 |
AZ63 | Nut Plate | 2 |
AAA battery holder | 1 | |
AAA battery | 3 | |
M2*8mm screw | 2 | |
M2*12mm screw | 2 | |
φ10x2mm magnet | 1 |
リーフの組み立て
下図を参考にリーフを組み立ててみましょう。
ソースコード
Arduino IDEで下記のプログラムを書きましょう。
このスケッチを動かすためには、ライブラリのインストールが必要です。 まだインストールしていない場合は開発環境設定ページを参考にライブラリをインストールしてください。
//=====================================================================
// Thermo-hygrometer ESP32
//
// (c) 2021 LEAFONY SYSTEMS Co., Ltd
// Released under the MIT license
// https://opensource.org/licenses/MIT
//
// Rev.00 2021/04/01 First release
//=====================================================================
#include <Wire.h>
#include <HTS221.h>
//---------------------------
// Data for two-point correction
//---------------------------
// Temperature correction data 0
float TL0 = 25.0; // 4-Sensors Temperature measurement value
float TM0 = 25.0; // Thermometer and other measurements value
// Temperature correction data 1
float TL1 = 40.0; // 4-Sensors Temperature measurement value
float TM1 = 40.0; // Thermometer and other measurements value
// Humidity correction data 0
float HL0 = 60.0; // 4-Sensors Humidity measurement value
float HM0 = 60.0; // Hygrometer and other measurements value
// Humidity correction data 1
float HL1 = 80.0; // 4-Sensors Humidity measurement value
float HM1 = 80.0; // Hygrometer and other measurements value
void setup() {
// initialize serial communication at 115200 bit per second:
Serial.begin(115200);
// I2C 初期化
pinMode(21, OUTPUT); // SDA
digitalWrite(21, 0);
Wire.begin(); // I2C 100kHz
// initialize i2c communication with HTS221:
smeHumidity.begin();
delay(10);
}
void loop() {
// read temperature and humidity:
float dataTemp = (float)smeHumidity.readTemperature();
float dataHumid = (float)smeHumidity.readHumidity();
// calibration:
dataTemp = TM0 + (TM1 - TM0) * (dataTemp - TL0) / (TL1 - TL0); // 温度補正
dataHumid = HM0 + (HM1 - HM0) * (dataHumid - HL0) / (HL1 - HL0); // 湿度補正
Serial.println(String(dataTemp) + "[℃], " + String(dataHumid) + "[%]");
delay(1000);
}
2点間補正
表示させたい温度(または、湿度)と4-Sensorsの温度(または、湿度)に、ずれがあるときは、2点間補正を行います。以下は、温度を例に、補正方法を記します。
まず、4-Sensorsと、基準となる計測器で、2点の温度を測定してください。次に、測定した値を、サンプルスケッチに書き込んで、実行して頂ければ、4-Sensorsの温度が、表示させたい温度に近づきます。
実行結果
Arduino IDEのシリアルモニタを開き、ボーレートを115200bpsとすると、温度と湿度が表示されます。
最終更新 June 30, 2021