基于无线传输的地衡系统:三节点 LoRa 组网与 MQTT 上云的分布式称重方案

本文面向希望复现或二次开发的读者,按「一、项目基本情况 → 二、系统架构设计 → 三、系统界面展示 → 四、系统视频展示 → 五、获取方法」组织。文中引脚分配取自项目原理图,通信参数与主题取自实机配置记录,界面数值取自系统实测截图,均未做推测性改写。

技术栈速览

层次 选型 说明
主控 MCU STM32F103C8T6(Cortex-M3 @ 72 MHz) Keil 5 开发;三类节点共用同一型号
称重采集 HX711(24 位 ADC)+ 应变式称重传感器 两线串行时序;内置可编程增益放大器
节点间无线 HC-14 无线 433 模块(串口透传) MCU 侧按普通串口收发,无需射频协议栈
上云通道 ESP8266(ESP-01S) Wi-Fi + 内嵌 TCP/IP 协议栈,承载 MQTT 会话
本地显示 OLED12864(I²C) 两类节点各一块,共 3 块
告警与交互 蜂鸣器(PB1)+ 轻触按键(PA1,10 kΩ 上拉) 仅网关节点带蜂鸣器;按键仅测量节点带
供电 Type-C 5 V 直供 三块节点板各自独立取电并共地
服务端 JeeSite 平台 + Java SpringBoot + MySQL 内嵌 MQTT 客户端,双主题收发
管理前端 Bootstrap Web 管理端与移动端共享业务接口
移动端 HBuilder 打包,webview 承载 H5 与 Web 端共用同一套接口

通信采用双链路:节点间走 433 MHz 无线串口透传 ,节点上云走 Wi-Fi 承载的 MQTT 发布 / 订阅。


一、项目基本情况

1.1 系统构成

系统由三块独立 PCB 构成,两个测量节点硬件同构、程序同源,仅以节点编号区分数据来源。

节点 主要器件 职责
网关节点 STM32F103C8T6、OLED12864、ESP8266(ESP-01S)、HC-14 无线 433 模块、蜂鸣器 接收两路重量上报,累加求得总重量;本地显示与超重告警;经 Wi-Fi 以 MQTT 协议上云
测量节点 1(A) STM32F103C8T6、OLED12864、HX711、HC-14 无线 433 模块、按键 采集本路重量,均值滤波与稳定判定,本地显示,经无线模块上报
测量节点 2(B) 同测量节点 1 同上,以节点编号 B 区分数据来源

总重量口径为 累加求和 而非 单路等值:网关节点将两路数值相加得到总重量,与真实地衡「累加所有传感器」的计量方式一致。因此两路各自独立校准、独立补偿,测点数增加时只需继续累加。

1.2 关键技术特征

  • 双链路分工:节点间链路只承载结构极简的重量报文,由 433 MHz 模块完成调制解调;上云链路承载带主题寻址的发布 / 订阅消息。两条链路在物理层彼此独立。
  • 双主题方向隔离:上报与下发使用一对相互隔离的主题,服务端与设备各自订阅自己那一侧,不会出现回声。
  • 均值滤波与稳定判定:对连续采样作均值滤波;仅当读数持续稳定达到设定时长(约 5 s)才判定为一次有效称重,云端写入以此为前置条件。
  • 偏载容错:对两路分量的差异设置比较上限,超出时提示「偏载 / 摆放异常」,而不是把已失真的总和直接写入记录。

1.3 典型工作流程

  1. 空载待机:测量节点持续采样,OLED 末行显示「请放置物品」,不上报有效数据。
  2. 加载与稳定:读数持续约 5 s 稳定在同一值带内,OLED 末行切换为「称重稳定」。
  3. 无线上报:测量节点经 433 MHz 模块上报本路重量,网关节点按节点编号区分 A / B。
  4. 汇总与反馈:网关节点累加得到总重量并刷新 OLED;越限时驱动蜂鸣器发声。
  5. 上云与落库:网关节点发布至上报主题,服务端解析后写入数据库。
  6. 业务登记:用户在 APP 侧填写车辆牌照、是否超重、收费金额与货物信息后提交保存。

二、系统架构设计

