自动浇花器
本帖最后由 gada888 于 2021-12-27 08:46 编辑自动浇花器
应网友之要求,同时也按他的意图做的浇灌器,因有其它功能未添加,不算完工,他的核心诉求是用一个单片机来给他家里的多种宝贝植物按需供水(好像很精贵的植物的样子),未能最后完工,所以暂不把程序贴出来。同时希望同学们把生活中的痛点告诉楼主。也许楼主能做。而且楼主保证做好第一个发给你。当然你也可以到我网店任挑一个你喜欢的。
硬件清单: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个土壤湿度探头。我会再找一个两联继电器,这样把它凑够六个。
http://v.youku.com/v_show/id_XMTU2MDIxODA5Mg==.html
更新了,连了6个土壤探测器,也就是应该连6个水泵。我手边目前就两个,还有一个测试时候发现是坏的。控制板换成maga板的话,理论上可以连16个土壤探头。但没有实际测试过。http://v.youku.com/v_show/id_XMTU2NjQ2NzQxNg
先声明,源码写的太久找不到了。于是现写了一个,arduino测试通过,没有在连接硬件调试。因为手头也缺乏多个土壤探测头。
四个土壤探头接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不需要水。一个是通过调整探头的电位器,把灯调亮。
//this code is written by gada888 in 26-12-2021
int soilPin1 = A0;
int soilPin2 = A1;
int soilPin3 = A2;
int soilPin4 = A3;
int soilReading1;
int soilReading2;
int soilReading3;
int soilReading4;
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
int tempo=2000; //watering time of 2 seconds
int ledboard=13; //on board led at pin 13
void setup()
{
Serial.begin(9600);
pinMode(pump1,OUTPUT); //pump1 output
pinMode(pump2,OUTPUT); //pump2 output
pinMode(pump3,OUTPUT); //pump3 output
pinMode(pump4,OUTPUT); //pump4 output
pinMode(ledboard,OUTPUT); //on board led output
digitalWrite(ledboard,LOW);//turn off Arduino led
}
void loop()
{
soilReading1 = analogRead(soilPin1);
soilReading2 = analogRead(soilPin2);
soilReading3 = analogRead(soilPin3);
soilReading4 = analogRead(soilPin4);
Serial.print("Analog output: ");
//Serial.println(readSensor());
if (soilReading1 < 900) {
Serial.println("pump1 needs water");
digitalWrite(pump1,HIGH); //turn on pump1
delay(tempo); //wait some time
digitalWrite(pump1,LOW);//turn off pump1
} else if (soilReading2 < 900) {
Serial.println("pump2 needs water");
digitalWrite(pump2,HIGH); //turn on pump2
delay(tempo); //wait some time
digitalWrite(pump2,LOW);//turn off pump2
} else if (soilReading3 < 900) {
Serial.println("pump3 needs water");
digitalWrite(pump3,HIGH); //turn on pump1
delay(tempo); //wait some time
digitalWrite(pump3,LOW);//turn off pump1
} else if (soilReading4 < 900) {
Serial.println("pump4 needs water");
digitalWrite(pump4,HIGH); //turn on pump2
delay(tempo); //wait some time
digitalWrite(pump4,LOW);//turn off pump2
}
}
LZ加油~ 学习学习 加油 加油 路过,顶一个~~ 更新了一下。 好创意,赞一个 楼主,做出来了吗 3PDy1MnK 发表于 2021-12-26 11:32
楼主,做出来了吗
看上面,已更新 楼主,卖么
页:
[1]