# 应用示例

本文将详细介绍:如何更新 AT 应用程序固件;如何实现工作模式切换;如何开启模块 WiFi 功能的不同工作模式;以及如何建立 Socket 连接并通信等功能。

#软件准备

#工作模式切换

#AT指令模式切换至透传模式

AT 指令模式时,用户串口输入指令:AT+CIPSENDRAW\r,返回: OK, 即可退出 AT 指令模式,进入数据透传模式。

#透传模式切换至 AT 指令模式

透传模式时,用户串口输入指令:+++,返回: OK,即可退出透传模式,进入 AT 指令模式。

具体指令输入情况,如下图所示。

#WiFi功能用例

#启动AP模式

在 AT 指令模式下,通过 “用户串口” 输入以下指令,实现模块启动 Soft_AP 模式,步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

进入 AT 指令模式

+++

OK

2

设置模块 Soft_AP 名称并启动

AT+WSAP=MXCHIP,12345678\r

OK

3

查询 Soft_AP 是否成功建立

AT+WSAPS\r

+WSAPS:AP_UP\r\nOK

4

查询 模块 IP 地址

AT+WSAPIP?\r

WSAPIP:10.10.10.1,255.255.255.0,10.10.10.1

AP 模式设置串口工具log输出如下图所示:

#启动STATION模式

在 AT 指令模式下,通过 “用户串口” 输入以下指令,实现模块启动 STATION 模式,步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置模块接入的 AP 名称和密码

AT+WJAP=SWYANG,yangbatian2015\r

OK

2

查询是否成功连接该 AP

AT+WJAPS\r

+WJAPS:CONNECTED\r\nOK

3

查看模块的 IP 地址

AT+WJAPIP?\r

+WJAPIP:192.168.31.67,255.255.255.0,192.168.31.1

Station模式设置串口log输出如下图所示:

#AT透传固件OTA更新

进入 AT 指令模式,设备需首先连接至 AP, 保证可联网通信,然后通过发送 OTA 查询和更新的 AT 指令进行在线固件更新。具体步骤及指令如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

进入 AT 指令模式

+++

OK

2

重启模块

AT+REBOOT\r

OK

3

设置模块STATION模式,及接入的AP信息

AT+WJAP=Xiaomi.Router,stm32f215\r

OK

+WEVENT:STATION_UP

4

查询云端可更新的 AT 固件版本

AT+OTACHECK\r

+OTACHECK:fog_v3_AT_v2.0.3

, OK

5

开始更新指定版本号的 AT 固件

AT+OTASTART=fog_v3_AT_v2.0.3

OK

,继而出现通知信息:+OTAEVENT:START

, +OTAEVENT:SUCCESS

,然后重启,出现: +WEVENT:STATION_UP

具体步骤参考下图内容:

#Socket通信用例

#TCP服务器端

#AP模式下,模块做TCP服务器

模块在 Soft_AP 模式下,做为 TCP 服务器,与 PC 端的 TCP 客户端之间建立一个 TCP 连接并通信。 步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启Soft_AP模式

AT+WSAP=jenny,12345678\r

OK

2

查询模块 IP 地址

AT+WSAPIP?\r

+WSAPIP=10.10.10.1,255.255.255.0,10.10.10.1

3

PC 连接到模块启动的 AP

PC端 Wlan 列表找到AP:jenny

,并连接

成功连接

4

设置模块做 TCP Server

AT+CIPSTART=0,tcp_server,8080\r

OK

5

PC 起 TCP 客户端并连接

目标IP:10.10.10.1,目标端口:8080,不指定本地端口

连接成功.+CIPEVENT=CLIENT,CONNECTED,10.10.10.2,54849

6

AT指令模式下,模块通过串口向TCP客户端发数据

AT+CIPSEND=0,54849,5\r12345

TCP客户端接收区收到:12345

7

AT指令模式下,TCP客户端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则需输入指令:AT+CIPRECV=0,54849\r

