luna 发表于 2018-6-14 09:37:26

用ESP8266 开发板,制作WiFi物联网智能体重秤

如果你居住的地方已经是夏天,那么可能正是户外健身活动的好时节。跑步、骑行或者慢跑都是非常棒的运动,可以让您保持体形。



如果你希望减肥或者保持当前体重,那么坚持记录体重是至关重要的。例如,使用运动品牌可以让您确认是否处在正轨并且保持积极性。但是非常重要的是坚持记录你的体重变化。通过正确的工具和使用一些电子元件和编程,你就能够制作自己的互联网体重秤!你可以在网上找到来自不同制造商的多款智能体重秤。但是与其购买一个,为什么不通过制造自己的体重秤来减肥呢?




在这个项目中,我使用3D打印,一个FireBeetle ESP8266开发板,IFTTT和Adafruit.IO设计制造了一个智能体重秤。你可以通过这个教程练习多项技能:3D打印和激光切割技能,焊接,电子技术,编程等等。在接下来的步骤里,我将向你展示如何使用3D打印外壳,连接电路,以及编写代码。在完成本教程后,你将能够测量体重并在线记录!

准备工具和材料 硬件清单

[*]FireBeetle ESP8266开发板
[*]FireBeetle 24x8 LED矩阵
[*]HX711模块
[*]50kg称重传感器(x4)
[*]2 x 15 mm胶合板(30 x 30 cm)
[*]Micro USB数据线
[*]6根插座-插座跳线
[*]3D打印机
[*]1.75mm PLA
[*]烙铁和电线
[*]热缩管
[*]螺丝刀
[*]螺钉
[*]M2x6mm螺栓



我是采用了FireBeetle ESP8266作为主板,一方面它用Arduino IDE编程方便,还配备内置的Wi-Fi模块,该主板带有一个用于3.7V电池的连接器,这对于本项目的组装是非常有用的。此外它还配备一个内置的电池充电器,当连接USB插头时,该充电器可以为电池充电。
体重计的显示部分,我是用了FireBeetle 24x8 LED矩阵,它的显示颜色很多,可以自己选择,我用它显示微控制器的测量值,以及显示一些状态等。 HX711模块:它被用作称重传感器放大器。四个应变式称重传感器被连接到该模块,并通过串行通信与FireBeetle ESP8266控制器进行通信。50kg称重传感器(x4):它们被用于测量用户的体重。4个称重传感器可测量的最大重量为200kg。

3D建模智能体重秤采用Fusion 360 CAD软件设计。模型由3个不同的3D打印零件组成:盖板、机箱和支脚。机箱为电子元件提供了保护外壳,防止它们受到物理接触影响。电子元件被安装在盖板中(使用螺栓),盖板上配有一个前护罩,其中安装了显示器。
称重传感器被安装在支脚中,这使得传感器能够与基座连接。


https://cdn.instructables.com/F9G/1D5X/JHKU6A1R/F9G1D5XJHKU6A1R.ANIMATED.LARGE.gif



3D打印

下载所有STL文件我在PLA中打印了全部结构件,使用了两种不同颜色。整个打印工作花费了我大约5个半小时,使用0.2mm分辨率和10%填料率。无需支架。
这是一个实验模型。请注意,该模型是专为FireBeetle ESP8266 设计的。
STL文件下载:





木工



我们体重秤的基座由两块15mm 30 x 30 cm胶合板制成。我用一把螺丝刀钻出了一些开孔,用于穿过称重传感器的电线,以及连接3D打印零件。

电子元器件连接

1、将FireBeetle ESP8266 和LED矩阵进行焊接

我将一个插头-插座引脚板焊接到FireBeetle ESP8266模块上


https://www.instructables.com/files/deriv/FCO/V5RM/JHI9YJYL/FCOV5RMJHI9YJYL.ANIMATED.LARGE.gif

通过这种方式,我可以通过连接插座连接罩在该模块上方的LED矩阵,并通过插头引脚连接HX-711模块(用于传感器)


https://www.instructables.com/files/deriv/FVB/VILX/JHATNQ4T/FVBVILXJHATNQ4T.ANIMATED.LARGE.gif


