ESP32超详细学习记录:NTP同步时间

发布时间:2022-10-04 23:00

ESP32超详细学习记录:NTP同步时间_第1张图片

本来想从开源项目找找灵感的,但是!那些代码真烂!!!!!

开源项目免不了的就是抄抄抄代码,想知道 NTP 是怎么实现的还要读那一堆烂代码,烦!

就算开源项目能怎么样!不还是一样的  烂!代!码!

自己想办法看看 NTP 的相关库是怎么实现的吧。


可以使用 aliyun 的 NTP 服务器。

发现不少开源项目都是用的 aliyun 的 NTP 服务器。

ESP32超详细学习记录:NTP同步时间_第2张图片

阿里云NTP服务器 - 云服务器 ECS - 阿里云https://help.aliyun.com/document_detail/92704.html


什么是NTP

NTP:Network Time Protocol(网络时间协议)

▶️ NTP 是用于同步网络中计算机时间的协议。它的用途是把计算机的时钟同步到世界协调时UTC。

UTC:Universal Time Coordinated(协调世界时)以原子时秒长为基础。

GMT:Universal Time(世界时)以地球自转为基础。

北京时间采用东八区的区时作为标准时间。北京时间比世界时(UTC)早8小时,北京时间=UTC+8。


使用 NTPClient 库获取时间

▶️ 如果使用 NTPClient 库,其实很简单很简单很简单!!

官方例程里就几个函数就实现了!就四个!

WiFiUDP ntpUDP;    //创建UDP实例

NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 60 * 60 * 8, 60000);    //NTC
    //UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval

//初始化函数
timeClient.begin();

//获取时间
timeClient.update();
timeClient.getFormattedTime();

这样,就能直接获取 小时:分钟:秒 的格式的时间了。

有感而发:学习ESP32还是要学一学网络协议啊!

需要说明的函数:

NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 60 * 60 * 8, 60000);    //NTC
    //UDP& udp, const char* poolServerName, long timeOffset, unsigned long updateInterval
  • ntpUDP:UDP实例

  • "europe.pool.ntp.org":NTP服务器地址

  • 60 * 60 * 8:是换算为东八区的时间需要的参数:秒*分钟*小时

  • 60000:更新时间

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号