进行数据接收

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令进行数据接收.

模块串口接收到:1234567890

8

透传模式下,模块通过串口向 TCP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端TCP客户端接收到:abcdefghijklmn

9

透传模式下,TCP 客户端发送数据至模块串口

TCP客户端发送区输入数据:1234567890

模块串口接收到:1234567890

PC端利用TCP/UDP测试软件创建TCP客户端,如下图:

TCP/UDP测试软件工作区如下:

串口调试软件的数据接收工作区信息如下:


#STATION模式下,模块做TCP服务器

模块在 STATION 模式下,做 TCP 服务器,建立一个 TCP 连接,并通信。具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启STATION模式

AT+WJAP=William Xu,mx099555\r

OK

2

查询模块的IP地址

AT+WJAPIP?\r

+WSAPIP=10.0.1.45,255.255.255.0,10.10.10.1

3

模块设置TCP SERVER参数

AT+CIPSTART=0,tcp_server,8080\r

OK

4

PC端 起tcp 客户端

PC WLAN 连接到 Willam Xu,TCP/UDP调试工具起一个TCP client,目标IP: 10.0.1.45, 端口号:8080,并连接

连接成功.+CIPEVENT=CLIENT,CONNECTED,10.0.1.41,53594

5

AT指令模式下,模块通过串口向TCP客户端发数据

AT+CIPSEND=0,53594,5\r12345

TCP客户端接收区收到:12345

6

AT指令模式下,TCP客户端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=0,53594\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 TCP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端TCP客户端接收到:abcdefghijklmn

8

透传模式下,TCP客户端发送数据至模块串口

TCP客户端发送区输入数据:1234567890

模块串口接收到:1234567890

PC端利用TCP/UDP测试软件创建TCP客户端,如下图:

TCP/UDP测试软件工作区:

右侧为串口调试软件的数据接收工作区。


#TCP客户端

当需要模块做 TCP 客户端,并创建 TCP 链接,进行 TCP 通信时,可参考如下步骤:

#AP模式下,模块做TCP客户端

AP 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启Soft_AP模式

AT+WSAP=jenny,12345678\r

OK

2

PC连接到 AP,并获取IP地址

PC端 Wlan 连接至jenny

; PC端打开cmd.exe,输入指令:ipconfig

成功连接jenny,PC的IP 地址:10.10.10.2

3

设置模块做 tcp client 的参数

AT+CIPSTART=1,tcp_client,10.10.10.2,20001\r

OK

4

PC起 TCP 服务器并自动连接

设置本机port端口号:20001

与模块的 tcp client 自动连接成功.+CIPEVENT:1,SERVER,CONNECTED

5

AT指令模式下,模块通过串口向TCP客户端发数据

AT+CIPSEND=1,5\r12345

TCP客户端接收区收到:12345

6

AT指令模式下,TCP客户端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 TCP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端TCP客户端接收到:abcdefghijklmn

8

透传模式下,TCP客户端发送数据至模块串口

TCP客户端发送区输入数据:1234567890

模块串口接收到:1234567890

PC端利用TCP/UDP测试软件创建一个TCP服务器,与模块TCP客户端进行通信,具体情况请参考下图。

TCP/UDP测试软件工作区如下图:

串口调试软件的数据收发工作区如下图:


#STATION模式下的TCP客户端

在 STATION 模式下,模块做 TCP 客户端,建立一个TCP连接,并通信。具体步骤如下:

注意:请确保当前id的连接为断开状态,再进行设置,否则,会报错。

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启STATION模式,等待连接成功

AT+WJAP=Willam Xu,mx099555\r

OK

+WEVNET:STATION UP

2

PC连接到 Willam Xu,并获取IP地址

PC端 Wlan 连接至Willam Xu

; PC端打开cmd.exe,输入指令:ipconfig

成功连接Willam Xu,PC的IP 地址:10.0.1.45

3

设置模块做 tcp client 的参数

AT+CIPSTART=1,tcp_client,10.0.1.48,20001\r

