arduino esp32s3使用dht11采集温湿度代码
时间: 2025-06-05 07:05:49 AIGC 浏览: 41
### Arduino 和 ESP32-S3 使用 DHT11 传感器采集温湿度的代码示例
以下是基于 Arduino 平台和 ESP32-S3 的 DHT11 温湿度传感器数据采集代码示例:
```cpp
#include "DHT.h"
#define DHTPIN 6 // 定义DHT11的数据引脚连接到GPIO6
#define DHTTYPE DHT11 // 设置使用的DHT型号为DHT11
DHT dht(DHTPIN, DHTTYPE); // 创建DHT对象
void setup() {
Serial.begin(9600); // 初始化串口通信,波特率为9600
Serial.println("DHT11 Sensor Test");
dht.begin(); // 启动DHT库
}
void loop() {
float humidity = dht.readHumidity(); // 读取湿度值
float temperature = dht.readTemperature(); // 读取温度值 (摄氏度)
if (isnan(humidity) || isnan(temperature)) { // 检查是否有错误读数
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: "); // 打印湿度
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: "); // 打印温度
Serial.print(temperature);
Serial.println(" ℃");
delay(2000); // 延迟2秒再重新读取
}
```
#### 解析
上述代码实现了通过 ESP32-S3 板子上的 GPIO6 连接 DHT11 数据线来获取环境中的温湿度信息[^3]。
- `#include "DHT.h"` 是引入用于操作 DHT 系列传感器的第三方库。
- `DHT dht(DHTPIN, DHTTYPE)` 实现了定义一个名为 `dht` 的实例化对象,并指定其工作模式以及所用引脚。
- 在主程序中利用 `readHumidity()` 方法获得当前空气相对湿度百分比数值,而借助于 `readTemperature()` 函数则可以得到对应位置下的实际气温状况。
此段落描述了如何设置硬件连线关系及其初始化过程,同时展示了当检测失败时应采取何种措施以保障系统的稳定性与可靠性。
---
### MicroPython 下使用 I2C 接口驱动 DHT11 的代码示例
如果希望采用 MicroPython 编程语言,则可以通过如下方式完成相同功能:
```python
from machine import Pin, I2C
import time
import dht
i2c = I2C(scl=Pin(22), sda=Pin(21)) # 初始化I2C总线
sensor = dht.DHT11(Pin(4)) # 将DHT11接到ESP32-S3的GPIO4上
while True:
try:
sensor.measure() # 测量一次
temp = sensor.temperature() # 获取温度
hum = sensor.humidity() # 获取湿度
print(f'Temperature: {temp}°C')
print(f'Humidity: {hum}%')
except Exception as e:
print('Error reading data:', str(e))
time.sleep(2) # 每隔两秒钟测量一次
```
这段 Python 脚本同样能够满足需求,不过它依赖的是另一种开发框架——MicroPython,在该环境下需先加载相应的设备驱动支持包才能正常运行[^2]。
注意这里我们并没有真正意义上运用到了 i2c 协议去访问器件而是直接操控 gpio 口模拟信号交互达成目的。
---
### 注意事项
无论是选用哪种方案都需要确认好各自平台下具体针脚映射规则以免造成不必要的麻烦;另外考虑到不同版本固件可能存在兼容性差异所以建议提前查阅官方文档或者社区资料加以验证后再动手实践[^1].
阅读全文
相关推荐




















