自动浇花器

2016-05-063万
精华项目
AI 快速预览详细 收起
本项目介绍了一种使用Arduino Diecimila 328P、土壤探测器和继电器制作的自动浇花器。硬件清单包括Arduino Diecimila 328P、4只土壤探测器、4连-5v10A继电器、快速焊接扩展板和12V水泵。通过将土壤探头的信号口分别连接到Arduino的A0-A3口,继电器的IN1-IN4口连接到D7-D10口,实现自动浇水。该项目适用于家庭园艺爱好者,解决了多种植物按需供水的问题。


自动浇花器

应网友之要求,同时也按他的意图做的浇灌器,因有其它功能未添加,不算完工,他的核心诉求是用一个单片机来给他家里的多种宝贝植物按需供水(好像很精贵的植物的样子),未能最后完工,所以暂不把程序贴出来。同时希望同学们把生活中的痛点告诉楼主。也许楼主能做。而且楼主保证做好第一个发给你。当然你也可以到我网店任挑一个你喜欢的。



硬件清单:Arduino Diecimila 328P,

土壤探测器:4只

继电器:4连-5v10A

auduino 快速焊接扩展板: 一只

水泵:12V-4只(视频里没连,现手头没水泵)
连线部分:数字IO的D3,D5,D7,D9分别连继电器IN1,IN2,IN3,IN4,继电器的VCC和GND连Arduino的vcc和gnd。每只土壤传感器的信号口分别连arduino的A0,A1,A2,A3.
每只土壤传感器的vcc和gnd分别连arduino 的Vcc和GND。
顺便说一下,我没有8连继电器只好用了4连的,这种arduino板有6个analog口,应该可以连6个土壤湿度探头。我会再找一个两联继电器,这样把它凑够六个。


自动浇花器图1




更新了,连了6个土壤探测器,也就是应该连6个水泵。我手边目前就两个,还有一个测试时候发现是坏的。控制板换成maga板的话,理论上可以连16个土壤探头。但没有实际测试过。


先声明,源码写的太久找不到了。于是现写了一个,arduino测试通过,没有在连接硬件调试。因为手头也缺乏多个土壤探测头。

自动浇花器图2
四个土壤探头接arduino A0-A3口
int soilPin1 = A0;
int soilPin2 = A1;
int soilPin3 = A2;
int soilPin4 = A3;

继电器接arduino D7-D10口
int pump1=7;               //pump1 at pin 7
int pump2=8;               //pump2 at pin 8
int pump3=9;               //pump1 at pin 9
int pump4=10;               //pump2 at pin 10
关于土壤探头,它的模拟值是0-1023,我设置的临界值是900,这个可以调整的。是aruduino程序里调整参数。小于900需要防水。大于900不需要水。一个是通过调整探头的电位器,把灯调亮。
自动浇花器图3
  1. //this code is written by gada888 in 26-12-2021
  2. int soilPin1 = A0;
  3. int soilPin2 = A1;
  4. int soilPin3 = A2;
  5. int soilPin4 = A3;
  6. int soilReading1;
  7. int soilReading2;
  8. int soilReading3;
  9. int soilReading4;
  10. int pump1=7;               //pump1 at pin 7
  11. int pump2=8;               //pump2 at pin 8
  12. int pump3=9;               //pump1 at pin 9
  13. int pump4=10;               //pump2 at pin 10
  14. int tempo=2000;             //watering time of 2 seconds
  15. int ledboard=13;           //on board led at pin 13
  16. void setup()
  17. {
  18. Serial.begin(9600);
  19. pinMode(pump1,OUTPUT);       //pump1 output
  20. pinMode(pump2,OUTPUT);       //pump2 output
  21. pinMode(pump3,OUTPUT);       //pump3 output
  22. pinMode(pump4,OUTPUT);       //pump4 output
  23. pinMode(ledboard,OUTPUT);    //on board led output
  24. digitalWrite(ledboard,LOW);  //turn off Arduino led
  25. }
  26. void loop()
  27. {
  28.   soilReading1 = analogRead(soilPin1);
  29.   soilReading2 = analogRead(soilPin2);
  30.   soilReading3 = analogRead(soilPin3);
  31.   soilReading4 = analogRead(soilPin4);
  32.   Serial.print("Analog output: ");
  33.   //Serial.println(readSensor());
  34. if (soilReading1 < 900) {
  35.   Serial.println("pump1 needs water");
  36.   digitalWrite(pump1,HIGH); //turn on pump1
  37.   delay(tempo);             //wait some time
  38.   digitalWrite(pump1,LOW);  //turn off pump1
  39.   } else if (soilReading2 < 900) {
  40.   Serial.println("pump2 needs water");
  41.   digitalWrite(pump2,HIGH); //turn on pump2
  42.   delay(tempo);             //wait some time
  43.   digitalWrite(pump2,LOW);  //turn off pump2
  44.   } else if (soilReading3 < 900) {
  45.   Serial.println("pump3 needs water");
  46.   digitalWrite(pump3,HIGH); //turn on pump1
  47.   delay(tempo);             //wait some time
  48.   digitalWrite(pump3,LOW);  //turn off pump1
  49.   } else if (soilReading4 < 900) {
  50.   Serial.println("pump4 needs water");
  51.   digitalWrite(pump4,HIGH); //turn on pump2
  52.   delay(tempo);             //wait some time
  53.   digitalWrite(pump4,LOW);  //turn off pump2
  54. }
  55. }
复制代码










创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(8)
腻了匿了
腻了匿了
楼主,卖么
腻了匿了
腻了匿了
楼主,做出来了吗
gada888
gada888
作者
回复腻了匿了
看上面,已更新
20060606
20060606
好创意,赞一个
gada888
gada888
作者
更新了一下。
凌风清羽
凌风清羽
路过,顶一个~~
qq815076543322
qq815076543322
加油 加油
dsweiliang
dsweiliang
学习学习
virtualwiz
virtualwiz
LZ加油~
- 没有更多了 -