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

专题文章:

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为服务端)

目录

  • 前言
  • 1、效果演示
  • 2、实验目的
  • 3、指令
    • 3.1 本实验相关指令
    • 3.2 学习指令的方法
    • 3.3 指令用途和说明
  • 4、配置并且搭建TCP通讯的流程
    • 4.1 准备工作 :
    • 4.2 配置 ESP8266
      • 第一步:与 ESP8266 达成通讯
      • 第二步:设置 ESP8266 模块为 STA 模式
      • 第三步:连接热点
      • 第四步:设置多连接模式
      • 第五步:建立 服务器
    • 4.3 搭建 TCP 通讯
      • 第一步,打开网络调试助手,搭建TCP通讯的客户端
      • 第二步,点击'连接'

前言

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



1、效果演示

如图:

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第1张图片


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

   左侧窗口是 ESP8266 的调试窗口(就是用来配置ESP8266模块的),也是本实验中的 服务端 窗口;
   右侧窗口是 网络调试软件 窗口,可认为是电脑这一设备,是本实验中的 客户端 窗口,

   左边窗口的红色方框内的信息是, 客户端 发送给 服务端 的信息;
   右边窗口的蓝色方框内的信息是, 服务端 发送给 客户端 的信息。
tips:    服务端 是, ESP8266 模块
     客户端 是,电脑






2、实验目的

  将ESP8266模块配置为STA模式(Station)、 服务端 ,与电脑设备(PC)搭建TCP通讯,实现通讯功能。
(ps:PC:Personal Computer。译:个人电脑)





3、指令

3.1 本实验相关指令

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

AT指令 响应(也就是返回值)
AT OK
ATE OK
AT+CWMODE= OK
AT+CWJAP=, OK
AT+CIPMUX= OK
AT+CIPSTART=,, CONNECT
AT+CIPMODE= OK
AT+CIPSEND= >
AT+CIFSR OK(查询ESP8266连接WIFI后,分配的IP 地址)
AT+CIPSTA? OK(查询ESP8266连接WIFI后,分配的IP 地址)
AT+CIPCLOSE OK(关闭TCP连接)
AT+CWQAP WIFI DISCONNECT(断开已连接的WIFI热点)
AT+CWLAP 返回周围的所以热点
AT+RST ready

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


3.2 学习指令的方法

  下面,我将先详细跟大家分享一下,我是如何从芯片数据手册中,了解相关指令作用的。读者可以照着思路去翻阅学习其余的指令。至于表中剩余的相关指令,我会按照以我的理解阐述,因为目的在于能够理解并使用,所以有时不会拘束于专业术语,对此不要过于纠结了,如有出错点,希望读者指出,一同进步!
见下表:
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第2张图片

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

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

AT+CWJAP?

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

响应(即窗口返回的信息)为:+CWJAP:,,,
              OK

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

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第3张图片

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

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





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

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

AT+CWJAP="zeng","12345432"

下图是实践的截图,
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第4张图片
查阅表中信息得知,该设置指令格式为:AT+CWJAP=,[,]。功能是设置 ESP8266 Station 需连接的 AP(就是让 ESP8266 连接上热点)。其中参数,
表示目标AP的SSID,也就是设备热点的名称。例:我电脑热点的名称为“zeng”
表示目标AP的接入密码,最⻓为64 字节 ASCII。例:我电脑热点“zeng”设置的密码为“12345432”
[] 表示⽬标 AP 的 MAC 地址 (就是提供热点的设备的MAC地址),该参数⼀般⽤于有多个 SSID 相同的 AP 的情况。通俗的讲就是如果你现处的环境除了你的热点名字叫 “A”之外,还有其他的设备提供的热点名字也叫 “A”,这时 ESP8266仅靠热点名字 “A”是不能准确的找到你的设备的。这种情况便需要一个类似“身份证”一样的东西,来帮助 ESP8266 寻找你的设备了。这个“身份证”就是MAC地址了,就像我们人人都有唯一的“身份证”一样,任何设备,也都只会有唯一的一个MAC地址,除自身MAC之外,不会有第二个相同的MAC地址出现,ESP8266就可以根据唯一的MAC地址,识别找到你的设备热点,然后连接接入了。


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

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

(我试验了一下,提供多个名称为“zeng”的热点,然后发送指令,AT+CWJAP=“zeng”,“12345432” 。 结果 ESP8266 果真没有任何反应。然后我在指令后面加上我电脑的MAC地址,AT+CWJAP=“zeng”,“12345432”,“f2:d5:bf:c0:c6:c3” 。发送指令 ,ESP8266便顺利连接上我的电脑热点了。)
下图是电脑上显示的已连接设备信息:(打开该页面步骤:win + i ;点击“网络和Internet”,点击“移动热点”即可)

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第5张图片

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



