|
树莓派采集土壤湿度传感器数据
生活中我们经常会养一些花花草草,但是因为平常工作忙碌或者其他事情往往把家里的这些花花草草给忘记了浇水。导致自己喜欢的花草就这样枯萎了,又或者在农业生产环境中对新生的培育发芽的种子对湿度要求比较高的情况。 那么有没有一款可以自动浇水的的方案了。这里玩树莓派的极客朋友可能会想到用土壤湿度传感器来判断什么时候浇水,没错今天我们牛人技术就为大家讲讲用树莓派采集土壤湿度的方法。
【传感器的选择和连接】
市面上有两种原理的传感器,分别是电阻式土壤湿度传感器和电容式土壤湿度传感器。这里我们建议大家使用电容式土壤湿度传感器因为除了其精度高些之外,电阻式土壤传感器因为其设计的原理会使得长期放入土壤里的传感脚极容易被电解和腐蚀,从而大大降低了传感器的使用寿命而且也影响精度。
一般电容式土壤湿度传感器都是支持3.3伏特至5.5伏特的电压,这个区间的电压在树莓派的GPIO接口上还是非常容易取得的,连接到树莓派的5V电压脚上之后接上ADC模拟信号转数字信号转换模块板上。这里土壤传感器模块和树莓派相连接的一方有四个针脚他们分别是AO模拟信号输出,DO数字信号输出,GND电源负极,VCC电源正极(采用3.3V或者5V电压)这里我们把VCC连接到树莓派的PIN2针脚上面,把GND连接到树莓派的PIN6针脚上面,然后再把数字信号输出脚DO连接到树莓派的GPIO_GEN1的GPIO18端口上面。然后再把传感器模块的另一端两个针脚连到土壤接触插销板上面,这样土壤湿度传感器的连接就基本完毕了。
【PYTHON采集土壤传感器代码】
代码中通过获取GPIO的电平高低来判断土壤中的水分含量
public GpioPin MoistureSensorOutputPin { get; set; }
public DispatcherTimer DispatcherTimer { get; set; }
public MainPage(){
this.InitializeComponent();Loaded += OnLoaded;
}
private async void OnLoaded(object sender, RoutedEventArgs routedEventArgs){
var ctl = await GpioController.GetDefaultAsync();MoistureSensorOutputPin = ctl?.OpenPin(21);
if (MoistureSensorOutputPin != null){
MoistureSensorOutputPin.SetDriveMode(GpioPinDriveMode.Input);
DispatcherTimer = new DispatcherTimer(){
Interval = TimeSpan.FromSeconds(1)
};
DispatcherTimer.Tick += (O_O, n_n) =>{
var pinv = MoistureSensorOutputPin.Read();
if (pinv == GpioPinValue.High){
Debug.WriteLine("Is Dry");
}
else{
Debug.WriteLine("Ok Water Detected!");
}
};
DispatcherTimer.Start();
}
}
【总结】
最后选择一碰干土壤进行测试,在土壤干燥的情况下运行程序时在屏幕上显示土壤干燥。当倒入一瓶水的时候慢慢的看见电压数值变化最后在屏幕上显示土壤的湿度提高。