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

#ESP32をArduino IDEで使う方。
1. [ESP32 Wemos LOLIN D32 101](https://qiita.com/Dreamwalker/items/139fb12ead0e08b6ba51)

#気温を湿度を知りたい

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

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

- [SHT-30 Datasheet](http://www.mouser.com/ds/2/682/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital-971521.pdf)

## 消費電流
- idle state(single shot mode) ：0.2uA - 20uA
- Measuring：0.8ｍA-1.5ｍA

## I2C

[SHT-30 Datasheet](http://www.mouser.com/ds/2/682/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital-971521.pdf) によると

## Register

![image.png](https://qiita-image-store.s3.amazonaws.com/0/137182/95f45a9f-738d-83ac-da08-27d7e8aba4f5.png)

## I2C Sequence

![image.png](https://qiita-image-store.s3.amazonaws.com/0/137182/abf8c21b-a2ae-7172-a93e-bcee45238257.png)

## Wemos SHT-30 Module

-[参考](https://wiki.wemos.cc/products:d1_mini_shields:sht30_shield)
- D1 - SCL
- D2 - SDA
 
#ESP-32 Pin Map
**ESP32 D32 ボードのPin Mapはなかったので、他のを参考しました。ほとんど似ているので使うのはそんなに問題ないです。**

![image.png](https://qiita-image-store.s3.amazonaws.com/0/137182/521c7984-19ef-7b6f-d1cd-c46b530bfeb6.png)

Source ：　14Core.com

#はんだ付け

![20180613_143842.jpg](https://qiita-image-store.s3.amazonaws.com/0/137182/027cd7a8-8d04-6eba-1abf-5c24dca6904e.jpeg)

#回路配線

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

![20180613_143758.jpg](https://qiita-image-store.s3.amazonaws.com/0/137182/541d2a04-e74a-ac94-6c7c-2d2f3f614ac9.jpeg)

![20180613_144542.jpg](https://qiita-image-store.s3.amazonaws.com/0/137182/c90639dc-cad2-3f38-86cf-1eecc4bcfd51.jpeg)

#ソースコード

```c++: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);
}

```

- [参考](https://github.com/ControlEverythingCommunity/SHT30/blob/master/Arduino/SHT30.ino)
したリンク。

#結果
![result.PNG](https://qiita-image-store.s3.amazonaws.com/0/137182/820d0816-0499-6fb5-be85-d0f5f4d7f57a.png)


#終わりに

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