LoginSignup
5
2

More than 5 years have passed since last update.

[ESP32] SHT-30 温湿度センサー 試してみた。

Last updated at Posted at 2018-06-13

ESP32をArduino IDEで使う方。

  1. ESP32 Wemos LOLIN D32 101

気温を湿度を知りたい

今時には温湿度センサーを基本的に使って
Hello Worldみたいな感じでしやすく使えますね。
値段の安さかな?

SHT-30?

SHT Series温湿度センサーで有名で沢山の方が使ってます。
今回はWEMOSのSHT-30モジュールを使いました。
SHT-30やSHTセンサーはセンサー内にADCを含まれているので、便利です。
そして、TWI(I2C)コミュニケーションを使えるので良い。

消費電流

  • idle state(single shot mode) :0.2uA - 20uA
  • Measuring:0.8mA-1.5mA

I2C

SHT-30 Datasheet によると

Register

image.png

I2C Sequence

image.png

Wemos SHT-30 Module

-参考
- D1 - SCL
- D2 - SDA

ESP-32 Pin Map

ESP32 D32 ボードのPin Mapはなかったので、他のを参考しました。ほとんど似ているので使うのはそんなに問題ないです。

image.png

Source : 14Core.com

はんだ付け

20180613_143842.jpg

回路配線

  • esp32 IO 22 - D1
  • esp32 IO 21 - D2

20180613_143758.jpg

20180613_144542.jpg

ソースコード

esp_sht30.ino
#include <Wire.h>

#define Addr 0x45

void readTempHumi(void);

void setup() {
  Wire.begin(21, 22, 100000);
  // put your setup code here, to run once:
  Serial.begin(115200);
  delay(300);
}

void loop() {
  readTempHumi();
}

void readTempHumi(void){
   unsigned int data[6];
  // Start I2C Transmission
  Wire.beginTransmission(Addr);
  // Send measurement command
  Wire.write(0x2C);
  Wire.write(0x06);
  // Stop I2C transmission
  Wire.endTransmission();
  delay(500);

  // Request 6 bytes of data
  Wire.requestFrom(Addr, 6);

  // Read 6 bytes of data
  // cTemp msb, cTemp lsb, cTemp crc, humidity msb, humidity lsb, humidity crc
  if (Wire.available() == 6)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
    data[2] = Wire.read();
    data[3] = Wire.read();
    data[4] = Wire.read();
    data[5] = Wire.read();
  }

  // Convert the data
  float cTemp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
  float fTemp = (cTemp * 1.8) + 32;
  float humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);

  // Output data to serial monitor
  Serial.print("Relative Humidity : ");
  Serial.print(humidity);
  Serial.println(" %RH");
  Serial.print("Temperature in Celsius : ");
  Serial.print(cTemp);
  Serial.println(" C");
  Serial.print("Temperature in Fahrenheit : ");
  Serial.print(fTemp);
  Serial.println(" F");
  delay(500);
}

結果

result.PNG

終わりに

ESP32とSHT-30をつかって室内の温湿度をみてみました。
そして、簡単で試してみました。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2