百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

用STM32做了个电子秤,成本仅两位数,精度高!解析一下原理

myzbx 2025-05-09 20:33 36 浏览

俗话说得好!人在胖,秤在看!

所以,我想DIY一个精度高的体重秤!

并希望它不只能称体重:

还能像这样称克重(可设置KG,G,最低可称100克)……

这样一来,做甜品的时候,还能拿来应应急。

保姆级教程,记录在这里!


工程描述

这是一个基于stm32+HX711制作的智能体重秤DIY成本67元

本文将分享其开源教程,包括——功能、硬件组成、电路原理软件解析、制作注意事项。


功能说明

  • 基本的称重功能,可去皮称重。
  • 蓝牙、Wifi传输功能。
  • 能通过手机查看称重信息。
  • 存储称重信息,统计历史体重数据(手机端)。
  • 当重量小于一定值时进入待机状态。
  • 体重秤使用锂电池供电,带电池管理电路。


硬件组成

智能体重秤由这7部分硬件组成!看图更直观!

  • 主控芯片:STM32F103C8T6。
  • 电源接口:TYPE-C。
  • 按键:一个复位按键。
  • 体重测量芯片:HX711。
  • 显示接口:I2C协议的OLED显示器。
  • 调试接口:SWD下载调试接口。
  • 通信:通过蓝牙模块与手机进行通信。


电路原理解析

参考上一章节,本方案使用的HX711是一种称重传感器处理芯片,它能使用四个压力应变片构成全桥来测量体重,且精度高

而主控芯片STM32能和HX711通信,获得压力应变片的变形量并换算成重量,再用MX-01蓝牙模块与手机端进行通信

为了能更好的理解电子秤的工作原理,接下来,我们将电路拆分为8部分解析一下

1.电源电路

电源电路主要由TYPE-C接口,锂电池模块、充电电路组成。

LED2是充电指示灯,当充电完成时,LED2灯亮

TP4056是锂电池充电管理芯片。

P2是锂电池接口,采用3.7V的锂电池进行供电

2.主控电路

主控电路选择STM32F103C8T6作为主控芯片。

工作电压为2.0v~3.6v,最大时钟频率为72MHZ,有64KB的闪存存储器和20KB的SRAM,它配备了丰富的外设接口,包括多个通用定时器,通用同步/异步串行接口(USART),I2C和SPI接口,以支持多种通信和外部设备连接需求。

芯片的电源输入部分需要加入100nf电容进行电源滤波。

3.晶振电路

晶振电路使用了32.768Khz的低速晶振以及8Mhz的高速晶振。在软件配置中要将芯片的时钟输入源配置成外部输入

4.称重电路

称重电路使用HX711作为数模转换芯片。

通过数字接口(如SPI或者简化的串行接口)将模拟信号转换为数字数据,便于与微控制器通信。

压力传感器通过全桥的连接方式进行连接,并通过4根线接入到HX711芯片的E+,A+,GND,A- 接口,如图4-6所示。

5.稳压电路

稳压电路使用AMS1117作为稳压芯片,输出3.3V。

6.通信电路

智能体重秤通过蓝牙模块与手机进行通信。

其中蓝牙模块使用MA-01A,采用BLE5.2蓝牙接口,体积小连接快,具有100m+的测试通讯距离,模块发射功率为5dbm,模块通过串口与主控电路连接实现透传。

7.复位电路

按下主控的RESET,引脚被拉低,系统进入复位状态。

松开Reset按键,主控的RESET引脚恢复高电平,系统重新进行工作状态,完成复位。

8.OLED显示接口

项目采用OLED作为显示器,用来显示体重信息。

OLED显示模块通过I2C协议与主控芯片通信,分别连接主控芯片的PB6和PB7

其中PB6为时钟线,PB7为SDA信号线。


软件解析

第1小节主要解析手机端软件部分;第2-3小节主要解析嵌入式软件部分。

1.手机端软件解析

采用微信小程序设计手机端软件,可以存储称重数据,并进行数据分析。

手机小程序端主要有这四个页面

  • index页面为首页,即蓝牙连接界面,可以自动搜索附近蓝牙。
  • WeightUI页面为称重主页,可以使用归零按钮进行重量归零,类似于高精度电子秤的去皮功能。
  • analyse页面为历史数据统计页面。会显示最近10次称重的体重,并计算平均、最重、最轻体重。
  • device页面是通信调试页面,可以接收数据和自定义发动数据,如图6-3所示。

小程序使用ec-canvas控件绘制折线图,可以进行图表的动态修改,具体方式详见代码。

2.时钟配置

主控芯片使用STM32CUBE进行时钟配置。

如图5-1所示,配置过程中要注意将时钟输入源切换到外部输入,即HSE,才可以或者最高主频72Mhz。

3.核心代码解析

完整的嵌入式代码见附件,这里将对附件中的核心代码进行解释:

位于main.c中的HX711_Read(void) 函数作用:从hx711模块读取传感器的数值

位于main.c中的Get_Weight(void) 函数:

将压力传感器的数值转换成重量并储存,压力传感器的数据基本呈线性,可以直接进行线性标定,如果想要获得更高精度的测量结果,则需要使用插值标定。

OLED显示字符串代码。

OLED显示字符串和数字的方式是:使用取模软件PCtoLCD获取各个字符串的十六进制编码值,再将其写入单片机代码文件中,如图5-5所示。

