解决ESP8266无法退出透传问题以及获取网络时间以及天气方法

发布时间:2023年12月20日

网上很多配置ESP8266的教程,但是遇到无法退出透传模式的情况却没有找得到答案,不知道是大家都没遇到还是怎么样,以下是我的解决方法:实测有效

先发送“+++”(三个加号)(如果是在串口调试助手调试,取消勾选发送新行),接着再发送一条空白信息,此时勾选上发送新行功能(即“\r\n”换行符),此时模块就会返回“ERROR”意味着已经退出透传模式,可以发送AT指令测试一下。意思是退出透传和普通的配置指令不一样,在核心指令和“\r\n”之间需要一点时间延迟!!!

顺便贴一个:

通过AT指令配置ESP8266进入客户端模式的流程

ESP8266做客户端
  1. 设置ESP8266的工作模式
    AT+CWMODE=1

  2. 复位重启启用STA模式
    AT+RST

  3. 查询附近可连接WiFi
    AT+CWLAP

  4. 连接 WiFi
    AT+CWJAP=“WIFI名字”,“WIFI密码”

  5. 查询是否 连接上WiFi
    AT+CWJAP?

  6. 透传模式的选择
    AT+CIPMODE=0 //非透传模式
    AT+CIPMODE=1 //开启透传模式

  7. 单连接模式,因为此时ESP8266作为客户端,所以只能是单连接模式
    AT+CIPMUX=0

  8. 连接串口网络调试助手创建的TCP服务器,具体IP地址,端口号从调试助手中可以查看
    AT+CIPSTART=“连接方式”,“服务器 IP地址”,端口号
    例:AT+CIPSTART=“TCP/UDP”,“192.168.1.141”,8080

  9. ESP8266发送数据到服务器(手机 或者 电脑)
    AT+CIPSEND //透传模式下,不用发送具体字长,发完后模块会返回字符">",就可以输入对应网址获取信息,
    如:GET https://api.seniverse.com/v3/weather/now.json?key=SyCd566Zujct_RkUy&location=guangzhou&language=zh-Hans&unit=c

    AT+CIPSEND=n //非透传模式下,要求发送具体字长。如果实际发送的字节小于n则信息无法发出,如果大于n则截取 n个字节发送,其余丢弃,并在下一次发送中显示丢弃的数据

获取网络时间

如前操作,将:AT+CIPSTART=“TCP”,“192.168.1.141”,8080
修改为需要链接的IP地址,其中通过TCP链接的端口固定为80
这里记录一个比较好用的URL:
AT+CIPSTART=“TCP”,“www.beijing-time.org”,80
链接上IP地址后,进入透传模式:
AT+CIPSEND
返回“>”后,任意发送一个信息(带上\r\n),就会返回一堆带有时间的数据。
如发送“1”
在这里插入图片描述
对于较老版本的固件,不支持该AT指令,只能通过自己链接网络服务器来获取当前时间。具体需要的AT指令如下:

    1.建立TCP链接

             AT+CIPSTART="TCP","www.beijing-time.org",80

    2.打开传透模式

            AT+CIPSEND

    3.收到‘>’符号后,随便发送个数据

    4.等待接收数据

    接收的数据可以先用网络调试助手来测试,如下,可以看大,数据中包含了当前的日期和时间信息,我们可以先找到字符串中“Data”的位置,再解析后面的数据。数据格式固定,直接按照字符位置解析就行。

    需要注意的是,获取的这个时间是格林威治时间,与北京时间相差8个小时。

获取心知天气的信息

1.注册账号

    2.获取私钥

    3.连接服务器

            AT+CIPSTART="TCP”,” api.seniverse.com”,80

    4..打开传透模式

        AT+CIPSEND

    5..收到‘>’符号后,发送GET请求

GEThttps://api.seniverse.com/v3/weather/daily.json?key=your_key&location=ip&language=zh-Hans&unit=c&start=0&days=3

 6.等待接收数据,并解析
文章来源:https://blog.csdn.net/weixin_52477295/article/details/135096983
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。