我还必须在LED矩阵上焊接了一个插头引脚板,以便它可以连接到FireBeetle ESP8266模块。


https://cdn.instructables.com/FWB/W2XF/JHATNQ4R/FWBW2XFJHATNQ4R.ANIMATED.LARGE.gif
2、HX711和称重传感器进行焊接
大多数HX711板上没有焊接引脚,我焊接了一个插头引脚板,用于随后连接ESP8266开发板和称重传感器。

https://www.instructables.com/files/deriv/F9A/L6PI/JHKU4PRF/F9AL6PIJHKU4PRF.ANIMATED.LARGE.gif

焊接称重传感器信号端子称重传感器通常配有三根导线(黑色,白色和红色)。红色导线是信号线,我将其连接到HX711模块。为此,我使用两根插座-插座跳线。我切开跳线一端,并将其焊接到称重传感器红色导线上。随后使用一段热缩管包裹焊接接头,以实现更好的隔离。我还必须焊接称重传感器的白色和黑色导线,但是只有在传感器安装并固定在结构件上之后才能完成。



组装体重秤-Pt1
首先我必须将称重传感器装入3D打印的支脚内,它们被锁定在这个支脚架内,然后通过一些螺钉固定在结构件上。

https://www.instructables.com/files/deriv/FCV/F6W2/JHKU5SJV/FCVF6W2JHKU5SJV.ANIMATED.LARGE.gif


我使用了4个M2x1.6mm螺钉来将显示器安装到3D打印的盖板上,另外两个螺栓用于连接HX-711模块,ESP8266通过插座引脚板与显示器模块连接,一跟四芯导线将HX-711连接到ESP8266模块,更多细节请参见后续步骤。


https://www.instructables.com/files/deriv/FI5/BOGS/JHKU5S9I/FI5BOGSJHKU5S9I.ANIMATED.LARGE.gif



盖板组件安装在3D打印机箱内,机箱上还有另外两个矩形孔:一个用于HX-711模块与称重传感器之间的电缆,另一个用于给电路供电和上载代码的USB电缆。


https://www.instructables.com/files/deriv/F2L/145I/JHKU5SE5/F2L145IJHKU5SE5.ANIMATED.LARGE.gif



机箱只有在传感器连接完成后(如下个步骤所示)才能够封闭。





组装体重秤 - Pt2


一旦3D打印零件和木板准备就绪,就是时候组装结构件了,按照以下步骤进行:


1.安装称重传感器到第一块木板上。我使用螺钉固定各个称重传感器。
https://www.instructables.com/files/deriv/FZG/CRQ4/JHKU5SGH/FZGCRQ4JHKU5SGH.ANIMATED.LARGE.gif
2.每个传感器正上方的木板上已经提前开孔。电缆穿过这些开孔连接到木板的另一侧。

3.按照下一个步骤9中所示的接线图焊接电线。

[*]Upper left white wire <=> Upper right white wire
[*]Lower left white wire <=> Lower right white wire
[*]Upper left black wire <=> Lower left black wire
[*]Upper right black wire <=> Lower right black wire

使用一些热缩管来隔离电线。



4.连接3D打印机箱。将红色导线穿过机箱上的一个开孔,然后连接到HX711模块。

5.在第一块木板上方安装第二块木质面板,使用4个螺钉紧固。


最终装饰
我用油漆刷涂了两块模板,并在机箱上增添了一些细节,以获得更好的装饰效果。你可以选择两种不同颜色,甚至在表面上增加其他材料。





连接电路

https://cdn.instructables.com/FU0/1LUU/JHIA31PU/FU01LUUJHIA31PU.LARGE.jpg?auto=webp&width=611

https://cdn.instructables.com/FRL/TXW5/JHKTRZ7W/FRLTXW5JHKTRZ7W.LARGE.jpg?auto=webp&width=589


每个装置都按照接线原理图连接。

