专题文章:
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指令 | 响应(也就是返回值) |
---|---|
AT | OK |
ATE<mode> | OK |
AT+CWMODE=<mode> | OK |
AT+CWJAP=<ssid>,<pwd> | OK |
AT+CIPMUX=<mode> | OK |
AT+CIPSTART=<type>,<remote IP>,<remoteport> | CONNECT |
AT+CIPMODE=<mode> | OK |
AT+CIPSEND=<length> | > |
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 学习指令的方法
下面,我将先详细跟大家分享一下,我是如何从芯片数据手册中,了解相关指令作用的,然后读者照着思路去翻阅其余指令即可。表中剩余的相关指令,我会按照以我的理解阐述,因为目的在于能够理解并使用,所以有时不会拘束于专业术语,对此不要过于纠结了,如有出错点,希望读者指出,一同进步!
见下表:
阅读表中信息可知,有关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+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=0 "。
(注:由于本实验中 ESP8266模块为 客户端 ,因此必须将 ESP8266 模块设置为 单连接模式,才能连接上 服务器 。多连接模式下是连接不上 服务器 的。)
至此,本实验 ESP8266 与手机之间的 TCP 通讯中的 客户端 准备工作已经完成,下一步直接向 服务器 发送通讯请求即可搭建好 TCP 通讯。在这之前,我们需要在手机上搭建好 TCP 通讯的 服务端 。
4.3 搭建手机上的 服务端
第一步,打开网络调试精灵APP
进入以下页面,点击绿色框里的 “ TCP 服务端 ” 选项。
然后就会进入以下页面,点击绿色方框里的 " + " ,
就会进入以下创建页面:
!!!重点来了,这里困惑了我很久才搞明白。最令人不知所云的就是第二个选项 " 主机 " ,需要填写什么?下面依个为你解答:
首先是 " 名称 " 这一选项,任你命名,它唯一的作用就是,当你建了很多个 服务端 时,能够通过命名,识别到哪一个才是你当前想要用到的 服务端 。
☆☆☆ 其次是 " 主机 " 这一选项,需要填写的是 IP 地址。这里的 “主机” 的指的就是手机,当 ESP8266 连上我们的手机热点后,我们的手机便和 ESP8266 组成了一个局域网,在这个局域网内,每个设备都会有一个 IP 地址,这里的选项便是填写,手机在这个局域网内的 IP 地址。(注:如何查看手机的 IP 地址讲解完第三个选项再演示)
最后是 " 端口 " 这一选项,它也是任你填写的一个值,你可以自己选填一个端口号,但是要避免一些特殊、常用的端口值,如8080等,如果填了已经被占用的端口值,可能创建失败,或者客户端压根连不进来。
??? 如何查看手机的 IP 地址(手机的 IP 地址和,与 ESP8266 组成的局域网中的 IP 地址是一样的,因为手机在这当中是热点,充当网关的角色)
① 打开 “手机设置”
② 打开 “关于手机” 选项
③ 打开 “状态信息” 选项
④ 打开 “IP 地址” 选项
将 IP 地址填写到 " 主机 " ,填写好 " 名称 " 和 " 端口 " 点击保存,就能成功创建" 服务端 "
不同手机可能有所不同,大家可以上网搜自己手机型号的 IP 地址如何查看。
第二步,创建 服务端
如下图所示,我创建了一个名称为 “ blue ” ,端口号为8088 的 " 服务端 " 。点进去, " 服务端 " 便会不断扫描是否有 " 客户端 " 发来通讯请求,有则成功搭建通讯。
创建完成如下:
进入页面如下:
至此,手机上的 " 服务端 " 我们已经搭建完成,让 ESP8266 这个 客户端 发送通讯请求,即可完成TCP通讯。
4.4 实现 TCP 通讯
发送指令 " AT+CIPSTART=“协议类型”,“服务端 IP 地址”,“端口号” " 。
(例:我发送的指令是"AT+CIPSTART=“TCP”,“10.33.49.170”,8088其中第二第三个参数,分别是刚刚手机上创建 服务端 时填写的 “主机” 和 “端口”)
查看手机 服务端
至此, ESP8266 STA模式、客户端,与手机搭建TCP通讯实验,完成 !
(tip:已连接前面的 IP 地址,便是该局域网中,客户端 ESP8266 分配到的 IP 地址哦)
通讯效果如下:
手机页面:
tip:发送汉字时,发送和接收端都选择 “ gb2312 ” 协议,要不然出现乱码。
上图所示, ESP8266 已经与手机 服务端 达成了通讯。但是在信息传递上还有几个要点:
服务端 想给 客户端 发送信息,可直接在 网络调试精灵 TCP 服务端 页面上畅所欲言的发送信息。
但是客户端想给服务端发送信息,有两种方法:
方法一:非透传模式。
发送信息前,得发送指令 " AT+CIPSEND=“多少个字节” "。例: AT+CIPSEND=5 ,就是发送5个字节的信息
优点:
发送指令不会被当做信息发送出去。
缺点:
每次发送信息前都得发送指令 " AT+CIPSEND=“多少个字节” " ,并且要算自己发送的数据需要多少个字节。发送的字节数过多,发送数据不完全,发送到自己设定的字节数便截止不再发送;
发送的字节数过少,发完会接着从头继续发送,直到发送的数据达到自己设定的字节数。
方法二:透传模式。(上述图片演示的便是此种模式)
① 发送指令 " AT+CIPMODE=1 ",选择透传模式;
② 然后发送 " AT+CIPSEND ",之后等待信息发送。
该模式下,客户端发的任何信息(包括指令),都将一五一十的被服务端接收,此时便再也没法通过指令再去配置、命令 ESP8266 模块了,要想令指令生效,只有退出透传模式,
优点:
发送信息前不用再发送指令,因为即便是指令也将被当做普通数据信息发送出去,可以畅所欲言。
缺点:
此时所有的指令将不负有原来的作用,如果想要配置 ESP8266模块,得先退出透传模式。
退出透传模式的方法:
先发送 “+++”(注意窗口中取消回车换行的选项),再发送 “ AT+CIPMODE=0 ”配置为非透传模式就能退出透传模式,恢复指令的作用了。文章来源:https://www.toymoban.com/news/detail-861361.html
至此,关于 ESP8266 模块,如何设置为 STA 模式,并且与电脑搭建TCP通讯的实验,完成。文章来源地址https://www.toymoban.com/news/detail-861361.html
到了这里,关于ESP8266模块,STA模式(与手机搭建TCP通讯,EPS8266为客户端)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!