【点击上方「蓝字」关注我们,一起成为技术颜控!】

正文共:4786字 36图
预计阅读时间:12分钟
MAKER: igorfonseca83 / 译:Roy
- 如何使用Arduino IDE对ESP32进行编程;
- 如何使用ESP32读取数字输入;
- 如何使用负载传感器和HX711进行重量测量;
- 如何使用Thingspeak平台将ESP32数据发送到云端;
- 如何使用Fusion360设计和打印3D外壳。
不多说,先看视频。
一个带有WiFi的猫砂盒,使用ESP32开发版,可以测量爱猫的重量,监控清洁条件并在线存储数据
一、涉及的工具和材料
3D打印机(用于打印电子设备封装的外壳)

PLA耗材(决定盒子的颜色)

焊锡和焊丝(某些组件(例如ESP32 Firebeetle和HX711)没有带焊接引脚,需要焊接一些引脚连接这些设备)
收缩管(更好地隔离导体)
螺丝刀
M2x6mm螺栓(用于将电子元件安装在壳体内)
FireBeetle ESP32开发板(核心)

HX711模块(用作称重传感器的放大器。四个应变式称重传感器连接到该模块,并与微控制器进行串行通信)

50kg称重传感器(x4)(用于测量重量。其中四个用于最大重量200公斤)

磁门传感器(包含一个磁性开关,用于检测猫砂盒子是否打开)

Micro USB线 ;
6根母 - 母跳线;
猫砂盒

