香橙派设计湿度智能浇灌系统c++、_电赛或毕业设计绝佳的项目-Arduino 实现的种植用水精准备评估和管理系统...

51ecb483f89d719b36e6462c07844a8a.png

跟踪水的总消耗量并评估用量。采集温度、湿度和压力计算蒸发速率,根据植物需要合理浇水,以防止水资源的浪费。

关键词:环境感知 智能家居 种植 灌溉管理

项目简介

概述

洗手可以有效地阻止病毒的传播,尤其是在新冠病毒大流行期间,因此,在全球范围内保护水源是至关重要的。在这个项目中,我想把重点放在一个很微小但却是日积月累的问题上,在给植物浇水时导致水的浪费。尽管浇灌室内植物是我们大多数人都不感兴趣的日常工作,所以它正在努力辨别它对可持续用水供应的影响,重复的过度用水加起来相当于数吨的水。为了解决这个问题,我们决定发明一种智能设备,它可以跟踪浇灌室内植物时排出的总水量,通过使用温度、湿度和大气压来评估大概的蒸发率,并让用户观察土壤湿度和海拔高度。

为了获得温度、湿度、气压和大约海拔高度,我使用了一个 BME280 I2C或SPI温度湿度压力传感器。下面,你可以查看我根据温度和湿度计算近似蒸发率的公式。

为了检测水流量和总耗水量,使用了YF-S201 霍尔效应水流量传感器。为了观察土壤湿度,使用了一个简易的土壤湿度传感器。

为了建立一个用户交互界用来显示上述的传感器数据,使用了一块废旧的诺基亚5110的手机显示屏和6X6的轻触按键。

另外,我添加了两个指示灯led(绿色和红色)来指示每种模式是否超过给定的阈值。

在完成了我的实验板设计和代码测试后,我设计了一个独特水滴形状的PCB板(植物水管理系统),为室内植物创造了一个apt和易于使用的配件:)

5efc1f830138b9dd95268112e7a97a22.png

85583628765785316c76eaefa5c37b43.png

元器件和材料

定制PCB板 1块

Arduino Nano R3开发板 1 块

诺基亚 5110 老手机显示屏 1块

ddc9714773c061310cffb274584706c3.png

BME280 I2C或SPI温湿度压力传感器 1块

91e6e59b6aa805f51ebe12eb383d5420.png

YF-S201霍尔水流量传感器 1套

c9e92c97b58c0610a4b11bfc3abca65a.png

土壤湿度传感器(螺钉式) 1

64b40219a4a9cd8c4a9d2bae63367b70.png

5mmLED绿色 1个

b6cc7b56937d0bab4994db5985b8ed02.png

电阻220Ω 6支

59908cd5fb6dbe6e25bf8e8a18550d4c.png

功率电阻 1KΩ 5个

轻触按键 (6X6) 4个

2eb86cfbc73e8a93a8d708847de88e82.png

DC电源插孔2.1MM圆形PCB安装 1个

2337e27a5c2c3ae11ecf98c8b526a3f5.png

必要的工具和机器

电烙铁(通用)

00937fb68d8fe7ee231e63805218ff46.png

焊锡丝无铅

ae0d53ab77564d556fe204fe8c97b190.png

热熔胶枪(通用) 1把

开发工具软件及平台

Arduino IDE

a55dbdc4d5a76cfefe603e1fe0ecce38.png

Altium Designer

设计制作步骤

第一步:设计和焊接种植水管理系统的PCB板

我使用KiCad设计了工厂水资源管理系统PCB。我在下面附上了PCB的Gerber文件,所以如果你想,你可以从深圳嘉力创或其它的PCB厂商制作这块PCB板,创建一个时尚且易于使用的设备,以跟踪灌溉室内植物的总用水量,并根据温度和湿度评估近似的蒸发率:)

3544c8578967711ff3f0304ceef48978.png

BME280传感器是插到板上的,220Ω电阻、1 k电阻等需要接的原器件如下图所示,你可以下载下面这块PCB的BOM清单文件。

eda8142015cb388a02a050455f2de5ca.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

3f34c70f8f306fc46ec18f8d43f5589a.png

906a633567b02c8b4fdbd184e85af897.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

ee4112e4ac24e5ed8251089b4792289f.png

第三步: 利用YF-S201霍尔效应水流量传感器计算水流量

YF-S201霍尔效应水流传感器有一个嵌入式霍尔传感器,当水流动时,它每一圈产生一个电脉冲。传感器产生的脉冲信号为方波,因此我们可以很容易地将脉冲转换为流量,通过:

脉冲频率(hz)/7.5=水流量(升/分钟)

此公式由下式导出,执行时需校准。就我而言,我只需要到0.15升的差值。

Q(流量)=V(流速)X A(面积)

为了以秒为单位采集水的排出量,我们需要将流量除以60。