OK

4

PC起 TCP 服务器并自动连接

设置本机port端口号:20001

与模块的 tcp client 自动连接成功。+CIPEVENT:1,SEVER,CONNECTED

5

AT指令模式下,模块通过串口向TCP服务端发数据

AT+CIPSEND=1,5\r12345

TCP服务端接收区收到:12345

6

AT指令模式下,TCP服务端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 TCP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端TCP客户端接收到:abcdefghijklmn

8

透传模式下,TCP客户端发送数据至模块串口

TCP客户端发送区输入数据:1234567890

模块串口接收到:1234567890

利用TCP/UDP测试软件创建一个TCP服务器,与模块的TCP客户端进行通信,具体情况如下图。

PC端TCP/UDP测试软件数据收发工作区:

串口调试软件数据收发工作区:


#UDP广播

当需要模块做 UDP 广播(服务器端),并发 UDP 广播信息时,可参考以下步骤。

#AP模式下的UDP广播

在 AP 模式下,模块建立一个UDP广播服务(服务器端),发 UDP 广播信息。具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启Soft_AP模式

AT+WSAP=jenny,12345678\r

OK

2

PC连接到 AP,并获取IP地址

PC端 Wlan 连接至jenny

; PC端打开cmd.exe,输入指令:ipconfig

成功连接jenny,PC的IP 地址:10.10.10.2

3

设置模块 UDP 广播服务的参数

AT+CIPSTART=2,udp_broadcast,10.10.10.255,20001,4001\r

OK

返回通知 +CIPEVENT:2,UDP,CONNECTED

4

PC起 UDP 客户端并连接

设置目标 Port 端口号:4001,本机端口号:20001

与模块的自动连接成功.

5

AT指令模式下,模块通过串口向 UDP 服务器端发数据

AT+CIPSEND=2,5\12345

TCP客户端接收区收到:12345

6

AT指令模式下,UDP 客户端向模块串口发数据

1. 发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 UDP 服务器发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端 UDP 客户端接收到:abcdefghijklmn

8

透传模式下,UDP 客户端发送数据至模块串口

UDP 客户端发送区输入数据:1234567890

模块串口接收到:1234567890

在PC端利用TCP/UDP测试软件创建一个UDP广播连接,与模块进行UDP通信,具体情况请参考。

PC端 UDP 连接创建如下:

PC端TCP/UDP测试软件数据收发工作区:

串口调试软件数据收发工作区。

#STATION模式下的UDP广播

在 STATION 模式下, 建立一个UDP服务端,模块发 UDP 广播信息。具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启STATION模式,等待连接成功

AT+WJAP=MX,88888880\r

OK

+WEVNET:STATION UP

2

PC连接到 Willam Xu,并获取IP地址

PC端 Wlan 连接至MX

; PC端打开cmd.exe,输入指令:ipconfig

成功连接Willam Xu,PC的IP 地址:192.168.100.118

3

设置模块做 UDP 服务器端 的参数

AT+CIPSTART=2,udp_broadcast,192.168.100.255,20001,4001\r

OK

4

PC起 UDP 客户端并连接

设置目标 port 端口号:4001,本机端口号:20001

与模块的udp广播连接成功。+CIPEVENT:2,UDP,CONNECTED

5

AT指令模式下,模块通过串口向 UDP 客户端发数据

AT+CIPSEND=2,5\r12345

TCP客户端接收区收到:12345

6

AT指令模式下,UDP 客户端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 UDP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端 UDP 客户端接收到:abcdefghijklmn

8

透传模式下,UDP 客户端发送数据至模块串口

UDP 客户端发送区输入数据:1234567890

模块串口接收到:1234567890

在PC端利用TCP/UDP测试软件创建一个UDP广播连接,与模块进行UDP通信,具体情况请参考。

PC端创建 UDP 客户端 如下:

PC端TCP/UDP测试软件数据收发工作区:

串口调试软件数据收发工作区:

