![51ecb483f89d719b36e6462c07844a8a.png](https://i-blog.csdnimg.cn/blog_migrate/53956153138bcd02ba0ceb46020b6e31.jpeg)
跟踪水的总消耗量并评估用量。采集温度、湿度和压力计算蒸发速率,根据植物需要合理浇水,以防止水资源的浪费。
关键词:环境感知 智能家居 种植 灌溉管理
项目简介
概述
洗手可以有效地阻止病毒的传播,尤其是在新冠病毒大流行期间,因此,在全球范围内保护水源是至关重要的。在这个项目中,我想把重点放在一个很微小但却是日积月累的问题上,在给植物浇水时导致水的浪费。尽管浇灌室内植物是我们大多数人都不感兴趣的日常工作,所以它正在努力辨别它对可持续用水供应的影响,重复的过度用水加起来相当于数吨的水。为了解决这个问题,我们决定发明一种智能设备,它可以跟踪浇灌室内植物时排出的总水量,通过使用温度、湿度和大气压来评估大概的蒸发率,并让用户观察土壤湿度和海拔高度。
为了获得温度、湿度、气压和大约海拔高度,我使用了一个 BME280 I2C或SPI温度湿度压力传感器。下面,你可以查看我根据温度和湿度计算近似蒸发率的公式。
为了检测水流量和总耗水量,使用了YF-S201 霍尔效应水流量传感器。为了观察土壤湿度,使用了一个简易的土壤湿度传感器。
为了建立一个用户交互界用来显示上述的传感器数据,使用了一块废旧的诺基亚5110的手机显示屏和6X6的轻触按键。
另外,我添加了两个指示灯led(绿色和红色)来指示每种模式是否超过给定的阈值。
在完成了我的实验板设计和代码测试后,我设计了一个独特水滴形状的PCB板(植物水管理系统),为室内植物创造了一个apt和易于使用的配件:)
![5efc1f830138b9dd95268112e7a97a22.png](https://i-blog.csdnimg.cn/blog_migrate/7aee05b623aa7c928d4c289f593973c7.png)
![85583628765785316c76eaefa5c37b43.png](https://i-blog.csdnimg.cn/blog_migrate/69d3b8ef9c0c787caaf0626052e26bf9.png)
元器件和材料
定制PCB板 1块
Arduino Nano R3开发板 1 块
诺基亚 5110 老手机显示屏 1块
![ddc9714773c061310cffb274584706c3.png](https://i-blog.csdnimg.cn/blog_migrate/741da2529fca19445a3f68e0dee13f60.jpeg)
BME280 I2C或SPI温湿度压力传感器 1块
![91e6e59b6aa805f51ebe12eb383d5420.png](https://i-blog.csdnimg.cn/blog_migrate/f6e53b7ba39931a0a53ffa92fcf02ac3.jpeg)
YF-S201霍尔水流量传感器 1套
![c9e92c97b58c0610a4b11bfc3abca65a.png](https://i-blog.csdnimg.cn/blog_migrate/1fc6cc86ec9016732b7400ba92fd084f.png)
土壤湿度传感器(螺钉式) 1
![64b40219a4a9cd8c4a9d2bae63367b70.png](https://i-blog.csdnimg.cn/blog_migrate/b5827072ae06345366116644fb95680f.png)
5mmLED绿色 1个
![b6cc7b56937d0bab4994db5985b8ed02.png](https://i-blog.csdnimg.cn/blog_migrate/28f0f57fd0f23a265f798b5cec63c9ed.png)
电阻220Ω 6支
![59908cd5fb6dbe6e25bf8e8a18550d4c.png](https://i-blog.csdnimg.cn/blog_migrate/6fdd3e7be5006d0506a16999bb4059b3.png)
功率电阻 1KΩ 5个
轻触按键 (6X6) 4个
![2eb86cfbc73e8a93a8d708847de88e82.png](https://i-blog.csdnimg.cn/blog_migrate/8db7621ea4af227fee923e826076470d.png)
DC电源插孔2.1MM圆形PCB安装 1个
![2337e27a5c2c3ae11ecf98c8b526a3f5.png](https://i-blog.csdnimg.cn/blog_migrate/9c6b55ef6f74f97e73ee65b342483f5a.png)
必要的工具和机器
电烙铁(通用)
![00937fb68d8fe7ee231e63805218ff46.png](https://i-blog.csdnimg.cn/blog_migrate/fb29dd382cf9f31fcda597887b8ba949.png)
焊锡丝无铅
![ae0d53ab77564d556fe204fe8c97b190.png](https://i-blog.csdnimg.cn/blog_migrate/808312b12c37e57da0ee21bd46801186.png)
热熔胶枪(通用) 1把
开发工具软件及平台
Arduino IDE
![a55dbdc4d5a76cfefe603e1fe0ecce38.png](https://i-blog.csdnimg.cn/blog_migrate/e1d7637d5d1d6f4de438a52ad13852b3.png)
Altium Designer
设计制作步骤
第一步:设计和焊接种植水管理系统的PCB板
我使用KiCad设计了工厂水资源管理系统PCB。我在下面附上了PCB的Gerber文件,所以如果你想,你可以从深圳嘉力创或其它的PCB厂商制作这块PCB板,创建一个时尚且易于使用的设备,以跟踪灌溉室内植物的总用水量,并根据温度和湿度评估近似的蒸发率:)
![3544c8578967711ff3f0304ceef48978.png](https://i-blog.csdnimg.cn/blog_migrate/89b726a9d2ca81e7510653a874efe00a.png)
BME280传感器是插到板上的,220Ω电阻、1 k电阻等需要接的原器件如下图所示,你可以下载下面这块PCB的BOM清单文件。
![eda8142015cb388a02a050455f2de5ca.png](https://i-blog.csdnimg.cn/blog_migrate/7cd8b8a55de7988c6029469d396f5a56.png)
首先,使用烙铁,依次焊接排座(公头和母座),DC电源插座,5mm绿色LED, 5mm红色LED和按钮(6x6)。
PCB板元器件清单:
A1(插入arduino Nano 的排座)
S2(YF-S201水流量传感器的插座 )
S3(土壤湿度传感器的插针座)
J2(诺基亚5110显示屏的针座)
K1、K2、 K3、 K4(6X6按钮开关)
D1(5mm 绿光LED灯)
D2(5mm红光LED灯)
J1(DC电源插座)
![daff54b3639e53277c8e8b5dbeb8c983.png](https://i-blog.csdnimg.cn/blog_migrate/357f8f024e223d6d641a090b8f07c245.jpeg)
![3f34c70f8f306fc46ec18f8d43f5589a.png](https://i-blog.csdnimg.cn/blog_migrate/f1f75631581767326eb92d72f72a4274.png)
![906a633567b02c8b4fdbd184e85af897.png](https://i-blog.csdnimg.cn/blog_migrate/170f011669e08917c0141107160e6591.png)
至此,硬件基本制作完毕。
第二步: 在Arduino平台下使用BME280温湿度压力传感器
通过Arduino实现Adafruit BME280传感器在I2C和SPI两种不同模式都是非常简单容易的。在这个项目中,我使用的是I2C连接,所以PCB (种植水管理系统)不包含I2C和SPI之间的切换选项。
要开始读传感器数据,你需要安装Adafruit_BME280库(代码在Adafruit github仓库),它可以从Arduino库管理器中安装。
- 从Arduino IDE中,打开库管理器。
- 输入adafruit bme280查找位库,然后点击安装。
- 另外,需要安装“Adafruit Unified Sensor”库
- 打开 文件->示例->Adafruit_BME280->bmp280test 来试测传感器的特性。
下面,您可以检查连接上的I2C接线
![7498d5b6ac567491d8b7ff91f71f6b78.png](https://i-blog.csdnimg.cn/blog_migrate/bd58b12252f85642c3695ac22885562a.png)
![ee4112e4ac24e5ed8251089b4792289f.png](https://i-blog.csdnimg.cn/blog_migrate/268e6384a2bdfc62cb3eaabe1f01f15b.jpeg)
第三步: 利用YF-S201霍尔效应水流量传感器计算水流量
YF-S201霍尔效应水流传感器有一个嵌入式霍尔传感器,当水流动时,它每一圈产生一个电脉冲。传感器产生的脉冲信号为方波,因此我们可以很容易地将脉冲转换为流量,通过:
脉冲频率(hz)/7.5=水流量(升/分钟)
此公式由下式导出,执行时需校准。就我而言,我只需要到0.15升的差值。
Q(流量)=V(流速)X A(面积)
为了以秒为单位采集水的排出量,我们需要将流量除以60。
排水量 = 流量(L/min) / 60
然后,不断累加排水量,得到总的用水量:
总的排水量+=排水量
下面,您可以查看我是如何在Arduino中编写这些公式的。
![c9e92c97b58c0610a4b11bfc3abca65a.png](https://i-blog.csdnimg.cn/blog_migrate/1fc6cc86ec9016732b7400ba92fd084f.png)
第四步: 按温度、湿度和压力估算近似的蒸发速率
首先,我使用的公式生成的变量不是百分百准确的,也不是土壤水分蒸发动力学的复杂数学计算结果,而是经验蒸发率的指标。
我使用BME280温度湿度压力传感器产生的变量来获得结果——蒸发率——用下面的公式。
根据温度、湿度和压力
首先,我用理想气体定律来检测每立方米的摩尔数n / V,因为我们可以得到空气的压强和温度变量。
PV = nRT
n / V = P / RT
P => pressure (Pa)-大气压
T => temperature (K)-温度
R => the ideal gas constant(理想大气常数)
当我们知道了每立方米的摩尔数,我们就可以用水的分子质量(18.015 g/mol)来近似地计算水蒸汽的密度。
vapor density = (n / V) x 18.015
vapor density-蒸汽密度
然后,我们可以用刚刚计算出的相对湿度百分比和水蒸汽密度来评估空气的饱和程度。
percent relative humidity = (vapor density / saturation vapor density) x 100
相对湿度百分比=(蒸汽密度/饱和蒸汽密度)x 100
saturation vapor density = (vapor density / percent relative humidity) x 100
饱和蒸汽密度=(蒸汽密度/相对湿度百分比)x 100
最后,我们需要从空气的饱和度中减去水蒸气的密度,得到近似的蒸发率- g/m3。
approximate evaporation rate = saturation - density
近似蒸发率=饱和-密度
将近似的蒸发速率g/m3换算为kg/m3:
approximate evaporation rate = (saturation - density) / 1000
近似蒸发速率=(饱和-密度)/ 1000
下面是计算结果:
![fd0dd92da434ba99fe0e1a3ae103a555.png](https://i-blog.csdnimg.cn/blog_migrate/ea28700ddaa2f824511011cc3164801c.png)
![8b876f08bc8964c8a2dfc313e7b8db88.png](https://i-blog.csdnimg.cn/blog_migrate/e35866cc155ce7320c85083400f2f136.png)
通过相对湿度
水从表面的蒸发取决于水的温度、空气温度、空气湿度和水面以上的空气速度。我用下面的公式来计算蒸发的水量,近似地是按湿度计算的。
gh = Θ A (xs - x)
gh =>每小时蒸发水量(kg/h)
Θ => (25 + 19v) =>蒸发系数(kg/m2h)
v =>水面以上空气流速(m/s)
A =>面积(平方米)
xs =>饱和空气的最大湿度与温度比(kg/kg)
x =>近似的空气湿比(kg/kg)
由于我们试图找到经验性问题的答案,我使用了与我家植物所在位置的传感器读数相关的平均变量。所以,你必须根据传感器的读数改变这些变量。
v = 0.30
A = 0.25 x 0.25 (我的花盆的表面积)
xs = 0.019826 ( 25 °C)
为了从近似相对湿度的百分比来推断空气的湿度比(kg/kg),我将体积比(接近相对湿度的百分比)乘以分子量(水和空气)的比值——0.62198。
空气湿度比(x) =(相对湿度百分比/ 100)x 0.62198
温度(℃) | 水汽饱和压力(Pa) | 空气的最大饱和湿度比 |
0 | 609.9 | 0.003767 |
5 | 870 | 0.005387 |
10 | 1225 | 0.007612 |
15 | 1701 | 0.01062 |
20 | 2333 | 0.014659 |
25 | 3130 | 0.019826 |
30 | 4234 | 0.027125 |
湿度比
也称为混合重量比,或wmr),是水蒸气质量与干燥空气质量的比率。要计算这个,用体积比乘以分子量比。
![77927519c9b63e9c2a8445250cca6834.png](https://i-blog.csdnimg.cn/blog_migrate/ffc6abf7e1843b89979313771b97bdbb.png)
容积百分数比
等于100倍摩尔分数;用百分数表示的水蒸气体积与总体积之比,V/V或V/(V + V)与体积比一样,可以通过分压来计算:
![e763645587a335c12beb3e403aeb5979.png](https://i-blog.csdnimg.cn/blog_migrate/525fb5d21455c4c5f1df5e2b51889f25.png)
第五步:Arduino Nano 编程
下载所需的库,以便能够控制模块:
Nokia 5110 Screen | Library
Adafruit BME280 | Library
包括所需的库。
定义Nokia 5110屏幕设置。
定义图形为相关的屏幕模式- tem, hum,和用途。
要创建不同的图形(单色图像),转到单色图像转换器。
定义 BME280温度湿度压力传感器设置- I2C。
使用volatile布尔值定义菜单选项和模式
定义控制按钮和LED引脚。
定义YF-S201霍尔效应水流传感器设置。
初始化诺基亚5110屏幕和Adafruit BME280温度湿度压力传感器。
在read_buttons()函数中,读取控制按钮。
在change_menu_options()函数中,使用左右按钮增加或减少选项数。
在interface()函数中,打印接口(菜单)。
如果选择Tem. Eva.模式,得到当前温度,并评估近似蒸发率的温度。
在calculate_approx_蒸发(“tem”)函数中,利用BME280传感器产生的温度、湿度和压力变量计算近似的蒸发率。
定义阈值(1.50)来激活控制led -绿色和红色。
如果选择Hum. Eva.模式,得到当前湿度,并根据湿度评估近似蒸发率。
在calculate_approx_蒸发(“hum”)函数中,利用BME280传感器产生的湿度变量计算近似的蒸发率。
定义阈值(1.30)来激活控制led -绿色和红色。
如果选择了湿度模式,则打印由土壤湿度传感器和BME280传感器生成的变量——湿度(%)、气压(hPa)和近似海拔(m)。
定义阈值(35)来激活控制led -绿色和红色。
如果选择惯例模式,则按秒(water_spent)打印流量和总用水量(total_water_spent)。
在read_water_flow_sensor()函数中,通过使用pulseIn()函数检测脉冲时间来计算流量,通过脉冲时间除以1000000(1秒为微秒)来推断频率。然后,利用流量,计算用水的总容积。
定义阈值(100.0)来激活控制led -绿色和红色。
![e6d416f90875d913edd2e21ec8ea3d2d.png](https://i-blog.csdnimg.cn/blog_migrate/9427c3b4e7ec901f708f69b093961343.png)
![5c19178037f3ee58612762efaa08c78d.png](https://i-blog.csdnimg.cn/blog_migrate/3a709afc0eee864f7792a531b27c03b7.png)
![1888752bd78baa061c3ceef442851ed6.png](https://i-blog.csdnimg.cn/blog_migrate/ee244d4baf9ade0a438e615f755309d3.png)
![fb3945aa4dbf10a664d0c44c8dd34e3b.png](https://i-blog.csdnimg.cn/blog_migrate/689e104bda133caa294412fb9794dab6.png)
![0f5007c7dbb48b341d9668d0550bac2a.png](https://i-blog.csdnimg.cn/blog_migrate/060b7e5fb496acde2a5087e16e67cad2.png)
![9872085decbb63350c4829f9a15f2dcb.png](https://i-blog.csdnimg.cn/blog_migrate/f3057d6056dc8d028a6707aec8da337f.png)
![779e1386412a4517ccb0e1e2a4790aa0.png](https://i-blog.csdnimg.cn/blog_migrate/d9caca08a2a1552123f2af9ddd73fa24.png)
硬件端口连接关系
// Connections
// Arduino Nano v3:
//Nokia 5110 Screen
// D2 --------------------------- SCK (Clk)
// D3 --------------------------- MOSI (Din)
// D4 --------------------------- DC
// D5 --------------------------- RST
// D6 --------------------------- CS (CE)
// Adafruit BME280 Temperature Humidity Pressure Sensor
// SCL (A5) --------------------- SCK
// SDA (A4) --------------------- SDI
// YF-S201 Hall Effect Water Flow Sensor
// 5V --------------------------- 5V
// A2 --------------------------- Signal
// GND -------------------------- GND
// Soil Moisture Sensor
// 5V --------------------------- 5V
// GND -------------------------- GND
// A3 --------------------------- A0
// 5mm Green LED
// D11 -------------------------- +
// 5mm Red LED
// D12 -------------------------- +
// LEFT_BUTTON
// D7 --------------------------- S
// OK_BUTTON
// D8 --------------------------- S
// RIGHT_BUTTON
// D9 --------------------------- S
// EXIT_BUTTON
// D10 --------------------------
在完成并将代码上传到Arduino Nano之后,我将所有需要的组件通过headers——Arduino Nano和Nokia 5110屏幕连接到主板上。
![6238d399cf6e48ef18458804c664e50b.png](https://i-blog.csdnimg.cn/blog_migrate/a91e903e478429297c7e6ceeae78914e.png)
然后,我将YF-S201 Hall Effect水流传感器、土壤水分传感器和外部电池通过接线端子(公头)和电源插座连接到主板上。
![734005359ddd9fe0b401c0daaf206312.png](https://i-blog.csdnimg.cn/blog_migrate/49809718e85479f2136b698a4a1a0e7d.png)
![7276476e520e68296273678ece9d6208.png](https://i-blog.csdnimg.cn/blog_migrate/b008800af8cd88894aa1de188335ff73.png)
模式和特性
- 设备在界面(菜单)上显示四种工作模式:A. Tem. Eva., B. Hum. Eva., C. Moisture, and D. Usage
- 设备允许用户通过控制按钮在界面上选择一个模式(选项):
Right->向下
Left->向上
OK->选择
- 设备允许用户在选择任何模式后按Exit键返回到界面。
![f780a5e68e2bbc72317e886ab4ee9f92.png](https://i-blog.csdnimg.cn/blog_migrate/e645179aa74167330f0d15b6c4380a93.png)
- Tem. Eva.
A.1)该装置显示通过使用温度、湿度和压力变量评估的当前温度(℃)和近似蒸发速率(kg/m3)。
A.2)如果近似蒸发率超过给定的阈值(1.50),设备点亮5mm红色LED灯。否则,点亮5mm绿色LED。
![da36efc91c3d4bb669cb5eb1ce1dfcc9.png](https://i-blog.csdnimg.cn/blog_migrate/29ef116ba4c63c19b0201a43c8a9127a.png)
![c765c70f0bbe358c7013890a1b67ce30.png](https://i-blog.csdnimg.cn/blog_migrate/ac5675e8d6ce8dd858cfb6704d0b16fa.png)
![f4ff425ff828f14df4bc319dffec4817.png](https://i-blog.csdnimg.cn/blog_migrate/7eecdc2e211399e73a9e6ea648f2ab1c.png)
- Hum. Eva
B.1)该装置显示使用湿度变量评估的相对湿度百分比(%)和近似蒸发率(kg/h)。
B.2)如果近似蒸发率超过给定的阈值(1.30),设备点亮5mm红色LED。相反,它点亮5mm绿色LED。
![5cdb051135524416fc64f2ba100aab14.png](https://i-blog.csdnimg.cn/blog_migrate/5fde3e3a403d2ecca5c223f79af683cb.png)
![9a834b003facf5fc6f4d1ecd543e7985.png](https://i-blog.csdnimg.cn/blog_migrate/b7d8223f40a56d5c0a5cdb60b629f7eb.png)
![5f5b82c686a72fccf2fd25fa0ab2c911.png](https://i-blog.csdnimg.cn/blog_migrate/b8d926f4998f69a3496822a7be296e51.png)
- Moisture
C.1)该装置显示百分比的湿度变量、近似海拔高度(m)和气压(hPa)。
C.2)如果湿度超过给定的阈值(35%),设备点亮5mm绿色LED。否则,会点亮5mm红色LED。
![8fbb9a49b62d1cc80a572890d0c9b69f.png](https://i-blog.csdnimg.cn/blog_migrate/20b7dd30798c96810f50f7ba55ec8bdd.png)
![e9ef6b0ce21425ca1fe5cceb11f4136f.png](https://i-blog.csdnimg.cn/blog_migrate/b1cdec1613c3d8925271335052043048.png)
![d87ce52ee7aa2fdb37c1e1b3f5664b84.png](https://i-blog.csdnimg.cn/blog_migrate/ef01a633b3c1c8ec978d3d0cd2eaa58e.png)
- Usage
D.1)该装置以秒(L)计算流量-耗水量-并在浇灌植物时累积总耗水量(L) -总耗水量。并且,在评估之后,设备显示所提到的变量—water_spent, total_water_spent。
D.2)如果总用水量(储存在内存中)超过给定的阈值(100 L),则设备点亮5mm的红色LED灯。相反,设备点亮5mm绿色LED。
![f69db61663a5d3a022e4e61410c16040.png](https://i-blog.csdnimg.cn/blog_migrate/72afd52ae5e1f4921cf68e174926908f.png)
![5f44353288a294563c41bbdfbeec8aff.png](https://i-blog.csdnimg.cn/blog_migrate/5a2157fc57a4480b704f79fa12369da3.png)
![b5a07f0bcd4d26dda19cf63ee22db258.png](https://i-blog.csdnimg.cn/blog_migrate/8a01e46caed3e7481032cb0e4f36b6a6.png)
![1e17f484aa3b1d580be52acddf70896b.png](https://i-blog.csdnimg.cn/blog_migrate/d5bb514f55b46b1932acc31a92a07d2a.png)
视频和结果展示
知乎视频www.zhihu.com完成以上所有步骤后,我用热熔胶枪将PCB、外部电池和YF-S201霍尔效应水流传感器固定在我的一株室内植物的花盆上。然后,我把我的水管(花园水管)与喷嘴连接到YF-S201霍尔效应水流传感器。它非常有用:)
![ce14438228095adc722d1a5a0919a135.png](https://i-blog.csdnimg.cn/blog_migrate/df96713dd8b5867e3e684a9ae522192a.png)
![b2306245018e748c2cfb176bf43d95d1.png](https://i-blog.csdnimg.cn/blog_migrate/b7428e77f9a9f8ba017566a3f65a1de1.png)
代码
代码比较长,这里就不全部贴上来啦!有需人的可以私聊我!
定制的部件和附件
电路原理图
![84a9714421303bb6a46a1e1cd1c4a853.png](https://i-blog.csdnimg.cn/blog_migrate/d0514c57dec0f7ab7f63a1b145f04cfd.png)
PCB1
![7830bc341b94e33a4a1e15dcca223b02.png](https://i-blog.csdnimg.cn/blog_migrate/f6366c82da3faa77a87336d618d282e7.png)
PCB2
![7617f400ce224380c467058e844a0736.png](https://i-blog.csdnimg.cn/blog_migrate/795dccaa94a6cac282c9ce015971cd1a.png)