0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

ESP8266的两种工作模式下的数据传输

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-07-27 09:08 次阅读

ESP8266支持3种模式:Station模式、AP模式和Station+AP混合模式。关于这三种模式的区别可以类比我们的手机,当手机连接无线网时,此时手机为Station模式,当手机打开移动热点时,此时手机为AP模式。简单的说就是Station模式就是作为终端,AP模式就是作为路由器。而Station+AP混合模式,就和路由器的无线桥接功能是一样的,既可以连接别的无线网,同时也可以自己作为路由器。

本文分享ESP8266的两种工作模式下的数据传输:Station模式作为TCP客户端、AP模式作为TCP服务器,分别和网络调试助手进行通讯的AT指令配置流程。

AT指令可以由MCU的串口来完成,这样就可以实现两块ESP8266之间进行通讯,电脑和ESP8266的无线控制,手机和ESP8266的无线控制等。

955f1e46-0d46-11ed-ba43-dac502259ad0.png

ESP8266作为TCP客户端,电脑作为TCP服务器

ESP8266模块配置为Station模式连接WiFi,电脑也连接同一个WiFi,电脑使用网络调试助手建立一个TCP服务器,指定服务器地址和端口号。

ESP8266作为TCP客户端,和电脑上的网络调试助手进行通讯,或者直接透传。实现的效果是模块发送的数据,电脑可以接收到,电脑发送的数据,模块可以接收到。

1.模块配置为Station模式:AT+CWMODE=1
2.配置WiFi信息按照信号强度排序:AT+CWLAPOPT=1,127
3.扫描附近的WiFi信息:AT+CWLAP

//配置当执行AT+CWLAP指令时,WiFi信息按照信号强度排序
AT+CWLAPOPT=1,15
//1表示按照信号强度排序,15表示WiFi信息只显示加密方式,WiFi名称,信号强度,MAC地址

//扫描附近的WiFi信息
AT+CWLAP
+CWLAP:([加密方式],[WiFi名称],[RSSI信号强度],[MAC地址])
+CWLAP:(4,"Tenda_A3AA00",-76,"c835aa:01")
+CWLAP:(4,"Tenda_A3AA00Sander",-81,"e432e3:c4")
+CWLAP:(3,"EZVIZ_D38296744",-81,"5095e0:16")
+CWLAP:(4,"TP-LINK_4723",-84,"ccfb47:23")

4.连接指定WiFi:AT+CWJAP="Tenda_A3AA00","password123"

//连接指定AP
AT+CWJAP="Tenda_A3AA00","password123"

//如果WiFi名称重复,需要指定MAC地址来确定要连接的WiFi
AT+CWJAP="Tenda_A3AA00","password123","c835aa:01"

//如果WiFi名称或密码中含有特殊字符,前面要添加转义符号
如,目标WiFi名称为:ab,c,密码为:0123456789",则指令如下:
AT+CWJAP="ab\,c","0123456789""

//查询已经连接的WiFi信息
AT+CWJAP?

//断开当前WiFi连接
AT+CWQAP

5.设置单连接模式:AT+CIPMUX=0

//如果之前使用AP模式开启过TCP服务器,要先关闭TCP服务器
AT+CIPSERVER=0

//设置单连接模式
AT+CIPMUX=0

6.电脑和模块连接同一WiFi,电脑启动网络调试助手,并建立TCP服务器。

957aa828-0d46-11ed-ba43-dac502259ad0.jpg

7.模块作为TCP客户端,连接电脑上创建的TCP服务器

//主机地址和端口要和电脑上的TCP服务器保持一致,
AT+CIPSTART="TCP","192.168.43.140",6000
CONNECT

OK

8.如果连接成功,网络调试助手会显示有一个客户端上线,并显示了客户端的IP为192.168.1.105

95839f5a-0d46-11ed-ba43-dac502259ad0.jpg

9.查询当前TCP服务器分配的IP地址:AT+CIPSTATUS

AT+CIPSTATUS

STATUS:3//3表示已经建立TCP传输
+CIPSTATUS:0,"TCP","192.168.1.106",6000,26441,0//本地IP地址

OK

10.此时网络调试助手(TCP服务器)发送的信息,WiFi模块(TCP客户端)已经可以实时收到了。