HX711—输入:
[*]Upper left load cell signal (red wire) => HX711 E- pin
[*]Lower left load cell signal (red wire) => HX711 A+ pin
[*]Upper right load cell signal (red wire) => HX711 A- pin
[*]Lower right load cell signal (red wire) => HX711 E+ pin


HX711- 输出 (使用双母头跳线):
[*]HX711 Vcc pin => ESP8266 3.3V pin
[*]HX711 GND pin => ESP8266 GND pin
[*]HX711 SCK pin => ESP8266 GPIO 12 (pin D9)
[*]HX711 DT pin => ESP8266 GPIO 0 (pin D8)


显示模块:
[*]连接到FireBeetle(萤火虫)ESP8266顶部。


当完成所有接线后,封闭机箱,将一根USB电缆插入ESP8266并准备好上载代码。



在Arduino IDE上设置FireBeetle ESP8266
对于本项目,我使用Arduino IDE来编程我的ESP8266开发板。如果你以前曾经使用过Arduino,那就要简单许多,你无需学习新的编程语言,例如Python或者Lua。

https://cdn.instructables.com/FZQ/XW7B/J8QGFW94/FZQXW7BJ8QGFW94.LARGE.jpg?auto=webp&width=463



如果你从未用过Arduino,那么首先你需要在Arduino软件中添加ESP8266开发板支持。

1.下载并安装最新版本的Arduino IDE你可以在Arduino网站上找到适用于Windows、Linux或者MAC OSX的最新版本。免费下载后安装在你的计算机上并启动软件。
2.增加ESP8266开发板Arduino IDE现已支持多种不同主板:Arduino Nano、Mine、Uno、Mega、Yún等等。不幸的是ESP8266并不属于这些默认支持的开发板。因此为了上载代码到ESP8266主板,你必须首先在Arduino软件中增加ESP8266的属性。

[*]导航到文件 > 首选项(File > Preferences)(在Windows OS上为Ctrl +);
[*]将下列URL添加到额外主板管理器文本框(位于首选项窗口底部):
[*]如果文本框并不是空的,则意味着之前已将在Arduino IDE上添加了其他主板。在先前存在的URL和上述URL的末尾增加一个逗号。
[*]点击“OK”按钮并关闭首选项窗口。
[*]导航到工具 > 主板 > 主板管理器(Tools > Board > Boards Manager),以添加你的Firebeetle ESP8266主板。
[*]在搜索文本框中输入“Firebeetle-ESP8266”,选择“FireBeetle-ESP8266 by DFRobot”并安装。


现在Arduino IDE软件已经可以用于Firebeetle ESP8266开发板。

