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

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

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

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

所以,我想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·头条号

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

相关推荐

MORROR ART:毫无音质可言,真的只是好看而已...

今天早上我在微博上发了一条短视频,内容是某款网红音箱正在放声歌唱——这玩意就是此前曾经在网上挺火的所谓“悬浮歌词音箱”。这款产品是我同事收到的礼品,但她嫌在家里放着没用,所以拿到公司里做我们的拍摄道具...

「JS优化篇」你的 if - else 代码肯定没我写的好

作者:小生方勤转发链接:https://mp.weixin.qq.com/s/JzOQ_OwAYoP5Ic1VBtCZNA前言最近部门在对以往的代码做一些优化,我在代码中看到一连串的if(){}el...

细聊微内核架构在前端的应用「干货」

作者:semlinker转发链接:https://mp.weixin.qq.com/s/ywc98dS4TVB4t3L2tIyk8g一、微内核架构简介1.1微内核的概念微内核架构(Microke...

ThreeJS 入门教程(一) 是选择桌面的固守还是云原生?

导读:最近我购置了一台新的电脑,硬盘空间只有1T。我很担心这个电脑还能用多久。性能限制或者空间的限制,都使得在未来3-5年内,这个电脑会被淘汰。但是,基于云APP的使用,老的电脑是足够了,而且,我们也...

推荐三款正则可视化工具「JS篇」(正则在线调试)

作者:代码先森转发链接:https://mp.weixin.qq.com/s/rw29yKBwti5sIsx2GKG9pw前言最近老王对可视化非常着迷。例如,算法可视化、正则可视化、Vue数据劫持可...

Javascript 多线程编程的前世今生

作者:jolamjiang腾讯技术工程转发链接:https://mp.weixin.qq.com/s/87C9GAFb0Y_i5iPbIL5Hzg为什么要多线程编程大家看到文章的标题《Javasc...

Pug 3.0.0正式发布,不再支持 Node.js 6/8

作者:李俊辰前端之巅转发链接:https://mp.weixin.qq.com/s/q-49Gf-SFijeu7d2MqztIQ前言近日,Pug3.0.0正式发布,Pug原名Jade,是由...

36个工作中常用的JavaScript函数片段「值得收藏」

作者:Eno_Yao转发链接:https://segmentfault.com/a/1190000022623676前言如果文章和笔记能带您一丝帮助或者启发,请不要吝啬你的赞和收藏,你的肯定是我前进的...

深入JavaScript教你内存泄漏如何防范

作者:大道至简转发链接:https://mp.weixin.qq.com/s/0w6aWwpR3MAJnmyLwDnAzA前言一般情况下,忽视内存管理不会对传统的网页产生显著的后果。这是因为,用户刷新...

由浅入深,66条JavaScript面试知识点(七)

作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录由浅入深,66条JavaScript面试知识点(一)由浅入深,66...

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

俗话说得好!人在胖,秤在看!所以,我想DIY一个精度高的体重秤!并希望它不只能称体重:还能像这样称克重(可设置KG,G,最低可称100克)……这样一来,做甜品的时候,还能拿来应应急。保姆级教程,记录在...

前端开发需要了解常用7种JavaScript设计模式

作者|Deven译者|王强策划|小智转发链接:https://mp.weixin.qq.com/s/Lw4D7bfUSw_kPoJMD6W8gg前言JavaScript中的设计模式指的是...

毛姆的一个手法|王培军(毛姆作品简介)

鲁本斯画《海伦娜·芙尔曼肖像》钱锺书在《宋诗选注》文同小传中说:“具体的把当前风物比拟为某种画法或某某大画家的名作”,是“从文同正式起头”。如钱先生所举的:“峰峦李成似,涧谷范宽能”,“独坐水轩人不到...

欣赏 | 朝戈:我渴望找到直达心灵的永恒

朋友,通过艺术让我们共同感知世界的永恒与不朽。——朝戈橙色的人物117X71cm布面油画2003包与陈185cm×103cm2007年白色80cm×40cm2009年光布面油画-Light-Oilo...

Web页面如此耗电!到了某种程度,会是大损失

现在用户上网大多使用移动设备或者笔记本电脑。对这两者来说,电池寿命都很重要。在这篇文章里,我们将讨论影响电池寿命的因素,以及作为一个web开发者,我们如何让网页耗电更少,以便用户有更多时间来关注我们的...