一个月玩转物联网MQTT(杂记篇一)
需求我希望在一个月内完成一个完整的物联网项目基于 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(ATCGATT1\r\n, OK, 5000); // 附着GPRS AT_Send_Command(ATCGDCONT1,\IP\,\CMNET\\r\n, OK, 2000); // 配置APN移动 AT_Send_Command(ATQIACT1\r\n, OK, 5000); // 激活PDP上下文 // 2. MQTT连接使用阿里云/腾讯云MQTT服务器 char mqtt_connect_cmd[128]; sprintf(mqtt_connect_cmd, ATQMTCONN0,\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, ATQMTPUB0,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 指令手册云端开发阿里云控制台、NavicatMySQL 管理、PostmanAPI 测试前端开发VS Code、Chrome 调试工具后续继续给出详细调试过程记录。

相关新闻

linux du command parallel

linux du command parallel

2026/7/3 3:22:06 阅读更多 →
【计算机毕业设计案例】基于springboot的社区居民健康管理系统(程序+文档+讲解+定制)

【计算机毕业设计案例】基于springboot的社区居民健康管理系统(程序+文档+讲解+定制)

2026/7/3 21:22:19 阅读更多 →
hot100 230.二叉搜索树中第K小的元素

hot100 230.二叉搜索树中第K小的元素

2026/7/4 22:48:08 阅读更多 →

最新新闻

YOLOv8结合PointRend提升小目标分割精度实战

YOLOv8结合PointRend提升小目标分割精度实战

1. 项目概述:当YOLOv8遇上小目标分割难题在计算机视觉的实际工程应用中,小目标分割一直是个令人头疼的问题。想象一下在卫星图像中识别车辆、在工业质检中检测微小缺陷,或者在医学影像中分割细胞核——这些场景中的目标往往只占图像的几十甚至…

2026/7/5 12:37:52 阅读更多 →
模特ai图如何高效生成?多平台快速制作技巧分享

模特ai图如何高效生成?多平台快速制作技巧分享

在电商行业,模特ai图的高效生成已成为商品展示的核心环节。随着AI技术的发展,各类平台助力模特图自动化处理,让从业者效率显著提升。 本文将系统介绍多款相关平台的主要功能与适配优势,帮助你深入了解模特ai图制作的实际场景与选…

2026/7/5 12:35:51 阅读更多 →
AI推理服务Invalid Argument错误:构建健壮数据校验与预处理流水线

AI推理服务Invalid Argument错误:构建健壮数据校验与预处理流水线

1. 项目概述:从一次深夜告警说起凌晨两点,手机突然震动,监控告警提示线上AI推理服务大面积报错,错误信息赫然是“Invalid Argument”。相信不少负责模型部署和线上服务的同行都经历过这种心跳加速的时刻。这个错误看似简单&#x…

2026/7/5 12:33:50 阅读更多 →
Carsim中构建多车道动态交通流与智能车辆交互场景

Carsim中构建多车道动态交通流与智能车辆交互场景

1. Carsim多车道动态交通流搭建基础在智能驾驶算法开发过程中,真实还原多车道交通环境是验证ADAS功能的关键。Carsim作为行业标准的车辆动力学仿真平台,其ADAS模块提供了高度灵活的交通场景构建能力。我最近在测试ACC自适应巡航功能时,就遇到…

2026/7/5 12:33:50 阅读更多 →
AI模型加载优化:从压缩量化到内存管理的实战技巧

AI模型加载优化:从压缩量化到内存管理的实战技巧

1. AI模型加载优化的核心挑战在AI应用开发中,模型加载环节往往是性能瓶颈的重灾区。我经历过一个计算机视觉项目,当模型文件达到800MB时,冷启动加载时间长达12秒,这完全无法满足实时性要求。通过系统性的优化,我们最终…

2026/7/5 12:31:50 阅读更多 →
AI 3D建模实战:从Hi3D+Codex原理到自动化场景生成流水线搭建

AI 3D建模实战:从Hi3D+Codex原理到自动化场景生成流水线搭建

1. 背景与核心概念:从“玩具”到“工具”的AI 3D建模革命对于游戏开发者、影视动画师、建筑可视化设计师,甚至是独立创作者而言,3D场景建模一直是一个技术门槛高、耗时耗力的核心环节。传统的建模流程,无论是使用Blender、Maya还是…

2026/7/5 12:29:49 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