STM32 + 3G 模組 (如 SIM7600、EC20) 實現雲端數據上報,核心流程:
設備端 (STM32)
- AT 指令控制模組:`AT+CGATT=1` 附著、`AT+CSTT="apn"` 設置 APN、`AT+CIICR` 激活、`AT+CIFSR` 獲取 IP。
- 建立 TCP 連接:`AT+CIPSTART="TCP","server_ip",port`。
- 發送數據:`AT+CIPSEND` → 發送 JSON/二進制負載 → `AT+CIPCLOSE` 關閉。
- 心跳/重連:定時發送心跳包,斷線自動重試指數退避。
服務端架構
- 接入層:Nginx/HAProxy (TCP 4層負載) → 分發到後端 Gateway 服務。
- 網關服務:Netty / Go / Node.js 維持長連接,解碼協議 (MQTT/CoAP/私有 TCP),鑒權、限流、路由。
- 業務層:Kafka 緩衝 → Flink/Spark 實時計算 → MySQL/ClickHouse/Redis 持久化。
- 下行控制:設備保持長連或 MQTT 訂閱,服務端推送指令。
關鍵選型
| 協議 | 優點 | 缺點 |
| MQTT over TCP | 輕量、QoS、保留消息、生態成熟 | 需 Broker (EMQX/VerneMQ) |
| CoAP over UDP | 極低開銷、適合 NB-IoT | NAT 穿透難、可靠性需應用層保證 |
| HTTP/HTTPS | 防火牆友好、調試易 | 頭部開銷大、無原生推送 |
| 私有 TCP | 完全可控、極簡 | 自建框架成本高、易踩坑 |
建議:設備端跑 MQTT Client (如 Eclipse Paho C 嵌入式版),服務端部署 EMQX 集群,最省力穩健。