ESP32天气预报时钟连接WIFI后如何通过NTP获取时间
时间: 2023-09-16 15:08:49 浏览: 161
在ESP32上连接WiFi后,可以通过NTP服务器获取当前时间。使用Arduino IDE进行编程时,可以使用下面的代码来获取时间:
```cpp
#include <WiFi.h>
#include <WiFiUdp.h>
#include "time.h"
const char* ssid = "your_SSID";
const char* password = "your_PASSWORD";
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600; //GMT+1, 1小时
const int daylightOffset_sec = 0;
//创建一个UDP实例以与NTP服务器通信
WiFiUDP udp;
void setup()
{
Serial.begin(115200);
//连接WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
//初始化NTP客户端
udp.begin(2390);
setenv("TZ", "CET-1CEST,M3.5.0,M10.5.0/3", 1); //设置时区
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
//等待获取时间
while (time(nullptr) < 1000000000) {
delay(1000);
Serial.println("Waiting for NTP time sync...");
}
//打印当前时间
struct tm timeinfo;
gmtime_r(&now, &timeinfo);
Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}
void loop()
{
// your code here
}
```
这段代码中,首先连接到WiFi网络。然后,使用`WiFiUDP`类创建一个UDP实例,并使用`configTime()`函数初始化NTP客户端。`setenv()`函数用于设置时区,`gmtOffset_sec`和`daylightOffset_sec`分别表示当前时区的GMT偏移和夏令时偏移。接下来等待时间同步完成,使用`time()`函数获取当前时间,并使用`gmtime_r()`函数将时间转换为结构体形式进行打印。
阅读全文