Arduino DIY 电子自动浇花浇水系统

这篇具有很好参考价值的文章主要介绍了Arduino DIY 电子自动浇花浇水系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.简介

第1章 实验前的准备 

第一小节 控制板简介

1.规格参数

2.各个接口和主要元件说明

3.特殊功能接口说明

第二小节 在Windows系统电脑使用方法         

1.下载安装arduino软件:

2.安装驱动:

3.配置Arduino IDE

4.开始第一个程序

第三小节 在MAC 系统电脑上使用方法              

1.下载安装arduino软件:

2.安装CH340驱动: 

3.设置Arduino IDE:

第四小节 导入arduino库文件

1.什么是库文件?

2.如何安装库 ?

第二章 开始实验

1.总接线图

实验一:控制水泵

实验二 读取土壤传感器检测数值

实验三 简单自动浇花装置

实验四 控制LCD1602显示屏

实验五 LCD1602显示土壤传感器检测到的值

实验六 自动浇花装置

资料下载链接


1.简介

阳台上,美丽的鲜花,让人赏心悦目,翠绿的多肉植物周围似乎充满了新鲜空气。

但是有时却不太想打理,或者没时间打理这些盆栽。最终漂亮的花朵和多肉植物在你这般照料下,变成了金黄色的枯草。

为了拯救你的盆栽,我们推出了一款简单实用的自动浇花装置,装置配有4个土壤湿度传感器和水泵,意味着它能同时帮你照料4个盆栽,还配备了个显示屏,能让你清楚的知道盆栽土壤的湿度值。

Arduino DIY 电子自动浇花浇水系统

物料清单

Arduino DIY 电子自动浇花浇水系统


第1章 实验前的准备 

第一小节 控制板简介

我们先了解浇花系统的核心:控制板

Arduino DIY 电子自动浇花浇水系统

控制板的主控芯片是ATmega328PU。和官网的Arduino uno对比,控制板使用的USB转串口芯片为CH340,其他的使用方法完全一样。它具有14路数字输入/输出口(其中6路可作为PWM输出),8路模拟输入,通信IO有IIC、SPI、UART;为了方便接线扩展了传感器排针接口。其中ICSP接口用来给控制板烧录固件。供电方式有USB线供电或DC端供电。

1.规格参数

主控芯片:ATmega328PU

USB转串口芯片:CH340

工作电压:5V

外接电源:  DC 6-12V(建议9V)

数字I/O引脚:  14 (D0-D13)

PWM通道: 6 (D3 D5 D6 D9 D10 D11)

模拟输入通道(ADC):  86A0-A5)

每个I/O直流输出能力: 20 mA

3.3V端口输出能力: 最大150 mA

Flash Memory:  32 KB

SRAM:2 KB (ATmega328PU)

EEPROM:1 KB (ATmega328PU)

时钟速度: 16MHz

板载LED引脚: D13

2.各个接口和主要元件说明

Arduino DIY 电子自动浇花浇水系统

3.特殊功能接口说明

串口通信接口:D0为RX、D1为TX

PWM接口(脉宽调制):D3 D5 D6 D9 D10 D11

外部中断接口:D2(中断0)和D3 (中断1)

SPI通信接口:D10为SS、D11为MOSI、D12为MISO、D13为SCK

IIC通信端口:A4为SDA、A5为SCL

第二小节 在Windows系统电脑使用方法         

Arduino DIY 电子自动浇花浇水系统

1.下载安装arduino软件:

(1)首先,进入arduino官方网站:Arduino - Home ,点击“SOFTWARE”进入下载页面,如下图所示:

 Arduino DIY 电子自动浇花浇水系统

Arduino DIY 电子自动浇花浇水系统

(2)然后,根据你的操作系统选择并下载相应的安装程序。如果你是Windows用户,请选择“Windows安装程序”下载正确的安装驱动程序。

Arduino DIY 电子自动浇花浇水系统选择点击Windows Win7 and newer下载Arduino 1.8.16版本的安装程序,需要手动安装。当我们点击Arduino DIY 电子自动浇花浇水系统,代表直接下载1.8.16版本Arduino IDE,是一个压缩文件,解压就可以使用,无需安装。

