stm32+esp8266模块获取网络时间

1.相关的AT指令

​
AT                           //查询模块是否正常工作           
AT+RST                       //模块复位
AT+RESTORE                   //恢复出厂设置
AT+CWMODE=1                  //设置WiFi模块的模式
AT+CIPMUX=0                  //设置模块为单路连接模式
AT+CWJAP="WIFI名称","密码"    //连接网络
AT+CIPSTART="TCP","192.168.666",80//连接TCP服务器,192.168.0.102是服务器IP,8080是服务器端口。
AT+CIPSTART="TCP","quan.suning.com",80  //或者 AT+CIPSTART="TCP","175.6.49.231",80
AT+CIPMODE=1	             //开启透传模式
AT+CIPSEND		             //开始发送数据
+++                          //退出透传模式

​

2.建立指令集

0:AT
1:AT+RST
2:AT+CWMODE=1
3:AT+CIPMUX=0
4:AT+CWJAP="你的WiFi名称","你的WiFi密码"
5:AT+CIPMODE=1
6:AT+CIPSTART="TCP","api.pinduoduo.com",80
7:AT+CIPSEND
8:GET http://api.pinduoduo.com/api/server/_stm
9:+++

3.硬件准备

STM32选用核心板F103RCT6,然后再加一个ESP8266 WiFi模块(自带USB-TTL模块),开发板与wifi模块需要连线,3.3v-3v,GND-G,PA2-RX,PA3-TX。

整个系统需要使用两次串口通信,第一次是PC与开发板通信(RXD-PA9,TXD-PA10),作用是当开发板与wifi模块开始配置是,逐步向PC打印出配置信息,并且将最终解析出的网络时间数据打印在串口助手上。第二次是开发板与wifi模块通信(PA2-RX,PA3-TX),作用是开发板发送AT指令,检查返回信息,并将获取的网络时间信息存储在数组中。

4.JSON数据解析

下图的数据代表的是自1970年1月1日起累计经过的毫秒数,如果只取数字的前10位,即累计秒数,最终换算为实时时间。

5.参考文章 

【STM32训练—WiFi模块】第一篇、STM32驱动ESP8266WiFi模块获取网络时间_esp8266 stm32-CSDN博客

WIFI模块(esp-01s)获取网络时间代码实现_esp01s获取时间-CSDN博客wifi模块无法识别AT指令,需要刷AT固件

NodeMCU模组之AT命令调试_nodemcu 无法退出透传-CSDN博客

WIFI模块(esp-01s)获取网络时间代码实现_esp01s获取时间-CSDN博客

解析JSON数据 

解析JSON数据      cJSON的使用——下载、打包与解析_cjson下载-CSDN博客

stm32 数据包解析_Keil环境下STM32工程加入cJSON-CSDN博客

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在STM32ESP8266获取网络时间,可以使用以下步骤: 1. 首先,需要将ESP8266连接到WiFi网络。可以使用AT指令或ESP8266的API来实现。 2. 一旦ESP8266连接到WiFi网络,可以使用NTP协议从互联网上获取时间。可以使用ESP8266的API或AT指令来实现。 3. 在STM32上,可以使用ESP8266的串口通信来获取时间数据。可以使用STM32的串口通信库来实现。 4. 一旦STM32获取时间数据,可以使用RTC模块来保存时间,并在需要时使用。 需要注意的是,获取网络时间需要保证ESP8266连接到互联网,并且网络稳定。同时,需要确保STM32ESP8266之间的串口通信正常。 ### 回答2: STM32ESP8266均是常见的物联网开发板,通过将它们结合起来,可以实现许多有用的功能。其中之一就是获取网络时间,从而确保设备的时间同步。 具体实现方法如下: 1. 搭建硬件平台:先将STM32ESP8266通过串口连接,确保二者可以相互通信。接着在STM32上搭建定时器,控制每隔一定时间ESP8266发送网络时间请求指令。 2. 配置ESP8266:开发者需要利用ESP8266手册或官方API文档,了解ESP8266相关AT指令,用于和服务器通信,请求网络时间信息,有时也可通过SNTP服务器获取时间信息。 3. 接收指令:ESP8266接收到STM32发送的命令后,向服务器发送请求信号,然后等待响应。这可以通过向服务器发送网络探测数据包实现。 4. 返回结果:服务器响应ESP8266的请求,将时间数据发送到ESP8266上。ESP8266接收到服务器返回的数据后,通过串口将数据发送给STM32,由STM32进行处理。 5. 时间同步:STM32获取网络时间数据后,通过RTC实时时钟进行同步,从而确保设备时间网络时间保持同步,同时在必要时可存入EEPROM,以便下次开机时不必重新获取网络时间。这个步骤实现硬件RTC时间校准。 实际实现过程中,还需要考虑网络延迟、数据传输稳定性、数据格式处理等细节问题,从而保证功能的可靠性和稳定性。此外,在应用中还可根据具体需求,设计更加高级和实用的时间同步方案。 ### 回答3: stm32esp8266是一款嵌入式系统,通过WiFi模块可以连接互联网。获取网络时间是嵌入式系统中一个非常关键的功能,在许多应用中都需要使用到时间,比如时钟、定时器、计时等等。 首先需要连接WiFi模块获取网络连接。这可以通过AT指令或者通过HTTP协议实现。常见的AT指令有AT+CWMODE,用来设置WiFi模式,AT+CWJAP用来加入WiFi网络。当连接到网络后,可以使用NTP协议获取网络时间。 NTP协议是一种时间同步协议,它可以通过网络协议将计算机时钟同步到一个准确定时。NTP协议的服务器可以通过GPS信号或者基于原子钟的时间源来提高时间同步的准确性。在获取网络时间之前,需要通过DNS服务解析NTP服务器的IP地址。 在stm32esp8266中,可以使用sockets套接字建立网络连接,并向NTP服务器发送指令以获取网络时间。比如使用setsockopt函数设置socket连接选项,使用connect函数连接服务器,使用send和recv函数发送和接收数据。 获取网络时间后,需要处理时间格式,使其符合系统的时间格式。通常的做法是将网络时间转换为UTC毫秒时间戳,然后再转换为其他格式。可以通过第三方库或者自行实现来完成时间格式转换。 最后,将获取时间存储在系统的时间寄存器中,以便在使用时能够直接读取。在stm32esp8266中,可以利用RTC实现时间存储和时间解析功能。 综上,获取网络时间在嵌入式系统中非常重要,在stm32esp8266中也需要通过多方面的技术手段来实现。需要注意的是,在网络不稳定的情况下,可能会造成获取时间不准确。因此,在应用中需要考虑到这种情况,并进行相应的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值