本站改版新增arduino频道

Micropython
Arduino

arduino 获取网络时间


arduino 获取网络时间

#include <Arduino.h>
#include <WiFi.h>

#define NTP1 "ntp1.aliyun.com"
#define NTP2 "ntp2.aliyun.com"
#define NTP3 "ntp3.aliyun.com"
//填写WIFI入网信息
const char *ssid = "NBWIFI";                                                                                // WIFI账户
const char *password = "z7758521";                                                                                 // WIFI密码
const String WDAY_NAMES[] = {"星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};                //星期
const String MONTH_NAMES[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; //月份

//time_t now; //实例化时间
void setClock()
{

  struct tm timeInfo; //声明一个结构体
  if (!getLocalTime(&timeInfo))
  { //一定要加这个条件判断,否则内存溢出
    Serial.println("Failed to obtain time");
    return;
  }
  //Serial.print(asctime(&timeInfo)); //默认打印格式:Mon Oct 25 11:13:29 2021
  String date = WDAY_NAMES[timeInfo.tm_wday];
  Serial.println(date.c_str());
  // sprintf_P(buff1, PSTR("%04d-%02d-%02d %s"), timeInfo.tm_year + 1900, timeInfo.tm_mon + 1, timeInfo.tm_mday, WDAY_NAMES[timeInfo.tm_wday].c_str());
  String shuju = String(timeInfo.tm_year + 1900); //年
  shuju += "-";
  shuju += timeInfo.tm_mon + 1; //月
  shuju += "-";
  shuju += timeInfo.tm_mday; //日
  shuju += " ";
  shuju += timeInfo.tm_hour; //时
  shuju += ":";
  shuju += timeInfo.tm_min;
  shuju += ":";
  shuju += timeInfo.tm_sec;
  shuju += " ";
  shuju += WDAY_NAMES[timeInfo.tm_wday].c_str(); //星期
  Serial.println(shuju.c_str());
}

void setup()
{
  Serial.begin(115200);
  Serial.println();
  //设置ESP32工作模式为无线终端模式
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected!");
  configTime(8 * 3600, 0, NTP1, NTP2, NTP3);
}

void loop()
{
  Serial.println("Waiting 10s before the next round...");
  delay(10000);
  setClock();
  // printLocalTime();
}



2222222222222222

#include <WiFi.h>

#define NTP  "ntp.aliyun.com"        

//填写自己的WIFI信息
const char *ssid = "NBWIFI";
const char *password = "z7758521";

void wifi_init(){
  
  WiFi.mode(WIFI_STA);//配置ESP32 工作模式
  WiFi.begin(ssid, password);
  Serial.println("正在连接 WiFi.");
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected!");

}

void time_init() {
  struct tm timeinfo;  // 定义时间信息
  //如果获取失败,就开启联网模式,获取时间
  if (!getLocalTime(&timeinfo)){
    Serial.println("获取时间失败");
    //开启网络  
    wifi_init();
    // 从网络时间服务器上获取并设置时间
    configTime(8 * 3600, 0, NTP);//时区,夏令时,NTP地址
    return;
  }
  // 格式化输出:2021-10-24 23:00:44 Sunday
  Serial.println(&timeinfo, "%F %T %A"); 
  //   WiFi.disconnect(true);//在不需要开启网络的情况下,可以主动断开网络连接。
}

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

}

void loop()
{
  time_init();
  delay(1000);
}




推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 ESP56.com All Rights Reserved
晋ICP备14006235号-22 晋公网安备14108102001165号

执行时间: 0.010061979293823 seconds