打印

【转】关于ESP8266使用总结

[复制链接]
1201|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一代掌门|  楼主 | 2017-1-12 12:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

2016/1/20

首先,该模块使用了AT指令进行操作,我们要做的,就是将需要的AT指令,以字符串的形式发给模块,即可实现相应的功能。

1.      wifi模块ESP8266的默认波特率是115200,但是单片机不能达到那么快的传输速率,只能使用4800bps,那么设置的时候,必不可少的要先用转串口调试下载器(速度比较快,而且wifi模块默认115200bps,用单片机不能正确更改波特率,转串口工具可以),设置指令,AT+UART=4800,8,1,0,0,详细见手册,可以灵活设置。

2.      设置完成以后,wifi模块在掉电以后还是会保持4800bps,下次使用,不再需要修改。

3.      在使用单片机对wifi模块进行操作的时候,首先串口的波特率要设为4800,也就是TH1的初值必须是0xfa,这样再晶振为11.0592MHz的时候,可以准确的得到4800bps。

4.      然后,先不插wifi模块的TX,DX到单片机的P30和P31口,因为下载程序的时候需要使用到这两个口,不能被干扰。下载程序完成以后,先断电,再把wifi模块的两个引脚接上,注意,模块和单片机上的TX,DX是交叉接的,这样才能正确工作,不像最小系统板下载程序的时候是对应接的。

5.      最后再把单片机上电。还有一个注意的地方,就是,因为4800bps的话,传输速率比较慢,所以,在程序中每发送一条AT指令,必须要加以一定的延时,起码500ms我认为,这样保证模块的初始化时正确的。

6.      打开手机,连上对应的wifi,再输入对应的IP地址和端口号,以及密码,就可以传输数据了,但是让wifi模块把单片机上的数据传输到手机上还没有完成,有待增加此方法。

7.      经过一下午的调试,找到如何解决问题了,原来问题在于我的操作问题。每次创建了wifi,要先连上wifi才能够让wifi传数据给手机,手机没自动连接!

2016/1/21

1.      注意:ESP8266作为TCP Server时,存在超时机制,一段时间没有数据往来,就把client踢掉,所以程序中要有保持连接的操作,或者可以通过设置AT指令,设置不能踢掉客户端模式,但是不建议这样做。

2.      在设置模式等都完成以后,用手机可以连上wifi模块,可以向wifi模块发送数据。但是想要把wifi模块上的数据回过来,需要通过客户的连接号才能辨清是哪一个client发送过来请求,例如:0,CONNECT,然后再把数据根据连接号把数据发送给该client,这样保证传输数据的正确性。接收到数据的格式:+IPD,0,3:ddf;+IPD,0,7:gfsghhf,这样的话,需要通过字符串的辨析,才能知道哪个客户端连接号发来数据了,例如上面举例,是客户端连接号为0,发送过来数据了。

3.      使用AT指令时,必须是以字符串的形式传输到wifi模块中,所以,需要用到uart_sendstr,但是,有的指令是字符串中包含了字符串,编译的时候不能正确识别,所以需要字符串转UTF-8工具(ESP8266使用的是UTF-8标准),注意不能删掉字符串中的空,逗号,句号换行符什么的,如图

4.      2016/1/23 今天发现,第3条可以有更好的解决方法,而且很简单,只是用的比较少,我也没想到,字符串中的字符串使用\”….\”表示即可!(需要好好补补C语言了)

5.      51单片机程序中,需要对字符串进行很多操作,例如:AT指令和参数的拼接(这样比较灵活,参数最好也是字符串形式,减少工作量),截取wifi模块发送给单片机的字符串提示信息等等,所以我们需要做的是对字符串进行正确操作,每一个字符串函数都要测试功能,确保正确才能加入使用。

6.      刚刚新买的wifi模块,要想在51单片机上使用,就要将波特率设的比较低,那么在使用AT+UART=4800,8,1,0,0命令的时候,一旦将最后第二个数据改了,那么串口调试软件上也要相应的更改校验方式,不然,下面的命令全部无用。

7.      关于wifi模块的IP地址:wifi模块的IP也是可以设置的,如AT+CIPAP="192.168.5.1" ,所以还是要对wifi模块进行读取IP的操作,以防被篡改IP地址。在显示能够连接时,必须要显示正确的IP地址,所以我们需要在程序一开始获取IP地址。

8.      关于多连接问题:将先后连接的客户端,根据连接的先后顺序,手动给它们排出优先级序列,和客户连接号无关的序列,这样就能保持一个多连接的有优先级的队列,控制小车。当然,在使用相应优先级的时候,必须同时采用该优先级对应的客户连接号,才能准确的与某一个客户端收发信息。(有待编写程序时完善)

9.      关于wifi模块回显字符串截取问题:由于回显的字符串是很不稳定的,就是有时候某一句后面带有\r\n,有时候又没有,而且串口也不会发送\0到SBUF中,那么,字符串的截取就比较困难了,或者说是笨方法。只能将\n作为字符串的读取辨析的开始,也就是一旦读取到了\n,设置标志位,表示下一个字符开始,就要接收,拼接并且辨析。命令的话,只读取回显中的某一位比较特别的位作为命令。


相关帖子

沙发
firstblood| | 2017-1-13 21:48 | 只看该作者
这个方面的应用比较好

使用特权

评论回复
板凳
smilingangel| | 2017-1-15 22:26 | 只看该作者
这个可是wifi设计方面的,给个赞的。

使用特权

评论回复
地板
smilingangel| | 2017-1-15 22:27 | 只看该作者
针对WIFi模块的开发,个人认为还是蛮复杂的,需要考虑很多因素的。

使用特权

评论回复
5
smilingangel| | 2017-1-15 22:28 | 只看该作者
其AT指令的要熟练运用,,很多场景下都要考虑到的。

使用特权

评论回复
6
angerbird| | 2017-1-15 23:32 | 只看该作者
wif模块i跟MCU的通讯还是采用的UART的通讯的

使用特权

评论回复
7
angerbird| | 2017-1-15 23:33 | 只看该作者
弱弱问一句的,,有必要现将AT指令的转化成string类型的发送给MCU么?

使用特权

评论回复
8
comeon201208| | 2017-1-16 00:00 | 只看该作者
这总结的16点的关于wifi模块的设计与应用的,就非常值得赞赏。

使用特权

评论回复
9
comeon201208| | 2017-1-16 00:01 | 只看该作者
这是楼主在设计与应用开发中有的放矢的,,问题的解决也很有效的。

使用特权

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

本版积分规则

69

主题

191

帖子

4

粉丝