2.1 系统总体架构

系统自下而上划分为四层:感知层(两块测量节点)、汇聚层(网关节点)、网络传输层(MQTT 双主题 + 公共 Broker)、应用层(APP 与云端服务)。

图 1 系统总体架构图(四层划分与两条链路)

2.2 系统功能结构

图 2 系统功能结构图(硬件 / 软件 / 交付服务)

2.3 硬件系统原理框图

图 3 硬件系统原理框图(含实测引脚分配)

把三块节点的引脚分配汇总如下,可直接用于二次开发与故障排查。

节点 外设 主控引脚
测量节点 A / B HX711(模数转换) SCK → PB10,DT → PB11
测量节点 A / B OLED12864(显示) SCK → PB6,SDA → PB7
测量节点 A / B HC-14 无线 433 模块 TXD → PA10,RXD → PA9
测量节点 A / B 按键(10 kΩ 上拉至 5 V) PA1
网关节点 HC-14 无线 433 模块 TXD → PA3,RXD → PA2
网关节点 ESP8266(ESP-01S) RX → PA9,TX → PA10
网关节点 OLED12864(显示) SCK → PB6,SDA → PB7
网关节点 蜂鸣器(另一端接 GND) PB1

易错点 :测量节点与网关节点的无线模块串口引脚分配并不相同 ------ 网关节点用 PA2 / PA3,测量节点用 PA9 / PA10。两块板原理图独立,固件不可交叉烧录。

2.4 网关节点与测量节点电路

图 4 网关节点电路原理图(嘉立创 EDA 绘制)

图 5 测量节点电路原理图(与网关节点分属两套图纸)

2.5 数据交互时序

图 6 系统数据交互时序图(四泳道)

2.6 MQTT 主题结构与通信参数

上云链路以 MQTT 主题完成寻址,主题为三级结构:

主题层级 取值 含义
第一级 mybs 项目命名空间前缀
第二级 bsdata / bsctr 数据类别:上报数据 / 下发指令
第三级 2462AB65F2F2 设备标识

实机配置记录中的完整参数如下,可直接复制使用:

复制代码
MQTT 主机名   : broker-cn.emqx.io
Wi-Fi SSID    : 8266wifi
Wi-Fi 密码    : 123456789
数据上报主题  : mybs/bsdata/2462AB65F2F2
指令下发主题  : mybs/bsctr/2462AB65F2F2
串口参数      : 115200 / 8 / N / 1
终端标识      : ZDBH01

主题即路由:服务端无需维护设备连接表,新增终端只需在设备侧配置正确的主题;权限与限流可按主题前缀粒度下发,便于在公共 Broker 上做隔离。

2.7 硬件实物与联调

系统实物为三块独立节点板,通过杜邦线连接 HX711 模块与应变式称重传感器。传感器为金属应变梁结构,安装在亚克力承重盘下方;调试时以标准砝码或已知质量的物件作为加载对象。

图 7 整机联调现场(三节点板、承载托盘与加载物件)

图 8 网关节点主控板特写(OLED 显示两路分量与总重量)

图 9 双测量节点与称重传感器(OLED 显示两路独立读数)


三、系统界面展示

移动端 APP 由 HBuilder 打包而成,界面以 webview 控件承载 H5 页面实现,与 Web 管理端共享业务接口。以下数值均取自系统实测截图。

3.1 登录与首页

图 10 登录界面与首页功能入口(九宫格布局)

3.2 实时数据监测与稳定判定

实时数据页上方为状态栏(刷新倒计时 + 设备在线状态),其下依次为终端选择、总重量、测量点 A 与测量点 B 的分量、当前状态与更新时间。实测一组数据为:总重量 140,测量点 A 113,测量点 B 27,状态「测量中」,更新时间 2026-04-18 11:55:05。

页面下方的「业务管理」区承载写入所需的业务字段。系统对写入设有前置条件:仅当重量判定为稳定时才允许保存,否则弹出「重量稳定后才能保存!」提示 ------ 这与节点侧的稳定判定逻辑形成前后呼应。

图 11 实时数据监测界面与「重量稳定后才能保存」校验提示

3.3 历史称重记录与重复校验