+IPD,[数据长度]:[数据类型]
+IPD,30:HelloWorld——ByTCPServer
+IPD,28:MyBlog:www.wangchaochao.top
+IPD,16:MyWeChat:mcu149
959c9276-0d46-11ed-ba43-dac502259ad0.jpg11.客户端发送数据到服务器。虽然服务器发送的数据客户端可以收到,但此时模块还处于AT模式,不能发送数据到服务器。
//设置本次要发送的字节数
AT+CIPSEND=4
OK
>

//输入要发送的数据,仅前四个字节数据被发出,其他数据无效。
Recv4bytes
SENDOK
95a74cac-0d46-11ed-ba43-dac502259ad0.jpg

以上命令只能启动一次数据发送,如果需要数据实时收发,就需要配置成透传模式。

12.开启透传模式。

//开启透传模式,仅支持TCP单连接和UDP固定通信对端的情况
AT+CIPMODE=1

//开始透传
AT+CIPSEND
>
//此时发送的数据会直接给TCP服务器
95bc099e-0d46-11ed-ba43-dac502259ad0.jpg

13.退出透传模式。

//输入不带回车换行的三个加号:+++,退出透传模式,返回到普通AT指令模式。
+++
//发送+++退出透传时,请至少间隔1秒再发下⼀条AT指令。
AT

OK

14.断开TCP连接。上面虽然退出了透传模式,此时还保持着TCP连接,服务器发送的数据可以实时收到。如果要断开TCP连接可以使用:AT+CIPCLOSE,可以看到服务器也显示客户端已经离线。

95c6ea6c-0d46-11ed-ba43-dac502259ad0.jpg

ESP8266作为TCP服务器,电脑作为TCP客户端

ESP8266配置成AP模式,并开启TCP服务器,电脑连接ESP8266的WiFi,作为TCP客户端,两者之间数据传输。

1.模块配置成AP模式:AT+CWMODE=2
2.设置无线网名称和密码

//设置无线网名称和密码
AT+CWSAP="ESP8266","12345678",5,3
//3表示WPA2_PSK加密方式

//查询无线网信息
AT+CWSAP?

+CWSAP:[WiFi名称],[WiFi密码],[通道数],[加密方式],[最大支持连接数],[广播]
+CWSAP:"ESP8266","12345678",5,3,4,0

3.设置无线网IP地址、网关、子网掩码

//设置IP、网关、子网掩码
AT+CIPAP="192.168.5.1","192.168.5.1","255.255.255.0"

4.建立TCP服务器,设置端口号

//使用多连接模式
AT+CIPMUX=1
OK

//指定TCP服务器端口为1001
AT+CIPSERVER=1,1001
创建TCP服务器之后,会自动启动TCP服务监听,当有TCP客户端连接时,会有CONNECT提示

0,CONNECT
95e3989c-0d46-11ed-ba43-dac502259ad0.jpg

5.网络调试助手配置成客户端模式,连接ESP8266创建的TCP服务器,主机地址和端口要和之前配置的保持一致。

//ESP8266查询当前连接的客户端
AT+CWLIF

[IP地址],[MAC地址]
192.168.5.2,b8:86:87:4e:26:af

OK

6.网络调试助手(TCP客户端)发送消息给ESP8266(TCP服务器),因为ESP8266已经开启监听服务,数据会实时显示。

95ea9b56-0d46-11ed-ba43-dac502259ad0.jpg

7.ESP8266(TCP服务器)发送消息给网络调试助手(TCP客户端)。

//ESP8266作为服务器,要往客户端发数据,需要指定客户端编号和字节数
//往0号客户端发5个字节的数据
AT+CIPSEND=0,5
OK
>

//输入要发送的数据,仅前五个字节数据被发出,其他数据无效。
Recv5bytes
SENDOK
95f62b56-0d46-11ed-ba43-dac502259ad0.jpg
审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据传输
    +关注

    关注

    9

    文章

    1522

    浏览量

    63560
  • 服务器
    +关注

    关注

    12

    文章

    8106

    浏览量

    82485
  • AP
    AP
    +关注

    关注

    0

    文章

    103

    浏览量

    48430

