作者:李大闯 2017/08/26 18:01
在实际工作中,原本是使用nrf51822作为核心mcu,但是由于大批量数据传输的需要,所以外挂了一个ESP8266的模块,用于批量数据传输。本篇文章总结了在使用nrf51822单片机驱动ESP8266模块时遇到的一些问题及解决方法,在此记录备忘。
2016.5.5
ESP8266模块工作于STA模式还是AP模式?
看一下AP模式和STA模式的定义和区别
AP模式: Access Point,提供无线接入服务,允许其它无线设备接入,提供数据访问,一般的无线路由/网桥工作在该模式下。AP和AP之间允许相互连接
Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP, 一般无线网卡即工作在该模式。
Sta模式: Station, 类似于无线终端,sta本身并不接受无线的接入,它可以连接到AP, 一般无线网卡即工作在该模式。
根据以上的意思,应该让模块工作在AP模式,这样的话手机就可以连接到模块的wifi进而建立连接并传输数据。
手机和模块之间使用TCP连接还是UDP连接?
看一下TCP连接和UDP连接的定义和区别
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;
4.流模式与数据报模式 ;
5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
考虑到数据传输准确性和可靠性的问题,使用TCP传输
逐条发送以下指令:
AT+CWMODE=3 //设置ESP8266模块处于AP兼Station模式。这时可以用手机搜索到8266模块的wifi,连接上之后打开手机上安装的有人网络助手
//创建TCP服务器。手机被分配的ip地址为192.168.4.2,选择端口号为8899
AT+CIPMUX=0 //使用单连接。透传模式下只能使用单连接。但是模块处于服务器模式时,必须使用多连接,所以说当模块设置为服务器时,不能使用透
//传。也即是说,如果要使用透传,则ESP8266必须扮演客户端的角色。
AT+CIPSTART="TCP","192.168.4.2",8899 //创建TCP连接,服务器的ip地址为192.168.4.2,端口号为8899
AT+CIPMODE=1 //设置启用透传模式
AT+CIPSEND //进入透传。该指令后将进入透传模式,此后ESP8266将不能识别串口AT指令,所有串串口串接到的字符都将将透传到手机。
注:在发送这些指令时,一定要在串口调试软件里面选择“发送新行”,或者手动加一个回车。
另外,在实际的使用过程中发现,有些指令的设置结果在ESP8266模块掉电之后仍会保存(AT+CWMODE=3和AT+CIPMUX=0),所以只在51822上电时发这两条指令。而另外三条指令只在用到时才进行配置。
ESP8266的其它常用指令