历史数据查询页按时间倒序列出记录,单条记录含终端编号、测量时间、总重量(括号内为两路分量)、车辆、货物与是否超重六项字段。实测四条记录可用来交叉验证累加口径。

测量时间 总重量(A / B) 车辆 货物 是否超重 校验
2026-04-18 11:55:29 140(113 / 27) 陕A66552 蔬菜 超重 113 + 27 = 140 ✓
2026-04-18 11:48:28 218(114 / 104) 陕A99954 蔬菜 超重 114 + 104 = 218 ✓
2026-04-18 11:47:53 190(114 / 76) 陕A99955 蔬菜 超重 114 + 76 = 190 ✓
2026-04-18 10:56:22 923(730 / 193) 陕A99885 机械设备 超重 730 + 193 = 923 ✓

除记录留痕外,系统对同一车辆的重复过磅设置提醒:检测到短时间内再次过磅时弹出「该车辆已记录,请确认是否再次记录?」确认框,可避免因车辆未及时驶离承载面造成的重复记录。

图 12 历史称重记录查询与同一车辆重复过磅提醒

3.4 终端管理

终端管理页字段为终端编号、终端名称与终端状态。实测终端编号 ZDBH01,终端名称「地衡系统」,终端状态「在线」。

图 13 终端列表与终端详情(编号 ZDBH01 / 在线)

3.5 个人中心与账号安全

图 14 个人中心与个人信息页(含账号安全入口)

3.6 界面与后端能力的对应关系

界面板块 交互 对应后端能力
登录 / 注册 账号密码登录,注册校验手机号唯一性 用户认证、账号管理、权限分配
首页九宫格 四个功能入口导航 各业务模块入口路由
实时数据 查看总分与两路分量,填写业务字段并保存 MQTT 上报解析、实时推送、记录写入
历史数据 按时间浏览、按车辆牌照检索、重复过磅提醒 记录分页查询、条件检索、去重校验
终端管理 查看编号 / 名称 / 在线状态,进入详情修改 终端注册、在线状态维护、参数下发
个人中心 修改姓名与电话、修改密码、退出 用户信息维护、密码校验与更新

四、系统视频展示

配套演示视频采用「屏幕录制 + 实机拍摄」的双画面形式:左侧为 EDA 中的原理图与界面操作录屏,右侧为三块节点板与称重传感器的实机画面,两侧画面同步推进。

图 15 演示视频封面(左:原理图与界面录屏;右:实机联调画面)

建议观看顺序:① 硬件连接与上电 → ② 空载与加载(观察「请放置物品」与「称重稳定」的切换)→ ③ 网关汇总(两路分量与总重量同步更新、超阈值蜂鸣器动作)→ ④ APP 实时数据与历史记录(刷新、稳定判定提示、重复过磅提醒)。


五、获取方法

5.1 交付清单

类别 内容
硬件实物 网关节点 1 块、测量节点 2 块,含 HX711 模块、应变式称重传感器、HC-14 无线 433 模块、ESP8266(ESP-01S)、OLED12864、蜂鸣器与按键
程序源码 STM32 侧边缘程序(测量节点与网关节点两套 Keil 5 工程)与 Java 服务端程序
硬件资料 主节点与子节点两套原理图(嘉立创 EDA 源文件与 PDF / 图片导出)、PCB 打样文件
文档资料 数据库还原说明、Wi-Fi 与通信参数说明、软件环境下载说明
演示材料 系统演示视频(含无水印版与水印版)、项目介绍文档与配图
技术服务 远程协助环境搭建、程序烧录与调试,交付后的小修答疑

5.2 获取方式

在 CSDN 博客下方留言或发送私信,注明项目编号 X604061 与项目名称「基于无线传输的地衡系统」;收到后按「程序源码 / 硬件资料 / 文档资料」三类分别交付。

5.3 技术支持

源码获取、技术支持请联系 绿泡泡 xswzls


附录 A 参数速查(可直接复制)

