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

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

在这个项目中,我使用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打印零件组成:盖板、机箱和支脚。
机箱为电子元件提供了保护外壳,防止它们受到物理接触影响。电子元件被安装在盖板中(使用螺栓),盖板上配有一个前护罩,其中安装了显示器。
称重传感器被安装在支脚中,这使得传感器能够与基座连接。



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




木工

我们体重秤的基座由两块15mm 30 x 30 cm胶合板制成。
我用一把螺丝刀钻出了一些开孔,用于穿过称重传感器的电线,以及连接3D打印零件。
电子元器件连接
1、将FireBeetle ESP8266 和LED矩阵进行焊接
我将一个插头-插座引脚板焊接到FireBeetle ESP8266模块上

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

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

2、HX711和称重传感器进行焊接
大多数HX711板上没有焊接引脚,我焊接了一个插头引脚板,用于随后连接ESP8266开发板和称重传感器。


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

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

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

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

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

组装体重秤 - Pt2
一旦3D打印零件和木板准备就绪,就是时候组装结构件了,按照以下步骤进行:
1.安装称重传感器到第一块木板上。我使用螺钉固定各个称重传感器。

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个螺钉紧固。

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


连接电路


每个装置都按照接线原理图连接。
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。

如果你从未用过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代码

这时候,小程序已经基本完成了!
下载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
*欢迎转发朋友圈。如需转载,请注明出处和原作者。
【十周年庆】

项目干货戳这里
DIY树莓派游戏机 |Teleroomba | 波士顿动力|
物联网项目精选 | Switch重度患者拯救指南 | 手相之诗
自制酸奶机 | wifi 气象站 | 极简感应灯 | lululu时钟鹿

点击“阅读原文”,查看原文!

