ESP32 与 Air780E 4G 模块配合做 MQTT 数据传输
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/主题就能跑。