#UDP单播

当需要模块做 UDP 单播(服务端),并发 UDP 单播信息时,可参考以下步骤。

#AP模式下的UDP单播

在WiFi AT指令模式下,AP 模式下建立一个UDP客户端,模块发 UDP 单播信息。具体步骤如下(以链接 1 为例,链接 2 方法相同):

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启Soft_AP模式

AT+WSAP=jenny,12345678\r

OK

2

PC连接到 AP,并获取IP地址

PC端 Wlan 连接至jenny

; PC端打开cmd.exe,输入指令:ipconfig

成功连接jenny,PC的IP 地址:10.10.10.2

3

设置模块 UDP 广播服务的参数

AT+CIPSTART=3,udp_unicast,10.10.10.1,20003,4003\r

OK

4

PC起 UDP 客户端并连接

设置目标 Port 端口号:20003,本机端口号:4003

与模块的自动连接成功.+CIPEVENT:2,UDP,CONNECTED

5

AT指令模式下,模块通过串口向 UDP 服务器端发数据

AT+CIPSEND=2,5\r12345

TCP客户端接收区收到:12345

6

AT指令模式下,UDP 客户端向模块串口发数据

1. 发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 UDP 服务器发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端 UDP 客户端接收到:abcdefghijklmn

8

透传模式下,UDP 客户端发送数据至模块串口

UDP 客户端发送区输入数据:1234567890

模块串口接收到:1234567890

PC端创建 UDP 单播连接如下:

PC端TCP/UDP测试软件数据收发工作区:

串口调试软件数据收发工作区:

#STATION模式下的UDP单播

在WiFi AT指令模式下,STATION 模式下建立一个UDP客户端,模块发 UDP 单播信息。具体步骤如下(以链接 1 为例,链接 2 方法相同):

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置并开启STATION模式,等待连接成功

AT+WJAP=MX,88888880\r

OK

+WEVNET:STATION UP

2

PC连接到 Willam Xu,并获取IP地址

PC端 Wlan 连接至MX

; PC端打开cmd.exe,输入指令:ipconfig

成功连接Willam Xu,PC的IP 地址:192.168.100.105

3

设置模块做 UDP 服务器端 的参数

AT+CIPSTART=3,udp_unicast,192.168.100.105,20003,4003\r

OK

4

PC起 UDP 客户端并连接

设置目标 port 端口号:4003,本机端口号:20003

与模块的udp client 自动连接成功。+CIPEVENT:3,UDP,CONNECTED

5

AT指令模式下,模块通过串口向 UDP 客户端发数据

AT+CIPSEND=3,5\r12345

TCP客户端接收区收到:12345

6

AT指令模式下,UDP 客户端向模块串口发数据

1. TCP工具发送区发送:1234567890

发送成功

2. 若模块端为非自动接收至串口,即:AT+CIPRECVCFG

设置为0,则输入指令:AT+CIPRECV=1\r

+CIPRECV:10,1234567890\r\nOK

3. 若模块端为自动接收至串口,即:AT+CIPRECVCFG

设置为1,则不需输入指令.

模块串口接收到:1234567890

7

透传模式下,模块通过串口向 UDP 客户端发数据

1. 模块串口输入指令:AT+CIPSENDRAW\r

OK

2. 串口输入:abcdefghijklmn

PC端 UDP 客户端接收到:abcdefghijklmn

8

透传模式下,UDP 客户端发送数据至模块串口

UDP 客户端发送区输入数据:1234567890

模块串口接收到:1234567890

PC端创建 UDP 单播连接如下:

PC端TCP/UDP测试软件数据收发工作区:

串口调试软件数据收发工作区:

#Easylink配网

当需要使用 Easylink配网 为模块配网时,可向模块发送AT指令,启动配网。

(目前,Easylink APP暂不支持。)

具体示例如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

不管模块处于何种工作模式

AT+SMARTSTART=1\r

+WEVENT:STATION_DOWN

,STATION 断开

