ESP32で温湿度センサHTS221を読み取る

このページをAIに渡す

いつものAIに相談

Gemini・その他のAI

このページの情報を添えて、仕組みや使い方、つくりたいものを相談できます。

Geminiを開く

質問文をコピーして、Geminiの入力欄に貼り付けてください。

質問文を確認

目次

概要

AP02 ESP32 MCUリーフで、AI01 4-Sensorsリーフに搭載された温湿度センサHTS221の値を読み取り、Arduino IDEのシリアルモニタに表示するサンプルです。リーフの組み立てからスケッチの実行、基準となる計測器を使った2点間補正までを説明します。

使用するリーフ

以下のリーフを使用します

TypeNameQ’ty
AZ62Connector Cover2
AI014-Sensors1
AX07Back to back1
AP02ESP32 MCU1
AV042V~4.5V1
AZ63Nut Plate2
AAA battery holder1
AAA battery3
M2*8mm screw2
M2*12mm screw2
φ10x2mm magnet1

リーフの組み立て

下図を参考にリーフを組み立ててみましょう。

assemble1

ソースコード

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);
}

ESP32_Thermo-Hygrometer.ino

2点間補正

表示させたい温度(または、湿度)と4-Sensorsの温度(または、湿度)に、ずれがあるときは、2点間補正を行います。以下は、温度を例に、補正方法を記します。

まず、4-Sensorsと、基準となる計測器で、2点の温度を測定してください。次に、測定した値を、サンプルスケッチに書き込んで、実行していただければ、4-Sensorsの温度が、表示させたい温度に近づきます。 

実行結果

Arduino IDEのシリアルモニタを開き、ボーレートを115200bpsとすると、温度と湿度が表示されます。

リーフ写真
技術資料・サンプル・Q&Aから探せます