找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9359|回复: 5
打印 上一主题 下一主题
收起左侧

ESP8266调试全过程指导(补全)

  [复制链接]
跳转到指定楼层
楼主
ID:396273 发表于 2018-11-13 00:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ESP8266 调试全过程 – 使用指导                  
上电:正常工作验证
本模块可以工作在三种模式:1. STA  2 .AP  3 .AP+STA,出厂设置为第三种
上电后,蓝色灯微弱闪烁后熄灭,红灯长亮
1. 搜索无线网络,可见ESP_XXXXXX已经处于列表中(后面的数字是MAC地址后几位)

连接该网络以后,查看连接状态:

手机搜索该网络,也可连接上:

  • 使用串口软件进行测试:
软件配置如下图:
注意:(1)波特率一般在出厂情况下默认的是115200。如果在115200情况下收到的是乱码可以试试其他波特率(旧版本的默认波特率可能是其他数值)。
(2)在输入命令后必须再按一下回车键,然后再按发送!

  • 使用串口软件进行测试
注意:勾选上“发送新行”
发送命令AT+RST(重启模块),返回如下:

三 测试
测试前先阅读:(1)Espressif IoT AT指令集_v0.1.5.pdf         描述了该模块支持的AT命令
wwwelectrodragoncom/w/Wi07c该网页命令描述更清晰一些
(2) ESP8266测试方法汇总.pdf              测试的具体流程
测试过程参照:ESP8266作为TCP服务器端使用心得.pdf     出错的原因分析及处理
四 测试例程  
原来推荐的测试例程比较粗略,这里放上我自己的测试过程,理解可能有误,仅供参考。
请勿直接复制指令,部分格式经过WORD编辑后有误!可能导致出错!
(一)AP模式
1. 建立AP     
  (1)重启模块
              发送命令:AT+RST(执行指令)
              指令:AT+RST
    响应:OK
  (2)设置模块
              发送命令:AT+CWMODE=3AT+CWMODE=2(设置指令)
              指令:AT+CWMODE=<mode>
              说明:<mode>:1-Station模式,2-AP模式,3-APStation模式
              响应:OK
说明:需重启后生效(AT+RST)

  (3)配置AP参数
              发送命令:AT+CWSAP=TEST,123456123456,1,3(设置指令)            
              指令:AT+ CWSAP= <ssid>,<pwd>,<chl>, <ecn>
              说明:指令只有在AP模式开启后有效
<ssid>:字符串参数,接入点名称
<pwd>:字符串参数,密码最长64字节,ASCII
<chl>:通道号
< ecn >:0-OPEN1-WEP2-WPA_PSK3-WPA2_PSK4-WPA_WPA2_PSK
              响应:OK

刷新无线网络列表,可见到SSID为TEST的无线网络列于其中:

注意:此时连接网络会可能出现连接不上的情况,请发送AT+RST命令并等待几分钟之后再连接
(4)查看已接入设备的IP
连接上TEST发送命令:AT+CWLIF(执行指令)
指令:AT+CWLIF
说明:查看已接入设备的IP
响应:<ip addr>

OK
说明:<ip addr>:已接入设备的IP地址
            
如果返回命令如下:
表示网络成功建立,目前无设备连入。
如果无线网络实际已连接上,请等待几分钟后再发送AT+CWLIF命令进行查询。
(4)查询本机IP地址
              发送命令:AT+CIFSR(执行指令)
指令:AT+CIFSR
说明:查看本模块的IP地址
      注意:AP模式下无效!会造成死机现象!
响应:<ip addr>
说明:<ip addr>:本模块IP地址

实际测试中并未发生死机现象
查看本机配置模式:CWMODE=2,为AP模式。

发送命令:AT+CIFSR=?(测试指令),返回响应如下:

同样未出现死机现象。
2. Server方法收发
(0)查询此时模块状态(该步骤可省略)
  发送命令 AT+CWMODE?(查询指令)
指令:AT+CWMODE?
说明:查看本模块的WIFI应用模式
响应:+CWMODE:<mode>

OK
说明:<mode>:1-Station模式,2-AP模式,3-APStation模式

              发送命令AT+CIPMUX? (查询指令)
指令:AT+CIPMUX?
说明:查询本模块是否建立多连接
响应:+ CIPMUX:<mode>

OK
说明:<mode>:0-单路连接模式,1-多路连接模式

              发送命令AT+CIPMODE? (查询指令)
指令:AT+CIPMODE?
说明:查询本模块的传输模式
响应:+ CIPMODE:<mode>

OK
说明:<mode>:0-非透传模式,1-透传模式