2

手机打开 Easylink 配网APP,输入 ssid和key,开始配网

----

+WEVENT:STATION_UP

,配网成功

#Airkiss配网

当需要使用微信公众号的 Airkiss 为模块配网时,可向模块发送AT指令,启动配网。具体如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

仅当发送了该配置指令, Airkiss 配网后,才可发现设备

AT+SMARTCFG=gh_420af5d2de71_9b6ee2f805e286e2,gh_420af5d2de71\r

(说明:第一个参数是您的微信公众号的原始ID:original_id,第二个参数是在该公众号下创建了产品后生成的设备ID:device_id)

OK

2

启动 Airkiss 配网状态

AT+SMARTSTART=2\r

+WEVENT:STATION_DOWN

,STATION 断开

3

手机打开您的微信公众号 或 扫描下方配网二维码,进入Airkiss配网页面,输入 ssid和key,开始配网

----

+WEVENT:STATION_UP

,配网成功,且APP端列表发现设备:米客鹿

Airkiss 配网 测试二维码:

#获取SNTP时间

当需要模块获取 网络同步时间时,可向模块发送 AT 指令,获取 SNTP 时间。

提示:若要获取网络时间,前提是 模块必须连接上某路由器,要么启用 STATION 模式,要么 Easylink 配网成功,要么 Airkiss 配网成功,即处于 STATION_UP 状态。

具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

模块连接路由器

启动STATION工作模式或配网

+WEVENT=STATION_UP

2

配置SNTP时区和服务器域名

AT+SNTPCFG=+8,cn.ntp.org.cn,pool.ntp.org\r

OK

3

获取 SNTP 时间

AT+SNTPTIME\r

+SNTPTIME:2017-09-05T14:33:05.022320

\r\n OK

#获取RTC时间

当需要模块获取模块的 RTC 时间时,可向模块发送 AT 指令,获取 RTC 时间。

具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

当未做 SNTP 时间同步时,获取的 RTC 时间是:从 1970年1月1日0时0分0秒开始计时的系统运行时间

AT+RTCGET\r

+RTCGET:1970-01-01T00:01:00.028856

\r\n OK

2

当做过 SNTP 时间同步后,获取的 RTC时间是:当前指定时区的标准时间。

AT+RTCGET\r

如: +RTCGET:2017-09-05T14:33:05.022320

\r\n OK

3

当系统掉电时,RTC 时间不保存,会恢复至初始时间:1970年1月1日0时0分0秒,直到再次上电时才从该初试时间重新开始计时

AT+RTCGET\r

+RTCGET:1970-01-01T00:01:00.090555

\r\n OK

#AT指令局域网控制

以下讲解如何通过 UDP通信,实现模组AT指令控制功能。

具体步骤如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

设置模组AT局域网控制参数,

即:设置查询端口和秘钥

1)AT+SEARCHPORT=1000\r

2)AT+SEARCHKEY=assic,1234567\r

+OK

+OK

2

模组连接路由器

并获取IP地址

1)AT+WJAP=TP-LINK_5A75,12345678\r

2)AT+WJAPIP?\r

+WEVENT:STATION_UP

+WJAPIP:192.168.1.100,255.255.255.0,192.168.1.1,202.96.209.133

3

打开SSCOM串口调试助手

设置UDP参数,并启动连接

1)端口号:UDP

2)远程ip地址:192.168.1.100

3)端口号:1000

4)点击“连接”,如右图

4

SSCOM 通过UDP向模组发送秘钥,启动AT指令局域网控制模式。

SSCOM中向模组发送123456,参数设置如右图

接收到模组返回的 IP、MAC、Module等信息

5

SSCOM通过UDP向模组发送AT控制指令

SSCOM中,向模组发送AT指令,如右图

(请在秘钥发出后的 60秒内进行AT指令控制,60秒后需重新发送秘钥。)

#MQTT协议通信用例

#和mqtt测试服务器通信