本项目主要使用到的是一些字符串,也可以将二值化的图像通过取模软件进行取模并显示在OLED上。

同时,如果想要显示动画,也可以通过GIF的多张图像,用取模软件取模并放置在代码文件中。

注意事项

这里主要分享——原理图绘制、布线、调试的注意事项。

1.原理图绘制

  • 模块化电路结构,并进行合理分区
  • 没有网络的引脚要标注。
  • 要注意电源滤波电容的添加。

2.布线

  • 电源的滤波电容要尽量接近电源引脚
  • 信号线避免形成回路。
  • 蓝牙模块的天线要朝外面,并且天线下面不要铺铜。
  • 避免出现直角走线。
  • 电源走线建议使用T型连接。
  • 晶振低下最好保证净空不要走线。
  • 合理添加丝印提示。

3.调试

  • 串口的RX对应蓝牙模块的TX,TX对应蓝牙模块的RX,注意不要弄反
  • 压力传感器的连接要注意全桥的连接方式,注意顺序不要反,如果一次接四个不好测试,可以先从一个压力传感器开始测试。

参考资料:

[1]https://oshwhub.com/qgwww/zhi-neng-ti-zhong-cheng

— 完 —

嘉立创EDA·头条号

关注我,看一手优质开源项目

相关推荐

vue3和web网页直接操作微信小程序云开发数据库

我们开发好小程序以后,有时候需要编写一个管理后台网页对数据库进行管理,之前我们只能借助云开发自带的cms网页,但是cms网页设计的比较丑,工作量和代码量也不够,所以我们今天就来带大家实现用vue3编写...

WebCurl:极致轻量的跨平台 HTTP 请求调试工具

在接口开发与测试领域,工具的轻量化、兼容性与安全性往往直接影响工作效率。WebCurl作为一款纯原生、无依赖的网页版API测试与调试工具,凭借极简架构与全场景适配能力,重新定义了接口调试工具的使...

webapi 全流程_webapi项目

C#中的WebAPIMinimalApi没有控制器,普通api有控制器,MinimalApi是直达型,精简了很多中间代码,广泛适用于微服务架构MinimalApi一切都在组控制台应用程序类【Progr...

Nodejs之MEAN栈开发(四)-- form验证及图片上传

这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...

CodeSpirit.Amis.AiForm 智能表单使用指南

概述AiForm是CodeSpirit.Amis框架的智能表单功能,专为AI驱动的长时间处理任务设计。它自动生成一个多步骤的用户界面,包含表单输入、进度监控、日志显示和结果展示等功能。功能特点...

初级、中级、高级前端工程师,对于form表单实现的区别

在React项目中使用AntDesign(Antd)的Form组件能快速构建标准化表单,特别适合中后台系统开发。以下是结合Antd的最佳实践和分层实现方案:一、基础用法:快速搭...

Bun v0.7 大版本发布,与 Vite 牵手来破局?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发,您的支持是我不断创作的动力。今天给大家带来...

「前端」界面可视化开发框架formio.js

简介formio是一个前端可视化开发框架,无需写css/js就可以开发一套前端界面。直接在界面内拖拽就可以完成界面的布局及开发。数据交互也是固定的,表单校验也可以配置,功能非常强大。特性使用ES6...

小伙给同事爬取数据竟获取不到,竟要使用这种请求方式才能获取?

Http请求中FormData和RequestPayload两种参数的区别?AjaxPost请求中常用的两种的形式:formdata和requestpayload一、默认的表单方式...

WinForm + Win32 API 自定义无边框窗口实战(工业软件必备)

前言随着.NET9.0AOT(Ahead-of-Time)的发布,便萌生了用代码测试AOT编译效果的想法,同时评估未来是否为NanUI开发支持AOT编译的新版本。关于NanUI项目,若大家尚未了...

DeepSeek从入门到精通(11)——网页版、APP、API使用方式比较

DeepSeek提供了三种主要的使用方法:网页版、手机APP和API调用。这三种方式各有特点,适用于不同的使用场景。下面从使用方法和主要特点两方面进行比较:一、网页版使用方法:直接通过浏览器访问De...

初略Web API Notification 桌面通知

HTML5WebNotificationsAPI通知接口用于向用户配置和显示桌面通知弹窗。例如,Email邮件通知、来电提醒、聊天信息提醒或任务提醒等。关于Web开发技术中Notificat...

什么是API网关?——驱动数字化转型的“隐形冠军”

什么是API网关API网关(APIGateway)是一个服务器,位于应用程序和后端服务之间,提供了一种集中式的方式来管理API的访问。它是系统的入口点,负责接收并处理来自客户端的请求,然后将请求路由...

.NET 7使用 Entity Framework Core 制作增删改查(CRUD) Web API 教程

在本文中,我们将使用EntityFrameworkCore(EFCore)实现一个.NET7WebAPICRUD示例。WebAPI是一个构建HTTP服务的框架,可以从浏览器、移动设备和...

C# ASP.NET Core Web Api 与 MVC 模式下 body 参数传递,post 参数方式

在ASP.NETCore中,WebAPI和MVC模式在处理HTTP请求时,特别是POST请求,使用body参数来传递数据的方式非常相似。两者都使用模型绑定来自动将请求体中的数据映射到C#对象上。下...