复制代码
# 无线节点与云端
Wi-Fi SSID      : 8266wifi
Wi-Fi 密码      : 123456789
MQTT 主机名     : broker-cn.emqx.io
上报主题        : mybs/bsdata/2462AB65F2F2
下发主题        : mybs/bsctr/2462AB65F2F2
串口参数        : 115200 / 8 / N / 1
终端标识        : ZDBH01

# 引脚(测量节点 A / B)
HX711   SCK -> PB10    DT -> PB11
OLED    SCK -> PB6     SDA -> PB7
无线    TXD -> PA10    RXD -> PA9
按键    ->  PA1(10 kOhm 上拉至 5V)

# 引脚(网关节点)
无线    TXD -> PA3     RXD -> PA2
ESP8266 RX  -> PA9     TX  -> PA10
OLED    SCK -> PB6     SDA -> PB7
蜂鸣器  ->  PB1

附录 B 调试要点

  • 节点间链路为 433 MHz 串口透传:MCU 写入无线模块串口的字节会被自动调制发出,接收侧模块解调后从串口吐出。因此排查链路时先确认两侧波特率一致,再确认引脚未接反(模块 TXD 接 MCU RX、模块 RXD 接 MCU TX)。
  • 上云链路排查顺序建议为:Wi-Fi 是否连上默认热点 → 能否解析 MQTT 主机名 → 主题是否与设备标识一致 → 服务端是否已订阅上报主题。
  • 称重读数异常时的排查顺序:先确认 HX711 的 DT / SCK 未被互换,再核对单路校准系数,最后确认两路共地是否可靠。
  • 出现「偏载 / 摆放异常」提示时,说明两路分量差异超过比较上限,应检查载荷在承载面上的摆放位置,而不是直接调整校准系数。

附录 C 素材说明

  • 配图 15 张:自绘 4 张(图 1 系统总体架构、图 2 系统功能结构、图 3 硬件系统原理框图、图 6 系统数据交互时序),真实素材 11 张(2 张原理图、3 张硬件实拍、5 张 APP 双屏、1 张视频封面)。
  • 原理图为嘉立创 EDA 导出的 PNG,已裁去白边并放大至 1400 宽;配图文件夹中另存同分辨率原图,可按需替换。
  • APP 界面采用两块 1170×2532 手机截图横向拼接为一张,以在正文栏宽下保留表单文字的可辨识度。
  • 界面截图中的车辆号牌、货物名称、用户姓名与手机号均来自演示环境,用于说明字段结构,不具备现实对应关系。
  • 项目目录下另有 APP全景图.png(16703×2532,14 屏横向拼合),因缩放后文字不可辨识,未用于本稿配图。
相关推荐
俊哥大数据1 小时前
Flink1.20.3 实时消费 Kafka 数据并解析入湖 Paimon1.4.2 全流程实战
分布式·flink·kafka·数据湖·paimon
芯祥联1 小时前
STM32 上跑 MQTT 怎么选?嵌入式 MQTT 客户端 C 语言实现对比
c语言·stm32·单片机·嵌入式硬件·网络协议·开源·broker
智购科技智能售货柜4 小时前
地下车库设备频繁掉线,排查发现是NB-IoT的PSM配置与心跳冲突~YH
物联网
宸津-代码粉碎机8 小时前
OpenAI 连夜迎战 Grok Bot 和 Muse:AI 智能体从 “会聊天” 到 “能办事”,现在入场还来得及吗
java·大数据·人工智能·分布式·python
程序猿乐锅9 小时前
【黑马点评 | 第八篇】Redisson分布式锁
java·数据库·spring boot·redis·分布式·spring·缓存
做萤石二次开发的哈哈9 小时前
视频解码器怎么对接?解码上墙、电视墙开窗与场景切换的ISAPI接入实战
人工智能·物联网·监控·视频编解码·大屏端·萤石开放平台·蓝海aiot一站式工作台
Brilliantwxx10 小时前
【STM32】 NVIC 与 EXTI 中断 · 超详细源码级解析
stm32·单片机·嵌入式硬件
灯澜忆梦10 小时前
【RabbitMQ #7】 | 消息转换器
分布式·rabbitmq·ruby
需要82611 小时前
分布式事务:Seata AT/TCC/SAGA 的取舍与踩坑
java·spring boot·分布式·spring·spring cloud