以下讲解:模组如何通过AT指令,实现与mqtt测试服务器通信,来说明模组的MQTT AT指令如何使用。

MQTT测试服务器地址:http://www.emqx.io/online-mqtt-client#/recent_connections (opens new window),通过添加一个新连接(New Connection),设置mqtt参数,实现发布和订阅测试。

具体实现步骤如下表:

序号

步骤

发送指令(或操作)

返回 (或现象)

1

模组连接路由器

AT+WJAP=TP-LINK_5A75,12345678\r

+WEVENT:STATION_UP

2

mqtt测试服务器启动新连接

进入服务器地址,配置参数并连接如图

创建新mqtt连接页,如图

3

设置模组

MQTT参数,

启动MQTT连接

依次发送:

AT+MQTTCID=mqttx_a6c61d311\r

AT+MQTTAUTH=yhb,123456\r

AT+MQTTSOCK=broker.emqx.io,1883\r

AT+MQTTCAVERIFY=OFF,OFF\r

AT+MQTTSSL=OFF\r

AT+MQTTRECONN=OFF\r

AT+MQTTAUTOSTART=OFF\r

AT+MQTTSTART\r

依次返回:

OK

OK

OK

OK

OK

OK

OK

MQTTEVENT:CONNECT,SUCCESS

3

设置模组

发布topic

AT+MQTTPUB=testtopic/yhb-pub,0\r

OK

4

设置mqtt测试服务器订阅 topic

设置步骤,如图:

订阅topic,创建完成,如图:

5

模组发布数据

服务器订阅数据

AT+MQTTSEND=9\r123456789

订阅topic接受数据,如图:

说明:蓝色标出内容为心跳包和注册包内容,可参见指令说明

6

设置mqtt测试服务器 发布topic

见图中红色位置标注:

备注:

需与模组的 订阅topic一致

7

设置模组订阅topic

AT+MQTTSUB=0,testtopic/yhb-sub,0\r

OK

8

服务器发布数据

模组订阅数据

模组串口接收,如图

+MQTTEVENT:0,SUBSCRIBE,SUCCESS

+MQTTRECV:0,20,{

"msg": "hello"

}

#和庆科Fog云实现mqtt通信

以下讲解如何通过AT指令,实现设备与 Fog 云服务器之间的 MQTT 通信,包括:MQTT 连接建立,订阅主题,与发布数据。

说明: Fog云服务器不需要验证证书,需要 SSL 加密。

序号

步骤

发送指令(或操作)

1

连接路由器

AT+WJAP=ssid,password\r

返回

OK

+WEVNET:STATION UP

2

使能事件推送功能

AT+MQTTEVENT=ON\r

返回

OK

3

设置MQTT用户名和密码

AT+MQTTAUTH=6618fdda2a4f11e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164, ibV/zzpOyHKDUVH4EEXK7RoZtJHp6GTj6fazxst2+k4=\r

返回

OK

4

设置主机和端口号

AT+MQTTSOCK=6618fdda2a4f11e7a554fa163e876164.mqtt.iot.gz.baidubce.com,1884\r

返回

OK

5

关闭MQTT证书验证

AT+MQTTCAVERIFY=OFF,OFF\r

返回

OK

7

使能SSL加密

AT+MQTTSSL=ON\r

返回

OK

8

设置客户端标识符

AT+MQTTCID=77a0853e3a1a11e7a554fa163e876164\r

返回

OK

9

设置MQTT心跳周期

AT+MQTTKEEPALIVE=30\r

返回

OK

10

使能MQTT自动重连功能

AT+MQTTRECONN=ON\r

返回

OK

11

使能MQTT上电自动连接功能

AT+MQTTAUTOSTART=ON\r

返回

OK

12

启动MQTT服务

AT+MQTTSTART\r

返回

OK

+MQTTEVENT:CONNECT,SUCCESS

13

订阅主题

AT+MQTTSUB=0,6618fdda2a4f11e7a554fa163e876164/df358c1a348611e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164/status/json,0\r

