99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

使用SNTP協(xié)議獲取ESP8266網(wǎng)絡時間

CHANBAEK ? 來源:嵌入式攻城獅 ? 作者:安迪西 ? 2023-04-18 15:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. NTP和SNTP協(xié)議

NTP是網(wǎng)絡時間協(xié)議(Network Time Protocol),用來同步網(wǎng)絡設備(如PC、手機)的時間的協(xié)議

SNTP由 NTP改編而來(簡單網(wǎng)絡時間協(xié)議,Simple NTP)大大簡化了 NTP協(xié)議,同時也能保證時間達到一定的精確度。在實際應用中,SNTP協(xié)議主要被用來同步因特網(wǎng)上計算機的時間

SNTP協(xié)議采用客戶端/服務器的工作方式,可以采用單播(點對點)或者廣播(一點對多點)模式操作。SNTP服務器通過接收 GPS信號或自帶的原子鐘作為系統(tǒng)的時間基準。單播模式下,SNTP客戶端能夠通過定期訪問 SNTP服務器獲得準確的時間信息,用于調(diào)整客戶端自身所在系統(tǒng)的時間,達到同步時間的目的。廣播模式下,SNTP服務器周期性地發(fā)送消息給指定的 IP廣播地址或者 IP多播地址。SNTP客戶端通過監(jiān)聽這些地址來獲得時間信息

一些常見的 NTP服務器

  • 最常見的NTP服務器:www.pool.ntp.org/zone/cn
  • 其國內(nèi)地址為:cn.pool.ntp.org
  • Windows系統(tǒng)上自帶的兩個:time.windows.com 和 time.nist.gov
  • Mac OS上自帶的兩個:time.apple.com 和 time.asia.apple.com

圖片

2. SNTP接口說明

設置SNTP服務器:通過IP地址設置SNTP服務器,最多支持設置3個

void sntp_setserver(unsigned char idx, ip_addr_t *addr)
//idx 服務器編號,最多?持3個(0~2);0為主服務器,1和2為備用
//addr 服務器IP地址;需自行確保傳入的是合法SNTP服務器地址

設置SNTP服務器:通過域名設置SNTP服務器,最多支持設置3個

void sntp_setservername(unsigned char idx, char *server)
//idx 服務器編號,最多?持3個(0~2);0號為主服務器,1和2號為備用
//server 服務器域名;需自行確保傳入的是合法SNTP服務器域名

初始化和關閉SNTP

void sntp_init(void)
void sntp_stop(void)

查詢當前距離基準時間(1970.01.01 00:00:00 GMT+8)的時間戳,單位為秒

uint32 sntp_get_current_timestamp()
//返回值:距離基準時間的時間戳

查詢實際時間(GMT+8)

char* sntp_get_real_time(long t)
//t 與基準時間相距的時間戳
//返回值:實際時間

3. SNTP功能實現(xiàn)

SNTP功能開發(fā):在 freeRTOS下新建 SNTP任務,實現(xiàn)定時5秒串口打印一次網(wǎng)絡時間

任務流程如下示:

圖片

實現(xiàn)步驟如下:

ESP8266_RTOS_SDK目錄下新建sntp文件夾,把ESP8266開發(fā)環(huán)境搭建中的 app目錄下所有文件拷貝到該文件夾中

在user目錄下新建 user_sntp.c文件,并添加如下代碼

