一个月玩转物联网MQTT(杂记篇一)
摘要:本文介绍了一个基于STM32的物联网项目,通过4G模块实现倾角传感器数据上传和云端可视化。硬件采用长沙湾流VALUER-SNX21V倾角传感器和移远EC200S 4G模块,利用AT指令简化MQTT协议实现。云端搭建阿里云IoT平台和RDS MySQL数据库存储数据,并开发Node.js API接口。移动端采用微信小程序调用API展示数据。项目实现了从数据采集、传输、存储到可视化的完整流程,适
需求:
我希望在一个月内完成一个完整的物联网项目:基于 STM32 的倾角传感器采集角度数据,通过 4G 模块以 MQTT 协议上传到云端,最终在网页和手机端可视化展示多台设备的数据,用于仓库货架倾斜监控。
1、硬件选型与搭建
作为软硬通吃的研发人员,选型第一步,优先选成熟、易开发的方案:
倾角传感器,长沙湾流VALUER-SNX21V,精度高,支持蓝牙
4G 模块,移远 EC200S,内置 MQTT AT 指令,无需复杂移植,支持全网通
2、4G 模块 MQTT AT 指令通信
4G 模块(如 EC200S)支持 MQTT AT 指令,无需在 STM32 移植复杂的 MQTT 协议栈,大幅节省时间:
#include "usart.h"
#include "string.h"
// 串口发送AT指令
void AT_Send_Command(char* cmd, char* resp, uint32_t timeout) {
HAL_UART_Transmit(&huart2, (uint8_t*)cmd, strlen(cmd), 1000);
// 等待响应
HAL_Delay(timeout);
}
// MQTT初始化(连接服务器)
void MQTT_Init(void) {
// 1. 4G模块开机,等待网络注册
AT_Send_Command("AT+CGATT=1\r\n", "OK", 5000); // 附着GPRS
AT_Send_Command("AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n", "OK", 2000); // 配置APN(移动)
AT_Send_Command("AT+QIACT=1\r\n", "OK", 5000); // 激活PDP上下文
// 2. MQTT连接(使用阿里云/腾讯云MQTT服务器)
char mqtt_connect_cmd[128];
sprintf(mqtt_connect_cmd, "AT+QMTCONN=0,\"mqtt服务器地址\",\"端口\",1,\"设备用户名\",\"密码\"\r\n");
AT_Send_Command(mqtt_connect_cmd, "CONNECTED", 10000);
}
// 上传倾角数据到MQTT
void MQTT_Upload_Angle(void) {
char mqtt_pub_cmd[256];
char json_data[128];
// 1. 封装JSON数据(便于云端解析)
sprintf(json_data, "{\"dev_id\":\"%d\",\"pitch\":%.2f,\"roll\":%.2f,\"time\":%lu}",
angle_data.dev_id, angle_data.pitch, angle_data.roll, HAL_GetTick()/1000);
// 2. MQTT发布(主题:warehouse/shelf/angle)
sprintf(mqtt_pub_cmd, "AT+QMTPUB=0,0,0,0,\"warehouse/shelf/angle\",\"%s\"\r\n", json_data);
AT_Send_Command(mqtt_pub_cmd, "OK", 5000);
}
// 主循环
int main(void) {
HAL_Init();
SystemClock_Config();
MX_USART2_UART_Init(); // 4G模块串口
VALUER_IMU_Init(); // VALUER长沙湾流IMU传感器数据初始化
MQTT_Init();
while (1) {
Calculate_Angle(); // 采集角度
MQTT_Upload_Angle(); // 上传数据
HAL_Delay(1000); // 1秒上传一次(可根据需求调整)
}
}
- 4G 模块 AT 指令参考对应手册(如 EC200S 的 MQTT AT 指令集)
- 数据格式用 JSON,便于云端解析
- 每个设备配置唯一
dev_id,区分不同货架
3、 云端搭建
云端核心是 MQTT 服务器 + 数据存储 + API 接口,采用成熟的阿里云服务,减少自建成本:
MQTT 服务器:阿里云 IoT 物联网平台。>> 开箱即用,支持百万级设备接入,自带设备管理
数据存储:阿里云 RDS MySQL。>> 结构化存储,便于查询和分析
API 接口:阿里云函数计算 / Node.js。>> 快速开发数据接口,供前端调用
核心步骤
1) 阿里云 IoT 平台配置
- 创建设备产品和设备(对应每个货架的传感器)
- 配置 MQTT 连接参数(服务器地址、端口、用户名 / 密码)
- 配置数据流转规则:将 MQTT 消息转发到 RDS MySQL 存储
2) 数据存储表设计
CREATE TABLE shelf_angle (
id INT AUTO_INCREMENT PRIMARY KEY,
dev_id VARCHAR(20) NOT NULL, -- 设备ID
pitch FLOAT NOT NULL, -- 俯仰角
roll FLOAT NOT NULL, -- 横滚角
upload_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 上传时间
shelf_name VARCHAR(50) -- 货架名称(便于管理)
);
3) API 接口开发(Node.js )
const express = require('express');
const mysql = require('mysql');
const app = express();
// 数据库连接
const db = mysql.createConnection({
host: '阿里云RDS地址',
user: '用户名',
password: '密码',
database: 'warehouse'
});
// 接口1:获取所有设备最新角度数据
app.get('/api/shelf/latest', (req, res) => {
const sql = `SELECT dev_id, pitch, roll, upload_time, shelf_name
FROM shelf_angle
WHERE (dev_id, upload_time) IN (
SELECT dev_id, MAX(upload_time)
FROM shelf_angle
GROUP BY dev_id
)`;
db.query(sql, (err, results) => {
if (err) return res.status(500).json({ error: err.message });
res.json(results);
});
});
// 接口2:获取单个设备历史数据
app.get('/api/shelf/history', (req, res) => {
const { dev_id, start, end } = req.query;
const sql = `SELECT pitch, roll, upload_time
FROM shelf_angle
WHERE dev_id = ? AND upload_time BETWEEN ? AND ?`;
db.query(sql, [dev_id, start, end], (err, results) => {
if (err) return res.status(500).json({ error: err.message });
res.json(results);
});
});
app.listen(3000, () => {
console.log('API服务启动:http://localhost:3000');
});
4、手机端(微信小程序)
微信小程序可以直接调用上述 API 接口,快速实现移动端查看:
- 核心逻辑:通过
wx.request调用 API 获取数据 - 布局:适配手机屏幕,展示设备列表、实时角度、告警提示
- 可选:添加推送功能,货架倾斜时推送微信消息
5、网页端(待补充)
前端网页展示,暂时未做,时间紧张。
6、联调与优化
全链路测试:
STM32 采集 → 4G 上传 → MQTT 接收 → 数据库存储 → 前端展示。
7、关键资源与工具
- STM32 开发:Keil MDK/STM32CubeIDE、串口助手(调试 AT 指令)
- 4G 模块调试:USB 转串口、模块 AT 指令手册
- 云端开发:阿里云控制台、Navicat(MySQL 管理)、Postman(API 测试)
- 前端开发:VS Code、Chrome 调试工具
后续,继续给出详细调试过程记录。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)