環境モニタを作ろう with ESP32 DEV Module 〜 No2. 温度湿度センサーをつけよう

さて、No.1でESP32 DEV Moduleの開発環境ができたのと、簡単な操作で慣れたところで、実際に今回は、温度と湿度センサーをつけてみましょう。

温湿度センサ

SHT31使用 高精度温湿度センサモジュールキット: 組立キット 秋月電子通商 電子部品 

上記のページに取扱説明書と仕様書のリンクがあるので、まずは確認しましょう

温湿度センサとESP32 DEV Moduleをつなげます

ESP32 DEV Moduleと温湿度センサの接続は以下のようにしています

ESP32    SHT31
3V3 端子1
IO21(SDA) 端子2
IO22(SCL) 端子3
端子4
GND 端子5

センサーから温度と湿度を取得しましょう

VS CodeかArduinoIDEを立ち上げて、新規ファイルを作成しましょう。

setup()で、センサーに接続しに行きます。
SHT31のI2Cアドレスは、取扱説明書にのっている通り
今回は、ADRはopenにしているので、0x45です。

Wireは、I2Cと通信するライブラリです。

Wire.begin(21,22); 

> SDA(データ)が、21でSCL(転送用クロック)22

I2Cの端子として21ピンと22を使う宣言をしています。

#include <Wire.h>

// Sensor address
#define SHT31_ADDR 0x45

void setup() {
  // put your setup code here, to run once:

    Serial.begin(9600);
    Serial.println("setup");

    Wire.begin(21,22); // I2C

}

測定コマンドを送ります。

コマンドコードは取扱説明書を確認。

 

取得できた温度測定値を取り出して、変換のための計算をして、シリアルモニタに出力します。変換のための計算式も取扱説明書にあります。

void loop() {
    byte command[2] = { 0x24, 0x00 };
    byte data[7];

    Wire.beginTransmission(SHT31_ADDR);
    Wire.write(command, sizeof(command));
    Wire.endTransmission();

    delay(300);

    int i = 0;
    Wire.requestFrom(SHT31_ADDR, 6);
    while (Wire.available() && i < 6) {
        data[i++] = Wire.read();
    }

    data[i] = 0;

    float temp = -50.0 + (175.0 * (unsigned int)(data[0] * 256 + data[1]) / 65535.0);
    float humidity = (100.0 * (unsigned int)(data[3] * 256 + data[4])) / 65535.0;

    Serial.print(temp);
    Serial.print(" , ");
    Serial.println(humidity);
    delay(5000);

}

これで、ESP32 DEV Moduleにアップロードしてみましょう

シリアルモニタに、温度と湿度が表示されました!

シリアルモニタは、Serial.begin(9600);としているので、9600bpsに設定してみてくださいね。

さて、次はhttp://Wifiに接続して、https通信をしてみましょう!