其中,FireBeetle ESP32开发板,由DFRobot友情提供!
1200元搞定一台Creality Ender 3 3D打印机,有兴趣的可以了解下!(https://rebrand.ly/3Dprinter-BG)
二、在Arduino IDE上安装FireBeetle ESP32

这个项目使用Arduino IDE来编程ESP32模块。
首先为Arduino软件添加ESP32板支持。
1.下载并安装Arduino IDE最新版本
可以在Arduino的网站上找到适用于Windows,Linux或MAC OSX的最新版本:
https://www.arduino.cc/en/main/software
免费下载,安装在计算机上并启动。
2.添加ESP32板
Arduino IDE已经支持很多不同的主板:Arduino Nano,Mine,Uno,Mega,Yún等。但没有默认支持ESP32。因此,为了将代码上传到ESP32板,必须首先将其添加到Arduino的开发版管理器中。
文件>首选项 ;
将下面的URL添加到附加开发者管理器网址文本框内:
http://download.dfrobot.top/FireBeetle/package_esp32_index.json

如果文本框不是空白,则表示之前已经在Arduino IDE上添加了其他板。换行粘贴按提示操作即可。
导航工具>板>板卡管理器,添加ESP32板。
在搜索文本框中键入“FireBeetle-ESP32”,选择“DFRobot DFRDuino的FireBeetle-ESP32主板”并安装。
现在,Arduino IDE已经可以使用ESP32 FireBeetle板。
将microUSB电缆插入ESP32和计算机上。它会自动安装Windows通讯驱动程序。如果无法安装驱动程序,请下载以下文件并手动安装新连接设备的驱动程序。
https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/FireBeetle-ESP32.inf
3.添加库
需要用到两个库。
HX711库:
https://github.com/bogde/HX711
Thingspeak库:
https://github.com/mathworks/thingspeak-arduino
安装:项目-> 加载库-> 添加.ZIP库
(翻不了墙的,公众号后台回复:库)
现在开发环境也已经准备就绪,让我们继续下一步!
三、接线
电子元件:
ESP32 Firebeetle开发板:该板有一个Expressif微控制器,是负责使用WiFi连接读取变量,处理和向云发送数据的组件。项目代码在这里运行。
负载传感器:负责测量压力的组件,将设备上施加的压力转换为电信号。
HX711放大器:电路负责放大由充电电池产生的电信号并进行数字模拟转换。称重传感器产生的信号幅度非常有限(以mV为单位的信号)。电路放大该信号并执行模拟信号到数字信号的转换,并将转换后的信号传送到微控制器。
门传感器开关:由一个在没有磁场的情况下通常关闭的开关组成。当在其附近施加磁场时,开关内部触点闭合,允许电流传导。这个项目中,这种类型的开关用于识别猫砂盒子的顶部是否被打开。顶盖上安装了一块磁铁,而开关则安装在控制盒上并固定在盒子的底部。当盖子关闭时,磁铁和钥匙将对齐并靠近在一起,保持开关闭合。当两个部件分开时,磁铁将离开开关,电路形成开路。
每个设备都根据原理图连接。

HX711 - 输入:
左上方称重传感器信号(红线)=> HX711 E-引脚
左下方传感器信号(红线)=> HX711 A +引脚
右上方称重传感器信号(红线)=> HX711 A-引脚
右下方称重传感器信号(红线)=> HX711 E +引脚
HX711-输出:
HX711 Vcc引脚=> ESP32 3.3V引脚
HX711 GND引脚=> ESP32 GND引脚
HX711 SCK引脚=> ESP32 GPIO 2(引脚D9)
HX711 DT引脚=> ESP32 GPIO 5(引脚D8)
门传感器:
簧片开关(端子1)=> ESP32 GND引脚
簧片开关(端子2)=> ESP32 GPIO 25(针脚D2)
完成接线后,在ESP32上插上USB线,准备上传代码。
四、Thingspeak设置

有几种云数据存储服务可用于物联网。它们支持微控制器和网络之间的通信,支持发送和接收各种数据。非常易于使用,支持监控各种信息。
1.创建帐户:首先,在https://thingspeak.com/创建帐户。
2. 创建频道:创建帐户后,可以创建存储数据的频道。点击“新频道”并输入频道名称(这里创建了一个名为“IoT Litter Box”的频道)

3.设置频道的字段:每个频道最多可包含8个字段。每个字段相当于一个存储在你频道上的变量。在这个项目中,使用了6个:
猫#1的体重
猫#2的体重
盒子状态
猫砂量
猫#1每天用了几次
猫#2每天用了几次

4.记下密钥:单击“密钥”选项并复制。稍后会在Arduino代码中用到它。

准备好了之后,这个频道就可以收到来自控制器的数据信息了。视图可以选择公共视图或私有视图。
五、编写Arduino代码

代码思路如下:
1 - 必须先校准控制器以了解空盒的重量并调整校准系数。(有关如何校准的信息将在本教程的最后介绍)。该信息将存储在控制器存储器中,并且不会随时间变化。该值将用于计算沙子的体积和猫的个体重量。
2 - 只要打开盒子顶部,控制器就会知道盒子已进入维护(清洁)状态,并应停止测量盒子重量。在这个时候,有人应该放猫砂(添加或去除猫砂,大便等),盒子重量应该会有波动。
3 - 一旦盒子关闭,控制器应该等待一段时间以稳定并重新检查重量。执行的第一次测量应作为箱子+猫砂的重量存储在控制器存储器中。将从未来的测量值中减去该值,根据盒子的重量及猫砂含量来计算猫的重量。
4 - 通过从测量的重量(在箱内没有猫)减去空箱重量(在校准期间存储在控制器中),可以确定箱中的沙子体积。每当清洁垃圾箱时,该值会随着时间的推移而降低。可以设置警报,在垃圾箱中的猫砂量过低时发出警报,表明需要进行一般清洁和更换猫砂。盒子里的猫砂量将发送到云端,可以生成警报。
5 - 每当控制器检测到顶盖关闭,盒子重量显着增加时,表明有猫进来了。在盒子稳定(猫已经不动)之后,控制器将存储测量的平均重量。该值将与每只猫重量的预期最大值和最小值进行比较(假设不止一只猫使用该盒子)从而确定哪只猫进入了盒子。有关猫的重量和猫当天使用盒子的次数的信息也将被更新并发送到云端。
6 - 控制器定期核对服务器的时间。当检测到新的一天开始时,每只猫使用该盒子的时间计数器将被重置。
(公众号后台回复:校准代码、主程序代码,可以得到相应参考代码)
根据实际的情况更新以下信息:
myChannelNumber = Thingspeak频道号码
apiKey = ThingSpeak API密钥
ssid = WiFi网络的ssid
pass = WiFi网络密码
weightbox =为空盒子指示的重量
cat1MinWeight =猫#1的最小重量
cat1MaxWeight =猫#1的最大重量
Cat2MaxWeight =猫#2的最大重量
cat2MinWeight =猫#2的最小重量
六、三维建模
通过3D打印制作一些部件。当然,猫砂盒子可以到宠物店或者网上购买。但是一些定制的部件还是需要设计和打印出来的,好把相关的电子器件添加到猫砂盒中。这边,作者所有部件均使用Fusion360 CAD软件设计。

设计了以下部件:
负载传感器的支撑:负载传感器嵌入在箱脚上的四个支撑内。这种支架方式方便安装/拆卸传感器。

样例:底盖保护电子元件免受物理接触。壳体设计成使用双面胶带安装在盒子中,从而方便移除(比如清洁壳体时)。

外壳盖:正面封闭外壳,保护电子元件。

七、3D打印

可以在以下网站上下载所有stl文件:
https://www.thingiverse.com/thing:3737074
(翻不了墙的,公众号后台回复:猫砂盒模型)
作者用了两种不同颜色的PLA耗材,花了整整5个小时打印了全部部件,参数选择0.2毫米层高、10%填充密度、无支撑。这是一个实验原型。请注意,这只适用于ESP32开发板模型(ESP32 Firebeetle)。
传感器垫:

样例:

样例盖子:

如果你没有3D打印机,可以:
请朋友给你打印;
找到附件的创客空间,比如蘑菇云创客空间。可以快速打印此模型中使用的部件;
自己买一台3D打印机;
凑合一下!不要3D打印部件,自己尝试用别的材料拼装一下。
八、组装猫砂盒子
打印完零件后,就可以组装了!
1 - 根据前面介绍的原理图,用一些跳线将HX711模块焊接到ESP32;
2 - 在HX711上焊接针脚(凸型),方便之后连接称重传感器;
3 - 使用6个M2x6mm螺丝将ESP32和HX711安装在外壳中;

4 - 将簧片开关导线穿过外壳的底孔。根据上面的示意图焊接簧片开关;

5 - 将称重传感器安装在以3D打印的支架内;

6 - 在盒子背面涂上双面胶带并粘贴在猫砂盒的侧面;

7 - 将称重传感器粘到猫砂盒底部;

8 - 根据上面给出的示意图焊接称重传感器的导线。在每个电池的红线上焊接一个连接器,以便连接到HX711上的针脚;
9 - 理线。用绝缘胶带把它们粘在盒子上;

10 - 根据先前提供的原理图将称重传感器信息收集到HX711模块;
11 - 安装前盖。可以使用三个M2 x 6毫米螺钉固定盖子;

12 - 将簧片开关固定在盒子(底部)上,将磁铁固定在盒盖(顶部)上。两者应该一致;

13 - 插入micro USB连接器为电路供电。

完工!

项目完成后,打开盖子,把猫砂放入盒子中,连上电源。控制器将连接到互联网并开始运行代码。
然后,静静等待你的它出现,看看会发生什么。
还可以每天在Thingspeak网站上跟踪数据。
你家养的是什么猫?
(最近准备策划一个活动,大家有什么好的活动建议或者想要的奖品也欢迎留言)
近期回顾
快看!这才是真正的创造力!
有了它,爸爸再也不用担心我偷玩手机了!
同样是毕业设计,你看看人家的!
制作一艘满载梦想的小船!

点一点
我们都是铲屎官
👇

