proteus中没有arduino中土壤传感器所需的继电器以及四线制模块,因此我从其他地方找到原理图
上图便是四线制模块的原理图,其中的SOIL SIMULATED RESISTANCE为土壤的模拟电阻,及两脚式土壤湿度检测器的接入端,变阻器用来调节灵敏度
上图为水泵系统,jqc3ff继电器的原理图,RL4为普通的继电器,开关转换的电压阈值可调。
若13处输入高电平,经三极管后与VCC形成电势差,最终吸附开关使电机断开,因此为低通。
总电路图
另外,arduino开发板需要二进制代码:
#include <Servo.h>
int sensorpin = 4; //传感器引脚 有水为0;无水为1
float pumpin = 13; //水泵引脚 低电平触发 digitalWrite(8,LOW);
int var;
int var2;
int var3;
int sensorpin2 = A0;
void setup() {
Serial.begin(9600);
pinMode(sensorpin, INPUT);
pinMode(sensorpin2, INPUT);
pinMode(pumpin, OUTPUT);
digitalWrite(pumpin, HIGH); //水泵关闭
}
void loop() {
var = digitalRead(sensorpin);
var2 = digitalRead(pumpin);
var3 = analogRead(sensorpin2);
Serial.print("var3:");
Serial.println(var3);
//如果传感器检测值为1表示没水;0表示有水
if (var == 1 && var3 > 300)
{
Serial.print(var);
Serial.println("缺水状态!");
digitalWrite(pumpin, LOW); //水泵打开
Serial.println("水泵状态-打开");
delay(5000);//浇水的时间是10秒
digitalWrite(pumpin, HIGH); //水泵关闭
Serial.println("水泵-关闭");
}
else
{
digitalWrite(pumpin, HIGH);
Serial.print(var);
Serial.println("不缺水状态!");
Serial.println("水泵-关闭");
}
delay(10000);//十秒钟扫描一次;
Serial.flush();
//delay(36000000);//10小时扫描一次
while(Serial.available() > 0)
Serial.read();
}
代码块是从别处搬来的稍微改动了一下,代码块还是需要用arduino IDE来编译,最终导出二进制文件,双击proteus的arduino UNO可以看到添加二进制文件的地方(.hex)
感谢观看!!!