返回

+MQTTEVENT:0,SUBSCRIBE,SUCCESS

14

发布设置

AT+MQTTPUB=6618fdda2a4f11e7a554fa163e876164/df358c1a348611e7a554fa163e876164/77a0853e3a1a11e7a554fa163e876164/status/json,0\r

返回

OK

15

发布数据

AT+MQTTSEND=6\r

,返回 >

后,输入数据:123456

返回

+MQTTEVENT:PUBLISH,SUCCESS

, 同时接收到订阅的相同主题返回的数据: +MQTTRECV:0,6,123456

16

取消订阅主题

AT+MQTTUNSUB=0\r

返回

OK

+MQTTEVENT:0,UNSUBSCRIBE,SUCCESS

17

关闭MQTT服务

AT+MQTTCLOSE\r

返回

OK

+MQTTEVENT:CLOSE,SUCCESS

#和亚马逊aws云实现mqtt通信

以下讲解如何通过 MQTT 通信 AT指令,实现设备与 AWS 云服务器之间的 MQTT 通信。该服务器要求进行证书验证,因此与 Fog 通信相比,多了 3 个证书验证指令。 具体过程如下,包括:MQTT 连接建立,订阅主题,发布数据。

说明:

1.由于亚马逊提供的是付费服务,这里仅提供完整的使用流程,并不提供真实的用户名、密码及证书。

2.需用户根据具体的产品或项目,在亚马逊上注册服务,获取相关的用户名、密码和证书等。点此进入亚马逊aws官网 (opens new window)

3.用户在实际传递证书时,必须在证书的末尾追加Ctrl+Z (ASCII码是0x1A,不属于证书的一部分),作为证书传递结束的标志,此时模块会将证书存入flash。

序号

步骤

发送指令(或操作)

返回(或现象)

1

连接路由器

AT+WJAP=ssid,password\r

OK

+WEVNET:STATION UP

2

使能事件推送功能

AT+MQTTEVENT=ON\r

OK

3

设置MQTT用户名和密码

AT+MQTTAUTH=UserName,PassWord\r

OK

4

设置主机和端口号

AT+MQTTSOCK=a1lqshc4oegz64.iot.us-west-2.amazonaws.com,8883\r

OK

5

使能MQTT证书验证

AT+MQTTCAVERIFY=ON,ON\r

OK

6

传递服务器根证书

AT+SSLCERTSET=0\r

OK

7

发送服务器根证书文件内容

服务器根证书文件内容

OK

8

传递客户端证书

AT+SSLCERTSET=1\r

OK

9

发送客户端证书文件内容

客户端证书文件内容

OK

10

传递客户端私钥

AT+SSLCERTSET=2\r

OK

11

发送客户端私钥文件内容

客户端私钥文件内容

OK

12

使能SSL加密

AT+MQTTSSL=ON\r

OK

13

设置客户端标识符

AT+MQTTCID=MiCO\r

OK

14

设置MQTT心跳周期

AT+MQTTKEEPALIVE=10\r

OK

15

关闭MQTT自动重连功能

AT+MQTTRECONN=OFF\r

OK

16

使能MQTT上电自动连接功能

AT+MQTTAUTOSTART=ON\r

OK

17

启动MQTT服务

AT+MQTTSTART\r

OK

+MQTTEVENT:CONNECT,SUCCESS

18

订阅主题0

AT+MQTTSUB=0,$aws/things/myLight/shadow/delete/accepted,1\r

OK

+MQTTEVENT:0,SUBSCRIBE,SUCCESS

19

订阅主题1

AT+MQTTSUB=1,$aws/things/myLight/shadow/update/delta,0\r

OK

+MQTTEVENT:1,SUBSCRIBE,SUCCESS

20

订阅主题2

AT+MQTTSUB=2,$aws/things/myLight/shadow/update,0\r

OK

+MQTTEVENT:2,SUBSCRIBE,SUCCESS

21

发布设置