AT+CIPMODE         ☆☆☆

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

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



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

AT+CIPSEND

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

用途单连接模式时发送指令“AT+CIPSEND=表示一次发送length个字节;
    多连接模式时发送指令“AT+CIPSEND=,表示向指定的设备一次发送length个字节。(其中 取值范围是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=,自己给ESP8266身处的局域网里设置一个IP地址,如果对于此方面知识不是很懂,不建议自己随意配置IP地址,默认系统自动配置即可。



AT+CIPCLOSE

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

用途多连接模式时发送指令“AT+CIPCLOSE=表示断开指定设备的 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 与 转串口设备连接图如下:
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第6张图片
实物图如下,可照着线的颜色比对比对:

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第7张图片


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


还有,可以事先打开电脑热点,如图,此时并没有任何设备接入。

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第8张图片

准备工作完成,接下来开始配置 ESP8266 模块,并且连接上电脑的热点.。

4.2 配置 ESP8266

第一步:与 ESP8266 达成通讯

    打开串口调试软件
    选择USB识别到的端口
    打开串口
    发送 AT
如下图所示,窗口响应OK,证明此时调试助手软件已成功与 ESP8266 模块达成通讯。
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第9张图片


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

     设置前可先查询一下当前模式,如下图蓝色方框里的指令
     发送 AT+CWMODE=1指令,ESP8266 设置为模式1完成。
ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第10张图片


第三步:连接热点

     发送 AT+CWJAP=“热点名称”,“热点密码” 。例:此处我的指令为:AT+CWJAP=“zeng”,“12345432”
如图,ESP8266 已经成功连上电脑的热点。

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第11张图片

  这里简单阐述一下,ESP8266 模块连上电脑热点后,便与电脑组成了一个局域网,在该局域网中 ESP8266 和电脑各自有一个 IP 地址。为 ESP8266 提供热点的电脑在这个局域网中扮演着类似路由器的角色,对于 ESP8266来说,电脑的IP地址也就是网关IP地址(二者是一样的)。



第四步:设置多连接模式

     发送 " AT+CIPMUX=1" 指令 。
(注意:必须是多连接模式,单连接模式开启不了服务器)

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第12张图片


第五步:建立 服务器

     发送 " AT+CIPSERVER=1,8088" 指令 ,开启服务器(第一个参数作用),并且设置端口号为8088(第二个参数作用)。

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第13张图片

至此,以 ESP8266 为 服务器 的准备工作完成,接下来要用以电脑为 客户端 网络调试助手,向服务端发起通讯请求。







4.3 搭建 TCP 通讯

第一步,打开网络调试助手,搭建TCP通讯的客户端

    选好协议类型,本实验为TCP的 客户端
    选好远程主机地址,就是ESP8266在局域网中分配到的 IP 地址;
    选好远程主机端口,就是刚刚 服务器 设置好的端口号。注意:默认 服务器 的端口值为333。该端口值可自由分配填写,但是要避免一些特殊端口。
    点击连接客户端便会向 服务器 (ESP8266)发起通讯请求;

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第14张图片



???  如何获取 ESP8266 在局域网中分配到的 IP 地址,下面为大家提供了三种方法:

方法一,发送 AT+CIPSTA? 指令获取(见下图):

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第15张图片



方法二,发送 AT+CIFSR 指令获取(见上图):



方法三,在电脑热点页面,查看接入的设备信息:

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第16张图片




第二步,点击‘连接’

点击‘连接’ 客户端 服务器 发送通讯请求,如下:

ESP8266模块,STA模式(与电脑搭建TCP通讯,ESP8266为服务端)_第17张图片


至此,ESP8266 STA模式,与电脑搭建 TCP通讯,且 ESP8266 为服务端的实验,完成!





以上, ESP8266 已经与电脑端达成了通讯。但是在信息传递上还有几个要点:
   客户端 想给 服务端 发送信息,发什么都会被 服务端 接收,发送前也不需要准备得指令。

   服务端 想给 客户端 发送信息,由于是多连接模式,因此信息传递开不了透传模式,所以每次想发送信息前,得发送指令 " AT+CIPSEND=" 设备标识",“多少个字节” "
例: AT+CIPSEND=0,5 ,就是向’ ‘0’ 设备发送5个字节的信息(每接入一个设备, 服务端 都会给接入设备分配一个标识,从0开始,依次递增。如第一台设备标识为 ‘0’ )

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

tip:
   客户端 → 电脑
   服务端 → ESP8266

你可能感兴趣的:(ESP8266模块,电脑,stm32)