Arduino DIY 电子自动浇花浇水系统

一般情况下,点击JUST DOWNLOAD就可以下载了,当然如果你愿意,你可以选择小小的赞助,以帮助伟大的Arduino开源事业。

(3)Arduino软件下载完成后,继续安装,当你收到操作系统的警告时,请允许驱动程序安装。首先点击I Agree, 然后选择好要安装的组件后再点击NextArduino DIY 电子自动浇花浇水系统Arduino DIY 电子自动浇花浇水系统

(4)选择安装目录(我们建议保持默认目录),然后点击Install

Arduino DIY 电子自动浇花浇水系统

(5)如果出现以下界面,则应选择Install

 Arduino DIY 电子自动浇花浇水系统

该过程将提取并安装所有必需的文件,以正确执行Arduino软件(IDE)。Arduino DIY 电子自动浇花浇水系统

安装完成后,会在桌面上生成一个Arduino 软件快捷方式。

Arduino DIY 电子自动浇花浇水系统

2.安装驱动:

(注意:如果电脑已经安装了CH340驱动程序,则不需要再安装驱动;如果没有,则需要进行以下操作)

安装Arduino IDE后,我们就开始安装驱动。将控制板用USB线连接在电脑上后,如果是Windows10系统电脑,电脑会自动安装驱动。如果是其他系统电脑,如Windows7系统电脑,需要手动安装驱动。

控制板的USB转串口芯片为CH340我们需要安装这芯片的驱动,驱动为usb_ch341_3.1.2009.06。第一次将控制板连接电脑时,点击计算机--属性--设备管理器,显示如下图。

    Arduino DIY 电子自动浇花浇水系统

点击 Arduino DIY 电子自动浇花浇水系统后,点击“更新驱动程序” ,开始安装驱动,如下图。

进入下图,选择

  Arduino DIY 电子自动浇花浇水系统

在电脑中找到usb_ch341_3.1.2009.06文件夹。

Arduino DIY 电子自动浇花浇水系统

安装驱动完成,出现下图点击关闭。

Arduino DIY 电子自动浇花浇水系统

这样驱动就装好了。点击计算机--属性--设备管理器,我们可看见如下图。

  Arduino DIY 电子自动浇花浇水系统

3.配置Arduino IDE

驱动程序安装成功后,接下来配置Arduino IDE 设备和端口。对于328 PLUS主板,单击ToolsBoard;选择Arduino Uno (如下图所示)。

Arduino DIY 电子自动浇花浇水系统

然后选择正确的COM端口。驱动安装成功后,可以看到对应的COM口。Arduino DIY 电子自动浇花浇水系统

单击ToolsPortCOM6

Arduino DIY 电子自动浇花浇水系统

将代码程序上传到控制板之前,必须演示Arduino IDE工具栏中出现的每个符号的功能。

Arduino DIY 电子自动浇花浇水系统

A - 用于检查是否存在任何编译错误。

B - 用于将程序上传到Arduino控制板。

C - 用于创建新草图的快捷方式。

D - 用于直接打开示例草图之一。

E - 用于保存草图。

F - 用于从板接收串行数据并将串行数据发送到板的串行监视器。

4.开始第一个程序

打开“File”选择“Examples”,从“Basics”中选择“Blink”,如下图所示:

Arduino DIY 电子自动浇花浇水系统

Arduino DIY 电子自动浇花浇水系统

当草图(Blink)窗口打开时,你可以在窗口中看到整个程序。

Arduino DIY 电子自动浇花浇水系统

设置板型和COM口,对应的板型和COM口会显示在IDE的右下角。

Arduino DIY 电子自动浇花浇水系统

点击​​​​​​​Arduino DIY 电子自动浇花浇水系统开始编译程序,检查错误。

Arduino DIY 电子自动浇花浇水系统

