广联达筑联:工业级物联网云平台 广联达筑联:工业级物联网云平台
首页
开发侧文档
用户侧文档
首页
开发侧文档
用户侧文档
  • 平台介绍

  • 物联网平台

  • 边缘计算平台

  • 应用硬件开发平台

    • 固件开发流程
    • 使用模组开发

      • 硬件接口
      • AT指令
        • AT指令规则
        • AT 命令包含 4 种命令格式:
        • AT指令集
        • AT指令详解
          • AT
          • AT+RST
          • AT+GMR
          • AT+SYSTIMESTAMP
          • AT+CWJAP
          • AT+STAIP
          • AT+STACONNSTATUS
          • AT+GLDKEY
          • AT+MQTTCONNSTATUS
          • AT+GLDIOTSEND
          • GLDIOTREV
          • AT+SOFTVERSION
          • AT+HARDVERSION
          • AT+YMODEM
          • AT+GLDMODELINFO
          • AT+SN
        • 调试与测试
          • WIFI模组
      • 设备OTA
      • 量产相关
    • 使用SDK开发

  • API文档

  • 开发侧文档
  • 应用硬件开发平台
  • 使用模组开发
2021-11-29

AT指令

# AT指令规则

开发者在硬件产品MCU 上开发产品固件的功能时,需按照如下规则设计指令:

  • 串口配置:115200,8N1格式,UART口为3.3V-5.0V TTL电平;

  • AT命令为以字符AT开始,参数以“,”分隔以回车换行符(\r\n)结束(即CR LF或0x0D 0A);

  • 指令长度:总长度需小于1024个字符(包含AT字节头);

  • 指令与参数应由合法字符构成,包括字母、数字、下划线;

  • 当输入或输出的参数表示的是字符串需要使用[""]标定,表示数值型参数不使用[""],如果指令有特殊规定,则以该指令的规定为准;

  • 所有指令均为立即生效,无需特殊指令进行保存,运行不合法AT指令,程序会立即返回ERROR;

  • 注意,所有 AT 命令均为串行执行,每次只能执行一条命令。因此,在使用 AT 命令时,应等待上一条命令执行完毕后,再发送下一条命令。

  • 除了字符串参数,指令的其他部分不允许出现空格;

# AT 命令包含 4 种命令格式:

  1. Test Command

    示例: AT

    用途:测试命令。

  2. Query Command

    示例: AT+<x>?

    用途: 查询命令,可以返回当前参数的值,以及其他相关联的信息。

  3. Set Command

    示例: AT+<x>=<…>

    用途: 设置命令,向AT输入一些参数, 执行相应的操作。

  4. Execute Command

    示例: AT+<x>

    用途: 执行指令,该指令不带参数。

# AT指令集

AT指令可以通过串口调试助手进行输入,也可以使用编程输入。

序号 指令 描述
1 AT 测试AT串口是否通信正常;
2 AT+RST 软件重启,复位CPU;
3 AT+GMR 查看模组版本信息包括模组固件版本和硬件版本;
4 AT+SYSTIMESTAMP 查询本地时间戳,时间格式为UTC时间;
5 AT+CWMODE 查询WIFI 模式(Station/SoftAP/Station+SoftAP),模组使用的默认模式为Station模式;
6 AT+CWJAP 设置命令,设置连接的AP,模组将尝试去连接该AP; 查询命令,查询连接AP的详细信息,包括STA的MAC,连接信号强度等信息;
7 AT+STAIP 查询模组作为sta的IP,子网掩码,网段信息;
8 AT+STACONNSTATUS 查询WIFI连接状态;
9 AT+GLDKEY 烧写三元组信息到NVS永久保存,模组每次上电都会读取;
10 AT+MQTTCONNSTATUS 查看云平台连接情况;
11 AT+GLDIOTSEND 模组将来自用户设备的JSON数据发送至云端;
12 +GLDIOTREV 模组将接收到的云端数据发送给用户设备;
13 AT+SOFTVERSION 查询设置用户设备软件版本;
14 AT+HARDVERSION 查询设置用户设备硬件版本;
15 AT+YMODEM 进入Ymodem模式,准备接收OTA固件;

