单片机学习小组
直播中

王越建

7年用户 1436经验值
私信 关注

ESP8266模块是怎样通过WIFI与服务器进行通信的

ESP8266芯片有哪几种工作方式呢?

开启网络调试助手的方法有哪几种呢?
ESP8266模块是怎样通过WIFI与服务器进行通信的?

回帖(1)

张嘉

2022-2-22 09:52:11
一、ESP8266


ESP8266与HC-05蓝牙模块类似,都是一种串口转其他通信的模块,也就是说用这个模块我们不需要了解许多网络协议,仅仅靠串口通信就可以将我们的主控芯片连接到网络进行数据传输。
市面上有两种ESP8266模块,都是使用的同样的ESP8266芯片,只不过正点原子只引出了6个引脚,官方模块引出了8个引脚,如果我们不使用已经刷好的固件库(也就是不打算利用ESP8266芯片做一些控制)那么这两个模块没有太大使用区别。

市面上最主流的有两种版本,下面我会做简单的介绍。

正电原子模块


我是用正点原子开始学习的ESP8266,本来是想正点原子会有一些源代码和对应视频,但是找了半天只找到源代码和一个长达数十页的pdf,后来根据学长给的一个视频学习进度才有所进展。

从图片中我们不难看出,正点原子模块共有六个引脚

[tr]引脚功能[/tr]
VCC3.3V或者5V
GND接地
TXD发送数据引脚
RXD接收数据引脚
IO_0复位(低电平有效)
RST用于进入固件烧写模式,低电平是烧写模式,高电平运行

这次使用中我并没有直接用单片机进行数据的传输,而是直接连接到电脑先大致了解一下该模块的工作方式,所以我采用的是USB-TTL芯片和它相连然后连接电脑。
具体连接方式为

[tr]正点原子模块USB-TTL[/tr]
VCC5V
GNDGND
TXDRXD
RXDTXD

这里网上建议该模块连接5V作为电源,因为有博主在3.3V使用的时候偶尔会有丢失数据的情况,所以我们就直接使用5V供电。

官方模块


下面的图片就是官方模块的实拍

从图片中我们可以清楚的看到有8个引脚伸出

[tr]引脚功能[/tr]
VCC3.3V或者5V
REST复位
CH_PD高电平工作,低电平模块供电关闭
UTXD发送数据(也可作为GPIO1)
URXD接收数据
GPIO0默认为WIFI状态STA
GPIO2没找到具体用处
GND接地

由于我们不对ESP8266的固件库进行修改,所以我们的连接方式和正点原子模块是差不多的,唯一的区别就是CH_PD引脚也需要接电源,原因可以从我上面给出的表格看到。

二、配置过程


首先给出需要用到的两个软件
下载安装好我们的软件后就进行我们硬件的连接
硬件连接依照第一部分的表格,将模块与USB-TTL进行连接,并将我们的USB连接到电脑。

1.初次问候


硬件连接之后我们就可以打开XCOM串口调试助手,串口波特率调整为115200,在对话框中输入AT并发送,如果我们的模块正常则会返回一个OK。
此时就代表我们和模块取得了第一次联系
这里如果返回的是十六进制数字,则需要我们将右列的16进制显示关闭。


2.连接WIFI


之后我们就需要将模块连接上WIFI,具体操作为
在对话框中发送:AT+CWJAP=“无线网名称”,"无线网密码"
例如我的手机热点名称为:我是彭于晏 密码为12345678
则发送 AT+CWJAP=“我是彭于晏”,"12345678"
给它一段反应的时间,他就会返回 WIFI CONNECTED

如果模块正常返回OK但是在连接WIFI时出现错误,可能是AT指令发送的有问题,仔细检查是否语句中使用的为英文符号,账户密码是否正确。

3.开启我们的简单服务器


现在我们先暂且疏远我们的ESP8266,把串口助手晾在一旁,打开另一个我上传的软件,网络调试助手。

这里电脑要和模块连接到同一个路由器


这里需要设置
协议类型为TCP Server

本地主机地址一般都是默认值不需要我们更改

本地主机端口为8080

之后点击打开。理想情况下会直接打开成功,但是我在使用的过程中就遇到了问题,总是显示bind()failed,后来查询后才明白是对应端口被占用,下面是我的解决方法。

开启网络调试助手方法一


首先按win+R打开运行

在对话框中输入cmd点击确定

之后在黑框中输入 netstat -ano
注意netstat后面是有一个空格的!



按回车就可以查询到我们的电脑各个端口的运行情况,找到8080端口,查看是什么程序在占用8080端口,例如下图我的8080端口就被 PID8584占用。

打开任务管理器,在详细信息中将该程序关闭。

关闭之后就可以开启8080端口了。
这里关闭的程序(Application Web Server)是上学期电路实验考试时附带的,现在咱也不敢删。

开启网络调试助手方法二


既然我们的8080端口被占用了,那我们就直接换一个端口进行使用,例如8082,8083等等等等,电脑端口数量很多,试一个不行还会有很多个,总会有没被使用的端口可以使用。

个人觉得第二个方法好,但是了解一下为什么打不开8080也是挺好的。

4.模块连接服务器


这里发送AT指令:AT+CIPSTART=“TCP”,“IP地址”,端口号
例如我的IP地址为192.168.1.110,端口使用的是8082,那我就发送
AT+CIPSTART=“TCP”,“192.168.1.110”,8082

图片上我第一次发送这个指令就失败了,因为用了中文符号,大家也应注意。
此时模块就连接上了我们电脑上开启的简单服务器。

5.开始通过WIFI与服务器通信


模块连接好服务器后,我们再发送一个AT指令将模块设置为透传模式

AT+CIPMODE=1 透传模式

之后发送开启透传
AT+CIPSEND 开启透传

当窗口返回>后,我们所发送的任何消息都会被认作为数据,现在就可以通过电脑的串口通信给模块数据,然后模块通过WIFI将数据发送给我们的简单服务器。

下面是我的自问自答

发送出去的消息在各自软件中是看不到的,只能看到接收到的消息

注意:这不是聊天软件,不要像我一样玩的停不下来

最后当我们想要退出数据传输模式时,我们需要在串口助手中发送三个加号,并取消勾选发送新行


总结


这篇文章主要描述该模块在STA模式下的工作流程,熟悉了工作方式后我们就可以尝试用单片机替代电脑进行串口数据传输,发送数据与接收数据。
下面是流程图

将来的串口通信将由单片机完成。
举报
×
20
完善资料,
赚取积分