YFROBOT创客社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 22334|回复: 3

ESP8266 AT指令控制二、ESP8266 AP模式下与手机、电脑数据通信测试

[复制链接]

签到天数: 866 天

[LV.10]以坛为家III

发表于 2016-3-16 16:39:02 | 显示全部楼层 |阅读模式
本次测试将使用手机或者电脑和ESP模块进行数据通信。(是手机或电脑直接连接ESP wifi模块)本人电脑没有无线功能,所以一下测试以手机为例!
首先下载并安装相应软件:手机 app - 网络调试助手:
                                          电脑端串口软件:
电脑端测试软件(本文中没做测试,测试方法和手机相同,可以参考)也给出,想用电脑测试的下载安装这个 - 调试助手:
模块通过FT232(USB串口设备)连接至电脑,这样我们可以通过串口软件观察数据通信!
1、手机做客户端-client,模块做服务端-server
首先配置模块为服务端:
AT+CWMODE=2                                                                 将模块配置到 AP 模式
AT+CWSAP="YFRobot_ESP","12345678",11,0
                  设置模块 AP 模式下的参数
    YFRobot_ESP      ----    接入点名称
    12345678           ----    密码
    11                       ----    通道号  (通道修改后需要+RST重启模块)
    0                         ----    加密模式  0 - OPEN 1 - WEP 2 - WPA_PSK 3 - WPA2_PSK 4 - WPA_WPA2_PSK
AT+CIFSR                                                                           查询当前设备IP               
    +CIFSR:APIP,"192.168.4.1"
    +CIFSR:APMAC,"1a:fe:34:99:9a:c1"
    +CIFSR:STAIP,"192.168.1.110"
    +CIFSR:STAMAC,"18:fe:34:99:9a:c1"
AT+CIPMUX=1                                                                    启动多路连接模式(最多接入5个设备 id:0~4)
AT+CIPSERVER=1,5000                                                     开启server,client接入会自动按顺序占用一个连接。
注:AT+CIPMUX=1 情况下才能开启服务器。
前两条AT指令,配置一次即可,模块重启不会改变,第三条为查询指令;也就是说当模块下次重启时,只需配置最后两条AT指令!

至此,这样就配置好模块了,下面用手机连接到该模块,这个应该都会吧,打开无线网,搜索到该模块(上面设置的接入点名称),点击连接,如下图:
可用AT指令 查询已连入的设备
AT+CWLIF                                               查询已连入设备
    192.168.4.2,38:bc:1a:c7:18:47 -- 返回 IP 地址,MAC 地址

安装完APP 后,打开软件 按下图步骤操作(本人手机系统5.1):


可连接成功后,可以通过下面的AT指令查询连接状态:
AT+CIPSTATUS                                        查询连接状态
    STATUS:3
    +CIPSTATUS:0,"TCP","192.168.4.2",36594,1  
参数
    0  --  连接的 id 号 (范围 0~4)
    TCP -- 连接类型
    192.168.4.2  -- IP地址
    36594 -- 端口号
    1 -- 本模块做 server 的连接(0 -- client)

ESP模块做为服务端想要给手机客户端发送数据,必须申请(不然不知道发给谁了):
AT+CIPSEND=0,15                                  申请发送15个字符数据 至 0 号客户端(客户端号按连接顺命名)
请求成功后,会显示符号“>”,这时直接发送已申请大小的数据即可:
hello client-0!
注:若输入数据大小大于申请大小,则数据不能完整发送
      若输入数据大小小于申请大小,则等待输入数据输入满大小才进行发送


注:UDP模式下手机做客户端client,数据通信没有成功,具体原因不清楚

-------------------------------分割线------------------------------------------------------

2、模块做客户端-client,手机做服务端-server

wifi连接不变按照上面的步骤连接即可,然后手机端开启服务,模块连接手机!连接完成,即可进行数据通信,具体操作如图:

