零知开源小项目-制作一个简单的自动浇花神器

每次给家里的盆栽浇水都挺麻烦的,要是不在家也没法给盆栽浇水,可能过几天就枯萎了。前面我们使用过继电器制作过摇头风扇,现在我们用继电器来制作一个自动浇花系统。

1、材料

零知标准板(点击购买)
继电器(点击购买)
土壤湿度传感器(点击购买)
水泵(点击购买)
LCD1602液晶屏(点击购买)
LCD1602扩展板(点击购买)
面包板+杜邦线若干(点击购买)

2、硬件连接

土壤湿度传感器A0,D0脚分别接零知标准板的A1,4号引脚,继电器IN脚接标准板的1号引脚。具体接线参考下图:

实物连线如图所示:

2、程序

零知迷你板软件代码:


												
	/**********************************************************
	*    文件: pump.ino      by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
	*    -^^- 零知开源,让电子制作变得更简单! -^^-
	*    时间: 2019/07/25 10:58
	*    说明:
	************************************************************/
	#include <Servo.h>
	#include <LiquidCrystal_I2C.h>
	 
	LiquidCrystal_I2C lcd(0x3f,16,2);
	 
	int sensorpin = 4;//传感器D0脚接4号引脚 有水为0;无水为1
	int pumpin = 1;//续电器引脚 低电平触发 
	int sensor;
	int sensor1;
	int sensorpin1 = A1;//传感器A0脚接A2引脚,输出湿度的模拟值
	 
	// 复位或上电后运行一次:
	void setup() {
	        //在这里加入初始化相关代码,只运行一次:
	        Serial.begin(9600);
	        lcd.init();//LCD液晶屏初始化
	        lcd.backlight();//LCD液晶屏打开背光
	        pinMode(sensorpin,INPUT);
	        pinMode(sensorpin1,INPUT);
	        pinMode(pumpin,OUTPUT);
	        digitalWrite(pumpin,HIGH);//水泵关闭
	         
	}
	 
	//一直循环执行:
	void loop() {
	        // 在这里加入主要程序代码,重复执行:
	        sensor = digitalRead(sensorpin);
	        sensor1 = analogRead(sensorpin1);
	         
	        Serial.print("A0:");
	        Serial.println(sensor1);
	         
	        lcd.print("Humidity:");
	        lcd.print(sensor1);//LCD液晶屏显示当前湿度模拟量
	         
	        //如果传感器检测值为1表示没水;0表示有水
	        if(sensor==1&&sensor1>2400)
	        {
	                Serial.print(sensor);
	                Serial.println("缺水状态!");
	                digitalWrite(pumpin,LOW);//打开水泵
	                Serial.println("水泵-打开");
	                 
	                lcd.setCursor(2,1);//在第二行空两格显示
	                lcd.print("Watering!");
	                 
	                delay(10000);//浇水10秒
	                 
	                digitalWrite(pumpin,HIGH);//关闭水泵
	                Serial.println("水泵-关闭");
	                sensor1 = analogRead(sensorpin1);                lcd.clear();//LCD液晶屏清屏
	                lcd.print("Humidity:");
	                lcd.print(sensor1);
	                lcd.setCursor(2,1);
	                lcd.print("Stop watering!");
	                 
	                 
	        }
	        else
	        {
	                digitalWrite(pumpin,HIGH);//关闭水泵
	                Serial.print(sensor);
	                Serial.println("不缺水状态!");
	                Serial.println("水泵-关闭");
	                 
	                lcd.clear();
	                sensor1 = analogRead(sensorpin1);
	                lcd.print("Humidity:");
	                lcd.print(sensor1);
	                lcd.setCursor(2,1);
	                lcd.print("Soil moisture!");
	                 
	        }
	         
	        delay(10000);//10秒钟扫描一次;
	        lcd.clear();
	        //delay(36000000);//10小时扫描一次
	         
	}
						

然后点击验证,通过后再点击上传,将程序上传到零知标准板中。