esp笔记(6)esp8266 获取 NTP 实时时间

本文开发环境:

  • MCU型号:ESP8266
  • IDE环境 : Arduino IDE

本文内容:

  1. 使用 esp8266 在线获取实时时间

NTP 服务 简介

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

NTPClient 库的安装

使用NTP服务需要先安装 NTPClient 库,按组合件 Crtrl + Shift + I 调出库管理 具体操作如下所示:
esp笔记(6)esp8266 获取 NTP 实时时间_第1张图片

打开库 Demo 程序

库自带了一个建议的demo程序,方便用户快速开发,具体操作如下所示:
esp笔记(6)esp8266 获取 NTP 实时时间_第2张图片
打开以后弹出一个窗口:
esp笔记(6)esp8266 获取 NTP 实时时间_第3张图片
接着我们就可以将窗口缩放到合适大小,开始代码的编辑。

程序设计

配置WiFi密码和名字

需要设置路由器的密码(Password)和名称(SSID)这样才可以esp8266才可以上网,具体操作如下:

... ...
const char *ssid     = "602";                          // 路由器名称
const char *password = "602602602";         // 路由器密码
... ...

校准时区

由于全球的时间是不同的,所以需要校准时间,以北京时间为例,在创建实例的时候,见校准参数传入即可,具体操作如下:

NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);

程序示例

修改工程以后,完整的示例代码如下所示,如果你已经安装好库,也可以直接复制以下代码到工程中,直接编译运行查看打印信息:

#include 
// change next line to use with another board/shield
#include 
//#include  // for WiFi shield
//#include  // for WiFi 101 shield or MKR1000
#include 

const char *ssid     = "602";
const char *password = "602602602";

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ntp1.aliyun.com",60*60*8, 30*60*1000);

void setup(){
  Serial.begin(115200);

  WiFi.begin(ssid, password);

  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 );
    Serial.print ( "." );
  }

  timeClient.begin();
}

void loop() {
  timeClient.update();

  Serial.println(timeClient.getFormattedTime());

  delay(1000);
}

运行程序以后,就可以从串口助手中观察到时间:
esp笔记(6)esp8266 获取 NTP 实时时间_第4张图片

你可能感兴趣的:(esp8266)