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

软件准备

工作模式切换

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

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

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

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

具体指令输入情况,如下图所示。
工作模式切换.png
atcipsendraw.png

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输出如下图所示:
WiFi功能用例-启动AP模式 (1).png
image.png

启动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输出如下图所示:
WiFi功能用例-启动AP模式 (3).png
image.png

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

具体步骤参考下图内容:
1.1 设置三元组 (4).png
image.png

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客户端,如下图:
image.png
TCP/UDP测试软件工作区如下:

image.png

串口调试软件的数据接收工作区信息如下:
TCP服务器端 (1).png
image.png


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客户端,如下图:

image.png

TCP/UDP测试软件工作区:

image.png

右侧为串口调试软件的数据接收工作区。
STATION模式下,模块做TCP服务器 (3).png
image.png


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客户端进行通信,具体情况请参考下图。

image.png

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

image.png

串口调试软件的数据收发工作区如下图:
AP模式下,模块做TCP客户端 (1).png
image.png


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客户端进行通信,具体情况如下图。

image.png

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

image.png

串口调试软件数据收发工作区:
STATION模式下的TCP客户端.png
image.png


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 连接创建如下:

image.png

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

image.png

串口调试软件数据收发工作区。
AP模式下的UDP广播.png
image.png

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 客户端 如下:

image.png

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

image.png

串口调试软件数据收发工作区:
STATION模式下的UDP广播 (1).png
image.png

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 端口号:4003,本机端口号:20003 与模块的自动连接成功.+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 单播连接如下:

image.png

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

image.png

串口调试软件数据收发工作区:
STATION模式下的UDP广播 (1).png
image.png

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 单播连接如下:

image.png

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

image.png

串口调试软件数据收发工作区:
STATION模式下的UDP单播.png
image.png

Easylink配网

当需要使用 Easylink配网 为模块配网时,可向模块发送AT指令,启动配网。具体示例如下:

序号 步骤 发送指令(或操作) 返回(或现象)
1 不管模块处于何种工作模式 AT+SMARTSTART=1\\r +WEVENT:STATION_DOWN
,STATION 断开
2 手机打开 Easylink 配网APP,输入 ssid和key,开始配网 —— +WEVENT:STATION_UP
,配网成功

1.1 设置三元组 (1).png

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端列表发现设备:米客鹿

1.1 设置三元组 (3).png
Airkiss 配网 测试二维码:

image.png

获取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

MQTT协议通信用例

1.和庆科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\\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 发布设置 AAT+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官网。 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

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