Arduino利用NTPClient库获取网络时间,显示时间与实时时间不同步

本文讨论了在使用Arduino和NTPClient库获取网络时间时遇到的时间不同步问题,尝试了多种解决办法,包括修改全局变量、变换WiFi信道、验证数据获取等,最后发现是服务器问题。通过更换NTP服务器地址,例如使用阿里云、腾讯、谷歌或高校的NTP服务器,成功实现了时间的实时同步。作者仍在研究解决原理,并欢迎读者指正错误和分享解决思路。
摘要由CSDN通过智能技术生成

 网络时间协议(Network Time Protocol,NTP)是用来使计算机时间同步化的一种协议,它可以 使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正, 与标准时间的误差小于1ms。标准时间来源于原子钟,卫星,天文台等。

之前做透明时钟的时候遇到的问题,使用NTPClient库获取网络时间和日期无法做到同步的问题,最终经过修改程序逐步改进,期间试过将时分秒修改为全局变量、变换WiFi信道、验证JSON返回值数据获取是否正确、利用程序中的看门狗来修改代码进程结构,最终都无济于事。但最终经过去除获取API的服务器解决问题。

以下是获取NTP的部分代码:

#include <NTPClient.h>    //NTP库

     ……………………………
     …………省……………
     …………略……………
     ……………………………

NTPClient timeClient(ntpUDP, "ntp.tuna.tsinghua.edu.cn"); // NTP获取时间

     ……………………………
     …………省……………
     …………略……………
     ……………………………

timeClient.update();
    unsigned long epochTime = timeClient.getEpochTime();
    //Serial.println(epochTime);
    if(flag == 1)
    {
      currentSec = epochTime;
      flag = 0;
    }
    
    String formattedTime = timeClient.getFormattedTime();
    int tm
  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值