目录
[2.1 硬件清单:](#2.1 硬件清单:)
[2.2 功能介绍:](#2.2 功能介绍:)
[资料获取 查看主页介绍:兆龙电子单片机设计](#资料获取 查看主页介绍:兆龙电子单片机设计)
一、设计背景和意义
1.1设计背景:
在日常家庭食材精准称重、商铺零售定量计价、快递驿站重量核算、实验室小样称量及工业小件重量检测的背景下,重量精准测量、计价智能换算、多场景便捷适配、数据可追溯管理成为电子秤类产品的核心需求。传统电子秤使用方式存在明显局限:一方面,高端智能称重管控系统(如定制化工业称重中控平台、工业级高精度计量网关、品牌成套商用计价称重设备)功能虽全但成本高昂,部署复杂且需专业人员上门调试与后期维护,难以普及到普通家庭、小型商铺、快递驿站及小型实验室等日常场景,且系统生态封闭性强,不同品牌、不同协议的称重设备与数据终端兼容性差,无法与个人移动终端、商铺收银系统、机智云物联网平台灵活联动,更换或升级成本高,无法满足不同人群(如普通家庭用户、商铺经营者、快递员、实验室人员)的便捷称重与计量管理需求;另一方面,普通简易电子秤装置(如传统机械台秤、单一功能便携电子秤、基础款计价秤)虽操作简单、价格低廉,但功能单一,仅能实现基础的重量测量或固定单价计价,缺乏多单位重量换算、称重数据存储、远程数据同步及设备故障状态提醒(如传感器漂移、计价模块失灵、设备低电量)等功能,无法满足现代化生活与经营场景下对全面覆盖、智能响应、便捷高效的称重与计量管控需求。
现有关电子秤管控方案还存在功能割裂与集成度低的问题:部分高端智能称重管控系统虽具备多维度计量管控与数据联动功能,但依赖复杂的软硬件架构与专属生态维护,后期使用成本高,难以覆盖预算有限的普通消费群体、个体商户或小型实验室的称重场景;而低成本电子秤装置又在功能完整性与智能化上存在欠缺,无法实现称重数据与电子秤终端、移动 APP、机智云物联网平台的实时联动,导致计价换算延迟、重量测量误差偏大、个性化需求(如家庭烘焙精准配料称重、商铺零售自动计价、快递重量一键记录)无法满足等问题,无法为用户精准称重计量(如把控食材分量、核算商品价格)及高效开展经营与实验活动(如追溯称重数据、监测异常计量状态)提供可靠支撑。基于此,本设计以 STM32 单片机为核心,融合高精度重量采集与辅助模块(如压力传感模块、多单位换算模块、计价计算模块、语音播报模块)、LCD 显示模块、数据存储模块及基于机智云的物联网通信与异常提醒模块,构建低成本、高集成度的 STM32 单片机多功能电子秤系统 - 机智云版,以解决传统电子秤使用方式操作繁琐、智能化程度低、功能单一及称重计量管控效率低的问题。
1.2设计意义:
从使用体验与多功能电子秤精细化管控效率角度,该系统突破了传统电子秤使用方式的局限:一是实现了多维度重量监测与全场景计量联动(如支持物品重量实时采集、多单位重量精准换算、单价自定义计价、定时称重记录控制,联动机智云物联网通信模块、异常声光提醒模块、电子秤智能计量执行模块),无需用户手动换算单位、频繁核对称重数值或记录计量设备运行情况,减少称重计量的繁琐性与数据管控的延迟性;二是配备 OLED 实时显示模块,直观呈现当前物品重量 / 计价金额 / 单位换算结果、系统运行状态(正常 / 异常)及提醒类型,同时支持数据自动存储(可通过机智云平台传输至移动 APP / 个人称重管理平台 / 商铺计量管控平台),方便用户与商铺管理员长期追溯称重、计价等历史数据、设备运行记录,也为优化称重计量方案、排查设备故障隐患及多场景规模化计量管控提供完整数据支撑;三是新增个性化计量预警与自动响应功能,当监测到计量异常状态(如传感器漂移、超重预警、单价未设置、设备低电量),系统根据状态类型自动触发对应执行动作(同时通过声光提醒模块反馈预警 / 执行信息与设备当前工作状态,机智云同步推送至关联移动终端),并联动电子秤执行模块完成智能操作(如联动 "超重预警",自动锁定计价功能、播报超重提示、记录异常时间与重量参数,同步更新计量台账),无需人工现场干预即可实现多功能电子秤的精细化管控,大幅提升了称重计量的便捷性与数据管理的高效性。
从技术实践与成本控制角度,本设计以 STM32 单片机为核心,充分利用其低功耗、高性价比的优势,搭配低成本的高精度重量采集模块及通用外围模块,在保证计量管控精度(核心重量监测准确率可控制在 98% 以上,计价 / 单位换算与预警响应时间可控制在 0.5 秒以内)的前提下,有效降低了系统整体成本,相比同功能的高端智能称重管控系统成本降低 40%-60%,更易普及到普通家庭、小型商铺、快递驿站、实验室及个体经营摊位等场景。同时,系统支持模块化扩展(如后续可新增多人个性化计量权限管理功能、基于机智云的远程手动校准与参数设置功能、称重数据统计分析功能),为后续功能升级预留了空间,具备良好的灵活性与可扩展性。
**二、**实物展示
下方为实物演示视频
下方为实物展示图片

三、硬件功能介绍
2.1 硬件清单:
-
STM32F103C8T6
-
OLED显示
-
HX711称重传感器
-
声光报警
-
矩阵键盘
-
降压模块
-
WIFI模块
2.2 功能介绍:
(1)液晶屏实时显示皮重、重量、单价与总价
(2)通过按键设置物品单价
(3)支持去皮清零与单价清除功能
(4)按下确认键,屏幕锁定并显示当前的重量、单价及总价
(5)所有显示数据同步上传至手机WIFI APP,并可远程进行单价设置与去皮操作
四、软件设计流程图

五、硬件PCB展示

六、软件主函序展示
int main(void)
{
main_Init();
while(1)
{
main_loop();
}
}
void main_Init()
{
OLED_Init();
Timer_Init();
BEEP_Init();
OLED_Clear();
HX711_GPIO_Init();
OLED_ShowChinese(2,2,"正在初始化...");
Delay_ms(2000); //对接成功界面停留一定时间
weight_err = Get_Tare();
Pi_weight = Get_Tare();
}
void main_loop()
{
show_init();
keynum = KeyScan();
if(keynum != 255)
{
if(keynum == remove_tare)
{
Pi_weight = Get_Tare();
}else if(keynum == set)
{
set_price();
}
}
/*
OLED_ShowNum(1,7,(int)(Pi_weight - weight_err),4);
OLED_ShowNum(1,12,(int)(weight_err),4);
OLED_ShowNum(2,7,(int)(Pi_weight),4);
*/
Weight = 1.73*Get_Weight(Pi_weight);
if(Weight < 0.5)Weight = 0;//去除干扰
total_price = single_price*Weight/1000;
OLED_ShowNum(1,7,(int)(Pi_weight - weight_err)/1000,1);
OLED_ShowChar(1,8,'.');
OLED_ShowNum(1,9,(((Pi_weight - weight_err)/1000)-(int)((Pi_weight - weight_err)/1000))*10000,4);
OLED_ShowNum(2,7,(int)(Weight)/1000,1);
OLED_ShowChar(2,8,'.');
OLED_ShowNum(2,9,(((Weight)/1000)-(int)((Weight)/1000))*10000,4);
// OLED_ShowNum(2,7,Weight,4);
if(price[0] == '\0')
{
OLED_ShowNum(3,7,0,6);
}else
OLED_ShowString(3,7,price);
OLED_ShowNum(4,7,(int)total_price,5);
OLED_ShowChar(4,12,'.');
OLED_ShowNum(4,13,(total_price-(int)total_price)*10,1);
Delay_ms(100);
}
void show_init()
{
OLED_ShowChinese(1,1,"皮重:");
OLED_ShowChinese(1,7,"千克");
OLED_ShowChinese(2,1,"重量:");
OLED_ShowChinese(2,7,"千克");
OLED_ShowChinese(3,1,"单价:");
OLED_ShowChinese(3,8,"元");
OLED_ShowChinese(4,1,"价格:");
OLED_ShowChinese(4,8,"元");
}
void set_price()
{
OLED_Clear();
OLED_ShowChinese(1,3,"请输入单价");
uint8_t index = 0;
uint8_t dot_flag = 0;
uint8_t end_flag = 0;
single_price = 0;
decimal = 0;
price[0] = '\0';
while(1)
{
if(index == 6)break;
keynum = KeyScan();
if(keynum == ok)
{
break;
}else if(keynum >=0 && keynum <= 9 && end_flag == 0)
{
price[index] = '0' + keynum;
if(index < 6)
price[index+1] = '\0';
OLED_ShowChar(3,7+index,price[index]);
if(index > 0 && price[index-1] == '.')
{
single_price += keynum*0.1;
decimal = keynum;
end_flag = 1;
}else
{
single_price *= 10;
single_price += keynum;
}
index++;
}else if(keynum == dot)
{
if(index > 0)
{
if(dot_flag==0)
{
dot_flag = 1;
price[index] = '.';
if(index < 6)
price[index+1] = '\0';
OLED_ShowChar(3,7+index,price[index]);
index++;
}
}
}
}
OLED_Clear();
}
七、单片机实物资料
