posts/esp32-wifi-iot-project.md

ESP32开发实战:WiFi物联网温湿度监控

ESP32 2026-08-31 6 分钟阅读 #ESP32#物联网#MQTT#DHT11

ESP32开发实战:WiFi物联网温湿度监控

用 ESP32 + DHT11 做一个能联网上报温湿度的监控节点,是物联网入门最经典的项目之一。这篇文章完整走一遍:硬件接线、传感器驱动、WiFi 连接、MQTT 上报。

#一、硬件准备

器件说明
ESP32 开发板自带 WiFi + 蓝牙
DHT11 温湿度传感器单总线通信
面包板 + 杜邦线连接用

#1.1 接线表

DHT11 引脚ESP32 引脚
VCC (1)3.3V
DATA (2)GPIO4
GND (4)GND

DHT11 的 DATA 脚与 3.3V 之间需要接一个 4.7kΩ 上拉电阻

#二、读取 DHT11 数据

DHT11 是单总线协议,时序要求严格,建议直接用现成库。在 ESP-IDF 中可以使用 esp_dht11 组件:

c#include "esp_dht11.h"

void app_main(void) {
    dht11_reading_t reading = dht11_read();
    if (reading.status == DHT11_OK) {
        printf("Temperature: %.1f C\n", reading.temperature);
        printf("Humidity: %.1f %%\n", reading.humidity);
    }
}

如果没有库,自己写驱动时注意:主机拉低至少 18ms 触发,然后释放总线等待传感器应答,读 0/1 的位时序差别只有几十微秒,务必用 esp_rom_delay_us 精确延时。

#三、连接 WiFi

c#include "esp_wifi.h"
#include "esp_event.h"
#include "nvs_flash.h"

static void wifi_init(void) {
    nvs_flash_init();
    esp_netif_init();
    esp_event_loop_create_default();

    esp_netif_create_default_wifi_sta();
    wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
    esp_wifi_init(&cfg);

    wifi_config_t wifi_config = {
        .sta = {
            .ssid = "YOUR_SSID",
            .password = "YOUR_PASSWORD",
        },
    };
    esp_wifi_set_mode(WIFI_MODE_STA);
    esp_wifi_set_config(WIFI_IF_STA, &wifi_config);
    esp_wifi_start();
}

#四、MQTT 上报数据

用公共 Broker(如 EMQX 的 broker.emqx.io)快速验证,生产环境建议自建或使用云平台:

c#include "mqtt_client.h"

esp_mqtt_client_config_t mqtt_cfg = {
    .broker.address.uri = "mqtt://broker.emqx.io:1883",
    .topic = "device/room1/temperature",
};
esp_mqtt_client_handle_t client = esp_mqtt_client_init(&mqtt_cfg);
esp_mqtt_client_start(client);

在主循环里定时发布 JSON 数据:

cchar payload[128];
snprintf(payload, sizeof(payload),
    "{\"temp\": %.1f, \"humidity\": %.1f}",
    reading.temperature, reading.humidity);
esp_mqtt_client_publish(client, "device/room1/temperature", payload, 0, 1, 0);

#五、下一步玩法

  • 接入 Home Assistant,做智能家居联动;
  • ESP32-CAM 加个摄像头,变成可视化监控;
  • 低功耗场景换成 ESP32 深度睡眠,用电池供电跑一年。