ESP8266获取NTP时间【AT指令】

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.csdn.net/mbs520/article/details/109572070
  • https://blog.csdn.net/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.csdn.net/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.csdn.net/lin_strong/article/details/90678838
  • https://github.com/abish7643/Gesture-Controlled-Display
  • https://www.geek-workshop.com/thread-29009-1-1.html
  • https://blog.csdn.net/u014470361/article/details/79142221

现在只解析出了时分秒。可以在程序中判断,当DS1302的时间和NTP获取的时间为0点左右时,不校准时间。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值