ESP32をArduino IDEで使う方。
気温を湿度を知りたい
今時には温湿度センサーを基本的に使って
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
I2C Sequence
Wemos SHT-30 Module
-参考
- D1 - SCL
- D2 - SDA
ESP-32 Pin Map
ESP32 D32 ボードのPin Mapはなかったので、他のを参考しました。ほとんど似ているので使うのはそんなに問題ないです。
Source : 14Core.com
はんだ付け
回路配線
- esp32 IO 22 - D1
- esp32 IO 21 - D2
ソースコード
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);
}
-
参考
したリンク。
結果
終わりに
ESP32とSHT-30をつかって室内の温湿度をみてみました。
そして、簡単で試してみました。