房子装修好之后,甲醛含量测下来很高,所以买了好几盆绿植。结果遇到意想不到的长期出差,正值天气转暖,花草得经常浇水,只好拜托朋友帮忙,很是麻烦。
为了解决这个麻烦,便想着基于Arduino做一个自动浇水系统,解决本人在外出差时家里花花草草的浇水问题。在油管上看到一些别人做的案列,发现要实现自动浇水并不复杂,于是开始着手准备。主要部件如下图所示。
![4ccc4d24206fd0de96d3200988f6945f.png](https://img-blog.csdnimg.cn/img_convert/4ccc4d24206fd0de96d3200988f6945f.png)
板子用的Arduino Nano,好用不贵。其他部件有:湿度传感器、继电器、水泵以及跳线。(不得不感慨一下,现在传感器真心便宜,只有我四年前上大学时的好几分之一,大部分传感器也就两块钱,幼儿园门口的烤肠都要三块钱一根)
使用Fritzing画的电路图如下所示。(Fritzing适合新手绘制电路图,比较直观)
![d9a69d18728a4fc4f64a4a9e41da1bca.png](https://img-blog.csdnimg.cn/img_convert/d9a69d18728a4fc4f64a4a9e41da1bca.png)
思路很简单,就是用湿度传感器监测花盆中土壤的湿度,如果湿度下降到预设值时,继电器通电导通水泵电机电路,然后水泵运行设定时间后断开。接线时注意继电器的NO是高电平时常开,NC是高电平时常闭。成品如下图所示:
![ee60f913df92dfa01a834c4236256959.png](https://img-blog.csdnimg.cn/img_convert/ee60f913df92dfa01a834c4236256959.png)
Arduino的代码如下所示,湿度传感器接模拟口A5,电机控制器接数字口D5,每50ms采集一次数据,湿度500时继电器通电常闭,水泵运行5秒后继电器失电常开。
void setup(){
Serial.begin(9600);
pinMode(A5, INPUT);
pinMode(5,OUTPUT);
}
void loop(){
int SensorValue = analogRead(A5);
if(SensorValue >= 500) {
digitalWrite(5,HIGH);
delay(5000);
digitalWrite(5,LOW);
}
delay(50);
}
![c63226f21a5a1e88fc6a8bb9d8b50782.png](https://img-blog.csdnimg.cn/img_convert/c63226f21a5a1e88fc6a8bb9d8b50782.png)
视频中土壤是已经浇过水的,所以取出湿度传感器后,水泵会工作,插回土壤后,水泵停止工作。(由于老早买的12V电源涨包了,暂时未使用上述12V的水泵,用的6V的小泵,所以水流较小)
存在问题及改进思路
一、廉价传感器不可靠
正如之前发朋友圈,诗晨大佬的评论,便宜的传感器并不可靠,如果传感器故障,不能及时发现,会更加麻烦。我想到的改进思路是多放几个湿度传感器,有大于两个检测到湿度低时启动水泵。要实现并不困难。
二、不能反馈实时信息
不能随时监视实时的情况,只能期望系统不出问题,不能让人放心。这个本来我是一筹莫展的,现在也有了解决方法,还是得感谢诗晨大佬,他建议我学习Linux,我入手了树莓派之后,发现可以通过远程操作家里的树莓派来实时监视,控制浇水。