/*******************user_sntp.c********************************/
char* SntpServerNames[3] ={
"ntp1.aliyun.com",
"ntp2.aliyun.com",
"ntp3.aliyun.com"
};
//ATaskSntp任務
void ATaskSntp( void *pvParameters ){
  STATION_STATUS Status;
  uint32 time;
  do{
    Status = wifi_station_get_connect_status();
    vTaskDelay(100);   
  }while(Status != STATION_GOT_IP);
  printf("task is SNTP
");
  printf("STATION_GOT_IP!
");
  sntp_setservername(0,SntpServerNames[0]);
  sntp_setservername(1,SntpServerNames[1]);
  sntp_setservername(2,SntpServerNames[2]);
  sntp_init();
  for(;;){
    time = sntp_get_current_timestamp();
    if(time){
      printf("current date:%s
",sntp_get_real_time(time));
    }
    vTaskDelay(500);
  }
  vTaskDelete(NULL);
}
//Sntp_init 初始化
void Sntp_init(void){
  xTaskCreate(ATaskSntp, "Sntp", 512, NULL, 4, NULL);
}

在include目錄下新建 user_sntp.h文件,并添加聲明

void ATaskSntp(void *pvParameters);
void Sntp_init(void);

在user_main.c文件中的 user_init()函數(shù)下添加如下代碼

#define SSID "Hotspot"    //ESP8266要加入的無線網(wǎng)
#define PASSWORD "88888888"
void ICACHE_FLASH_ATTR
user_init(void){
  printf("SDK version:%s
", system_get_sdk_version());
  Led_init();
  wifi_set_opmode(STATION_MODE);
  struct station_config *config = (struct station_config *)        zalloc(sizeof(struct station_config));
  sprintf(config->ssid,SSID);
  sprintf(config->password,PASSWORD);
  wifi_station_set_config(config);
  free(config);
  wifi_station_set_auto_connect(TRUE);    
  Sntp_init();
  xTaskCreate(ATaskLed, "LED", 256, NULL, 2, NULL);
}

在ESP8266編譯器中編譯完成,燒寫 bin文件到 ESP8266,打開串口助手,每5秒輸出一次實時時間

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 計算機
    +關注

    關注

    19

    文章

    7658

    瀏覽量

    90738
  • 服務器
    +關注

    關注

    13

    文章

    9786

    瀏覽量

    87906
  • NTP
    NTP
    +關注

    關注

    1

    文章

    223

    瀏覽量

    14487
  • ESP8266
    +關注

    關注

    51

    文章

    965

    瀏覽量

    47382
  • sntp
    +關注

    關注

    0

    文章

    5

    瀏覽量

    3812
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ESP8266簡易WIFI天氣時鐘

    本篇介紹了http獲取網(wǎng)絡天氣的基本原理,并通過實踐,使用ESP8266網(wǎng)獲取網(wǎng)絡天氣和
    的頭像 發(fā)表于 06-06 09:31 ?8198次閱讀
    <b class='flag-5'>ESP8266</b>簡易WIFI天氣時鐘

    請問如何在ESP8266上使用sntp協(xié)議連接到ssl中的服務器?

    我正在使用帶有 C 語言的 esp-open-sdk 的ESP8266。 我嘗試使用此代碼來獲取時間戳,但每次都失敗 - 我只得到 0 : snt
    發(fā)表于 07-19 07:30

    請問STM32+ESP8266如何獲取網(wǎng)絡時間?

    請問STM32+ESP8266如何獲取網(wǎng)絡時間
    發(fā)表于 01-19 06:15

    ESP8266獲取網(wǎng)絡時間的方法

    ESP8266獲取網(wǎng)絡時間1、注意事項:本文用到了我自己的阿里云服務器,請各位使用的時候頻率稍微低一點,不然壓力很大哈。2、登錄可以用esp8266
    發(fā)表于 01-25 07:17

    ESP8266使用AT指令獲取網(wǎng)絡時間的步驟

    再優(yōu)化一下,恰巧有一個正在吃灰的裝了AT固件庫的esp8266,可以讓stm32去獲取網(wǎng)絡時鐘從而校正本地時間。網(wǎng)絡時鐘用淘寶的API,它返
    發(fā)表于 08-26 15:27

    ESP8266的基礎知識,怎么獲取網(wǎng)絡同步時間(北京時間

    要想獲取網(wǎng)絡時間首先要有提供網(wǎng)絡時間的網(wǎng)站,免費提供網(wǎng)絡時間
    的頭像 發(fā)表于 05-09 14:33 ?6.4w次閱讀
    <b class='flag-5'>ESP8266</b>的基礎知識,怎么<b class='flag-5'>獲取</b><b class='flag-5'>網(wǎng)絡</b>同步<b class='flag-5'>時間</b>(北京<b class='flag-5'>時間</b>)

    基于ESP8266網(wǎng)絡授時的時鐘源代碼免費下載

    本文檔的主要內(nèi)容詳細介紹的是基于ESP8266網(wǎng)絡授時的時鐘源代碼免費下載。
    發(fā)表于 09-21 08:00 ?28次下載
    基于<b class='flag-5'>ESP8266</b><b class='flag-5'>網(wǎng)絡</b>授時的時鐘源代碼免費下載

    使用STM32和ESP8266獲取網(wǎng)絡天氣的源代碼程序免費下載

    本文檔的主要內(nèi)容詳細介紹的是使用STM32和ESP8266獲取網(wǎng)絡天氣的源代碼程序免費下載。
    發(fā)表于 01-18 08:00 ?12次下載
    使用STM32和<b class='flag-5'>ESP8266</b><b class='flag-5'>獲取</b><b class='flag-5'>網(wǎng)絡</b>天氣的源代碼程序免費下載

    正點原子ESP8266獲取網(wǎng)絡天氣適配戰(zhàn)艦V3

    正點原子ESP8266獲取網(wǎng)絡天氣適配戰(zhàn)艦V3
    發(fā)表于 04-06 14:36 ?55次下載
    正點原子<b class='flag-5'>ESP8266</b><b class='flag-5'>獲取</b><b class='flag-5'>網(wǎng)絡</b>天氣適配戰(zhàn)艦V3

    基于STM32的ESP8266天氣時鐘(2)--------MCU獲取天氣數(shù)據(jù)

    stm32通過ESP8266模塊獲取天氣,時間
    發(fā)表于 11-18 18:36 ?39次下載
    基于STM32的<b class='flag-5'>ESP8266</b>天氣時鐘(2)--------MCU<b class='flag-5'>獲取</b>天氣數(shù)據(jù)

    ESP8266獲取網(wǎng)絡時間、獲取天氣

    ESP8266獲取網(wǎng)絡時間1、注意事項:本文用到了我自己的阿里云服務器,請各位使用的時候頻率稍微低一點,不然壓力很大哈。2、登錄可以用esp8266
    發(fā)表于 11-30 16:21 ?12次下載
    <b class='flag-5'>ESP8266</b><b class='flag-5'>獲取</b><b class='flag-5'>網(wǎng)絡</b><b class='flag-5'>時間</b>、<b class='flag-5'>獲取</b>天氣

    ESP8266通過MQTT協(xié)議連接ONENET

    將介紹通過MQTT協(xié)議連接ONENET,實現(xiàn)ESP8266與ONENET平臺數(shù)據(jù)交互一、設計目標實現(xiàn)ESP8266通過MQTT協(xié)議連接ONENET實現(xiàn)DHT11溫濕度數(shù)據(jù)的
    發(fā)表于 01-12 19:58 ?54次下載
    <b class='flag-5'>ESP8266</b>通過MQTT<b class='flag-5'>協(xié)議</b>連接ONENET

    使用Arduino IDE創(chuàng)建ESP8266網(wǎng)絡服務器

    電子發(fā)燒友網(wǎng)站提供《使用Arduino IDE創(chuàng)建ESP8266網(wǎng)絡服務器.zip》資料免費下載
    發(fā)表于 02-02 16:58 ?1次下載
    使用Arduino IDE創(chuàng)建<b class='flag-5'>ESP8266</b><b class='flag-5'>網(wǎng)絡</b>服務器

    使用ESP8266 OLED和Visuino從NIST TIME服務器獲取日期和時間

    電子發(fā)燒友網(wǎng)站提供《使用ESP8266 OLED和Visuino從NIST TIME服務器獲取日期和時間.zip》資料免費下載
    發(fā)表于 06-28 09:55 ?0次下載
    使用<b class='flag-5'>ESP8266</b> OLED和Visuino從NIST TIME服務器<b class='flag-5'>獲取</b>日期和<b class='flag-5'>時間</b>

    ESP8266網(wǎng)絡天氣時鐘OLED顯示

    基于ESP8266實現(xiàn)網(wǎng)絡獲取天氣和時鐘并OLED顯示
    的頭像 發(fā)表于 06-28 04:46 ?2244次閱讀
    <b class='flag-5'>ESP8266</b><b class='flag-5'>網(wǎng)絡</b>天氣時鐘OLED顯示