原文标题:ESP8266两种工作模式数据传输测试

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ESP8266-01烧写机智云GAgent使用哪种SPI模式

    ESP8266-01烧写机智云GAgent使用哪种SPI模式 官网有DIO和QIO两种
    发表于 11-10 08:06

    nodemcu和esp8266是什么关系?

    nodemcu和esp8266是什么关系 nodemcu和esp8266是什么关系?通俗理解就是nodemcu是一个开发板,基于esp8266的开发板。 目前市面上搭载有ESP8266
    的头像 发表于 10-20 14:53 2253次阅读
    nodemcu和<b class='flag-5'>esp8266</b>是什么关系?

    如何让WLED在ESP8266工作并且闪烁效果很好?

    将其他东西传输到板上,我可以从板上看到一个 wifi 网络。我尝试了两种不同的电路板,一ESP-12-F,另一看起来像这样但有 4
    发表于 06-06 08:46

    在SoftAP模式使用ESP8266时遇到问题求解

    我在 SoftAP 模式使用 ESP8266 时遇到问题。 我想在 AP 大小上接收 UDP 数据包,并在站大小上发送其他 UDP 数据
    发表于 06-02 14:09

    ESP8266连接到了Arduino Mega,ESP8266蓝色LED不亮无反应怎么解决?

    亮起的情况运行。我不确定这是否是正确的方法?或者它有什么问题吗? 上述两种情况(直接接arduino mega的3.3V或接外接电源)仍然会导致ESP8266无法接收或发送消息,并且有发送时蓝色
    发表于 06-02 07:17

    ESP8266初次如何实现无线通信(基于电脑与ESP8266)

    一.需要的软件及硬件 1.软件 2.硬件 二.ESP8266的使用 .ESP8266的介绍 2.ESP8266进行初始AT指令的配置步骤 三.所用软件安装分享 ESP8266
    发表于 05-30 09:53 14次下载
    <b class='flag-5'>ESP8266</b>初次如何实现无线通信(基于电脑与<b class='flag-5'>ESP8266</b>)

    调试刷ESP8266-12S时“连接失败”怎么处理?

    USB 接口完成的。我使用手动滑动开关将连接的 ESP8266 置于编程模式。 最近我有块板子,我不能刷。我得到了可怕的“正在连接.............._____.......”缺乏进展
    发表于 05-25 08:49

    如何使用ESP8266收集数据到PC?

    UART 将这些数据发送到 ESP。我需要使用 WIFI 从 ESP 将所有这些数据传输到我的 PC。 谁能建议如何开始?或者有没有这方面的示例项目?有可用的
    发表于 05-24 08:18

    CC2530采用ESP8266与手机APP通信

    项目概述: 项目实现通过CC2530控制ESP8266将其配置成AP+TCP服务器模式,并通过手机APP连接到TCP服务器并完成数据传输ESP8266将作为一个热点(AP)来
    的头像 发表于 05-23 09:15 2836次阅读

    如何测量ESP8266数据传输速度?

    对于我的项目,我通过 AT 命令配置了个 NodeMCU(一个作为 AP,另一个作为客户端)。我可以使用 AT+CIPSEND 命令从 AP 向客户端传输 UDP 数据包。数据类似于
    发表于 05-22 06:38

    ESP8266作为无线终端连接网络

    ESP8266既可以作为一个无线终端(STA模式),像手机一样连接路由器,也可以作为热点(AP模式),像路由器一样让手机、电脑来连接。本篇介绍ESP8266作为无线终端连接网络。
    的头像 发表于 05-19 14:38 1360次阅读
    <b class='flag-5'>ESP8266</b>作为无线终端连接网络

    如何使用ESP8266ESP NOW的无线传感器网络?

    个控制器联网! 在大约 1 秒内,控制器读取传感器,从前面的控制器接收数据并将数据传输到后面的控制器。之后它会进入深度睡眠模式 30 秒。 在链的末端,我使用
    发表于 05-19 08:20

    如何通过本地网络连接到esp8266

    我有一个 ESP8266 和安卓手机,它们分别连接到我的 wifi 网络。我想通过该 wifi 网络在我的安卓手机和 ESP8266 之间传输数据(不使用代理,也不在 AP
    发表于 05-16 08:25

    如何同时在AP和station模式运行ESP8266

    的客户端更改 WI-FI SSID 和密码。用户可以随时从网络服务器客户端更改 ID 和密码。 我决定在 AP 和站模式下一起使用 ESP8266。这样网络服务器和 HTTP 就可以一起工作。 这
    发表于 05-15 08:37

    如何将额外数据从lwip传输ESP8266WiFiSTA?

    ESP8266WiFiSTA.cpp 和 WiFiClient.cpp 中,但有两种不同的获取 IP 的方法,一使用 wifi_get_ip_info() 从结构中提取,另一从函
    发表于 05-08 06:08