如何通过ESP8266/nodemcu和Arduino IDE来获取时间

电子说

1.3w人已加入

描述

步骤1:您需要做的事情

对于此项目,您需要做的事情很少:

ESP8266/NODEMCU

使用USB电缆对其进行编程。

步骤2:什么是NTP及其工作原理?

什么是NTP:NTP代表网络时间协议。这是一个标准的Internet协议(IP),用于通过网络将计算机时钟同步到某些参考。

该协议可用于将所有联网设备同步到协调世界时(UTC)。

NTP设置计算机时钟。对于UTC,客户端可以应用任何本地时区偏移量或夏令时偏移量。这样,无论位置和时区如何,客户端都可以同步到服务器。

它将如何工作:

客户端设备(例如ESP8266)使用端口123上的用户数据报协议(UDP)连接到服务器。然后,客户端将请求包发送到NTP服务器。

响应此请求,NTP服务器发送时间戳包。

时间戳包包含多个信息,例如UNIX时间戳,准确性,延迟

然后客户端可以解析出当前日期和时间值。

步骤3:在Arduino IDE上安装库

在您的Arduino IDE中,转到库管理器并搜索NTP,然后按照我下载的方式下载NTP客户端库,请参考图像以获取更多帮助。

步骤4:编码部分

请复制以下代码并将网络凭据放入代码中,然后

您需要为我设置偏移时间为19800

因为我的时区是utc + 5: 30这样

UTC +5:30 = 5.5 * 60 * 60 = 19800 UTC + 1 = 1 * 60 * 60 = 3600

计算时区并进行编辑,然后上传代码。

#include“ NTPClient.h”

#include“ ESP8266WiFi.h”

#include“ WiFiUdp.h”

const char * ssid =“ ***********”;

const char * password =“ ***********”;

const long utcOffsetInSeconds = 19800;

char daysOfTheWeek [7] [12] = {“ Sunday”,“ Monday” ,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”}};

//定义NTP客户端以获取时间

WiFiUDP ntpUDP;

NTPClient timeClient(ntpUDP,“池。 ntp.org”,utcOffsetInSeconds);

void setup(){ WiFi.begin(ssid,password);

while(WiFi.status()!= WL_CONNECTED){

延迟(500);

Serial.print(“。”);

}

timeClient.begin();

}

void循环(){

timeClient.update();

Serial.print(daysOfTheWeek [timeClient.getDay()]);

Serial.print(“,”);

Serial.print(timeClient.getHours());结果Serial.print( “:”);结果,Serial.print(timeClient.getMinutes());结果,Serial.print( “:”);结果,斯里al.println(timeClient.getSeconds());结果,//Serial.println(timeClient.getFormattedTime());结果,延迟(1000);结果,},点击

第5步:获取时间

将代码上传到Esp8266之后,您可以打开串行监视器,如果一切正常,则可以开始计时串行监视器,因为我可以在串行监视器中获取时间。

因此,通过此项目,您可以连接任何显示器,并使其成为适当的网络时钟。因此,尽享网络时钟的乐趣。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分