网上很多配置ESP8266的教程,但是遇到无法退出透传模式的情况却没有找得到答案,不知道是大家都没遇到还是怎么样,以下是我的解决方法:实测有效
先发送“+++”(三个加号)(如果是在串口调试助手调试,取消勾选发送新行),接着再发送一条空白信息,此时勾选上发送新行功能(即“\r\n”换行符),此时模块就会返回“ERROR”意味着已经退出透传模式,可以发送AT指令测试一下。意思是退出透传和普通的配置指令不一样,在核心指令和“\r\n”之间需要一点时间延迟!!!
顺便贴一个:
通过AT指令配置ESP8266进入客户端模式的流程
ESP8266做客户端
-
设置ESP8266的工作模式
AT+CWMODE=1 -
复位重启启用STA模式
AT+RST -
查询附近可连接WiFi
AT+CWLAP -
连接 WiFi
AT+CWJAP=“WIFI名字”,“WIFI密码” -
查询是否 连接上WiFi
AT+CWJAP? -
透传模式的选择
AT+CIPMODE=0 //非透传模式
AT+CIPMODE=1 //开启透传模式 -
单连接模式,因为此时ESP8266作为客户端,所以只能是单连接模式
AT+CIPMUX=0 -
连接串口网络调试助手创建的TCP服务器,具体IP地址,端口号从调试助手中可以查看
AT+CIPSTART=“连接方式”,“服务器 IP地址”,端口号
例:AT+CIPSTART=“TCP/UDP”,“192.168.1.141”,8080 -
ESP8266发送数据到服务器(手机 或者 电脑)
AT+CIPSEND //透传模式下,不用发送具体字长,发完后模块会返回字符">",就可以输入对应网址获取信息,
如:GET https://api.seniverse.com/v3/weather/now.json?key=SyCd566Zujct_RkUy&location=guangzhou&language=zh-Hans&unit=cAT+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.等待接收数据,并解析