每次给家里的盆栽浇水都挺麻烦的,要是不在家也没法给盆栽浇水,可能过几天就枯萎了。前面我们使用过继电器制作过摇头风扇,现在我们用继电器来制作一个自动浇花系统。
零知标准板(点击购买)
继电器(点击购买)
土壤湿度传感器(点击购买)
水泵(点击购买)
LCD1602液晶屏(点击购买)
LCD1602扩展板(点击购买)
面包板+杜邦线若干(点击购买)
土壤湿度传感器A0,D0脚分别接零知标准板的A1,4号引脚,继电器IN脚接标准板的1号引脚。具体接线参考下图:
实物连线如图所示:
零知迷你板软件代码:
/**********************************************************
* 文件: 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小时扫描一次
}
然后点击验证,通过后再点击上传,将程序上传到零知标准板中。