您的位置:首页 > 其它

[ESP8266]--开启服务器模式和客户端模式

2016-11-08 20:27 323 查看
这两天突然心血来潮想搞下ESP8266,正好之前用蓝牙传输数据的方式宣告失败,直接换WIFI,那么问题来了,这玩意怎么开始呢?下面就让我们一步一步的开启Wifi数据传输之旅。

Step 1:最小系统启动

  这个应该算是比较基础的,若想从FLASH启动进入AT系统,只需中间四个脚接VCC高电平即可,其中GPIO0为高电平代表从FLASH启动,GPIO0为低电平代表进入系统升级状态,此时可以经过串口升级内部固件。

GPIO16(RST)可做外部硬件复位使用。



Step 2:开启服务器(Server)模式(可以让其他客户端连接)

AT+CWMODE=3 //将模块设置为Station+AP模式,提供路由模式,正常返回OK

指令:AT+CWMODE= mode

说明:mode:1-Station模式,2-AP模式,3-AP兼Station模式

响应:OK

AT+RST //重启模块,正常返回ready,(WIFi GOT IP)

指令:AT+RST

响应:OK

AT+CIPMUX=1 //开启多连接模式,正常返回OK

指令:AT+CIPMUX=mode

说明:mode:0-单路连接模式,1-多路连接模式

响应:OK

AT+CIPSERVER=1,8080//创建服务器

指令:AT+CIPSERVER=mode[,port]

说明:mode:0-关闭server模式,1-开启server模式

   port:端口号,缺省值为333

响应:OK

说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启

   (2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。

AT+CIFSR //查询IP地址

指令:AT+CIFSR

说明:查看本模块的IP地址

 注意:AP模式下无效!会造成死机现象!

响应:+CIFSR:APIP,”192.168.4.1”

   +CIFSR:APMAC,”62:01:94:0f:15:37”

   +CIFSR:STAIP,”192.168.1.133”

   +CIFSR:STAMAC,”60:01:94:0f:15:37”

说明:+CIFSR:APIP,AP的IP(其实我也不是太懂这个AP到底是个什么鬼)

   +CIFSR:APMAC,AP的MAC地址

   +CIFSR:STAIP: 本模块IP地址

   +CIFSR:STAMAC: 本模块MAC地址

现在可以接入设备了,比如我现在介入了两个设备:每接入一个设备就会有一个提示:

0,CONNECT

1,CONNECT

前面的数字就是设备的ID号,给设备发送信息的时候会用到,如果记不住这个ID号了,可以用下面的指令查询:

AT+CIPSTATUS //查看当前建立的连接

指令:AT+CIPSTATUS

响应:STATUS: states

   + CIPSTATUS:id,type,addr,port,type

   OK

说明:id:连接的id号0-4

   type:字符串参数,类型TCP或UDP

   addr:字符串参数,IP地址

   port:端口号

   type: 0-本模块做client的连接,1-本模块做server的连接

AT+CIPSEND=1,6 //向某个连接发送数据

指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=length

   2)多路连接时(+CIPMUX=1),指令为:AT+CIPSEND= id,length

响应:收到此命令后先换行返回”>”,然后开始接收串口数据,当数据长度满length时发送数据。

   如果未建立连接或连接被断开,返回ERROR

   如果数据发送成功,返回 SEND OK

说明:id:需要用于传输连接的id号

   length:数字参数,表明发送数据的长度,最大长度为2048

   

Step 3:开启客户端(Client)模式(连接服务器)

AT+CWMODE=3//将模块设置为Station+AP模式,提供路由模式,正常返回OK(其实是接着上边来的)

指令:AT+CWMODE= mode

说明:mode:1-Station模式,2-AP模式,3-AP兼Station模式

响应:OK

AT+RST //重启模块,正常返回ready,(WIFi GOT IP)

指令:AT+RST

响应:OK

AT+CIPSERVER=0 //关闭server服务 (如果没有开启server服务,可免除此步骤)

指令:AT+CIPSERVER=mode[,port]

说明:mode:0-关闭server模式,1-开启server模式

   port:端口号,缺省值为333

响应:OK

说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启

   (2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。

AT+CIPMUX=1//开启多连接模式

指令:AT+CIPMUX=mode

说明:mode:0-单路连接模式,1-多路连接模式

响应:OK

AT+CIPSTART=2,”TCP”,”192.168.1.122”,8080//建立TCP连接

指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSTART= type,addr,port

   2)多路连接时(+CIPMUX=1),指令为:AT+CIPSTART=id,type,addr,port

响应:如果格式正确且连接成功,返回 OK,否则返回 ERROR

   如果连接已经存在,返回 ALREAY CONNECT

说明:id:0-4,连接的id号

   type:字符串参数,表明连接类型,”TCP”-建立tcp连接,”UDP”-建立UDP连接

   addr:字符串参数,远程服务器IP地址

   port:远程服务器端口号

此时使用网络工具在本机建立一个服务器,就可以连接上,实现收发功能





AT+CIPSEND=2,8//向服务器发送数据

指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=length

   2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= id,length

响应:收到此命令后先换行返回”>”,然后开始接收串口数据

   当数据长度满length时发送数据。

   如果未建立连接或连接被断开,返回ERROR

   如果数据发送成功,返回 SEND OK

说明:id:需要用于传输连接的id号

   length:数字参数,表明发送数据的长度,最大长度为2048

  就在我快写完了的时候我惊奇的发现貌似AP模式和STA模式都可以建立Server或者Client,当时不知道为什么这么设计。

  既然你已经看到这里了,我就要告诉你,你刚才做的其实就是socket编程,是不是觉得很神奇,我也是想了好长时间突然想明白的,还有就是TCP和UDP的区别,尤其是和上位机通信的时候一定要注意。

  

今天在瞎鼓捣的时候无意中想起一个问题,是这样的:

  如果现在需要用wifi接收多个节点的数据,然后发送到上位机上,有没有什么好办法呢? 想了半天我觉得这个可能就是AP和STA的作用吧,当WIFI需要接收其他节点的数据的时候,那么他应该被设置成AP模式,而当他要发给别人时就应该是STA模式,要不然就在接收其他节点的数据的时候用有线的方式,这样就不用来回切换了,不知道各路大神是怎么处理这个问题的,欢迎留言讨论
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ESP8266