当前位置:   article > 正文

ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为服务端)_esp8266作为station

esp8266作为station

专题文章:

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为客户端)
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)
ESP8266模块,SoftAP模式(与电脑搭建TCP通讯,ESP8266为客户端)
ESP8266模块,SoftAP模式(与电脑搭建TCP通讯,ESP8266为服务端)

ESP8266模块,STA模式(与手机搭建TCP通讯,ESP8266为客户端)
ESP8266模块,STA模式(与手机搭建TCP通讯,ESP8266为服务端)   
ESP8266模块,SoftAP模式(与手机搭建TCP通讯,ESP8266为客户端)
ESP8266模块,SoftAP模式(与手机搭建TCP通讯,ESP8266为服务端)

前言

  全文篇幅过于冗长,建议读者可先跳转至第4段落,完成本次实验“配置并且搭建TCP通讯的实验”,达到实验结果后,如有不解疑惑,即可返回查阅前文,是本人学习过程中困惑点,经过学习解答的一点见解,或许能帮助解答你的一点疑惑。
进入正文:



1、效果演示

如图:

电脑 “串口调试助手”,即 服务端 页面:

在这里插入图片描述




手机 客户端 页面:

在这里插入图片描述


ps:(图片中有两个图片,

   第一张图片是 ESP8266 调试窗口,也就是本实验中的 服务端
   第二张照片是手机上搭建的一个 客户端 窗口。

   第一张照片红色方框里的信息是,客户端 发送给 服务端 的信息;
   第二张图片红色方框里的信息是,服务端 发送给 客户端 的信息。
tips:   服务端是,ESP8266
    客户端是, 手机





2、实验目的

  将ESP8266模块配置为STA模式(Station)、 服务端 。搭建TCP通讯,与手机实现通讯功能。





3、指令

3.1 本实验相关指令

配置ESP8266为Station模式时,需要的用到的相关指令:

AT指令响应(也就是返回值)
ATOK
ATE<mode>OK
AT+CWMODE=<mode>OK
AT+CWJAP=<ssid>,<pwd>OK
AT+CIPMUX=<mode>OK
AT+CIPMODE=<mode>OK
AT+CIPSERVER=<mode>[,<port>]OK
AT+CIPSTATUSOK(查询⽹络连接信息)
AT+CIPSEND=<length>>
AT+CIFSROK(查询ESP8266连接WIFI后,分配的IP 地址)
AT+CIPSTA?OK(查询ESP8266连接WIFI后,分配的IP 地址)
AT+CIPCLOSEOK(关闭TCP连接)
AT+CWQAPWIFI DISCONNECT(断开已连接的WIFI热点)
AT+CWLAP返回周围的所以热点
AT+RSTready

ps:只有配置正常没有错误时,才会出现如上表中的响应(即窗口弹出的返回值)




3.2 学习指令的方法

  下面,我将先详细跟大家分享一下,我是如何从芯片数据手册中,了解相关指令作用的,然后读者照着思路去翻阅其余指令即可。表中剩余的相关指令,我会按照以我的理解阐述,因为目的在于能够理解并使用,所以有时不会拘束于专业术语,对此不要过于纠结了,如有出错点,希望读者指出,一同进步!
见下表:
在这里插入图片描述

阅读表中信息可知,有关AT+CWJAP指令有两类,一类是 查询指令 ,另一类是 设置指令 。下面分别对这两种指令进行实验。

按照指令表所给指令,向ESP8266模块发送指令(就是往调试窗口 发送指令):

AT+CWJAP?

观察表中红色方框信息可知,该指令是查询指令,功能是 “ 查询 ESP8266 Station 已连接的 AP 信息。”
(ps:这句话有两点信息需要注意。“ESP8266 Station”表明已经将ESP8266设置为STA模式;“AP”,英文全程是“Access Point”,中文翻译为“接入点”。这里代表的是,为 ESP8266 提供热点连接、接入 的设备,也就是本实验的电脑设备)

响应(即窗口返回的信息)为:+CWJAP:<ssid>,<bssid>,<channel>,<rssi>
              OK

下图是我往调试窗口发送查询指令以及返回的参数值(响应),根据截图对比着表中信息来逐一了解。

在这里插入图片描述

观察发现,当我们发送查询指令时,窗口就如期而至的弹出“一批数据”,并且数据与指令表的格式一一对应,固定的信息“+CWJAP : ”  我就不加以阐述,下面我们来对比着参数,一一了解:
   <ssid>  → 参数① “blue” :该参数表示的是热点的名称例:我手机设置的热点名称是 “blue”。
  <bssid> → 参数② “ea:47:38:cb:4c:82” :该参数表示的是提供热点的设备的MAC地址例:这6个字节便是我手机在该局域网内的MAC地址
<channel> → 参数③ “11” :该参数表示的是网络通道例:此时 ESP8266 与我的电脑设备是通过网络通道11连通起来的
  <rssi> → 参数④ “-42” :能力有限,该参数我也不甚了解,在网上查阅了资料仅供参考:RSSI (英文全程:Received Signal Strength Indicator) 信号强度指示,是用来衡量接收到的无线信号的信号强度的一项指标

  以上便是发送 查询指令 时返回的各个参数代表的含义。注意的一点是,有以上的信息反馈是因为 ESP8266模块 已经连接上了热点。如果 ESP8266模块还没有连接上任何热点时,发送 查询指令 ,返回的信息只有“No AP”。
(ps:  “→”    表示  “对应” 关系)





下面我们按照这种思路来继续解读“ 设置指令 ”

调试窗口 发送(就是向 ESP8266模块发送指令)指令:

AT+CWJAP="blue","12345678"

下图是实践的截图,

在这里插入图片描述


手机热点连接情况:
在这里插入图片描述

查阅表中信息得知,该 设置指令 格式为:AT+CWJAP=<ssid>,<pwd>[,<bssid>] 。功能是设置 ESP8266 Station 需连接的 AP(就是让 ESP8266 连接上热点)。其中参数,
<ssid> 表示目标AP的SSID,也就是设备热点的名称。
例:我手机热点的名称为 “blue”

<pwd> 表示目标AP的接入密码,最⻓为64 字节 ASCII。
例:我手机热点 “blue”设置的密码为“12345678”

[<bssid>] 表示⽬标 AP 的 MAC 地址
(就是提供热点的设备的MAC地址),该参数⼀般⽤于有多个 SSID 相同的 AP 的情况。通俗的讲就是如果你现处的环境除了你的热点名字叫 “A”之外,还有其他的设备提供的热点名字也叫 “A”,这时 ESP8266仅靠热点名字 “A”是不能准确的找到你的设备的。这种情况便需要一个类似“身份证”一样的东西,来帮助 ESP8266 寻找你的设备了。这个“身份证”就是MAC地址了,就像我们人人都有唯一的“身份证”一样,任何设备,也都只会有唯一的一个MAC地址,除自身MAC之外,不会有第二个相同的MAC地址出现,ESP8266就可以根据唯一的MAC地址,识别找到你的设备热点,然后连接接入了。


总结:
  当向 ESP8266发送 设置指令 ,AT+CWJAP=“blue”,"12345678"时,ESP8266 模块便会自发的寻找名称为 “blue”的热点,
如果周围只有唯一的一个热点名称叫 “blue”,那么 ESP8266 便会找到 “blue”这个AP,然后核对密码“12345678”,核实正确则顺利接入热点,连接完成,如果密码错误,则连接失败。

如果周围有多个热点名称叫 “blue”,这时 便会将 ESP8266 给整懵逼了,到底该找谁?然后就一直犹豫思考,不会去一一寻找核实密码,一一尝试接入。这时如果再在指令后面加上指定设备的MAC地址, ESP8266 便会根据唯一的MAC地址找到指定的热点 “blue”进行核实比对,密码正确则连接热点,错误则连接失败。


  好了,以上全部,便是对于芯片手册上提供的“AT + CWJAP”的这一条指令的所有学习、运用过程,其余的指令,可以按照这种思路一一摸索。摸索过程曲折坎坷即便是失败也不要紧,只要动手实践了,你就会对对应的指令有更深刻的理解,运用起来也不会云里雾里,不知所以。嗯…当然!对于新手建议有些参数和内容浅学了解即可,不必过于烦恼,先会用,然后学有余力再去针对对应的知识点补充学习。加油,你一定可以的。










3.3 指令用途和说明

  根据上面一条详细指令的学习,我们需要知道有一个意识,就是设置指令查询指令,在格式上只是个别的不同,如“xxx?”是查询指令。而相同的“xxx=”便是设置指令了。下面我会在兼有这两种指令的旁边标记“☆☆☆”,事后可以自己调试时试试看。

AT

说明:用来确认是否与模块达成通讯的。

用途:无特别功能用处。



ATE

说明:该指令用于是否“回显”自己发送的指令命令。

用途:发送指令“ATE0”,关闭回显。这时发送指令时,串口软件只会显示响应信息,不会显示发送的指令;
发送“ATE1”,开启回显。这时发送指令时,串口软件即会显示响应信息,也会显示发送的指令信息。



AT+CWMODE          ☆☆☆

说明:该指令用于配置查询ESP8266模块的工作模式(共三种模式)。

用途:发送指令“AT+CWMODE=1”,设置模块为Station模式,该模式下ESP8266是需要连接其他热点的设备,本身不是热点;
   发送指令“AT+CWMODE=2”,设置模块为SoftAP模式,该模式下ESP8266模块自身便是一个热点,等待其他设备的接入,注意两种模式的区别(就是连接与被连接的区别);
   发送指令“AT+CWMODE=3”,设置模块为SoftAP+Station模式,该模式下ESP8266模块既可以是Station站点(接入其他热点),也可以是SoftAP接入点(WIFI),本次实验设置ESP8266为模式1,Station站点模式,接入电脑的热点。

tip:“AT+CWMODE?”为查询指令,查询当前ESP8266处于什么模式。


AT+CWJAP         ☆☆☆

说明:用来连接指定的WIFI热点,或用来查询当下连接到的WIFI热点的信息。

用途:具体用途已经在上面详细例子中总结完毕,此处便不多加赘述。



tip:“AT+CWJAP?”为查询指令,查询当前 ESP8266 连接到的WIFI热点的信息。

AT+CIPMUX         ☆☆☆

说明: 建⽴ TCP 、UDP 或 SSL 连接时,设置模块的连接模式(单连接模式多连接模式)。

用途: 发送指令“AT+CIPMUX=0”,设置模块为单连接模式;
    发送指令“AT+CIPMUX=1”,设置模块为多连接模式。

注意:ESP8266不同模式下,设置为什么样的连接模式,可能会对具体的实现功能有影响,比如Station模式下,只能设置为单连接模式,才能连接上WIFI热点,设置为多连接模式时是连接不上热点的(个人理解便是一个模块不能连接多个热点吧,得专一,所以只能是单连接模式)。而SoftAP模式下,可以设置为多连接模式,这时ESP8266作为WIFI热点,可以被多个设备连接。



tip:“AT+CIPMUX?”为查询指令,查询当前ESP8266处于什么连接模式。

AT+CIPSTART

说明: 连接上或被连接WIFI热点后,需要进一步搭建TCP 连接、UDP 传输或 SSL 连接,取得设备之间彼此的信息通讯功能,需要进行的操作指令。

用途单连接模式时,发送指令“AT+CIPSTART=<type>,<remote IP>,<remote port>”从左到右的参数表示TCP、UDP或SSL通讯类型,指定IP地址,指定的远程端口号的服务端或客户端建立联系,响应成功后,便搭建好通讯,即可进行设备之间的通讯了。
   多连接模式时,发送指令“AT+CIPSTART=<link ID>,<type>,<remote IP>,<remote port>”,参数较比单连接模式多了一个<link ID>,也很好理解,因为有多个设备个已经连接上了,那具体要与哪一个设备建立通讯,总得‘指名道姓’吧,要不然怎么与指定的设备建立通讯呢。因此每一台设备的接入都会从0开始给予标记,依次递增。0、1、2…就是设备的‘姓名’,其余的参数与上述的一样。。



AT+CIPMODE         ☆☆☆

说明: 搭建好设备之间的通讯时,设置彼此之间的传输模式,有两种传输模式,分别是普通传输模式透传模式,其中透传模式仅支持TCP和UDP固定通讯对端的情况

用途:当连上客户端(ESP8266为服务端时)或服务端(ESP8266为客户端时),搭建好通讯时,需要设置设备之间的数据传输模式,发送指令“AT+CIPMODE=0”设置数据传输模式为普通传输模式;发送指令“AT+CIPMODE=1”设置数据传输模式为透传模式。这两种传输模式有何区别,文章最后实验具体配置流程有详细说明,此处不加以赘述,敬请下文。



tip:“AT+CIPMODE?”为查询指令,查询当前ESP8266处于什么数据传输模式。

AT+CIPSERVER

说明: ESP8266 处于工作模式2,其他设备连接上 ESP8266 提供的热点时,如需要进一步搭建TCP 通讯,此时可将 ESP8266 模块设置为服务端,而开启或关闭服务端便是通过该指令实现的。但是开启服务端有一个前提条件,那就是必须是在多连接模式 (AT+CIPMUX=1)下,才能开启 TCP 服务器。

用途单连接模式时,该指令无意义且报错error。
   多连接模式时,发送指令AT+CIPSERVER=1,8088”,参数1取值范围 [0,1] ,0表示关闭服务器,1表示建立服务器;参数2表示端口号,可自行设定,但是避免常用的端口号,如8080等。例:此处我设置为:建立服务器,并且端口值设置为8088



AT+CIPSTATUS

说明
   ESP8266模块作为 服务端 时,如果有 客户端 设备进行通讯,发送该指令,可以查询接入 服务端 的⽹络的具体信息。

用途
   发送指令AT+CIPSTATUS”,返回的网络连接设备的信息分别有,ESP8266 Station 接⼝的状态、⽹络连接 ID (0 ~ 4)、协议类型、远端 IP 地址、远端端⼝值、ESP8266 本地端⼝值、ESP8266 是 服务端 还是 客户端



AT+CIPSEND

说明:搭建好通讯时,发送信息的作用

用途单连接模式时发送指令“AT+CIPSEND=<length>”表示一次发送length个字节;
    多连接模式时发送指令“AT+CIPSEND=<link ID>,<length>”表示向指定的设备一次发送length个字节。(其中 <link ID> 取值范围是0~5,表示第几台设备,每一台设备的接入都会从0开始逐次加1,作为标志)
以上是普通传输模式下,每一次传输信息时需要进行的操作。ESP8266只会发送指定好的字节数,超出的将不发送出去。
    透传模式时发送指令“AT+CIPSEND”表示进入信息透传功能 (注意:本指令必须在开启 透传模式 以及 单连接下使⽤。),此时发送信息前不用再发指令,不管发什么都将被认为是信息发送出去,包括指令也将被认为是信息而发送出去,如果需要重新恢复指令的作用,得先退出“透传模式”,具体操作在下文的实验配置中有解说,此处不加以赘述。


AT+CIFSR

说明: 查询ESP8266模块的本地IP地址物理地址当ESP8266为Station模式,连接上WIFI热点时,发送该指令可以查询ESP8266模块分配到的IP地址和物理地址;当ESP8266为SoftAP模式时,发送该指令可以查询ESP8266此时的IP地址和物理地址。(注:一般设备都只有唯一的一个物理地址。

用途:发送指令“AT+CIFSR”模块ESP8266将返回自己当前模式下分配到的IP地址物理地址



AT+CIPSTA         ☆☆☆

说明:用来配置查询ESP8266模块Station模式下的IP地址。

用途:发送指令“AT+CIPSTA?”时,返回的参数有,模块在当前局域网中的IP地址、网关地址和子网掩码,下面实验配置流程中有详细说明,敬请下文。
   发送指令“AT+CIPSTA=<ip>”,自己给ESP8266身处的局域网里设置一个IP地址,如果对于此方面知识不是很懂,不建议自己随意配置IP地址,默认系统自动配置即可。



AT+CIPCLOSE

说明: 断开已经连接好的 TCP/UDP/SSL传输。

用途多连接模式时发送指令“AT+CIPCLOSE=<link ID>”表示断开指定设备的 TCP/UDP或SSL通讯通道
   单连接模式时发送指令“AT+CIPCLOSE”表示断开已经连接好的TCP/UDP或SSL通讯通道。


AT+CWQAP

说明:断开与AP的连接,就是接入点、断开WIFI热点。

用途:发送指令“AT+CWQAP”,断开模块已经连接上的WIFI热点。



AT+RST

说明:令ESP8266模块复位重启。

用途:发送指令“AT+RST”,模块重新启动。





4、配置并且搭建TCP通讯的流程

4.1 准备工作 :

    ① ESP8266 模块
    ②一个 USB 转 TTL 的转串口设备;
    ③两个软件,一个电脑上的 串口调试软件 ,用来调试 ESP8266 模块;手机上下载一个 网络调试助手 软件,用来搭建TCP 客户端

(我手机上使用的是网络调试精灵,建议使用这款手机调试助手,我找了几款软件感觉这款更好用些,图标如下);

在这里插入图片描述



ESP8266 与 转串口设备连接图如下:
在这里插入图片描述



实物图如下,可照着线的颜色比对比对:

在这里插入图片描述


将转串口设备接入电脑USB口,打开设备管理器出现该端口说明识别成功 (而后用调试窗口选择该端口时,便能和 ESP8266 通讯了。)

在这里插入图片描述


现在可以事先打开手机热点,如图,此时并没有任何设备接入。

在这里插入图片描述


准备工作完成,接下来开始配置 ESP8266 模块,让其连接上手机的热点.。




4.2 配置 ESP8266

第一步:与 ESP8266 达成通讯

    打开串口调试软件
    选择USB识别到的端口
    打开串口
    发送 AT
如下图所示,窗口响应OK,证明此时调试助手软件已成功与 ESP8266 模块达成通讯。

在这里插入图片描述



第二步:设置 ESP8266 模块为 STA 模式

     设置前可先查询一下当前模式,如下图蓝色方框里的指令
     发送 AT+CWMODE=1指令,ESP8266 设置为模式1完成。
在这里插入图片描述



第三步:连接热点

     发送指令" AT+CWJAP=“热点名称”,“热点密码” ",连上手机热点。例:此处我的指令为:AT+CWJAP=“blue”,“12345678”

如图,ESP8266 已经成功连上手机的热点。

在这里插入图片描述


查看手机上的热点,设备接入信息即可发现有 ESP8266 这一设备的连接情况!

在这里插入图片描述



第四步:设置多连接模式

     发送指令" AT+CIPMUX=1 "

(注:由于本实验中 ESP8266模块为 服务端 ,因此必须将 ESP8266 模块设置为 多连接模式,因为单连接模式下是开启不了 ESP8266 的 服务器 的(下一步骤)。即单连接模式 客户端 是连接不上 服务器 。)

在这里插入图片描述




第五步:开启服务器

     发送指令" AT+CIPSERVER=1,8088 ",开启 ESP8266 的 服务器 ,并且设置通讯端口号为8088。

在这里插入图片描述


  至此,本实验 ESP8266 与手机之间的 TCP 通讯中的 服务端 准备工作已经完成,下一步让 客户器 发送通讯请求给 服务端 即可成功搭建 TCP 通讯。在这之前,我们需要在手机上搭建好 TCP 通讯的 客户端








4.3 搭建手机上的 客户端

第一步,打开网络调试精灵APP


进入以下页面,点击绿色框里的 “ TCP 客户端 ” 选项。

在这里插入图片描述


然后就会进入以下页面,点击绿色方框里的 " + "

在这里插入图片描述


就会进入以下创建页面:

在这里插入图片描述


!!!重点来了,这里困惑了我很久才搞明白。最令人不知所云的就是第二个选项 " 主机 " ,需要填写什么?下面依个为你解答:




  首先是 " 名称 " 这一选项,任你命名,它唯一的作用就是,当你建了很多个 客户端 时,能够通过命名,识别到哪一个才是你当前想要用到的 客户端

☆☆☆ 其次是 " 主机 " 这一选项,需要填写的是 IP 地址。这里的 “主机” 的指的 服务端 那个设备,也就是本实验中的 ESP8266。当 ESP8266 连上我们的手机热点后,我们的手机便和 ESP8266 组成了一个局域网,在这个局域网内,每个设备都会有一个 IP 地址,这里的选项便是填写,ESP8266 在这个局域网内的 IP 地址(注:如何查看ESP8266的 IP 地址讲解完第三个选项再演示)

  最后是 " 端口 " 这一选项,它也是任你填写的一个值,你可以自己选填一个端口号,但是要避免一些特殊、常用的端口值,如8080等,如果填了已经被占用的端口值,可能创建失败,或者客户端压根连不进来。




获取 ESP8266 在该局域网分配到的 IP 地址,分别有两条指令可以实现:
发送指令" AT+CIFSR “
发送指令” AT+CIPSTA? "


在这里插入图片描述


如下图所示,我创建了一个名称为 “ blue ” ,端口号为8088 的 " 客户端 "

在这里插入图片描述




创建完成如下:

在这里插入图片描述




点进去,点击右上角的 ‘ 连接 ’选项, " 客户端 " 便会对 " 服务端 " 发送通讯请求, " 服务端 " 接收到通讯请求,则搭建 TCP 通讯,实现通讯功能。


页面如下:

在这里插入图片描述




此时观看电脑串口调试助手,即 服务端 页面:

在这里插入图片描述


  至此,手机上的 " 客户端 " 已经成功搭建上 ESP8266 这个 服务端 ,可实现TCP通讯功能。






4.4 实现 TCP 通讯

通讯效果如下:

服务端 接收到客户端 发来的信息(电脑服务端 ),如下:

在这里插入图片描述


客户端 接收到 服务端 发来的信息(手机客户端 页面),如下:

在这里插入图片描述




至此, ESP8266 STA模式、服务端,与手机搭建TCP通讯实验,完成 !

tip:发送汉字时,发送和接收端都选择 “ gb2312 ” 协议,要不然出现乱码。



上图所示, ESP8266 已经与手机 客户端 达成了通讯。但是在信息传递上还有几个要点:
   客户端 想给 服务端 发送信息,可直接在 网络调试精灵 TCP 客户端 页面上畅所欲言的发送信息。
  但是 服务端 想给 客户端 发送信息,由于 ESP8266 服务端 多连接模式,因此开不了透传模式,只能用非透传模式

非透传模式
  发送信息前,得发送指令 " AT+CIPSEND=“设备标识”,“多少个字节” "例: AT+CIPSEND=0,5 ,就是向 ‘0’ 标识的设备发送5个字节的信息

优点
  发送指令不会被当做信息发送出去。
缺点
  每次发送信息前都得发送指令 " AT+CIPSEND=“设备标识”,“多少个字节” " ,并且要算自己发送的数据需要多少个字节。发送的字节数过多,发送数据不完全,发送到自己设定的字节数便截止不再发送;
发送的字节数过少,发完会接着从头继续发送,直到发送的数据达到自己设定的字节数。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/745734
推荐阅读
相关标签
  

闽ICP备14008679号