点击Arduino DIY 电子自动浇花浇水系统上传程序,几秒种后,上传成功。

 Arduino DIY 电子自动浇花浇水系统

上传程序成功,利用USB线上电,328 PLUS主板上的板载LED灯点亮1秒,熄灭1秒,循环进行。恭喜你,完成了第一个项目。

第三小节 在MAC 系统电脑上使用方法              

Arduino DIY 电子自动浇花浇水系统

1.下载安装arduino软件:

下载安装说明与1.1章相同,如下图所示:

Arduino DIY 电子自动浇花浇水系统

2.安装CH340驱动: 

(1)点击V1.5 CH340 MaxOS驱动程序包

 Arduino DIY 电子自动浇花浇水系统

(2)单击安装包并点击继续

 Arduino DIY 电子自动浇花浇水系统

(3)点击安装

Arduino DIY 电子自动浇花浇水系统

(4)输入用户密码,然后单击“安装软件

Arduino DIY 电子自动浇花浇水系统

(5)点击继续安装

Arduino DIY 电子自动浇花浇水系统

(6)等待安装

Arduino DIY 电子自动浇花浇水系统

(7)安装完成后,单击“重新启动”

Arduino DIY 电子自动浇花浇水系统

3.设置Arduino IDE:

除了COM端口之外,设置方法与第1.4章相同,如下图所示:

Arduino DIY 电子自动浇花浇水系统

第四小节 导入arduino库文件

在开始课程之前我们还需要安装课程里面代码需要的Arduino库文件。

1.什么是库文件?

