用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
代码:
您好,方便看看代码吗?我也准备做一个类似的,但是碰到了些问题 ,用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 Axinice 发表于 2019-6-20 16:22
很棒的教程哦,但是最后的代码我买了还是没有权限下载,诚心请问可以私发给我吗 ...
我试了一下都可以的,如果实在不行,你可以点击英文原版找一下文件:https://www.instructables.com/id ... rduino-IDE-Adafrui/ 诚心询问 东西很棒 为什么代码编译有问题 In file included from E:\Documents\Arduino\libraries\Adafruit_IO_Arduino-master\src/wifi/AdafruitIO_ESP8266.h:18:0, 虽然自己折腾很有趣,但是看到脚边积尘的小米体重计还是算了 看到脚趾头了,哈哈哈哈 哇,求里面电子元器件的三维模型! hnyzcj 发表于 2018-6-14 17:21
看到脚趾头了,哈哈哈哈
哈哈哈,你就是眼睛尖 铁熊 发表于 2018-6-14 18:35
哇,求里面电子元器件的三维模型!
容我找一下,明天发上来啊~
不错的内容,有点长,慢慢看 可以分享代码吗? 阿里哥 发表于 2019-4-4 12:04
可以分享代码吗?
我补充在文章最后面了 luna 发表于 2019-4-4 14:04
我补充在文章最后面了
感谢,感谢大神 请问一下,您的传感器上的红色圆垫片是用什么做的?
https://mc.dfrobot.com.cn/data/attachment/forum/201806/13/164651z4xz8ybea784zyeu.jpg
很棒的教程哦,但是最后的代码我买了还是没有权限下载,诚心请问可以私发给我吗 很需要代码 刚注册下载不了。 感觉做的非常棒,我也正在开发类似的项目 老哥,问你个问题,那个称重传感器是不是四边一定得用支脚架起来?为什么我用热熔胶枪直接粘上去数值不对 看看编程流程 成本大概多少 封面上那个人的脚趾是扭了吗?
页:
[1]
2