ESP8266物联网时钟-概要设计(网络时钟获取)

WIFI获取时间:

NTP 服务 简介
NTP是网络时间协议(Network Time Protocol),它是用来同步网络中各个计算机的时间的协议。esp8266也可以通过建立与NTP服务的连接,来获取实时时间。

在计算机的世界里,时间非常地重要,例如对于火箭发射这种科研活动,对时间的统一性和准确性要求就非常地高,是按照A这台计算机的时间,还是按照B这台计算机的时间?NTP就是用来解决这个问题的,NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机时间同步的一种协议。它的用途是把计算机的时钟同步到世界协调时UTC,其精度在局域网内可达0.1ms,在互联网上绝大多数的地方其精度可以达到1-50ms。

NTPClient 库的安装
使用NTP服务需要先安装 NTPClient 库,按组合件 Crtrl + Shift + I 调出库管理 具体操作如下所示:

ESP8266物联网时钟-概要设计(网络时钟获取)

 实现获取时间的代码段

#include <Wire.h>
#include <ESP8266WiFi.h>
#include <NTPClient.h>
#include <WiFiUdp.h>

WiFiUDP ntpUDP;

const char *ssid     = "SSID";  //这里填写需要连接WIFI的SSID
const char *password = "Password"; //这里填写WIFI的密码

//NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600*8, 60000);  //乘以8是因为北京时间时东八区的时间
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com", 3600*8, 60000);       //乘以8是因为北京时间时东八区的时间


void setup()        //初始化
{
  Serial.begin(9600);
  Wire.begin(2,14);
  delay(500);


  //初始化网络
  while ( WiFi.status() != WL_CONNECTED ) 
  {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}


void loop()
{
  Time_InitDis();
  delay ( 500 );
}

void Time_InitDis(void)   //
{
  timeClient.update();
  Serial.println(timeClient.getFormattedTime());
  
  timeClient.getDay();  //换算星期
  timeClient.getHours();  //换算小时
  timeClient.getMinutes();  //换算分钟
  timeClient.getSeconds();  //换算

}

实现效果:通过串口上送获取到的网络时间

ESP8266物联网时钟-概要设计(网络时钟获取)

对应的代码已经放到下载页 需要的可以下载。 

上一篇:ESP8266自己遇到的一些小问题和解决方法


下一篇:ESP8266 – ESP8266WebServer库