linfelix 发表于 2023-4-23 23:00

单片机通过WIFI模块(ESP8266)获取网络时间

首先,硬件上,单片机通过串口AT指令访问WIFI模块(ESP12S)。具体AT指令怎样是写,可以参考之前的文章《AT指令程序的编写》。上电后,先配置WIFI模块的工作模式等,用到的AT指令如下:      1. 关闭回显                ATE0                         2. 设置为STA模式                AT+CWMODE_DEF=1       3. 设置WIFI名称和密码                AT+CWJAP_DEF=”SSID”,”Password”       4. 开启DHCP                AT+CWDHCP_DEF=1,1       5. 设置为单连接模式                AT+CIPMUX=0            6. 透传模式                AT+CIPMODE=1         
      2.获取网络时间      获取网络时间的方式有两种,对于较新版本的固件,可以直接通过AT指令来获取。(可以通过AT+GMR指令来查询固件的版本。)      AT+CIPSNTPTIME?      对于较老版本的固件,不支持该AT指令,只能通过自己链接网络服务器来获取当前时间。具体需要的AT指令如下:      1.建立TCP链接               AT+CIPSTART="TCP","www.beijing-time.org",80      2.打开传透模式                AT+CIPSEND      3.收到‘>’符号后,随便发送个数据      4.等待接收数据      接收的数据可以先用网络调试助手来测试,如下,可以看大,数据中包含了当前的日期和时间信息,我们可以先找到字符串中“Data”的位置,再解析后面的数据。数据格式固定,直接按照字符位置解析就行。      需要注意的是,获取的这个时间是格林威治时间,与北京时间相差8个小时。当然,也可以通过连接其它NTP时间服务器来获取时间,步骤是类似的。https://img-blog.csdnimg.cn/2c561cc48575415e84ca8ec8428e8059.png   

tpgf 发表于 2023-5-16 13:54

如果想要通过wifi获取网络时间 只能发送at指令吗

renzheshengui 发表于 2023-5-16 14:46

tpgf 发表于 2023-5-16 13:54
如果想要通过wifi获取网络时间 只能发送at指令吗

应该有更底层的传输协议但是呈现给我们的比较通用的就是at指令了

wakayi 发表于 2023-5-16 15:31

wifi的名称和密码可以动态进行更改吗

wowu 发表于 2023-5-16 16:15

wakayi 发表于 2023-5-16 15:31
wifi的名称和密码可以动态进行更改吗

感觉必须有一端得是活的 就是发送指令端

xiaoqizi 发表于 2023-5-16 16:26

获取网络时间后,网络上会自动不停的发送当前时间吗

木木guainv 发表于 2023-5-16 17:20

这种实时性如何 大概能有多少时间的延时呢
页: [1]
查看完整版本: 单片机通过WIFI模块(ESP8266)获取网络时间