# AT指令详解

# AT

功能:测试AT硬件通路是否通畅。

执行命令 AT\r\n
响应 OK\r\n
说明 如果发送命令后,没有响应,请检查模组和设备之间的连线是否正常,以及模组的电压是否稳定

# AT+RST

功能:重启模组。

执行命令 AT+RST\r\n
响应 OK\r\n

# AT+GMR

功能:查看模组版本信息。

查询命令 AT+GMR?\r\n
响应 +GMR: <MOD_FW_VER>,<MOD_HARD_VER>, <MOD_COMM_TYPE>,<MOD_TYPE>,<AT_VERSION>\r\n OK\r\n
参数 MOD_FW_VER(str):模组固件版本;
MOD_HARD_VER(str):模组硬件版本。
MOD_COMM_TYPE(str):模组的通信方式 wifi/4g/… 其他:预留
MOD_TYPE(str): 模组的具体型号
AT_VERSION(str): at指令的版本号

# AT+SYSTIMESTAMP

功能:查询本地UTC时间戳。

查询命令 AT+SYSTIMESTAMP?\r\n
响应 +SYSTIMESTAMP:<Unix_timestamp>\r\n OK\r\n
参数 Unix_timestamp(num):时间戳,以1970年开始秒数。

注意:只有在连接到 MQTT后,才能确保返回参数中的时间戳是有效的。

用户需要自行判断时间的有效性,推荐判断方式: 返回参数 > 1609430400(北京时间 2021-01-01 00:00:00)即为有效。

# AT+CWJAP

功能:查询/设置模组Station连接的AP信息。该指令只对WIFI模组有效。

  1. 查询命令
查询命令 AT+CWJAP?\r\n
响应 +CWJAP:<ssid>,<bssid>,<channel>,<rssi>, <authmode>\r\n OK\r\n
参数 ssid:连接AP的名称;
bssid:模组作为STA的MAC地址;
Channel:连接的信道;
rssi:连接信号强度;
authmode:AP加密方式, 0:无加密; 1:WEP加密; 2:WPA_PSK加密; 3:WPA2_PSK加密; 4:WPA_WPA2_PSK加密; 5:WPA2_ENTERPRISE加密; 6:WPA3_PSK加密; 7:WPA2_WPA3_PSK加密。
  1. 设置命令
设置命令 AT+CWJAP=<ssid>,<pwd>\r\n
响应 OK\r\n
参数 ssid:连接AP的名称;
pwd:连接AP的密钥;
说明 设置一次即可,如果重新上电,模组会自动按照最后一次配置自动连接。

# AT+STAIP

功能:查询模组作为sta的IP,子网掩码,网段信息。

设置命令 AT+STAIP?\r\n
响应 +STAIP=<IP >,<MASK>,<GW>\r\n OK\r\n
参数 IP:分配模组的IP地址;
MASK:子网掩码;
GW:网关地址;

# AT+STACONNSTATUS

功能:查询与 IoT模组Station与AP的连接状态。

查询命令 AT+STACONNSTATUS?\r\n
响应 +STACONNSTATUS:connect\r\n OK\r\n 或 +STACONNSTATUS:disconnect\r\n OK\r\n

# AT+GLDKEY

  1. 查询命令

功能:查询三元组,如果未烧写三元组信息,调试串口将提示ERROR。

查询命令 AT+GLDKEY?\r\n
响应 +CLDKEY:<ModelID>,<DeviceID>,<DeviceToken>\r\n OK\r\n 或 ERROR\r\n
  1. 设置命令

功能:该指令应该在调试阶段或者生产阶段使用,用于烧写三元组到模组中。

