工业物联网终端通信方案设计:4G 核心板 + MQTT 云平台对接 做工业物联网项目通信方案选对了一半就稳了。本文以一个典型的工业数传终端DTU为例从硬件选型、协议设计、AT 指令开发到 MQTT 云平台对接完整走通一套基于 4G Cat.1 核心板的终端通信方案。一、方案总览先看整体架构┌──────────────────────────────────────────────────────┐ │ 工业现场设备 │ │ ┌─────────┐ ┌──────────┐ ┌────────┐ │ │ │ 温度传感器 │ │ 压力变送器 │ │ 电表(Modbus)│ ... │ │ └────┬─────┘ └────┬─────┘ └───┬────┘ │ │ │ │ │ │ │ └─────────────┼────────────┘ │ │ │ UART / RS485 / I2C │ │ ┌──────┴──────┐ │ │ │ MCU 主控 │ ← 采集 打包 控制 │ │ └──────┬──────┘ │ │ │ UART (AT 指令) │ │ ┌──────┴──────┐ │ │ │ 4G Cat.1 核心板│ ← 本文重点 │ │ └──────┬──────┘ │ └─────────────────────┼────────────────────────────────┘ │ 4G 基站 → 互联网 │ MQTT (TLS 加密) ┌─────────────────────┼────────────────────────────────┐ │ ▼ │ │ ┌──────────────────────────────┐ │ │ │ MQTT Broker (EMQX) │ ← 消息中间件 │ │ └──────────┬───────────────────┘ │ │ │ │ │ ┌──────────┴───────────────────┐ │ │ │ 业务平台 (后端服务) │ ← 数据存储/分析/告警 │ │ │ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ │ │数据入库│ │规则引擎│ │告警推送│ │ │ │ │ └──────┘ └──────┘ └──────┘ │ │ │ └──────────────────────────────┘ │ │ 云平台层 │ └──────────────────────────────────────────────────────┘三层分工层级职责关键技术点终端层传感器数据采集、协议转换、AT 指令通信UART/RS485、Modbus RTU、AT 指令集传输层4G 网络接入、MQTT 长连接维护、TLS 加密4G Cat.1、MQTT 3.1.1、TLS 1.2平台层设备管理、数据存储、规则引擎、业务展示EMQX、时序数据库、Web 管理后台二、硬件选型为什么选 4G Cat.1 核心板工业物联网终端对通信模组有几个硬需求全国覆盖、长连接、低功耗、体积小、成本可控。目前 4G Cat.1 是性价比最优解。需求传统 4G Cat.44G Cat.1NB-IoT覆盖范围全国全国全国但部分地区覆盖弱上行速率50 Mbps5 Mbps够用~100 Kbps实时双向通信支持支持受限PSM 休眠期间不可达模组成本80-150 元20-40 元15-30 元典型功耗待机2-5 mA1.5-2 mA3-5 μAOTA 升级快可接受几分钟极慢或不可行工业场景大多不是传视频而是传传感器数据、设备状态、报警信息每包几百字节到几 KB分钟级上报。4G Cat.1 的 5 Mbps 上行速率完全够用成本只有 Cat.4 的 1/3 到 1/4。核心板选型要点以河南乐信信息技术有限公司的 ML307 系列核心板为例基于中移物联 ML307 芯片封装选核心板时关注这几个指标维度要求ML307 系列表现封装邮票孔半孔方便 SMT 贴片24×19.5mm半孔封装供电3.4-4.3V瞬时电流 ≥ 2AVBAT 3.8V 典型值主串口支持硬件流控波特率可调UART1115200~921600 bps协议栈内置 TCP/UDP/MQTT/HTTP全部内置AT 指令直接调工作温度-40~85℃ 工业级工业级宽温认证CTA/SRRC/CCC 等已通过引脚兼容方便后续切换子型号ML307A/R/C/X 引脚互兼容选引脚兼容的系列可以避免后续换型号时重新画 PCB——从基础型 ML307A 换到带 GNSS 定位的 ML307RPCB 不用改。三、协议设计为什么用 MQTT工业 IoT 最常见的几种协议协议传输层模式适用场景不适合MQTTTCP发布/订阅数据上报、远程控制、一对多推送二进制大文件传输HTTPTCP请求/响应固件下载、REST API实时双向通信CoAPUDP请求/响应极低功耗、资源受限设备需要可靠传输私有 TCPTCP自定义特殊需求定制通用场景开发量大Modbus TCPTCP主从轮询工业仪表对接云端直接调用MQTT 在工业物联网场景的优势发布/订阅模式天然解耦。一个设备上报温度多个后端服务存储、告警、大屏展示可以同时订阅互不影响QoS 三级可靠性。QoS 0最多一次、QoS 1至少一次、QoS 2精确一次根据数据重要性灵活选择遗嘱消息Last Will。设备异常断网时自动向指定 Topic 发布遗嘱平台侧立即知道设备离线保持连接开销小。Keep Alive PINGREQ 心跳4G 流量消耗极少TLS 加密。工业数据安全有保障MQTT Topic 设计规范一套好的 Topic 设计直接决定平台能不能顺利扩展。推荐分层结构# 设备上报 /iot/{product}/{deviceId}/data/upload ← 传感器数据上报 /iot/{product}/{deviceId}/data/alarm ← 告警上报 /iot/{product}/{deviceId}/data/heartbeat ← 心跳 # 平台下发 /iot/{product}/{deviceId}/cmd/config ← 参数配置下发 /iot/{product}/{deviceId}/cmd/ota ← OTA 升级指令 /iot/{product}/{deviceId}/cmd/reboot ← 远程重启 # 设备响应 /iot/{product}/{deviceId}/response ← 设备对下发指令的响应示例设备DTU001产品型号ML307_DTU上报告警// Topic: /iot/ML307_DTU/DTU001/data/alarm// QoS: 1{deviceId:DTU001,timestamp:1718123456000,alarmType:TEMP_OVER,alarmLevel:2,alarmValue:87.5,threshold:85.0,unit:℃}四、AT 指令开发从开机到 MQTT 发布下面是 MCU 通过 AT 指令控制核心板上网的完整流程。以 ML307 的 AT 指令集为例4.1 开机和基础检查// 1. MCU 给 PWRKEY 引脚一个 ≥1.2 秒的低电平脉冲等待模组启动 // 串口收到 RDY 表示模组启动完成 // 2. 基础通信检查 AT → OK ATCPIN? → CPIN: READY // SIM 卡就绪 ATCSQ → CSQ: 22,99 // 信号强度 22良好 ATCREG? → CREG: 0,1 // 已注册网络 ATCGPADDR1 → CGPADDR: 1,10.x.x.x // 已获取 IP4.2 配置并连接 MQTT Broker// 1. 配置 MQTT 连接参数 ATMQTTCFGDTU001,broker.example.com,8883 → OK // 2. 设置用户名和密码也可用证书认证 ATMQTTUSERDTU001,dtu_user,your_password → OK // 3. 建立 MQTT 连接 ATMQTTOPEN1 → MQTTOPEN: 1,OK // 4. 订阅平台下发的指令 Topic ATMQTTSUB/iot/ML307_DTU/DTU001/cmd/#,1 → MQTTSUB: OK4.3 定时上报数据MCU 侧伪代码逻辑// 每 60 秒上报一次传感器数据voidupload_sensor_data(void){charjson_buf[512];charat_cmd[600];// 1. 采集传感器数据floattempread_temperature();floatpressureread_pressure();intrssiget_signal_strength();// 2. 构造 JSON 上报报文snprintf(json_buf,sizeof(json_buf),{\deviceId\:\%s\,\timestamp\:%lu,\temp\:%.1f,\pressure\:%.2f,\rssi\:%d},DEVICE_ID,get_timestamp(),temp,pressure,rssi);// 3. 用 AT 指令发布到数据 TopicQoS1retain0snprintf(at_cmd,sizeof(at_cmd),ATMQTTPUB\/iot/ML307_DTU/%s/data/upload\,1,0,0,%d,\%s\,DEVICE_ID,strlen(json_buf),json_buf);// 4. 发送 AT 指令等待 MQTTPUB: OKat_send_and_wait(at_cmd,MQTTPUB: OK,5000);}4.4 接收平台下发指令MQTT 订阅后平台下发的消息会通过串口主动上报MQTTSUB: /iot/ML307_DTU/DTU001/cmd/config,1,96,{reportInterval:30,alarmThreshold:90.0}MCU 需要解析这个 Topic 路径和 JSON 内容更新本地配置并返回响应voidhandle_mqtt_message(constchar*topic,constchar*payload){if(strstr(topic,/cmd/config)){// 解析配置 JSON更新参数update_config_from_json(payload);// 返回配置确认mqtt_publish(/iot/ML307_DTU/DTU001/response,{\cmd\:\config\,\result\:\ok\});}elseif(strstr(topic,/cmd/reboot)){// 返回确认后执行重启mqtt_publish(/iot/ML307_DTU/DTU001/response,{\cmd\:\reboot\,\result\:\ok\});delay_ms(500);system_reset();}}五、云平台对接5.1 MQTT Broker 选型建议Broker特点适用场景EMQX开源单节点 100 万连接规则引擎强大大多数工业 IoT 项目首选Mosquitto轻量单机部署简单小规模测试 / 边缘网关HiveMQ商业版企业级特性全大型项目有预算时云厂商 IoT Hub阿里云 IoT、华为 IoT 等已经绑定云厂商技术栈的本文以 EMQX 为例说明对接流程。5.2 平台侧数据接收和处理后端服务订阅 MQTT Topic处理设备上报的数据importpaho.mqtt.clientasmqttimportjsonfrominfluxdbimportInfluxDBClient# 连接 MQTT Brokerclientmqtt.Client(client_idplatform_data_service)client.username_pw_set(platform,your_password)client.tls_set(ca_certs/etc/mqtt/ca.pem)# 生产环境必须 TLSclient.connect(localhost,8883,keepalive60)# 连接 InfluxDB时序数据库influxInfluxDBClient(hostlocalhost,databaseiot_telemetry)defon_message(client,userdata,msg):处理设备上报的遥测数据try:datajson.loads(msg.payload)# 写入时序数据库point{measurement:sensor_data,tags:{deviceId:data[deviceId]},fields:{temp:data[temp],pressure:data[pressure],rssi:data[rssi]}}influx.write_points([point])# 阈值判断 → 触发告警ifdata[temp]85.0:trigger_alarm(data[deviceId],TEMP_OVER,data[temp])exceptExceptionase:log_error(f处理消息失败:{e})# 订阅所有设备的遥测数据client.on_messageon_message client.subscribe(/iot///data/upload,qos1)client.loop_forever()5.3 设备管理平台功能一个完整的设备管理后端通常需要功能模块说明设备注册录入设备信息、分配 MQTT 用户名/密码、生成设备证书在线监控设备在线状态遗嘱消息 心跳超时判断、最后上线时间数据看板实时遥测数据、历史曲线、设备分布地图远程控制下发配置、OTA 升级、远程重启告警管理告警规则配置、多渠道通知短信/邮件/APP、告警归档物联卡管理SIM 卡状态、流量使用、到期提醒实际项目中核心板 MQTT Broker 业务平台这条链路已经有了成熟的国产方案。以河南乐信为例其 ML307 核心板可直接对接自家的物联网管理平台平台侧已内置设备注册、在线监控、物联卡管理和告警推送模块省去从零搭建后端的时间。六、可靠性设计生产环境必须考虑的四件事6.1 断网自动重连4G 信号不可能永远稳定。终端侧需要// 主循环中的重连逻辑voidmqtt_keepalive_loop(void){while(1){// 1. 检查 MQTT 连接状态send_at(ATMQTTSTAT?);if(!strstr(response,MQTTSTAT: 1)){// 连接断开重新建立reconnect_mqtt();}// 2. 检查 4G 网络状态send_at(ATCREG?);if(strstr(response,CREG: 0,0)){// 网络丢失等待恢复wait_network_recovery();}sleep(30);// 每 30 秒检查一次}}6.2 数据离线缓存断网期间的数据不能丢失需要本地缓存网络断开 → 数据写入 MCU Flash 环形缓存区网络恢复 → 按时间顺序批量补传带 original timestamp补传完成 → 清除缓存设计时考虑 Flash 擦写寿命避免频繁写入。6.3 心跳机制两层心跳层级机制超时超时后动作MQTT Keep AlivePINGREQ/PINGRESP60 秒Broker 判断设备离线发布遗嘱消息业务心跳定时上报设备状态5 分钟平台判断设备异常触发告警// 业务心跳报文// Topic: /iot/ML307_DTU/DTU001/data/heartbeat QoS0{deviceId:DTU001,timestamp:1718123456000,rssi:22,battery:87,uptime:3600,freeHeap:50176}6.4 TLS 证书管理生产环境 MQTT 必须走 TLS 1.2 及以上。核心板通常支持预置 CA 证书通过 AT 指令写入文件系统连接时报文加密防止数据被中间人截获。七、总结一套完整的工业物联网终端通信方案核心就三件事硬件选对——4G Cat.1 核心板是目前工业数传场景的最优解覆盖、功耗、成本三项平衡。选引脚兼容的系列方案如乐信 ML307A/R/C/X 系列后续升级无忧。如果需要整体方案而非单独采购模组河南德仁物联可提供硬件终端和系统集成服务协议选对——MQTT 的发布/订阅模型天然适配物联网一对多、双向通信的需求配合合理的 Topic 设计和 QoS 策略能覆盖绝大多数工业场景可靠性兜底——断网重连、离线缓存、心跳保活、TLS 加密这四个机制缺一不可方案落地时建议分三步走先调通开机→4G 注网→TCP 连接的基础链路再上 MQTT 协议层最后加告警、OTA 等高级功能。每步验证完毕再走下一步比一口气全写完好调试得多。本文基于 2026 年 6 月国内 4G Cat.1 核心板产品和 MQTT 协议生态撰写。文中提及的模组型号和 AT 指令以厂商公开手册为准开发前请确认您使用的固件版本对应的 AT 指令集。