打印
[LKS32 软件]

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

[复制链接]
192|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
linfelix|  楼主 | 2023-4-23 23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  首先,硬件上,单片机通过串口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时间服务器来获取时间,步骤是类似的。

   

使用特权

评论回复
沙发
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的名称和密码可以动态进行更改吗

使用特权

评论回复
5
wowu| | 2023-5-16 16:15 | 只看该作者
wakayi 发表于 2023-5-16 15:31
wifi的名称和密码可以动态进行更改吗

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

使用特权

评论回复
6
xiaoqizi| | 2023-5-16 16:26 | 只看该作者
获取网络时间后,网络上会自动不停的发送当前时间吗

使用特权

评论回复
7
木木guainv| | 2023-5-16 17:20 | 只看该作者
这种实时性如何 大概能有多少时间的延时呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

1086

帖子

1

粉丝