从厨房秤到智能称重:用STM32F103和HX711打造你的第一个物联网传感器节点

📅 2026/7/1 2:28:12
从厨房秤到智能称重:用STM32F103和HX711打造你的第一个物联网传感器节点
从厨房秤到智能称重用STM32F103和HX711打造你的第一个物联网传感器节点在智能家居和精准农业的浪潮中称重技术正从简单的测量工具进化为数据感知节点。想象一下当厨房秤能自动记录食材库存或花盆通过重量变化提醒浇水这些场景背后都依赖一个关键组件——智能称重传感器。本文将带您从零构建一个基于STM32F103和HX711的物联网称重系统涵盖硬件设计、数据上传和可视化全流程。1. 硬件架构设计1.1 核心组件选型STM32F103C8T6作为主控芯片以其72MHz主频和丰富的外设接口成为性价比之选。搭配HX711这款24位高精度ADC芯片可轻松实现毫克级测量精度。典型硬件连接方案如下模块连接引脚功能说明HX711 DOUTPA1数据输入HX711 PD_SCKPA0时钟控制ESP-01S TXUSART2_RXWi-Fi模块数据接收ESP-01S RXUSART2_TXWi-Fi模块数据发送提示应变片选择直接影响量程20kg规格的传感器适合大多数家用场景工业应用建议选用铝合金材质传感器。1.2 电源管理优化物联网节点常需电池供电低功耗设计尤为关键启用STM32的睡眠模式仅在测量时唤醒为HX711设计独立电源开关电路配置ESP-01S的深度睡眠模式需硬件复位唤醒// 低功耗配置示例 void Enter_LowPowerMode(void) { HAL_GPIO_WritePin(PWR_CTRL_GPIO_Port, PWR_CTRL_Pin, GPIO_PIN_RESET); // 关闭HX711电源 HAL_UART_DeInit(huart2); // 禁用Wi-Fi模块 HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI); }2. 称重算法实现2.1 数据采集与滤波HX711的10Hz采样率需配合数字滤波才能获得稳定读数。采用移动平均阈值滤波的复合算法#define SAMPLE_COUNT 5 long Get_FilteredWeight(void) { long samples[SAMPLE_COUNT]; for(int i0; iSAMPLE_COUNT; i){ samples[i] Get_Weight(); HAL_Delay(100); } // 剔除最大最小值 long sum 0; long max samples[0], min samples[0]; for(int i0; iSAMPLE_COUNT; i){ if(samples[i] max) max samples[i]; if(samples[i] min) min samples[i]; sum samples[i]; } return (sum - max - min)/(SAMPLE_COUNT-2); }2.2 动态校准机制传统电子秤需手动校准智能系统可实现自动校准上电后检测10秒无负载状态自动记录零点已知重量校准法放置500g标准砝码后触发校准命令温度补偿内置NTC监测环境温度修正漂移误差3. 物联网集成方案3.1 通信协议选择对比三种主流物联网协议协议功耗传输距离数据速率适用场景Wi-Fi高中快固定电源设备BLE低短中移动终端直连LoRa极低长慢户外分散节点3.2 MQTT数据上传通过ESP-01S连接MQTT Broker的完整流程void Publish_WeightData(float weight) { char payload[50]; sprintf(payload, {\weight\:%.2f,\unit\:\g\}, weight); HAL_UART_Transmit(huart2, ATCIPSEND0,, strlen(ATCIPSEND0,), 100); HAL_UART_Transmit(huart2, strlen(payload), 2, 100); HAL_UART_Transmit(huart2, payload, strlen(payload), 100); HAL_Delay(500); }注意MQTT主题建议采用分层结构如home/kitchen/scale14. 云端数据可视化4.1 ThingsBoard仪表盘配置创建设备实体并配置MQTT接入点设计包含以下组件的仪表盘实时重量曲线图累计重量统计卡片异常重量报警开关设置规则链实现微信推送报警4.2 本地数据缓存策略网络中断时的数据保障方案使用STM32内部Flash存储最近100条记录实现FIFO循环存储算法网络恢复后自动同步历史数据#define MAX_RECORDS 100 typedef struct { uint32_t timestamp; float weight; } WeightRecord; void Save_ToFlash(WeightRecord record) { static uint16_t write_ptr 0; FLASH_Program(0x0800FC00 write_ptr*sizeof(WeightRecord), (uint32_t*)record, sizeof(WeightRecord)/4); write_ptr (write_ptr 1) % MAX_RECORDS; }5. 典型应用场景扩展5.1 智能厨房管理系统食材余量监测通过重量变化推算消耗量菜谱分量引导分步称重指导烹饪流程购物清单生成自动计算需补充的食材5.2 农业监测系统改造盆栽土壤含水量分析通过重量变化曲线判断蒸发量饲料投放监控记录牲畜每日进食量蜂蜜产量统计蜂箱重量的季节性变化分析在最近的一个阳台种植项目中这套系统成功实现了对10盆植物的自动水分管理。当花盆重量低于设定阈值时系统会推送提醒并自动生成浇水记录误差控制在±2g以内。