一、SHT40传感器介绍
SHT40是一款由Sensirion公司生产的数字湿度和温度传感器。采用I2C总线与上位机通讯,其包含4个引脚:
- VCC
- GND
- SDA
- SCL
二、硬件连接:
为方便连接,在某宝购买的成品SHT40模块 。将SHT40模块的接口按以下顺序连接到ESP32 S3开发板即可:
STH40 | ESP32 S3开发板 |
---|---|
VCC | 3.3V |
GND | GND |
SDA | 引脚8 |
SCL | 引脚9 |
ESP32 S3开发板接口定义:
三、安装Adafruit_SHT4x库
在Arduino IDE 界面左侧的库管理中搜索:Adafruit_SHT4x,Arduino 将自动找到Adafruit_SHT4x库,点击安装即可。
四、导入Adafruit_SHT4x库自带的示例程序
点击库文件旁边的三个小点选择示例“SHTtest”。
“SHTtest”示例代码如下:
#include "Adafruit_SHT4x.h"
Adafruit_SHT4x sht4 = Adafruit_SHT4x();
void setup() {
Serial.begin(115200);
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("Adafruit SHT4x test");
if (! sht4.begin()) {
Serial.println("Couldn't find SHT4x");
while (1) delay(1);
}
Serial.println("Found SHT4x sensor");
Serial.print("Serial number 0x");
Serial.println(sht4.readSerial(), HEX);
// You can have 3 different precisions, higher precision takes longer
sht4.setPrecision(SHT4X_HIGH_PRECISION);
switch (sht4.getPrecision()) {
case SHT4X_HIGH_PRECISION:
Serial.println("High precision");
break;
case SHT4X_MED_PRECISION:
Serial.println("Med precision");
break;
case SHT4X_LOW_PRECISION:
Serial.println("Low precision");
break;
}
// You can have 6 different heater settings
// higher heat and longer times uses more power
// and reads will take longer too!
sht4.setHeater(SHT4X_NO_HEATER);
switch (sht4.getHeater()) {
case SHT4X_NO_HEATER:
Serial.println("No heater");
break;
case SHT4X_HIGH_HEATER_1S:
Serial.println("High heat for 1 second");
break;
case SHT4X_HIGH_HEATER_100MS:
Serial.println("High heat for 0.1 second");
break;
case SHT4X_MED_HEATER_1S:
Serial.println("Medium heat for 1 second");
break;
case SHT4X_MED_HEATER_100MS:
Serial.println("Medium heat for 0.1 second");
break;
case SHT4X_LOW_HEATER_1S:
Serial.println("Low heat for 1 second");
break;
case SHT4X_LOW_HEATER_100MS:
Serial.println("Low heat for 0.1 second");
break;
}
}
void loop() {
sensors_event_t humidity, temp;
uint32_t timestamp = millis();
sht4.getEvent(&humidity, &temp);// populate temp and humidity objects with fresh data
timestamp = millis() - timestamp;
Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
Serial.print("Read duration (ms): ");
Serial.println(timestamp);
delay(1000);
}
五、运行代码
将程序编译并下载到ESP32 S3开发板中,在串口监视器中会不断的有SHT40模块采集的温湿度数据打印出来。
总结
这里不得不惊叹Arduino开发的快捷,半小时就可搞定ESP32 S3对SHT40的温湿度值读取,其中大部分的时间都还是用于寻找ESP32 S3开发板在Arduino中I2C的默认定义引脚!