以下不同情况,都可参照上图操作顺来测试,模块配置指令略有不同!
模块配置指令如下:
TCP 连接 -----
单路连接
AT+CIPMUX=0                                                         单路连接设置(只有当连接都断开才可更改,可先AT+RST)
AT+CIPSTART="TCP","192.168.4.2",5000              建立 TCP 连接(类型,IP,端口号由手机开启服务决定,上图可见)
AT+CIPSEND=17                                                     申请发送字符大小,回显字符 ">"
hello tcp server!                                                        发送申请大小的字符串
手机端成功接收字符串:“hello tcp server!”   手机发送字符,ESP也同样可以接收到!
多路连接
AT+CIPMUX=1                                                         多路连接设置(只有当连接都断开才可更改,可先AT+RST)
AT+CIPSTART=0,"TCP","192.168.4.2",5000           建立 TCP 连接(和单路区别,需要参数 ID 号,范围0~4
AT+CIPSEND=0,17                                                  申请发送字符大小,回显字符 ">"
hello tcp server!                                                        发送申请大小的字符串
手机端成功接收字符串:“hello tcp server!”   手机发送字符,ESP也同样可以接收到!
UDP连接  -----
单路连接
AT+CIPMUX=0                                                         多路连接设置(只有当连接都断开才可更改,可先AT+RST)
AT+CIPSTART="UDP","192.168.4.2",5000              建立 UDP 连接
AT+CIPSEND=17                                                    申请发送字符大小,回显字符 ">"
hello udp server!                                                      发送申请大小的字符串
手机端成功接收字符串:“hello udp server!”  手机发送字符,ESP也同样可以接收到!
多路连接
AT+CIPMUX=1                                                         多路连接设置(只有当连接都断开才可更改,可先AT+RST)
AT+CIPSTART=0,"UDP","192.168.4.2",5000           建立 UDP 连接(和单路区别,需要参数 ID 号,范围0~4
AT+CIPSEND=0,17                                                 申请发送字符大小,回显字符 ">"
hello udp server!                                                      发送申请大小的字符串
手机端成功接收字符串:“hello udp server!”  手机发送字符,ESP也同样可以接收到!


UDP连接,AT+CIPSTART指令还有两个参数:
AT+CIPSTART=<id>,<type>,<addr>,<port>,<local port>,<mode>
<id> 0-4 连接的id号
<type> 字符串参数,表明连接类型
    ”TCP”建立TCP连接
    ”UDP”建立UDP连接
<addr> 字符串参数,远程服务器IP地址
<port> 远程服务器端口号
[<local port>] UDP传输时,设置本地端口
[<mode>] 0:收到数据后,不更改远程目标

                 1:收到数据后,改变一次远程目标
                 2:收到数据后,改变远程目标
最后两个参数只在UDP模式下有用,亲测有用。

----------------------------------------------------分割线-------------------------------------------------------------------------

注意:
1、发送数据时,数据结尾最好不带带回车换行,以防模块误判(AT指令结尾需要回车换行)
2、UDP连接完成后,手机端不弹出已连接的端口,也无法正常发送数据给模块(显示未连接);待模块发送一串数据后,手机端才出现已连接的端口并接收数据,然后才正常发送数据。

第二点和TCP 连接不同,不知道是否是 UDP 连接的原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

签到天数: 866 天

[LV.10]以坛为家III

 楼主| 发表于 2016-3-16 16:39:18 | 显示全部楼层
本帖最后由 AllBlue 于 2016-3-16 16:40 编辑

这里是网上对于TCP/IP的一些理解:
TCP/IP、TCP 和 UDP
TCP/IP协议是一个协议簇,里面包括很多协议的,UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。
TCP/IP协议集包括应用层,传输层,网络层,网络访问层。TCP和UDP协议属于传输层协议。
TCP(Transmission Control Protocol):为典型的传输大量数据或需要接收数据许可的应用程序提供连接定向和可靠的通信。
UDP(User Datagram Protocol):提供无连接的通信,并不保证数据包被发送到。典型的即时传输少量数据的应用程序使用UDP。应该说可靠的发送是应用程序的责任。
区别 wifi  和 TCP/IP
wifi是建立连接、进行通讯的手段,它对应一套通讯的规则,保证让两个节点能互相传输数据;
TCP/IP协议簇,可以通过wifi来实现,它处于较高的层级,TCP/IP在发送和接收数据时会调用底层(比如wifi的物理层)来具体实现。
类似于wifi的、能跑TCP/IP协议通讯的底层比如还有:RS-232串口、以太网、USB、等等。
TCP/IP协议是门学问,每一个分支都是一个很复杂的流程,有兴趣可以自行了解一番。
有疑问的可以看看,便于大家理解,都是网上的资料!
回复 支持 1 反对 0

使用道具 举报

签到天数: 22 天

[LV.4]偶尔看看III

发表于 2019-5-7 16:30:20 | 显示全部楼层
复杂的流程,有兴趣
回复 支持 反对

使用道具 举报

签到天数: 1 天

[LV.1]初来乍到

发表于 2020-1-16 17:20:48 | 显示全部楼层
UDP无连接,类似广播的形式,只有被叫到的人才答应,我是这么理解的
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|联系我们|YFROBOT ( 苏ICP备20009901号-2  

GMT+8, 2024-4-19 07:37 , Processed in 0.050184 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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