用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#对象上。下...
- 一周热门
- 最近发表
- 标签列表
-
- HTML 简介 (30)
- HTML 响应式设计 (31)
- HTML URL 编码 (32)
- HTML Web 服务器 (31)
- HTML 表单属性 (32)
- HTML 音频 (31)
- HTML5 支持 (33)
- HTML API (36)
- HTML 总结 (32)
- HTML 全局属性 (32)
- HTML 事件 (31)
- HTML 画布 (32)
- HTTP 方法 (30)
- 键盘快捷键 (30)
- CSS 语法 (35)
- CSS 轮廓宽度 (31)
- CSS 谷歌字体 (33)
- CSS 链接 (31)
- CSS 定位 (31)
- CSS 图片库 (32)
- CSS 图像精灵 (31)
- SVG 文本 (32)
- 时钟启动 (33)
- HTML 游戏 (34)
- JS Loop For (32)