排水量 = 流量(L/min) / 60

然后,不断累加排水量,得到总的用水量:

总的排水量+=排水量

下面,您可以查看我是如何在Arduino中编写这些公式的。

c9e92c97b58c0610a4b11bfc3abca65a.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

8b876f08bc8964c8a2dfc313e7b8db88.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)空气的最大饱和湿度比
0609.90.003767
58700.005387
1012250.007612
1517010.01062
2023330.014659
2531300.019826
3042340.027125

湿度比

也称为混合重量比,或wmr),是水蒸气质量与干燥空气质量的比率。要计算这个,用体积比乘以分子量比。

77927519c9b63e9c2a8445250cca6834.png

容积百分数比

等于100倍摩尔分数;用百分数表示的水蒸气体积与总体积之比,V/V或V/(V + V)与体积比一样,可以通过分压来计算:

e763645587a335c12beb3e403aeb5979.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

5c19178037f3ee58612762efaa08c78d.png

1888752bd78baa061c3ceef442851ed6.png

fb3945aa4dbf10a664d0c44c8dd34e3b.png

0f5007c7dbb48b341d9668d0550bac2a.png

9872085decbb63350c4829f9a15f2dcb.png

779e1386412a4517ccb0e1e2a4790aa0.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

然后,我将YF-S201 Hall Effect水流传感器、土壤水分传感器和外部电池通过接线端子(公头)和电源插座连接到主板上。

734005359ddd9fe0b401c0daaf206312.png

7276476e520e68296273678ece9d6208.png

模式和特性

  1. 设备在界面(菜单)上显示四种工作模式:A. Tem. Eva., B. Hum. Eva., C. Moisture, and D. Usage
  2. 设备允许用户通过控制按钮在界面上选择一个模式(选项):

Right->向下

Left->向上

OK->选择

  1. 设备允许用户在选择任何模式后按Exit键返回到界面。

f780a5e68e2bbc72317e886ab4ee9f92.png
  1. Tem. Eva.

A.1)该装置显示通过使用温度、湿度和压力变量评估的当前温度(℃)和近似蒸发速率(kg/m3)。

A.2)如果近似蒸发率超过给定的阈值(1.50),设备点亮5mm红色LED灯。否则,点亮5mm绿色LED。

da36efc91c3d4bb669cb5eb1ce1dfcc9.png

c765c70f0bbe358c7013890a1b67ce30.png

f4ff425ff828f14df4bc319dffec4817.png
  1. Hum. Eva

B.1)该装置显示使用湿度变量评估的相对湿度百分比(%)和近似蒸发率(kg/h)。

B.2)如果近似蒸发率超过给定的阈值(1.30),设备点亮5mm红色LED。相反,它点亮5mm绿色LED。

5cdb051135524416fc64f2ba100aab14.png

9a834b003facf5fc6f4d1ecd543e7985.png

5f5b82c686a72fccf2fd25fa0ab2c911.png
  1. Moisture

C.1)该装置显示百分比的湿度变量、近似海拔高度(m)和气压(hPa)。

C.2)如果湿度超过给定的阈值(35%),设备点亮5mm绿色LED。否则,会点亮5mm红色LED。

8fbb9a49b62d1cc80a572890d0c9b69f.png

e9ef6b0ce21425ca1fe5cceb11f4136f.png

d87ce52ee7aa2fdb37c1e1b3f5664b84.png
  1. Usage

D.1)该装置以秒(L)计算流量-耗水量-并在浇灌植物时累积总耗水量(L) -总耗水量。并且,在评估之后,设备显示所提到的变量—water_spent, total_water_spent。

D.2)如果总用水量(储存在内存中)超过给定的阈值(100 L),则设备点亮5mm的红色LED灯。相反,设备点亮5mm绿色LED。

f69db61663a5d3a022e4e61410c16040.png

5f44353288a294563c41bbdfbeec8aff.png

b5a07f0bcd4d26dda19cf63ee22db258.png

1e17f484aa3b1d580be52acddf70896b.png

视频和结果展示

知乎视频​www.zhihu.com

完成以上所有步骤后,我用热熔胶枪将PCB、外部电池和YF-S201霍尔效应水流传感器固定在我的一株室内植物的花盆上。然后,我把我的水管(花园水管)与喷嘴连接到YF-S201霍尔效应水流传感器。它非常有用:)

ce14438228095adc722d1a5a0919a135.png

b2306245018e748c2cfb176bf43d95d1.png

代码

代码比较长,这里就不全部贴上来啦!有需人的可以私聊我!

定制的部件和附件

电路原理图

84a9714421303bb6a46a1e1cd1c4a853.png

PCB1

7830bc341b94e33a4a1e15dcca223b02.png

PCB2

7617f400ce224380c467058e844a0736.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值