发送命令AT+CIPSTO? (查询指令)
指令:AT+CIPSTO?
说明:查询本模块的服务器超时时间
响应:+ CIPSTO:<time>

OK
说明:<time>:服务器超时时间,0~2880,单位为s

(1)开启多连接模式
发送命令:AT+CIPMUX=1(设置指令)
指令:AT+CIPMUX=<mode>
说明:<mode>:0-单路连接模式,1-多路连接模式
响应:OK

查询可知,设置成功

(2)创建服务器
发送命令:AT+CIPSERVER=1,8080(设置指令)
指令:AT+CIPSERVER=<mode>[,<port>]
说明:<mode>:0-关闭server模式,1-开启server模式
      <port>:端口号,缺省值为333
响应:OK
说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启
(2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。
开启server服务如下图所示:

关闭server服务如下图所示:

打开USR-TCP232-Test.exe,点击Connect按钮连接不上,可知server服务未开启

重新开启server服务(注意:之前需要再发送一遍AT+CIPMUX=1重新开启多连接模式)。
点击Connect按钮

连接成功后,串口收到模块返回的数据串:Link
180S(默认值)后,连接自动断开,返回Unlink,客户端的相应按钮变成灰色。
全过程如下图:

(3) 设置服务器超时时间
发送命令AT+CIPSTO=2880 (设置指令)
指令:AT+CIPSTO=<time>
说明:<time>:服务器超时时间,0~2880,单位为s
响应:OK

(4) 建立客户端

  (5) 查看当前连接
发送命令AT+CIPSTATUS (执行指令)
指令:AT+CIPSTATUS
响应:STATUS:<stat>
+ CIPSTATUS:<id>,<type>,<addr>,<port>,<tetype>

      OK
说明:<id>:连接的id0-4
<type>:字符串参数,类型TCPUDP
<addr>:字符串参数,IP地址
<port>:端口号
<tetype>: 0-本模块做client的连接,1-本模块做server的连接

(之前电脑的USB无线网卡发烫厉害,拔出后重新插上,再次连接后自动分配的端口产生了变化,所以刷出了两个客户端,实际中存在的仅有ID=1的客户端)
  (6) 向某个连接发送数据
发送命令AT+CIPSEND=1,6(设置指令)  (通过上一条指令AT+CIPSTATUS得知ID=1
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=<length>
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= <id>,<length>
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满length时发送数据。
如果未建立连接或连接被断开,返回ERROR
如果数据发送成功,返回 SEND OK
说明:<id>:需要用于传输连接的id
<length>:数字参数,表明发送数据的长度,最大长度为2048

断开客户端后再发送一次,得到以下响应:

发送数据长度大于LENGTH时响应如下(HELLO!为之前一次发送的数据)
    此时连接已建立,可以进行数据的双向收发。
用客户端向ESP8266发送数据,正常。

3. Client方法收发
(0) 关闭server服务   (如果没有开启server服务,可免除此步骤)
发送命令:AT+CIPSERVER=0(设置指令)
指令:AT+CIPSERVER=<mode>[,<port>]
说明:<mode>:0-关闭server模式,1-开启server模式
      <port>:端口号,缺省值为333
响应:OK
说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启
(2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。
关闭server服务如下图所示:

(1) 创建服务器


点击Listening,创建成功后,该按钮变为:

(2) 开启多连接模式
发送命令:AT+CIPMUX=1(设置指令)
指令:AT+CIPMUX=<mode>
说明:<mode>:0-单路连接模式,1-多路连接模式
响应:OK

(3) 建立TCP连接
发送命令AT+CIPSTART=2,"TCP","192.168.4.101",8080 (设置指令)
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSTART= <type>,<addr>,<port>
2)多路连接时(+CIPMUX=1),指令为:AT+CIPSTART=<id>,<type>,<addr>,<port>
响应:如果格式正确且连接成功,返回 OK,否则返回 ERROR
如果连接已经存在,返回 ALREAY CONNECT
说明:<id>:0-4,连接的id
<type>:字符串参数,表明连接类型,”TCP”-建立tcp连接,”UDP”-建立UDP连接
<addr>:字符串参数,远程服务器IP地址
<port>:远程服务器端口号
    如下图所示:

(4) 向服务器发送数据
发送命令AT+CIPSEND=2,8(设置指令)  (通过上一条指令AT+CIPSTART设置为ID=2
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=<length>
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= <id>,<length>
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满length时发送数据。
如果未建立连接或连接被断开,返回ERROR
如果数据发送成功,返回 SEND OK
说明:<id>:需要用于传输连接的id
<length>:数字参数,表明发送数据的长度,最大长度为2048

接收正确,超过8个字符的部分不接收。
此时连接已建立,可以进行数据的双向收发。用服务器向ESP8266发送数据,正常。

(二)STA模式
1.建立STA
(1) 重启模块
发送命令:AT+RST(执行指令)
              指令:AT+RST
响应:OK

(2) 设置模块
              发送命令:AT+CWMODE=3AT+CWMODE=1(设置指令)
              指令:AT+CWMODE=<mode>
              说明:<mode>:1-Station模式,2-AP模式,3-APStation模式
              响应:OK
说明:需重启后生效(AT+RST)

将模块设置为模式1,此时刷新网络列表可见由ESP8266建立的网络从列表中消失了
(3) 查看当前无线路由器列表
发送命令:AT+CWLAP(执行指令)
指令:AT+CWLAP
              响应:正确:(终端返回AP列表)
+ CWLAP: <ecn>,<ssid>,<rssi>
OK
错误:ERROR
说明:< ecn >:0-OPEN1-WEP2-WPA_PSK3-WPA2_PSK4-WPA_WPA2_PSK
<ssid>:字符串参数,接入点名称
<rssi>:信号强度

如搜索不到信号,响应:

请重新上电并严格按照AT命令再发送一遍。
没有列表返回的时候请耐心等待,否则会出现“busy”
(4) 加入当前无线网络
发送命令:AT+CWJAP=MERSAIN”,”XXXXXXXX(设置指令)
指令:AT+CWJAP=<ssid>,< pwd >
说明:<ssid>:字符串参数,接入点名称
<pwd>:字符串参数,密码,最长64字节ASCII
响应:正确:OK
错误:ERROR

检测是否真的连上该路线网络
发送命令:AT+CWJAP?(查询指令)
指令:AT+CWJAP?
响应:返回当前选择的AP
+ CWJAP:<ssid>

OK
说明:<ssid>:字符串参数,接入点名称

断电。上电后发送AT+CWJAP?,返回同上,系统保持上次的状态。
查看模块IP地址
发送命令:AT+CIFSR(执行指令)
指令:AT+CIFSR
响应:正确:+ CIFSR:<IP address>

OK
错误:ERROR
说明:<ssid>:字符串参数,接入点名称
   
群里(@云海之梦)反映:错误的SSID也可以连接上,测试后发现果然如此,输入实际不存在的账号密码返回也是OK

但发送AT+CIFSR(查看模块地址),返回ERROR,可通过此命令来判断有没有真正连接上。
2. Server方法收发
(0)查询此时模块状态(该步骤可省略)
  发送命令 AT+CWMODE?(查询指令)
指令:AT+CWMODE?
说明:查看本模块的WIFI应用模式
响应:+CWMODE:<mode>

OK
说明:<mode>:1-Station模式,2-AP模式,3-APStation模式

              发送命令AT+CIPMUX? (查询指令)
指令:AT+CIPMUX?
说明:查询本模块是否建立多连接
响应:+ CIPMUX:<mode>

OK
说明:<mode>:0-单路连接模式,1-多路连接模式

              发送命令AT+CIPMODE? (查询指令)
指令:AT+CIPMODE?
说明:查询本模块的传输模式
响应:+ CIPMODE:<mode>

OK
说明:<mode>:0-非透传模式,1-透传模式

发送命令AT+CIPSTO? (查询指令)
指令:AT+CIPSTO?
说明:查询本模块的服务器超时时间
响应:+ CIPSTO:<time>

OK
说明:<time>:服务器超时时间,0~2880,单位为s

(1)开启多连接模式
发送命令:AT+CIPMUX=1(设置指令)
指令:AT+CIPMUX=<mode>
说明:<mode>:0-单路连接模式,1-多路连接模式
响应:OK

查询可知,设置成功

(2)创建服务器
发送命令:AT+CIPSERVER=1,8080(设置指令)
指令:AT+CIPSERVER=<mode>[,<port>]
说明:<mode>:0-关闭server模式,1-开启server模式
      <port>:端口号,缺省值为333
响应:OK
说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启
(2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。
开启server服务如下图所示:

关闭server服务如下图所示:

打开USR-TCP232-Test.exe,点击Connect按钮连接不上,可知server服务未开启

重新开启server服务(注意:之前需要再发送一遍AT+CIPMUX=1重新开启多连接模式)。
点击Connect按钮

连接成功后,串口收到模块返回的数据串:Link
180S(默认值)后,连接自动断开,返回Unlink,客户端的相应按钮变成灰色。
全过程如下图:

(3) 设置服务器超时时间
发送命令AT+CIPSTO=2880 (设置指令)
指令:AT+CIPSTO=<time>
说明:<time>:服务器超时时间,0~2880,单位为s
响应:OK

(4) 建立客户端
界面设置如下图所示:

  (5) 查看当前连接
发送命令AT+CIPSTATUS (执行指令)
指令:AT+CIPSTATUS
响应:STATUS:<stat>
+ CIPSTATUS:<id>,<type>,<addr>,<port>,<tetype>

      OK
说明:<id>:连接的id0-4
<type>:字符串参数,类型TCPUDP
<addr>:字符串参数,IP地址
<port>:端口号
<tetype>: 0-本模块做client的连接,1-本模块做server的连接

  (6) 向某个连接发送数据
发送命令AT+CIPSEND=0,10(设置指令)  (通过上一条指令AT+CIPSTATUS得知ID=0
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=<length>
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= <id>,<length>
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满length时发送数据。
如果未建立连接或连接被断开,返回ERROR
如果数据发送成功,返回 SEND OK
说明:<id>:需要用于传输连接的id
<length>:数字参数,表明发送数据的长度,最大长度为2048
发:
收:
断开客户端后再发送一次,得到以下响应:

    此时连接已建立,可以进行数据的双向收发。
3. Client方法收发
(0) 关闭server服务   (如果没有开启server服务,可免除此步骤)
发送命令:AT+CIPSERVER=0(设置指令)
指令:AT+CIPSERVER=<mode>[,<port>]
说明:<mode>:0-关闭server模式,1-开启server模式
      <port>:端口号,缺省值为333
响应:OK
说明:(1) AT+ CIPMUX=1时才能开启服务器;关闭server模式需要重启
(2)开启server后自动建立server监听,当有client接入会自动按顺序占用一个连接。
关闭server服务如下图所示:

(1)创建服务器


点击Listening,创建成功后,该按钮变为:

(2) 开启多连接模式
发送命令:AT+CIPMUX=1(设置指令)
指令:AT+CIPMUX=<mode>
说明:<mode>:0-单路连接模式,1-多路连接模式
响应:OK

(3) 建立TCP连接
发送命令AT+CIPSTART=2,"TCP","192.168.1.109",8080 (设置指令)
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSTART= <type>,<addr>,<port>
2)多路连接时(+CIPMUX=1),指令为:AT+CIPSTART=<id>,<type>,<addr>,<port>
响应:如果格式正确且连接成功,返回 OK,否则返回 ERROR
如果连接已经存在,返回 ALREAY CONNECT
说明:<id>:0-4,连接的id
<type>:字符串参数,表明连接类型,”TCP”-建立tcp连接,”UDP”-建立UDP连接
<addr>:字符串参数,远程服务器IP地址
<port>:远程服务器端口号
    如下图所示:

(4) 向服务器发送数据
发送命令AT+CIPSEND=2,10(设置指令)  (通过上一条指令AT+CIPSTART设置为ID=2
指令:1)单路连接时(+CIPMUX=0),指令为:AT+CIPSEND=<length>
2)多路连接时(+CIPMUX=1) ,指令为: AT+CIPSEND= <id>,<length>
响应:收到此命令后先换行返回”>”,然后开始接收串口数据
当数据长度满length时发送数据。
如果未建立连接或连接被断开,返回ERROR
如果数据发送成功,返回 SEND OK
说明:<id>:需要用于传输连接的id
<length>:数字参数,表明发送数据的长度,最大长度为2048

此时连接已建立,可以进行数据的双向收发。
完整的Word格式文档51黑下载地址:
ESP8266入门调试指导(补全).doc (621.12 KB, 下载次数: 84)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:237723 发表于 2018-11-13 08:17 | 只看该作者
写的很详细 赞一个!!!
回复

使用道具 举报

板凳
ID:87000 发表于 2019-3-19 23:11 | 只看该作者
非常好,就是黑比贵
回复

使用道具 举报

地板
ID:501991 发表于 2019-4-21 11:16 | 只看该作者
哇,这个真的写的非常详细了,网上也有很多教程,但没有这个步骤这么详细,就像那个波特率需要设置成115200还有“发送新行”就快把我这个小白卡死了。
本来还打算自己写一篇介绍ESP8266的方法,没想到这里的这么详细。
支持一下!
回复

使用道具 举报

5#
ID:92556 发表于 2021-5-30 13:24 来自手机 | 只看该作者
西点钟灵毓秀 发表于 2019-3-19 23:11
非常好,就是黑比贵

不要做伸手党,51黑的币是这么多电子论坛中最容易获取的,,,
回复

使用道具 举报

6#
ID:911035 发表于 2021-6-2 08:45 | 只看该作者
写的很详细 赞一个!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表