ESP32 与 Air780E 4G 模块配合做 MQTT 数据传输,核心思路是:ESP32 作为主控,通过串口 UART 向 Air780E 发送 AT 指令,由 Air780E 内部协议栈完成 TCP/IP 和 MQTT 的底层工作。你只需要处理好指令时序、响应解析和硬件供电即可。
一、硬件连接要点
-
串口交叉连接:ESP32 的 TX 接 Air780E 的 RX,ESP32 的 RX 接 Air780E 的 TX,两边 GND 共地。
-
电平匹配 :Air780E 主串口默认是 1.8V TTL,ESP32 一般为 3.3V。若电平不一致,建议加电平转换电路;若均为 3.3V 可直接连接(部分批次可通过引脚配置为 3.3V)。
-
供电非常关键 :Air780E 射频发射瞬间峰值电流可达 1.5~2A,务必保证电源能提供持续 1A 以上电流,且 VBAT 电压稳定在 3.3V~4.3V,否则容易反复重启或搜网失败。
-
控制引脚:建议 ESP32 用一个 GPIO 接 Air780E 的 PWRKEY/RESET,用于模块硬复位。
二、MQTT 通信 AT 指令流程
在 ESP32 代码里,按以下顺序发送指令并等待对应响应(注意:返回 OK往往只代表"指令已接受",不代表"操作成功"):
-
检查 SIM 卡 :
AT+CPIN?→ 期望+CPIN: READY -
检查网络附着 :
AT+CGATT?→ 期望+CGATT: 1 -
配置 MQTT 参数 :
AT+MCONFIG="clientId","user","password"→OK -
启动 TCP 连接 :
AT+MIPSTART="host","port"→ 最终收到CONNECT OK(仅OK不够) -
发起 MQTT 连接 :
AT+MCONNECT=1,60(clean session=1, keepalive=60s)→ 最终收到CONNACK OK -
订阅主题 :
AT+MSUB="topic",qos→ 最终收到SUBACK -
发布消息 :
AT+MPUB="topic",qos,retain,"data"-
QoS=0 时收到
OK即可 -
QoS=1 需等到
PUBACK,QoS=2 需等到PUBCOMP
-
模块收到订阅消息时,会主动上报:+MSUB: "topic",len byte,data。
三、注意事项与避坑
-
响应判断要严谨 :
MIPSTART/MCONNECT/MSUB/MPUB的OK只是"开始处理",必须等到对应的最终返回(CONNECT OK/CONNACK OK/SUBACK/PUBACK)才算成功,否则极易出现假连接。 -
KeepAlive 设置:建议 60~120 秒。太久可能被基站掐断,太短易因网络波动超时断开。
-
ClientID 必须唯一:服务器发现重复 ID 会踢掉前一个设备。
-
QoS 选择:允许的话优先用 QoS0;QoS1/2 会加重网络负担,弱网更易掉线。
-
域名解析 :若用域名,确保模块已拿到 IP(
AT+CIFSR),必要时用AT+CDNSGIP=测试解析。 -
AT 指令超时与缓冲 :ESP32 串口接收要做好缓存和超时管理,避免漏解析
+MSUB等 URC 主动上报数据。 -
专网卡/APN :公网卡通常自动 APN;专网卡需通过
AT+CPNETAPN设置 APN 参数。
如果你需要,我可以按 ESP32 Arduino 框架给你整理一个带状态机、自动重连、URC 解析的完整示例代码骨架,你直接填 IP/主题就能跑。