AT+MQTTPUB=$aws/things/myLight/shadow/update,0\r

OK

22

发布数据

AT+MQTTSEND=6\r

,返回 >

后,输入数据:  123456

+MQTTEVENT:PUBLISH,SUCCESS

, 同时接收到订阅的相同主题返回的数据: +MQTTRECV:2,6,123456

23

取消订阅主题1

AT+MQTTUNSUB=1\r

OK

+MQTTEVENT:1,UNSUBSCRIBE,SUCCESS

24

关闭MQTT服务

AT+MQTTCLOSE\r

OK

+MQTTEVENT:CLOSE,SUCCESS

#HTTP协议通信用例

以下讲解如果通过AT指令,构建HTTP连接,并通信。

序号

步骤

发送指令(或操作)

返回 (或现象)

1

连接路由器

AT+WJAP=TP-LINK_5A75,12345678\r

+OK

+WEVENT:STATION_UP

2

设置服务器域名

AT+HTTPSV=www.baidu.com,80,0\r

+OK

3

设置HTTP请求方法

AT+HTTPREQ=GET\r

+OK

4

设置HTTP请求路径

AT+HTTPPATH=/index.html\r

+OK

5

设置HTTP超时时间

AT+HTTPTIMEOUT=5\r

+OK

6

设置HTTP请求header

AT+HTTPHEADER=?\r

+HTTPHEADER:Accept:text/html

Accept-Language:zh-CN

User-Agent:Mozilla/5.0

Connection: Keep-Alive

OK

7

设置HTTP发送数据

AT+HTTPSEND=10\r1234567890

返回http页面数据信息

开始数据接收(截图)

结束数据接收(截图)

8

进入HTTP透传模式

AT+HTTPSENDRAW

无返回

9

透传模式发HTTP请求

SSCOM中发送任意字符串,如图:

返回http页面数据信息

具体见第7步中,返回截图

10

退出HTTP透传模式

待HTTP数据接收完成后,

发送+++,返回AT指令模式

+OK

#EMW3239 BT蓝牙通信实例

当在 EMW3239 模块上实现蓝牙连接与透传功能时,具体指令配置如下:

序号

步骤

发送指令(或操作)

返回(或现象)

1

查询 3239 蓝牙设备名称

AT+BTNAME=?\r

+BTNAME:MXCHIP_BT123456 \r\n OK

2

查询 3239 蓝牙配对秘钥

AT+BTPASSKEY=?\r

+BTPASSKEY:123456 \r\n OK

3

开启蓝牙可发现可连接模式

AT+BTDISCOVERY=ON\r

OK

4

开始监听蓝牙事件

AT+BTEVENT=ON\r

OK

5

查询当前蓝牙状态

AT+BTSTATE?\r

+BTSTATE:DISCOVERABLE \r\n OK

 ---处于蓝牙待连接状态

5

打开手机蓝牙功能,并与蓝牙设备配对

手机蓝牙设备列表中找到  MXCHIP_123456

,点击,输入配对秘钥,开始配对

成功配对

6

连接蓝牙设备

打开手机蓝牙串口 APP, 并连接3239蓝牙设备

+BTEVENT:CONNECTION,ON

--处于已连接成功状态

7

AT指令模式下,3239 蓝牙设备与手机APP端通信

设备通过指令发送数据给手机APP端,发送指令: AT+BTSEND=10\r

>

返回  > 后, 紧接着1分钟内,发送指定长度的数据内容,如:1234567890

OK

手机蓝牙串口 APP 端,发送数据给 3239 蓝牙设备 ,如:12345

OK

8

BT 透传模式下,3239 蓝牙设备与手机APP端通信

设备由AT指令模式切换至BT透传模式,发送指令: AT+BTSENDRAW\r

OK

设备直接发送数据给手机APP:1234567890

APP接收到数据:1234567890

手机APP直接发送数据给设备:12345

APP接收到数据:12345

更新时间: 2023/11/29 13:52:34