1.配置ESP8266(使用AT指令)
注意,以下指令如无特殊说明,均在指令结尾加回车换行
1.确定模块已正常连接
AT //确定模块已正常连接
AT+CWMODE=1 //设置STA模式
AT+RST //重启模块
AT+CWLAP //扫描附近AP热点
AT+CWJAP="ssid","password" // 连接AP
AT+CIFSR //查看被分配的IP是多少
AT+CIPMUX=0 // 设置WiFi模块为单路链接
AT+CIPSTART="UDP","1.cn.pool.ntp.org",123 // 链接到 NTP 服务器,时间服务器默认的端口号是 123,协议为UDP
AT+CIPSEND=48 // 发送48byte的数据
//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进制显示
10进制显示
最后收到的数据
+IPD,48:(2B 49 50 44 2C 34 38 3A)后面的字符,以0x24开头
2B 49 50 44 2C 34 38 3A 24 02 EC EC 00 00 04 A2 00 00 06 96 C0 24 8F 82 E6 47 39 17 98 B6 16 6F 00 00 00 00 00 00 00 00 E6 47 3A F3 E5 D3 18 C5
E6 47 3A F3 //这几位是需要的时间
E5 D3 41 8A
#include <stdio.h>
//E6 45 EB FF
unsigned char ntp[4]={0xE6, 0x47, 0x39, 0x9A};
unsigned int ntp_time,ntp_time_after1970;
unsigned char h,m,s;
int main(void)
{
ntp_time=(ntp[0]<<24) + (ntp[1]<<16) + (ntp[2]<<8) + ntp[3];
ntp_time_after1970 = ntp_time-2208988800;
h = (ntp_time_after1970/3600)%24+8;
m = (ntp_time_after1970/60)%60;
s = ntp_time_after1970%60;
printf("%u,%u\r\n",ntp_time,ntp_time_after1970);
printf("%02d:%02d:%02d",h,m,s);
return 0;
}
参考资料
- https://www.cnblogs.com/Luad/p/10652644.html
- https://www.geek-workshop.com/thread-27367-1-1.html
- https://tool.chinaz.com/Tools/unixtime.aspx
- https://www.arduino.cn/thread-91610-1-1.html(代码解析)
ESP8266使用的其他资料
- https://blog.youkuaiyun.com/mbs520/article/details/109572070
- https://blog.youkuaiyun.com/jinanhezhuang/article/details/118975506?spm=1001.2101.3001.6650.8&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-8-118975506-blog-109572070.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-8-118975506-blog-109572070.pc_relevant_aa&utm_relevant_index=15
- https://yngzmiao.blog.youkuaiyun.com/article/details/86538288?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-86538288-blog-109572070.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-2-86538288-blog-109572070.pc_relevant_aa&utm_relevant_index=5
NTP解析
- https://blog.youkuaiyun.com/lin_strong/article/details/90678838
- https://github.com/abish7643/Gesture-Controlled-Display
- https://www.geek-workshop.com/thread-29009-1-1.html
- https://blog.youkuaiyun.com/u014470361/article/details/79142221
现在只解析出了时分秒。可以在程序中判断,当DS1302的时间和NTP获取的时间为0点左右时,不校准时间。