ESP8266- 使用AT指令獲取網絡時間


前言:很早就考慮過用 ESP8266 獲取網絡時間,以前都是用 ESP8266 刷機智雲的 Gagent 固件,但無奈現在手頭的 ESP-01 的 Flash 只有 1M,實在無法勝任。經過在網絡上的不斷探索,終於找到了用AT指令獲取網絡事件的方法。

提醒:ESP8266默認波特率為115200. 如果配置過程中返回 ERROR 不要驚慌,可能是模塊已經處於該模式下了.

開始:

1.配置 ESP8266 入網

AT+CWMODE=1                     // station模式,設置成3也行
AT+RST                          // 重啟模塊
AT+CWJAP="ssid","password"      // 連接AP

等待連接成功…

 

2.連接授時服務器

AT+CIPMUX=0                                // 設置WiFi模塊為單路鏈接
AT+CIPSTART="UDP","1.cn.pool.ntp.org",123 // 鏈接到 NTP 服務器,時間服務器默認的端口號是 123,協議為UDP.
AT+CIPSEND=48 // 發送48byte的數據

若ESP8266返回'>'則繼續
注意,嚴格遵照以下數據且使用16進制發送,切勿發送新行

E3 0 6 EC 0 0 0 0 0 0 0 0 31 4E 31 34 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

用16進制接收數據

 

 

3.接收數據

1.執行完上面兩步,此時如果順利的話會受到一大堆16進制數據,諸如:
41 54 2B 43 49 50 53 45 4E 44 3D 34 38 0D 0D 0A 0D 0A 4F 4B 0D 0A 3E 20 0D 0A 52 65 63 76 20 34 38 20 62 79 74 65 73 0D 0A 0D 0A 53 45 4E 44 20 4F 4B 0D 0A 0D 0A 2B 49 50 44 2C 34 38 3A 24 02 06 E9 00 00 00 52 00 00 08 F2 0A 45 02 22 E0 4F 57 31 79 AF 20 82 00 00 00 00 00 00 00 00 E0 4F 59 9C 2F 4A 40 07 E0 4F 59 9C 2F 4C 22 B9 2.此時需要找到數據中的關鍵幀,也就是服務器返回的48位時間數據,它們通常具有以下格式:(如果找不到的話請重試2中的3、4步)
①它前面的數據為"2B 49 50 44 2C 34 38 3A"(+IPD,48:),他后面沒有東西;
②它通常以 24 開頭.
3.對數據提取后編號,其中[40][41][42][43]為我們需要的時間數據,在本例中為"E0 4F 5C 00".
 
 
4.處理數據
①將”E04F5C00“轉為十進制為3763297280,此即為1900距今的秒數。
②把這個時間減去2208988800(70年),得到標准的Unix時間戳。[3763297280-2208988800=1554308480]
③[1554308480/31556736+1970=2019],得到當下年份。
④計算月份和日期需要考慮平年閏年和每月天數,太麻煩我也沒搞懂。
⑤[(1554308480/3600)%24+8=24],得到北京時間-時(別忘了滿24歸零)
⑥[(1554308480/60)%60=21],得到北京時間-分
⑦[1554308480%60=20],得到北京時間-秒,既當下時間是 24:21:20
⑧將時間戳(1554308480)輸入  http://tool.chinaz.com/Tools/unixtime.aspx# 與計算結果進行比較。
 
5.關閉連接
AT+CIPCLOSE

 

 
參考資料:
1.本教程可以使用的 NTP Server
北京市中國教育和科研計算機網骨干網
1.cn.pool.ntp.org  
2.cn.pool.ntp.org
3.cn.pool.ntp.org
0.cn.pool.ntp.org
cn.pool.ntp.org
2.百度百科——unix時間戳
unix時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。
3.esp8266-01 AT命令通過向NTP服務器獲取網絡時間 "串口法”

https://www.geek-workshop.com/thread-27367-1-1.html
(出處: 極客工坊)

 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM