基于ESP32与SIM808模块,请求向Azure IoT Hub传数据的AT指令列表
SIM808 连接 Azure IoT Hub 并发送数据的 AT 指令列表
一、GPRS 网络初始化与连接(先解决基础网络问题)
AT+CPIN?检查 SIM 卡状态,返回+CPIN: READY表示 SIM 卡正常可用AT+CREG?检查网络注册状态,返回+CREG: 0,1(本地注册)或+CREG: 0,5(漫游注册)即为成功AT+CGATT=1附着 GPRS 网络,返回OK代表附着成功AT+SAPBR=3,1,"CONTYPE","GPRS"设置承载类型为 GPRSAT+SAPBR=3,1,"APN","你的运营商APN"填写对应运营商的 APN,例如移动用CMNET、联通用UNINETAT+SAPBR=1,1激活 GPRS 承载,返回OK表示网络连接成功AT+SAPBR=2,1查看分配的 IP 地址,确认网络连接状态
二、MQTT 连接 Azure IoT Hub 并发布数据
Azure IoT Hub 支持 MQTT 协议,SIM808 可通过内置 MQTT AT 指令实现通信,需提前准备以下参数:
- 客户端 ID:你的设备在 IoT Hub 中注册的设备 ID
- 用户名:
{IoT Hub名称}.azure-devices.net/{设备ID}/?api-version=2021-04-12 - 密码:生成的 SAS Token,格式为
SharedAccessSignature sr={IoT Hub名称}.azure-devices.net%2Fdevices%2F{设备ID}&sig={签名内容}&se={过期时间戳}
对应的 AT 指令序列:
AT+CMQTTSTART启动 SIM808 的 MQTT 客户端AT+CMQTTACCQ=0,"{设备ID}"创建 MQTT 会话,会话 ID 设为 0(可自定义)AT+CMQTTCONN=0,"{IoT Hub名称}.azure-devices.net",8883,1连接 Azure IoT Hub(8883 是 MQTTS 加密端口,生产环境推荐;若无需加密可尝试 1883 端口)AT+CMQTTTOPIC=0,{主题长度},"devices/{设备ID}/messages/events/"设置消息发布主题,{主题长度}需根据实际主题字符串长度填写(示例主题长度为 38)AT+CMQTTPAYLOAD=0,{数据长度}指定要发送的 payload 长度,比如发送 JSON 数据{"temp":25.3,"acc_x":0.02,"acc_y":0.05,"acc_z":9.78},长度为 42AT+CMQTTPUB=0,1,60发布消息(参数依次为:会话 ID、QoS 等级、保留位)- (可选)
AT+CMQTTSUB=0,"devices/{设备ID}/messages/devicebound/#",1订阅云到设备的消息主题 - (按需执行)
AT+CMQTTDISC=0断开 MQTT 连接;AT+CMQTTSTOP停止 MQTT 客户端
三、1秒周期发送的注意事项
- SIM808 执行 AT 指令需要一定时间,1秒周期内要确保指令执行时序合理,避免指令堆积阻塞
- 加入网络状态检测逻辑:定期执行
AT+SAPBR=2,1检查 GPRS 连接,若异常则重新执行 GPRS 初始化指令 - 注意 Azure IoT Hub 的消息配额限制,避免因发送频率过高触发限流
内容的提问来源于stack exchange,提问作者Shubham Samal
相关产品推荐
相关产品推荐