库是一组代码,可以方便地连接到传感器、显示器、模块等。例如,内置的LiquidCrystal库可以帮助与LCD显示器对话。Internet上还有数百个额外的库可供下载。参考资料(https://www.arduino.cc/en/Reference/Libraries)中列出了内置库和其中一些附加库。

2.如何安装库 ?

这里我们将介绍一种最简单的添加库的方法 .

第一步:打开文件的安装目录,如下所示:

Arduino DIY 电子自动浇花浇水系统

第二步: 单击打开安装目录下的libraries文件夹,你可以看到library这个文件夹里面含有一些Arduino的库文件。

Arduino DIY 电子自动浇花浇水系统

Arduino DIY 电子自动浇花浇水系统

第三步:打开我们提供的资料里面的Arduino Libraries文件夹,将文件夹中的库文件都复制粘贴到第二步我们打开的libraries文件夹内。

Arduino DIY 电子自动浇花浇水系统

复制好了之后我们的库文件就添加成功了。

Arduino DIY 电子自动浇花浇水系统

这样,库文件就手动添加完成了。

第二章 开始实验

1.总接线图

Arduino DIY 电子自动浇花浇水系统接线时注意看引脚标识:控制板的红色排针是VCC,黑色排针是GND,黄色排针接信号线

水管接到水泵上:

Arduino DIY 电子自动浇花浇水系统

实验一:控制水泵

(1)实验说明:

控制板的主要是控制作用驱动能力较弱,水泵是动力装置,需要用驱动模块驱动水泵抽水。

(2 规格参数:

水泵

驱动模块

工作电压:

2.5V~6V

工作电压

DC 1.8V-6.8V

配对的水管内径

6mm

通过最大电流

低待机电流 0.01uA 、低静态工作电流0.2mA、连续输出电流1.2A

当电压为5V时

水管离水泵的高度不能高于105cm

控制信号

数字信号或PWM信号

(3)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

int INA = 4;   //接电机1的IN-

int INB = 5;   //接电机1的IN+

int INC = 6;   //接电机2的IN+

int IND = 7;   //接电机2的IN-

int INE = 8;   //接电机3的IN-

int INF = 9;   //接电机3的IN+

int ING = 10;  //接电机4的IN+

int INH = 11;  //接电机4的IN-

void setup() {

  pinMode(INA, OUTPUT);//设置引脚为输出模式

  pinMode(INB, OUTPUT);

  pinMode(INC, OUTPUT);

  pinMode(IND, OUTPUT);

  pinMode(INE, OUTPUT);

  pinMode(INF, OUTPUT);

  pinMode(ING, OUTPUT);

  pinMode(INH, OUTPUT);

}

void loop() {

  digitalWrite(INA, LOW);  //打开水泵1

  analogWrite(INB, 255);

  analogWrite(INC, 255);   //打开水泵2

  digitalWrite(IND, LOW);

  digitalWrite(INE, LOW);  //打开水泵3

  analogWrite(INF, 255);

  analogWrite(ING, 255);   //打开水泵4

  digitalWrite(INH, LOW);

  delay(3000);             //延时3S

  digitalWrite(INA, LOW);  //关闭水泵1

  analogWrite(INB, 0);          

  analogWrite(INC, 0);     //关闭水泵2    

  digitalWrite(IND, LOW);

  digitalWrite(INE, LOW);   //关闭水泵3

  analogWrite(INF, 0);

  analogWrite(ING, 0);     //关闭水泵4

  digitalWrite(INH, LOW);

  delay(1000);             //延时1S

}

(4)实验现象:

烧录代码之后,可以看到4个继电器同时打开,水泵开始抽水,3秒后停止。

实验二 读取土壤传感器检测数值

(1)实验说明:

土壤湿度传感器就是用来检测土壤湿度值的,也就是通过检测到的值可以判断盆栽是否缺水;读取4个土壤湿度传感器,并且在arduino IDE的串口监视器中打印出来。

  1. 规格参数

控制芯片:TLC555

通信接口:输出模拟值

额定电压:3.3 ~ 5.5 VDC

输出电压:0 ~ 3.0 VDC

工作电流:<5mA

工作温度范围:1°C ~ 50°C

(3)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

#define soilPin1 A0   //定义土壤传感器引脚

#define soilPin2 A1

#define soilPin3 A2

#define soilPin4 A3

void setup() {

  Serial.begin(9600);

  pinMode(soilPin1, INPUT);   //设置引脚输出

  pinMode(soilPin2, INPUT);

  pinMode(soilPin3, INPUT);

  pinMode(soilPin4, INPUT);

}

void loop() {

  int val1 = analogRead(soilPin1);

  int val2 = analogRead(soilPin2);

  int val3 = analogRead(soilPin3);

  int val4 = analogRead(soilPin4);

  Serial.print("SoilSensor 1 =  ");     //串口打印土壤湿度值

  Serial.print(val1);

  Serial.print("  ");

  Serial.print("SoilSensor 2 =  ");

  Serial.print(val2);

  Serial.print("  ");

  Serial.print("SoilSensor 3 =  ");

  Serial.print(val3);

  Serial.print("  ");

  Serial.print("SoilSensor 4 =  ");

  Serial.println(val4);

}

(4)实验现象:

烧录好代码,打开arduino IDE的串口监视器,可以看到打印出4个土壤湿度传感器检测到的值,用手触摸土壤湿度传感器的探测部分,可以看到对应的值变小,这是因为人的手皮肤上有水分,也就意味着土壤越湿测到的值越小。

Arduino DIY 电子自动浇花浇水系统

实验三 简单自动浇花装置

(1)实验介绍:

既然学会了控制水泵和读取土壤湿度传感器的值,那就可以通过判断土壤湿度传感器检测到的值来开关水泵,实现简单的自动浇花装置。

(2)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

#define soilPin1 A0   //宏定义土壤传感器引脚

#define soilPin2 A1

#define soilPin3 A2

#define soilPin4 A3

int INA = 4;   //接电机1的IN-

int INB = 5;   //接电机1的IN+

int INC = 6;   //接电机2的IN+

int IND = 7;   //接电机2的IN-

int INE = 8;   //接电机3的IN-

int INF = 9;   //接电机3的IN+

int ING = 10;  //接电机4的IN+

int INH = 11;  //接电机4的IN-

void setup() {

  Serial.begin(9600);

  pinMode(soilPin1, INPUT);  //设置引脚为输入模式

  pinMode(soilPin2, INPUT);

  pinMode(soilPin3, INPUT);

  pinMode(soilPin4, INPUT);

  pinMode(INA, OUTPUT);//设置引脚为输出模式

  pinMode(INB, OUTPUT);

  pinMode(INC, OUTPUT);

  pinMode(IND, OUTPUT);

  pinMode(INE, OUTPUT);

  pinMode(INF, OUTPUT);

  pinMode(ING, OUTPUT);

  pinMode(INH, OUTPUT);

}

void loop() {

  int val1 = analogRead(soilPin1);

  int val2 = analogRead(soilPin2);

  int val3 = analogRead(soilPin3);

  int val4 = analogRead(soilPin4);

  Serial.print("SoilSensor 1 =  "); //串口打印湿度数值

  Serial.print(val1);

  Serial.print("  ");

  Serial.print("SoilSensor 2 =  ");

  Serial.print(val2);

  Serial.print("  ");

  Serial.print("SoilSensor 3 =  ");

  Serial.print(val3);

  Serial.print("  ");

  Serial.print("SoilSensor 4 =  ");

  Serial.println(val4);

  if (val1 > 550) {                  //当土壤传感器检测到湿度值大于550时打开水泵

  digitalWrite(INA, LOW);  //打开水泵1

  analogWrite(INB, 255);

  } else {

  digitalWrite(INA, LOW);  //关闭水泵1

  analogWrite(INB, 0);

  }

  if (val2 > 550) {

  analogWrite(INC, 255);   //打开水泵2

  digitalWrite(IND, LOW);

  } else {

  analogWrite(INC, 0);     //关闭水泵2    

  digitalWrite(IND, LOW);

  }

  if (val3 > 550) {

  digitalWrite(INE, LOW);  //打开水泵3

  analogWrite(INF, 255);

  } else {

  digitalWrite(INE, LOW);   //关闭水泵3

  analogWrite(INF, 0);

  }

  if (val4 > 550) {

  analogWrite(ING, 255);   //打开水泵4

  digitalWrite(INH, LOW);

  } else {

  analogWrite(ING, 0);     //关闭水泵4

  digitalWrite(INH, LOW);

  }

}

(3)实验现象:

为了方便做实验,我们还是先用手触摸土壤湿度传感器来替代盆栽缺水的情况。烧录代码后,水泵开始抽水,用手触摸土壤湿度传感器,对应的水泵关闭,水泵停止抽水,放开手后,水泵抽水。

(由前面的实验可知,土壤传感器检测到的湿度越大输出的数值就越小,所以我们用手触摸相当于湿度大,水泵停止抽水

实验四 控制LCD1602显示屏

(1)简介

这是一个可以显示2行,每行16个字符的液晶屏模块。液晶屏显示蓝底白字,自带I2C通信模块,使用时只需连接单片机I2C通信接口,大大节约了单片机资源。I2C通信模块上带有1个电位器,可用于调节显示屏背光,通信地址默认为0x27。

(2)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  //LCD的IIC通信地址是0x27,2行显示16个字符

void setup()

{

  lcd.init();                      // 初始化LCD

  lcd.init();

  // 将信息打印到LCD上

  lcd.backlight();

  lcd.setCursor(5,0);

  lcd.print("haha");

  lcd.setCursor(2,1);

  lcd.print("Hello, world!");

}

void loop()

{

}

(3)实验现象:

可以看到LCD1602显示屏第一行显示:haha ;第二行显示: Hello World! 。

实验五 LCD1602显示土壤传感器检测到的值

(1)实验说明

土壤湿度传感器检测到的值,可以通过打开arduino IDE串口监视器查看,但是需要使用数据线连接电脑,很不方便。所以我们添加了个LCD1602显示屏,可以在显示屏上看土壤湿度传感器检测到的值。

(2)规格参数

工作电压:DC 5V

接口:间距为2.54mm排针接口

通讯方式:I2C通讯

I2C通信地址: 0x27

(3)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);  //LCD的IIC通信地址是0x27,2行显示16个字符

#define soilPin1 A0

#define soilPin2 A1

#define soilPin3 A2

#define soilPin4 A3

void setup()

{

  lcd.init();                      //  初始化LCD

  lcd.init();

  // Print a message to the LCD.

  lcd.backlight();

}

void loop()

{

  int val1 = analogRead(soilPin1);

  int val2 = analogRead(soilPin2);

  int val3 = analogRead(soilPin3);

  int val4 = analogRead(soilPin4);

   // 将信息打印到LCD上

  lcd.setCursor(0,0);

  lcd.print("S1:    ");

  lcd.setCursor(3,0);

  lcd.print(val1);

  lcd.setCursor(7,0);

  lcd.print(" ");

  lcd.setCursor(9,0);

  lcd.print("S2:    ");

  lcd.setCursor(12,0);

  lcd.print(val2);

  lcd.setCursor(0,1);

  lcd.print("S3:    ");

  lcd.setCursor(3,1);

  lcd.print(val3);

  lcd.setCursor(7,1);

  lcd.print(" ");

  lcd.setCursor(9,1);

  lcd.print("S4:    ");

  lcd.setCursor(12,1);

  lcd.print(val4);

  delay(100);

}

(4)实验现象:

S1代表土壤湿度传感器1,以此类推,可以看到LCD1602显示屏显示出4个传感器检测到的值,用手触摸传感器,可以看到显示屏上显示的值在改变。

Arduino DIY 电子自动浇花浇水系统

实验六 自动浇花装置

(1)实验代码:

/*

 良芯小店

 链接:https://item.taobao.com/item.htm?ft=t&id=679403226914

*/

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD的通信地址的0x27,2行显示16个字符

#define soilPin1 A0                //定义土壤传感器引脚

#define soilPin2 A1

#define soilPin3 A2

#define soilPin4 A3

int INA = 4;   //接电机1的IN-

int INB = 5;   //接电机1的IN+

int INC = 6;   //接电机2的IN+

int IND = 7;   //接电机2的IN-

int INE = 8;   //接电机3的IN-

int INF = 9;   //接电机3的IN+

int ING = 10;  //接电机4的IN+

int INH = 11;  //接电机4的IN-

int count, count_flag;

void setup()

{

  pinMode(INA, OUTPUT);//设置引脚为输出模式

  pinMode(INB, OUTPUT);

  pinMode(INC, OUTPUT);

  pinMode(IND, OUTPUT);

  pinMode(INE, OUTPUT);

  pinMode(INF, OUTPUT);

  pinMode(ING, OUTPUT);

  pinMode(INH, OUTPUT);

  lcd.init();                      // 初始化lcd

  lcd.init();

  //LCD清屏

  lcd.backlight();

}

void loop()

{

  int val1 = analogRead(soilPin1);

  int val2 = analogRead(soilPin2);

  int val3 = analogRead(soilPin3);

  int val4 = analogRead(soilPin4);

  //LCD上打印数值

  lcd.setCursor(0, 0);

  lcd.print("S1:    ");

  lcd.setCursor(3, 0);

  lcd.print(val1);

  lcd.setCursor(7, 0);

  lcd.print(" ");

  lcd.setCursor(9, 0);

  lcd.print("S2:    ");

  lcd.setCursor(12, 0);

  lcd.print(val2);

  lcd.setCursor(0, 1);

  lcd.print("S3:    ");

  lcd.setCursor(3, 1);

  lcd.print(val3);

  lcd.setCursor(7, 1);

  lcd.print(" ");

  lcd.setCursor(9, 1);

  lcd.print("S4:    ");

  lcd.setCursor(12, 1);

  lcd.print(val4);

  delay(200);

  count = count + 1;

  if (count >= 50) //10秒钟后,关闭lCD1602背光

  {

    count = 50;

    lcd.noBacklight();

  }

  if (val1 > 600) //当土壤传感器1检测的湿度大于600时水泵1以最大速度开始抽水

  {

    count = 0;

    digitalWrite(INA, LOW);

    analogWrite(INB, 255);

  }

  else if (val1 >= 450 && val1 <= 600) { //当土壤的湿度大于等于450且小于等于600时水泵1抽水速度减慢

    count = 0;

    digitalWrite(INA, LOW);

    analogWrite(INB, 100);

  }

  else {         //否则水泵1停止抽水

    count = 0;

    digitalWrite(INA, LOW);

    analogWrite(INB, 0);

  }

  if (val2 > 600) //当土壤传感器2检测的湿度大于600时水泵2以最大速度开始抽水

  {

    count = 0;

    analogWrite(INC, 255);

    digitalWrite(IND, LOW);

  }

  else if (val2 >= 450 && val2 <= 600) { //当土壤传感器2检测的湿度大于等于450且小于等于600时水泵2抽水速度减慢

    count = 0;

    analogWrite(INC, 100);

    digitalWrite(IND, LOW);

  }

  else {        //否则水泵2停止抽水

    count = 0;

    analogWrite(INC, 0);

    digitalWrite(IND, LOW);

  }

  if (val3 > 600) //当土壤传感器3检测的湿度大于600时水泵3以最大速度开始抽水

  {

    count = 0;

    digitalWrite(INE, LOW);

    analogWrite(INF, 255);

  }

  else if (val3 >= 450 && val3 <= 600) { //当土壤传感器3检测的湿度大于等于450且小于等于600时水泵3抽水速度减慢

    count = 0;

    digitalWrite(INE, LOW);

    analogWrite(INF, 100);

  }

  else {                     //否则水泵3停止抽水

    count = 0;

    digitalWrite(INE, LOW);

    analogWrite(INF, 0);

  }

  if (val4 > 600) //当土壤传感器4检测的湿度大于600时水泵4以最大速度开始抽水

  {

    count = 0;

    analogWrite(ING, 255);

    digitalWrite(INH, LOW);

  }

  else if (val4 >= 450 && val4 <= 600) { //当土壤传感器4检测的湿度大于等于450且小于等于600时水泵4抽水速度减慢

    count = 0;

    analogWrite(ING, 100);

    digitalWrite(INH, LOW);

  }

  else {                     //否则水泵4停止抽水

    count = 0;

    analogWrite(ING, 0);

    digitalWrite(INH, LOW);

  }

}

(2)实验现象:

上传好程序,接上DC端供电,四个土壤湿度传感器分别插到4个盆栽土壤里,对应的控制的水泵水管也放到水里,可以看到LCD1602显示屏显示出盆栽的土壤湿度值。如果盆栽不缺水,10秒后LCD1602显示屏的背景灯会关闭,达到省电作用。如果有盆栽缺水了,LCD1602显示屏背景灯会亮起,土壤传感器检测的湿度大于600时水泵以最大速度开始抽水,当土壤传感器检测的湿度大于等于450且小于等于600时水泵,抽水速度减慢给水渗透时间,然后土壤湿度传感器再继续检测,数值小于450就停止抽水。(因土壤传感器的检测原理是:湿度越大数值越小,所以当土壤的湿度大于450时水泵开始抽水,数值小于450就停止抽水)

资料下载链接

链接:https://pan.baidu.com/s/1CLXoZpQj9ApF9wGk_EEynw 
提取码:h16w文章来源地址https://www.toymoban.com/news/detail-405256.html

到了这里,关于Arduino DIY 电子自动浇花浇水系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Arduino物联网快速开发:基于ESP8266与点灯Blinker制作小白都会的DIY《智能家居》系统

    我们要制作一款能够远程控制家里灯、风扇的开关,并采集温湿度、光照传输到手机APP上。正好看到了点灯Blinker的开源方案, blinker是一套跨硬件、跨平台的物联网解决方案,提供APP端、设备端、服务器端支持,使用公有云服务进行数据传输。可用于智能家居、数据监测等领

    2024年02月06日
    浏览(47)
  • 5.[STM32]动动小手,自己制作做一个自动浇花系统吧

    🚀 作者简介:大家好啊,我叫DW,每天分享一些嵌入式知识,期待和大家一起进步! 🉑🉑 系列专栏: STM32 👀👀👀 小实验简介:利用土壤湿度传感器测量土壤湿度,介于阈值之间或者大于阈值水泵关闭,小于设定阈值水泵开启且蜂鸣器报警提醒主人浇水,土壤湿度、水泵

    2023年04月11日
    浏览(27)
  • 基于51单片机土壤湿度检测及自动浇花系统仿真(带时间显示)

    wx供重浩:创享日记 对话框发送:单片机浇花 获取完整源码源文件+仿真源文件+原理图源文件+论文报告等 单片机土壤湿度检测及自动浇花系统仿真(带时间显示) 具体功能: (1)液晶第一行显示实际湿度,液晶第二行显示当前时间; (2)按键说明:减键、加键、设置键。

    2024年02月05日
    浏览(46)
  • Arduino开发实例-DIY简单脉搏血氧仪(基于MAX30100)

    本文将介绍如何通过MAX30100制作一个简易的脉搏血氧仪。脉搏血氧仪用于测量心率和 SpO2 水平,在这里,我们将使用 Arduino、MAX30100 传感器和 0.96 英寸 SSD1306 OLED 显示屏 DIY 脉搏血氧仪。 在前面的文章中,对MAX30100传感器模块驱动做了详细的介绍,请参考: MAX30100 脉搏血氧仪传

    2024年02月01日
    浏览(45)
  • [ 原 神 ] 神之眼电子挂件 DIY

    半年前本蒻蒟在逛开源硬件平台的时候发现了一个好玩的电子神之眼,于是开始了长达半年的制作(鸽)过程..... 本项目复刻了萨纳兰的黄昏大佬改版的神之眼S3“Pro”版核心板V1 本项目基于Arduino IDE环境 本项目硬件和软件部分基于GPL3.0开源许可开源(可修改,可分享,可商用,

    2024年02月05日
    浏览(26)
  • 星露谷物语(Stardew Valley)Mod Farmtronics 机器人自动浇水代码

    模组介绍:【星露谷物语】你想要一群可爱可编程的工作机器人吗?Farmtronics模组介绍_哔哩哔哩_bilibili Farmtronics使用的编程语言语法 MiniScript-QuickRef.pages Api 接口参考 ·乔斯特劳特/法姆电子学维基 ·吉特哈布 (github.com) Farmtronics.zip-10634-1-2-0-1658871311 SMAPI 3.16.2 1.机器人使用笛卡

    2024年02月09日
    浏览(41)
  • Arduino开发实例-DIY超声波传感器避障机器人

    在本应用中,我们将使用一个超声波传感器与两个直流电机和一个伺服电机相结合,Arduino作为主控板创建一个简单的避障机器人。 超声波传感器发送和接收信号以确定物体的距离。 如果距离小于 15 厘米有物体,机器人将停止。 然后它环顾四周,转向一个它什么都感觉不到

    2023年04月08日
    浏览(60)
  • 招投标系统简介 企业电子招投标采购系统源码之电子招投标系统 —降低企业采购成本

    功能模块: 待办消息,招标公告,中标公告,信息发布 描述: 全过程数字化采购管理,打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力,为外部供应商集中推送展示与其相关的所有采购业务信息(历史合作、考

    2024年02月10日
    浏览(39)
  • Arduino毕业设计——基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现(毕业论文+程序源码)——自动驾驶小车控制系统

    大家好,今天给大家介绍基于Arduino+PID+AI的自动驾驶小车控制系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦 文章目录: 近年来,各

    2024年02月06日
    浏览(45)
  • 基于STM32+华为云IOT设计的智能浇花系统

    随着社会的不断发展和人们生活水平的逐渐提高,人们逐渐追求高质量的生活,很多人都会选择在家里或办公室种植一些花卉以净化家庭空气,陶冶情操,但是很多人忙于工作、学习、出差、旅游或者一些其他的原因,不能及时地对花卉进行照料,短时间内导致很多花卉因缺

    2024年02月13日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包