设置命令 AT+GLDKEY=<ModelID>,<DeviceID>,<DeviceToken>\r\n
响应 +GLDKEY:<ModelID>,<DeviceID>,<DeviceToken>\r\n OK\r\n
参数 ModelID:模型ID;
DeviceID:设备ID;
DeviceToken:设备Token;
说明 1. 烧写三元组信息到模组flash永久保存,烧写成功返回OK,失败返回ERROR。 2. 烧写成功后,模组会断网,并重新连接网络和MQTT。 3. 烧写成功后,模组将清空ModelToken/绑定的设备SN号/记录的设备版本信息

# AT+MQTTCONNSTATUS

功能:查询与 IoT模组与云平台的连接状态。

查询命令 AT+MQTTCONNSTATUS?\r\n
响应 +MQTTCONNSTATUS:connect\r\n OK\r\n 或 +MQTTCONNSTATUS:disconnect\r\n OK\r\n

# AT+GLDIOTSEND

格式:AT+GLDIOTSEND=<topic>[,<method>][,],<playload>\r\n

功能:模组往云端发布JSON消息。

说明:格式中参数有[]为可选项,发送的数据格式与发送的topic类型相关;

当用户收到云端的propset消息,用户需要更新当前相关属性值,并立即上报props消息;如果设备不上报修改后的最新属性,会导致后台无法判断属性设备是否成功。

当用户收到云端的cmd消息,用户需要执行相关动作,并立即上报cmd_reply消息, 后台收到cmd_reply,通过消息里面的返回码判断命令是否执行成功。

  1. 发送topic类型为props
设置命令 AT+GLDIOTSEND="props",<playlod_len>,<playload>\r\n
响应 +GLDIOTSEND:OK\r\n OK\r\n 或 +GLDIOTSEND:ERR\r\n OK\r\n
参数 playlod_len:playload的有效长度({..}内数据长度,包含{}本身);
Playload:要发送的JSON数据,以{}括起来。
例子 [2021-06-17 09:28:48.462 T]AT+GLDIOTSEND= "props",31,"{"driverID":"hi","alarmLoad":3}"\r\n [2021-06-17 09:28:48.522 R]+GLDIOTSEND:OK\r\n OK\r\n
  1. 发送topic类型为events
设置命令 AT+GLDIOTSEND="events",<method>,<playlod_len>,<playload>\r\n
响应 +GLDIOTSEND:OK\r\n OK\r\n 或 +GLDIOTSEND:ERR\r\n OK\r\n
参数 Method:事件类型;
playlod_len:playload的有效长度({..}内数据长度,包含{}本身);
Playload:要发送的JSON数据,以{}括起来。
例子 [2021-06-17 09:28:48.462 T]AT+GLDIOTSEND= "events","zl.events.ap”, 13,"{"name":"hi"}"\r\n [2021-06-17 09:28:48.522 R]+GLDIOTSEND:OK\r\n OK\r\n
  1. 发送topic类型为cmd_reply
设置命令 AT+GLDIOTSEND="cmd_reply",<playload>\r\n
响应 +GLDIOTSEND:OK\r\n OK\r\n 或 +GLDIOTSEND:ERR\r\n OK\r\n
参数 Playload:数值型字符,200 success 成功 50010 request parameter invalid 请求参数错误
例子 [2021-06-17 09:28:48.462 T]AT+GLDIOTSEND= "cmd_reply",200\r\n [2021-06-17 09:28:48.522 R]+GLDIOTSEND:OK\r\n OK\r\n

# GLDIOTREV

功能:接收云端发布的消息,并将数据通过AT串口发送给用户。

具体接收数据格式依topic类型而定。

  1. 接收到prospset类型
数据接收 +GLDIOTREV="prospset",<playlod_len>,<playload>\r\n
参数 playlod_len:playload的有效长度({..}内数据长度,包含{}本身);
Playload:接收到的JSON数据,以{}括起来。
例子 +GLDIOTREV="prospset",11,"{"light":1}"\r\n
  1. 接收到cmd类型
