专题文章:
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段落,完成本次实验(文章标题),达到实验结果后,如有不解疑惑,即可返回查阅前文,是本人学习过程中有困惑的点,经过学习总结的一点见解,或许能帮助解答你的一点疑惑。
进入正文:
左侧窗口是 ESP8266 的调试窗口(就是用来配置ESP8266模块的),也是本实验中的 服务端 窗口;
右侧窗口是 网络调试软件 窗口,可认为是电脑这一设备,是本实验中的 客户端 窗口,
左边窗口的红色方框内的信息是, 客户端 发送给 服务端 的信息;
右边窗口的蓝色方框内的信息是, 服务端 发送给 客户端 的信息。
tips: 服务端 是, ESP8266 模块
客户端 是,电脑
)
☆ 将ESP8266模块配置为STA模式(Station)、 服务端 ,与电脑设备(PC)搭建TCP通讯,实现通讯功能。
(ps:PC:Personal Computer。译:个人电脑)
配置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:只有配置正常没有错误时,才会出现如上表中的响应(即窗口弹出的返回值)
下面,我将先详细跟大家分享一下,我是如何从芯片数据手册中,了解相关指令作用的。读者可以照着思路去翻阅学习其余的指令。至于表中剩余的相关指令,我会按照以我的理解阐述,因为目的在于能够理解并使用,所以有时不会拘束于专业术语,对此不要过于纠结了,如有出错点,希望读者指出,一同进步!
见下表:
阅读表中信息可知,有关AT+CWJAP指令有两类,一类是查询指令,另一类是设置指令。下面分别对这两种指令进行实验。
① 按照指令表所给指令,向ESP8266模块发送指令(就是往调试窗口 发送指令):
AT+CWJAP? |
观察表中红色方框信息可知,该指令是查询指令,功能是 “ 查询 ESP8266 Station 已连接的 AP 信息。”
(ps:这句话有两点信息需要注意。①“ESP8266 Station”表明已经将ESP8266设置为STA模式;② “AP”,英文全程是“Access Point”,中文翻译为“接入点”。这里代表的是,为 ESP8266 提供热点连接、接入 的设备,也就是本实验的电脑设备)
响应(即窗口返回的信息)为:+CWJAP:
OK
下图是我往调试窗口发送查询指令以及返回的参数值(响应),根据截图对比着表中信息来逐一了解。
观察发现,当我们发送查询指令时,窗口就如期而至的弹出“一批数据”,并且数据与指令表的格式一一对应,固定的信息“+CWJAP : ” 我就不加以阐述,下面我们来对比着参数,一一了解:
以上便是发送查询指令时返回的各个参数代表的含义。注意的一点是,有以上的信息反馈是因为 ESP8266模块已经连接上了热点。如果 ESP8266模块还没有连接上任何热点时,发送查询指令,返回的信息只有“No AP”。
(ps: “→” 表示 “对应” 关系)
下面我们按照这种思路来继续解读“设置指令”。
② 向 调试窗口 发送(就是向 ESP8266模块发送指令)指令:
AT+CWJAP="zeng","12345432" |
下图是实践的截图,
查阅表中信息得知,该设置指令格式为:AT+CWJAP=
[
总结:
当向 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”,点击“移动热点”即可)
好了,以上全部,便是对于芯片手册上提供的“AT + CWJAP”的这一条指令的所有学习、运用过程,其余的指令,可以按照这种思路一一摸索。摸索过程曲折坎坷即便是失败也不要紧,只要动手实践了,你就会对对应的指令有更深刻的理解,运用起来也不会云里雾里,不知所以。嗯…当然!对于新手建议有些参数和内容浅学了解即可,不必过于烦恼,先会用,然后学有余力再去针对对应的知识点补充学习。加油,你一定可以的。
根据上面一条详细指令的学习,我们需要知道有一个意识,就是设置指令和查询指令,在格式上只是个别的不同,如“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=
多连接模式时,发送指令“AT+CIPSTART=,
AT+CIPMODE ☆☆☆ |
说明: 搭建好设备之间的通讯时,设置彼此之间的传输模式,有两种传输模式,分别是普通传输模式和透传模式,其中透传模式仅支持TCP和UDP固定通讯对端的情况
用途:当连上客户端(ESP8266为服务端时)或服务端(ESP8266为客户端时),搭建好通讯时,需要设置设备之间的数据传输模式,发送指令“AT+CIPMODE=0”设置数据传输模式为普通传输模式;发送指令“AT+CIPMODE=1”设置数据传输模式为透传模式。这两种传输模式有何区别,文章最后实验具体配置流程有详细说明,此处不加以赘述,敬请下文。
tip:“AT+CIPMODE?”为查询指令,查询当前ESP8266处于什么数据传输模式。
AT+CIPSEND |
说明:搭建好通讯时,发送信息的作用
用途: 单连接模式时发送指令“AT+CIPSEND=
多连接模式时发送指令“AT+CIPSEND=,
以上是普通传输模式下,每一次传输信息时需要进行的操作。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=
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”,模块重新启动。
① ESP8266 模块
②一个 USB 转 TTL 的转串口设备;
③两种串口软件,一个串口调试软件软件,用来调试 ESP8266 模块;一个网络调试助手软件,用来搭建TCP 服务端;
ESP8266 与 转串口设备连接图如下:
实物图如下,可照着线的颜色比对比对:
将转串口设备接入电脑USB口,打开设备管理器出现该端口说明识别成功 (而后用调试窗口选择该端口时,便能和 ESP8266 通讯了。)
还有,可以事先打开电脑热点,如图,此时并没有任何设备接入。
准备工作完成,接下来开始配置 ESP8266 模块,并且连接上电脑的热点.。
〇打开串口调试软件
①选择USB识别到的端口
②打开串口
③发送 AT
如下图所示,窗口响应OK,证明此时调试助手软件已成功与 ESP8266 模块达成通讯。
① 设置前可先查询一下当前模式,如下图蓝色方框里的指令
② 发送 AT+CWMODE=1指令,ESP8266 设置为模式1完成。
① 发送 AT+CWJAP=“热点名称”,“热点密码” 。例:此处我的指令为:AT+CWJAP=“zeng”,“12345432”
如图,ESP8266 已经成功连上电脑的热点。
这里简单阐述一下,ESP8266 模块连上电脑热点后,便与电脑组成了一个局域网,在该局域网中 ESP8266 和电脑各自有一个 IP 地址。为 ESP8266 提供热点的电脑在这个局域网中扮演着类似路由器的角色,对于 ESP8266来说,电脑的IP地址也就是网关IP地址(二者是一样的)。
① 发送 " AT+CIPMUX=1" 指令 。
(注意:必须是多连接模式,单连接模式开启不了服务器)
① 发送 " AT+CIPSERVER=1,8088" 指令 ,开启服务器(第一个参数作用),并且设置端口号为8088(第二个参数作用)。
至此,以 ESP8266 为 服务器 的准备工作完成,接下来要用以电脑为 客户端 的 网络调试助手,向服务端发起通讯请求。
①选好协议类型,本实验为TCP的 客户端 ;
②选好远程主机地址,就是ESP8266在局域网中分配到的 IP 地址;
③选好远程主机端口,就是刚刚 服务器 设置好的端口号。(注意:默认 服务器 的端口值为333。该端口值可自由分配填写,但是要避免一些特殊端口。)
④点击连接,客户端便会向 服务器 (ESP8266)发起通讯请求;
??? 如何获取 ESP8266 在局域网中分配到的 IP 地址,下面为大家提供了三种方法:
方法一,发送 AT+CIPSTA? 指令获取(见下图):
方法二,发送 AT+CIFSR 指令获取(见上图):
方法三,在电脑热点页面,查看接入的设备信息:
点击‘连接’, 客户端 向 服务器 发送通讯请求,如下:
至此,ESP8266 STA模式,与电脑搭建 TCP通讯,且 ESP8266 为服务端的实验,完成!
以上, ESP8266 已经与电脑端达成了通讯。但是在信息传递上还有几个要点:
客户端 想给 服务端 发送信息,发什么都会被 服务端 接收,发送前也不需要准备得指令。
服务端 想给 客户端 发送信息,由于是多连接模式,因此信息传递开不了透传模式,所以每次想发送信息前,得发送指令 " AT+CIPSEND=" 设备标识",“多少个字节” " 。
例: AT+CIPSEND=0,5 ,就是向’ ‘0’ 设备发送5个字节的信息(每接入一个设备, 服务端 都会给接入设备分配一个标识,从0开始,依次递增。如第一台设备标识为 ‘0’ )
优点:
发送指令时不会被当做信息发送出去。
缺点:
每次发送信息前都得发送指令 " AT+CIPSEND=“设备标识”,“多少个字节” " ,并且要算自己发送的数据需要多少个字节。发送的字节数过多,发送数据不完全,发送到自己设定的字节数便截止不再发送;
发送的字节数过少,发完会接着从头继续发送,直到发送的数据达到自己设定的字节数。
tip:
客户端 → 电脑
服务端 → ESP8266