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

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


Step 1:最小系统启动

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

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

ESP8266-01


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=1//将模块设置为Station模式,正常返回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
AT+CWMODE=1					//设置为客户端模式
AT+CWMODE?					//查询当前模式
AT+CWJAP="OpenWrt","password"		//连接wifi
AT+RST						//重启
AT+CIFSR					//获取IP
AT+CIPMODE=1 				//设置模块传输模式
AT+CIPSTART="TCP","192.168.1.247",1234		//连接到你自己的服务器
AT+CIPSEND 					//进入透传模式

这里写图片描述

这里写图片描述

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模式,要不然就在接收其他节点的数据的时候用有线的方式,这样就不用来回切换了,不知道各路大神是怎么处理这个问题的,欢迎留言讨论

  • 12
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
# esp8266ATPackage stm32通过wifi方式进行数据通信时通常采用ESP8266模块,最常用的方法就是通过AT指令与esp模块进行交互,本项目对常用的AT指令进行封装成**协议**,使用户调用简单的函数即可实现热点连接、服务器连接、开启热点、创建服务器等功能。并提供了两种数据发送模式,用户可根据项目需要选择101协议数据封装发送或无数据封装发送。数据解析也可以根据项目需要设置解析或不解析。协议具有很强的可扩展性,能够根据自己的项目需求对AT指令进行裁剪和扩展。 * 版本功能: * 1.客户端模式下自动连接WiFi热点 * 2.客户端模式下自动连接服务器 * 3.服务器模式下自动创建wifi热点 * 4.服务器模式下自动开启TCP服务器 * 5.服务器模式下输出TCP服务器的IP地址及端口号,DISPLAY_AT_INFO为1的情况下 * 6.可实时打开和关闭透传模式 * 7.可实时更改接收数据的解析模式(需要手动更改dataAnalyzeFlag的值) * 8.提供两种数据封装模式,101协议格式和无封装格式,分别通过调用sendData101、sendData函数实现 * 9.想起来了再写 * 发送模式及其性能(101协议封装为模式1,无封装为模式2): * 在非透传模式下,模式1最快300ms/次、模式2最快200ms/次 * 在透传模式下,模式1与模式2都能达到30ms/次,实测50ms/次时串口能够正常回显数据,小于50ms时可能会出错 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
STM32封装ESP8266一键配置函数,能够实现AP模式和STA模式的切换,以及服务器客户端的创建。 首先,AP模式是指ESP8266作为一个热点,其他设备可以连接到其创建的网络中。而STA模式是指ESP8266作为一个客户端,连接到其他无线网络中。 在一键配置函数中,可以通过调用相应的API函数,将ESP8266设置为AP模式或STA模式。AP模式下,可以设置热点的名称和密码,其他设备可以通过搜索到该热点并输入密码来连接。STA模式下,可以设置要连接的无线网络的名称和密码,并进行连接。 在服务器客户端的创建方面,一键配置函数可以调用相应的API函数,实现ESP8266作为服务器客户端的功能。服务器模式下,可以指定一个本地端口,并监听该端口,等待客户端的连接。一旦客户端连接成功,可以接收和处理客户端发送过来的数据。客户端模式下,可以指定要连接的服务器的IP地址和端口,一旦连接成功,就可以向服务器发送数据。 在实现AP模式和STA模式的切换、服务器客户端的创建时,需要注意在切换模式时,首先要关闭当前的模式,再打开目标模式。在创建服务器客户端时,需要确保网络设置正确,并进行错误处理,以确保连接和通信的可靠性。 总之,通过封装ESP8266一键配置函数,可以方便地控制ESP8266的工作模式和网络连接,实现AP模式和STA模式的切换,以及服务器客户端的创建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山猫Show

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值