Arduino esp32 网络时钟 温湿度

Orbit 发布于 2025-05-28 25 次阅读


超级简单的一个时钟,可以获取时间和温湿度。

#include <WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>
#include <DHT.h>

// Wi-Fi连接设置
const char* ssid = "你的wifi名称"; // WiFi名称
const char* password = "你的wifi密码"; // WiFi密码

// NTP客户端设置
WiFiUDP udp;
NTPClient timeClient(udp, "pool.ntp.org", 28800, 60000); // 设置时区偏移为UTC+8 (28800秒)

// DHT11设置
#define DHTPIN 4        // DHT11连接到GPIO 4
#define DHTTYPE DHT11   // 使用DHT11传感器
DHT dht(DHTPIN, DHTTYPE);  // 初始化DHT传感器

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password); // 连接Wi-Fi

  // 等待连接
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  
  Serial.println("Connected to WiFi!");

  // 初始化时间客户端
  timeClient.begin();

  // 初始化DHT传感器
  dht.begin();
}

void loop() {
  timeClient.update(); // 获取网络时间
  Serial.print("网络时间: ");
  Serial.println(timeClient.getFormattedTime()); // 打印当前时间

  // 读取温湿度数据
  float humidity = dht.readHumidity();    // 读取湿度
  float temperature = dht.readTemperature(); // 读取温度(默认单位为摄氏度)

  // 检查读取是否成功
  if (isnan(humidity) || isnan(temperature)) {
    Serial.println("Failed to read from DHT sensor!");
  } else {
    // 打印温湿度数据
    Serial.print("温度: ");
    Serial.print(temperature);
    Serial.print(" °C\t");
    Serial.print("湿度: ");
    Serial.print(humidity);
    Serial.println(" %");
  }

  delay(100); // 每秒打印一次
}
此作者没有提供个人介绍。
最后更新于 2025-05-28