赞
踩
专题文章:
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通讯的实验”,达到实验结果后,如有不解疑惑,即可返回查阅前文,是本人学习过程中困惑点,经过学习解答的一点见解,或许能帮助解答你的一点疑惑。
进入正文:
如图:
电脑 “串口调试助手”,即 服务端 页面:
手机 客户端 页面:
第一张图片是 ESP8266 调试窗口,也就是本实验中的 服务端 ;
第二张照片是手机上搭建的一个 客户端 窗口。
第一张照片红色方框里的信息是,客户端 发送给 服务端 的信息;
第二张图片红色方框里的信息是,服务端 发送给 客户端 的信息。
tips: 服务端是,ESP8266
客户端是, 手机
)
☆ 将ESP8266模块配置为STA模式(Station)、 服务端 。搭建TCP通讯,与手机实现通讯功能。
配置ESP8266为Station模式时,需要的用到的相关指令:
AT指令 | 响应(也就是返回值) |
---|---|
AT | OK |
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+CIPSTATUS | 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:只有配置正常没有错误时,才会出现如上表中的响应(即窗口弹出的返回值)
下面,我将先详细跟大家分享一下,我是如何从芯片数据手册中,了解相关指令作用的,然后读者照着思路去翻阅其余指令即可。表中剩余的相关指令,我会按照以我的理解阐述,因为目的在于能够理解并使用,所以有时不会拘束于专业术语,对此不要过于纠结了,如有出错点,希望读者指出,一同进步!
见下表:
阅读表中信息可知,有关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”的这一条指令的所有学习、运用过程,其余的指令,可以按照这种思路一一摸索。摸索过程曲折坎坷即便是失败也不要紧,只要动手实践了,你就会对对应的指令有更深刻的理解,运用起来也不会云里雾里,不知所以。嗯…当然!对于新手建议有些参数和内容浅学了解即可,不必过于烦恼,先会用,然后学有余力再去针对对应的知识点补充学习。加油,你一定可以的。
根据上面一条详细指令的学习,我们需要知道有一个意识,就是设置指令和查询指令,在格式上只是个别的不同,如“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”,模块重新启动。
① ESP8266 模块
②一个 USB 转 TTL 的转串口设备;
③两个软件,一个电脑上的 串口调试软件 ,用来调试 ESP8266 模块;手机上下载一个 网络调试助手 软件,用来搭建TCP 客户端
(我手机上使用的是“ 网络调试精灵 ”,建议使用这款手机调试助手,我找了几款软件感觉这款更好用些,图标如下);
ESP8266 与 转串口设备连接图如下:
实物图如下,可照着线的颜色比对比对:
将转串口设备接入电脑USB口,打开设备管理器出现该端口说明识别成功 (而后用调试窗口选择该端口时,便能和 ESP8266 通讯了。)
准备工作完成,接下来开始配置 ESP8266 模块,让其连接上手机的热点.。
〇打开串口调试软件
①选择USB识别到的端口
②打开串口
③发送 AT
如下图所示,窗口响应OK,证明此时调试助手软件已成功与 ESP8266 模块达成通讯。
① 设置前可先查询一下当前模式,如下图蓝色方框里的指令
② 发送 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。
进入以下页面,点击绿色框里的 “ TCP 客户端 ” 选项。
然后就会进入以下页面,点击绿色方框里的 " + " ,
就会进入以下创建页面:
首先是 " 名称 " 这一选项,任你命名,它唯一的作用就是,当你建了很多个 客户端 时,能够通过命名,识别到哪一个才是你当前想要用到的 客户端 。
☆☆☆ 其次是 " 主机 " 这一选项,需要填写的是 IP 地址。这里的 “主机” 的指的 服务端 那个设备,也就是本实验中的 ESP8266。当 ESP8266 连上我们的手机热点后,我们的手机便和 ESP8266 组成了一个局域网,在这个局域网内,每个设备都会有一个 IP 地址,这里的选项便是填写,ESP8266 在这个局域网内的 IP 地址。(注:如何查看ESP8266的 IP 地址讲解完第三个选项再演示)
最后是 " 端口 " 这一选项,它也是任你填写的一个值,你可以自己选填一个端口号,但是要避免一些特殊、常用的端口值,如8080等,如果填了已经被占用的端口值,可能创建失败,或者客户端压根连不进来。
获取 ESP8266 在该局域网分配到的 IP 地址,分别有两条指令可以实现:
① 发送指令" AT+CIFSR “;
② 发送指令” AT+CIPSTA? ";
创建完成如下:
点进去,点击右上角的 ‘ 连接 ’选项, " 客户端 " 便会对 " 服务端 " 发送通讯请求, " 服务端 " 接收到通讯请求,则搭建 TCP 通讯,实现通讯功能。
页面如下:
此时观看电脑串口调试助手,即 服务端 页面:
通讯效果如下:
服务端 接收到客户端 发来的信息(电脑服务端 ),如下:
客户端 接收到 服务端 发来的信息(手机客户端 页面),如下:
至此, ESP8266 STA模式、服务端,与手机搭建TCP通讯实验,完成 !
(tip:发送汉字时,发送和接收端都选择 “ gb2312 ” 协议,要不然出现乱码。)
上图所示, ESP8266 已经与手机 客户端 达成了通讯。但是在信息传递上还有几个要点:
客户端 想给 服务端 发送信息,可直接在 网络调试精灵 TCP 客户端 页面上畅所欲言的发送信息。
但是 服务端 想给 客户端 发送信息,由于 ESP8266 服务端 是 多连接模式,因此开不了透传模式,只能用非透传模式。
非透传模式:
发送信息前,得发送指令 " AT+CIPSEND=“设备标识”,“多少个字节” "。例: AT+CIPSEND=0,5 ,就是向 ‘0’ 标识的设备发送5个字节的信息
优点:
发送指令不会被当做信息发送出去。
缺点:
每次发送信息前都得发送指令 " AT+CIPSEND=“设备标识”,“多少个字节” " ,并且要算自己发送的数据需要多少个字节。发送的字节数过多,发送数据不完全,发送到自己设定的字节数便截止不再发送;
发送的字节数过少,发完会接着从头继续发送,直到发送的数据达到自己设定的字节数。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。