3、添加资源库 以下资源库将被用于我们的Arduino代码。下载下列资源库:
[*]Adafruit NeoPixel library (https://github.com/adafruit/Adafruit_NeoPixel)
[*]Arduino http client library (https://github.com/arduino-libraries/ArduinoHttpClient)
[*]Arduino IO library (https://github.com/adafruit/Adafruit_IO_Arduino)
[*]Adafruit MQTT library (https://github.com/adafruit/Adafruit_MQTT_Library)
[*]HX711 library (https://github.com/bogde/HX711)
[*]Firebeetle LED matrix library (https://github.com/Chocho2017/FireBeetleLEDMatrix)

在Arduino IDE软件中导航到略图-> 包括资源库 -> 管理资源库(Sketch -> Include Library -> Manage Libraries...),然后添加上述资源库。

Adafruit.IO配置

有许多数据记录服务可以用于微控制器与网络间的通信。通过这些服务,你可以上载/下载数据到云,并做到很多有趣的事情。请观看我的其他教程,例如关于如何使用Arduino + ESP8266从迷你气象站发送到Thinkgspeak。




Adafruit.IO就是这些免费服务之一。它非常易于使用,并致力于将物联网带给所有人!
创建Adafruit IO Web反馈

[*]在https://io.adafruit.com/登录
[*]在反馈 > 创建一个新反馈(Feeds >Create a new Feed)下添加一个名为“我的体重”的新反馈。它将创建一个数据库,我们将使用该数据库存储送从体重秤接收的命令。


复制你的Adafruit.IO密钥,该密钥稍后将用于允许你的设备访问数据库。导航到设置 > 显示AIO密钥(Settings > View AIO key)并复制激活密钥代码。后面你的Arduino(NodeMCU)代码将需要使用该密钥代码。
在接下来的步骤里,我将向你展示如何配置 IFTTT,这是我在本项目中使用的另一个平台。每当NodeMCU测量你的体重时,它都会将体重值保存在Adafruit.IO数据库中。IFTTT平台随后会将体重值发送到健康监测平台(Fitbit、Strava、iOS Health或者Misfit)。



IFTTT配置



IFTTT是一个免费平台,可帮助你连接app应用程序与装置。例如,你可以使用该平台连接你的智能手机与其他装置,或者在你喜欢的网络服务(如Google、Facebook、Twitter、Instagram等)与其他物理设备之间共享数据。最棒的一点是它真的非常易于使用!IFTTT采用“if this then that如果那么”逻辑,其中“this”代表触发“that”指定动作的服务。通过这种方式,你可以创建连接网络服务与设备的小程序。在本项目中,我使用IFTTT将测量的体重值从Adafruit.io数据库推送到Fitbit。
首先,你必须在网站登录:https://ifttt.com/https://ifttt.com/然后在你的手机上安装IFTTT应用程序。你可以在Google Play Store中找到该应用:你也可以在Apple store(对于iPhone用户)中找到该应用:在网站上,进入新程序(点击你用户名旁边的箭头按钮进入菜单)。在接下来的步骤里,我将向你展示我是如何创建我的小程序的。

IFTTT Applet - IOS Health





在网站上创建程序:


[*]点击+This;在搜索服务文本框中输入“adafruit”,选择Adafruit.IO > 任意新数据。正如IFTTT网站上所述,这将创建一个触发器,在你的反馈接收到新数据时触发。选择“我的体重”反馈;
[*]现在选择+That;
[*]输入“ios health”并选择iOS Health > 记录你的体重。这将保存一个新体重测量值到iOS Health。点击添加一个要素并选择数值。
[*]完成小程序并打开。

测试:

[*]在Adafruit.io上选择你的反馈,动作 > 添加数据;
[*]输入你的当前体重(或者其他任意值)。该数值将存储在Adafruit.io数据库中。IFTTT将接收该值并将其上载到Fitbit数据库;
[*]登录你的Fitbit账号,并检查你的当前体重是否已经更新。


IFTTT Applet - Fitbit


在网站上创建程序:
[*]点击+This;在搜索服务文本框中输入“adafruit”,选择Adafruit.IO > 任意新数据。正如IFTTT网站上所述,这将创建一个触发器,在你的反馈接收到新数据时触发。选择“我的体重”反馈;
[*] 现在选择+That;
[*]输入“fitbit”并选择Fitbit > 记录你的体重。这将保存一个新体重测量值到Fitbit。点击添加一个要素并选择数值。
[*]完成小程序并启动。


测试:
[*]在Adafruit.io上选择你的反馈,动作 > 添加数据;
[*]输入你的当前体重(或者其他任意值)。该数值将存储在Adafruit.io数据库中。IFTTT将接收该值并将其上载到Fitbit数据库;
[*]登录你的Fitbit账号,并检查你的当前体重是否已经更新。



ESP8266代码https://cdn.instructables.com/FEY/D5MC/JHKU7AA9/FEYD5MCJHKU7AA9.LARGE.jpg?auto=webp&crop=3:2


这时候,小程序已经基本完成了!
下载Arduino带吧,并在Arduino IDE软件中打开。一些参数将必须更新(WIFI_SSID、WIFI_PASS、IO_USERNAME、IO_KEY以及 calibration_factor)。更新这些参数,然后上载代码到ESP8266。代码将立即开始运行。为了校准体重秤,在体重秤上放置一个砝码,然后调整校准系数直到显示正确的重量值。你可以在另一台可信的体重秤上测量自己的体重,然后在智能秤上再次测量体重并相应调整校准系数。智能秤将尝试连接WiFi网络并开始进行测量。如果测量的体重值超过阈值(THRESHOLD),则它将读取给定次数(NUM_MEASUREMENTS)的重量值并计算平均重量。如果两次连续测量的重量变化超过阈值(THRESHOLD),则过程将重新开始。确定平均值后,它将显示在LED矩阵上,并被传送给Ardafruit.io。体重秤将等待用户离开,然后重启。

开始使用






智能秤将尝试连接WiFi网络并开始进行测量。如果测量的体重值超过阈值(THRESHOLD),则它将读取给定次数(NUM_MEASUREMENTS)的重量值并计算平均重量。如果两次连续测量的重量变化超过阈值(THRESHOLD),则过程将重新开始。确定平均值后,它将显示在LED矩阵上,并被传送给Ardafruit.io。体重秤将等待用户离开,然后重启。


作者:IgorF2


代码:





有有有 发表于 2018-8-22 00:00:54

您好,方便看看代码吗?我也准备做一个类似的,但是碰到了些问题 ,用arduino HX711库串口收到一堆看不懂的东西 ets Jan8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v614f7c32
~ld
ready

luna 发表于 2019-6-20 17:07:37

Axinice 发表于 2019-6-20 16:22
很棒的教程哦,但是最后的代码我买了还是没有权限下载,诚心请问可以私发给我吗 ...
我试了一下都可以的,如果实在不行,你可以点击英文原版找一下文件:https://www.instructables.com/id ... rduino-IDE-Adafrui/

DFSJ7U1sO1S 发表于 2019-6-22 13:48:05

诚心询问 东西很棒 为什么代码编译有问题 In file included from E:\Documents\Arduino\libraries\Adafruit_IO_Arduino-master\src/wifi/AdafruitIO_ESP8266.h:18:0,

dsweiliang 发表于 2018-6-14 15:50:11

虽然自己折腾很有趣,但是看到脚边积尘的小米体重计还是算了

hnyzcj 发表于 2018-6-14 17:21:43

看到脚趾头了,哈哈哈哈

铁熊 发表于 2018-6-14 18:35:48

哇,求里面电子元器件的三维模型!

luna 发表于 2018-6-28 16:21:29

hnyzcj 发表于 2018-6-14 17:21
看到脚趾头了,哈哈哈哈

哈哈哈,你就是眼睛尖

luna 发表于 2018-6-28 16:21:57

铁熊 发表于 2018-6-14 18:35
哇,求里面电子元器件的三维模型!

容我找一下,明天发上来啊~

gada888 发表于 2018-8-23 16:58:06

不错的内容,有点长,慢慢看

阿里哥 发表于 2019-4-4 12:04:06

可以分享代码吗?

luna 发表于 2019-4-4 14:04:23

阿里哥 发表于 2019-4-4 12:04
可以分享代码吗?

我补充在文章最后面了

阿里哥 发表于 2019-4-5 17:04:13

luna 发表于 2019-4-4 14:04
我补充在文章最后面了

感谢,感谢大神

阿里哥 发表于 2019-4-19 12:10:23

请问一下,您的传感器上的红色圆垫片是用什么做的?
https://mc.dfrobot.com.cn/data/attachment/forum/201806/13/164651z4xz8ybea784zyeu.jpg

Axinice 发表于 2019-6-20 16:22:34

很棒的教程哦,但是最后的代码我买了还是没有权限下载,诚心请问可以私发给我吗

sinfree 发表于 2019-8-12 20:37:43

很需要代码 刚注册下载不了。

sinfree 发表于 2019-8-12 20:38:15

感觉做的非常棒,我也正在开发类似的项目

54 发表于 2020-3-13 16:47:23

老哥,问你个问题,那个称重传感器是不是四边一定得用支脚架起来?为什么我用热熔胶枪直接粘上去数值不对

DFrkITZKs8L 发表于 2020-3-27 21:39:37

看看编程流程

张锦旭 发表于 2020-11-19 18:51:44

成本大概多少

发表于 2022-4-15 08:48:03

封面上那个人的脚趾是扭了吗?
页: [1] 2
查看完整版本: 用ESP8266 开发板,制作WiFi物联网智能体重秤