数据接收 +GLDIOTREV="cmd",<method>,<playlod_len>, <playload>\r\n
参数 Method:命令类型;
playlod_len:playload的有效长度({..}内数据长度,包含{}本身);
Playload:接受到的JSON数据,以{}括起来。
例子 +GLDIOTREV="cmd","zl.cmd.switch",12,"{"status":1}"\r\n

# AT+SOFTVERSION

用户设备固件版本:由字符串组成,最多11字节,中间由“.”隔开,如:“10.0.255”,每个字段范围0-255。

  1. 查询用户设备固件版本号
查询命令 AT+SOFTVERSION?\r\n
响应 +SOFTVERSION: <MCU_FW_VER>\r\n OK\r\n
参数 MCU_FW_VER:用户设备固件版本号,当平台下发新的用户设备固件到模组后,会回应最新固件版本号,格式X.X.X,当模组不知道用户设备的版本时,则回复版本号为 "0.0.0"
例子 [[2021-09-17 20:37:36.147 T]AT+SOFTVERSION?\r\n [2021-09-17 20:37:36.175 R] +SOFTVERSION:"2.0.0"\r\n OK\r\n
  1. 用户设备向模组发送最新固件版本号
查询命令 AT+SOFTVERSION=<MCU_FW_VER>\r\n
响应 OK\r\n
参数 MCU_FW_VER:用户设备固件版本号,用户设备应当在升级完成后,重新上电时,主动发送一次设置当前固件版本号,以便平台更新最新版本
例子 [2021-09-17 20:42:33.282 T] AT+SOFTVERSION="2.0.2"\r\n [2021-09-17 20:42:33.324 R]OK\r\n

# AT+HARDVERSION

用户设备硬件版本:由字符串组成,最多7字节,中间由“.”隔开,如:“1.1”,每个字段范围0-255。

  1. 查询用户设备硬件版本号
查询命令 AT+HARDVERSION?\r\n
响应 +HARDVERSION:<MCU_HARD_VER>\r\n OK\r\n
参数 MCU_HARD_VER:用户设备硬件版本号,这个由用户设备初始化连接时,主动发送一次,格式"X.X"
例子 [2021-09-17 20:57:46.919 T]AT+HARDVERSION?\r\n [2021-09-17 20:57:46.943 R]+HARDVERSION:"1.2"\r\n OK\r\n
  1. 用户设备向模组发送最新MCU硬件版本号
查询命令 AT+HARDVERSION=<MCU_HADR_VER>\r\n
响应 OK\r\n
参数 MCU_HARD_VER:用户设备硬件版本号,这个由用户设备初始化连接时,上报给模组,便于平台统一管理识别
例子 [2021-09-17 20:59:33.138 T] AT+HARDVERSION="1.3"\r\n [2021-09-17 20:59:33.161 R]OK\r\n

# AT+YMODEM

设置命令 AT+YMODEM\r\n
响应 OK\r\n或ERROR\r\n
说明 模组收到AT+YMODEM启动命令后,若用户设备升级固件不存在,返回ERROR;正常则停止AT server并延时约3s后清空串口数据,进入ymodem模式,在此期间,用户设备应跳转到ymodem升级模式准备接受数据,等待下位机响应‘C’,若60s内没有得到应答则退出ymodem模式,重新进入AT server;如收到应答开始通过ymodem发送固件;
例子 [2021-09-17 21:09:17.692 T]AT+YMODEM\r\n [2021-09-17 21:09:17.709 R]ERROR\r\n【备注:当固件不存在时,返回错误】 [2021-09-18 09:08:25.776 T]AT+YMODEM [2021-09-18 09:08:25.800 R]OK

# AT+GLDMODELINFO

  1. 查询命令

功能:查询模型ID和模型Token。

查询命令 AT+GLDMODELINFO?\r\n
响应 +GLDMODELINFO:<ModelID>,<ModelToken>\r\n OK\r\n 或 ERROR\r\n
说明 考虑到对 modelToken的保护,将以'*'代替实际的内容。
  1. 设置命令

功能:烧写模型token和模型ID。

设置命令 AT+GLDMODELINFO=<ModelID>,<ModelToken>\r\n
响应 +GLDMODELINFO:<ModelID>,<ModelToken>\r\n OK\r\n
参数 ModelID:模型ID;
ModelToken:模型Token;
说明 1. 烧写三元组信息到模组flash永久保存,烧写成功返回OK,失败返回ERROR。 2. 烧写成功后,模组会断网,并重新连接网络和MQTT。 3. 烧写成功后,模组将擦除DeviceID/DeviceToken/绑定的设备SN/设备的版本号等信息。

# AT+SN

  1. 查询命令

功能:查询和模组绑定的设备序列号。

查询命令 AT+SN?\r\n
响应 +SN:<和模组绑定的SN>\r\n OK\r\n 或 ERROR\r\n
说明 如果返回的数据为空字符串,则模组还没有和任命设备进行绑定。
  1. 设置命令

功能:请求将设备SN和模组进行绑定。

设置命令 AT+SN=<设备SN>\r\n
响应 OK\r\n或ERROR\r\n
参数 设备SN:生产时,烧写在设备侧的设备序列号;
说明 1. 如果设备SN和模组原绑定的一致,则返回OK; 2. 如果模组是一机一密的方式,则该指令一直返回ERROR, 设备通过 AT+MODELINFO?指令,发现存在ModelToken,则说明是一型一密的方式; 3. 模组和设备SN进行绑定后,存储进flash; 4. 使用AT+GLDKEY或者AT+GLDMODELINFO烧写新的密钥信息,可以解除设备SN和模组的绑定。

# 调试与测试

首次使用广联达WIFI模组开发,建议使用串口板,先通过电脑串口,进行AT指令调试。

# WIFI模组

  1. 确认串口连接正常

发AT,回OK。

  1. 设置三元组信息

设置三元组信息通过本地烧写的方式,使用AT+GLDKEY命令将三元组通过串口烧录到模组NVS区。命令格式:

AT+ CLDKEY=<模型ID>,<设备ID>,<设备Token>\r\n

其中:

模型ID:即产品ID,创建产品时分配,长度不超过64字节;

设备ID:用户可自行定义,长度不超过64字节;

设备Token:服务器生产,不超过64字节;

注:设置一次即可,断电保存。

  1. 设置连接路由器信息

AT+CWJAP=<ssid>,<pwd>\r\n

<ssid>:目标 AP 的 SSID,最长 64 字节 ASCII;

<pwd>:密码最长 64 字节 ASCII。

注:SSID 和PWD中不允许出现 ","(逗号) 或者'"'(双引号);

设置一次即可,断电保存,来电自动按照最后一次配置自动连接。

  1. 自动连接到筑联服务器

连接服务器成功后,将收到串口数据

+MQTTCONNSTATUS:connect

或者通过AT+MQTTCONNSTATUS?命令查看服务器连接状态。

+MQTTCONNSTATUS:connect 连接上

+MQTTCONNSTATUS:disconnect 未连接

  1. 上报数据

命令:

AT+GLDIOTSEND =<topic>[,<method>],<playlod_len>,<playload>

playlod_len为playload的有效长度,模组接收到数据后,将数据发送到云端。

  1. 接收数据

+GLDIOTRCV:<接收到的内容>

三元组设置流程如下图:

viso-1573948

WIFI设置流程如下图:

viso-5616518

数据接入流程如下图:

viso-12316546

上次更新: 2021-12-02 10:08:12

← 硬件接口 设备OTA→

  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式