一、樹(shù)莓派采集土壤濕度傳感器數(shù)據(jù)
生活中我們經(jīng)常會(huì)養(yǎng)一些花花草草,但是因?yàn)槠匠9ぷ髅β祷蛘咂渌虑橥鸭依锏倪@些花花草草給忘記了澆水。導(dǎo)致自己喜歡的花草就這樣枯萎了,又或者在農(nóng)業(yè)生產(chǎn)環(huán)境中對(duì)新生的培育發(fā)芽的種子對(duì)濕度要求比較高的情況。那么有沒(méi)有一款可以自動(dòng)澆水的的方案了。這里玩樹(shù)莓派的極客朋友可能會(huì)想到用土壤濕度傳感器來(lái)判斷什么時(shí)候澆水,沒(méi)錯(cuò)今天我們牛人技術(shù)就為大家講講用樹(shù)莓派采集土壤濕度的方法。
二、傳感器的選擇和連接
市面上有兩種原理的傳感器,分別是電阻式土壤濕度傳感器和電容式土壤濕度傳感器。這里我們建議大家使用電容式土壤濕度傳感器因?yàn)槌似渚雀咝┲猓娮枋酵寥纻鞲衅饕驗(yàn)槠湓O(shè)計(jì)的原理會(huì)使得長(zhǎng)期放入土壤里的傳感腳極容易被電解和腐蝕,從而大大降低了傳感器的使用壽命而且也影響精度。
一般電容式土壤濕度傳感器都是支持3.3伏特至5.5伏特的電壓,這個(gè)區(qū)間的電壓在樹(shù)莓派的GPIO接口上還是非常容易取得的,連接到樹(shù)莓派的5V電壓腳上之后接上ADC模擬信號(hào)轉(zhuǎn)數(shù)字信號(hào)轉(zhuǎn)換模塊板上。這里土壤傳感器模塊和樹(shù)莓派相連接的一方有四個(gè)針腳他們分別是AO模擬信號(hào)輸出,DO數(shù)字信號(hào)輸出,GND電源負(fù)極,VCC電源正極(采用3.3V或者5V電壓)這里我們把VCC連接到樹(shù)莓派的PIN2針腳上面,把GND連接到樹(shù)莓派的PIN6針腳上面,然后再把數(shù)字信號(hào)輸出腳DO連接到樹(shù)莓派的GPIO_GEN1的GPIO18端口上面。然后再把傳感器模塊的另一端兩個(gè)針腳連到土壤接觸插銷板上面,這樣土壤濕度傳感器的連接就基本完畢了。
三、PYTHON采集土壤傳感器代碼
代碼中通過(guò)獲取GPIO的電平高低來(lái)判斷土壤中的水分含量
publicGpioPinMoistureSensorOutputPin{get;set;}
publicDispatcherTimerDispatcherTimer{get;set;}
publicMainPage(){
this.InitializeComponent();Loaded+=OnLoaded;
}
privateasyncvoidOnLoaded(objectsender,RoutedEventArgsroutedEventArgs){
varctl=awaitGpioController.GetDefaultAsync();MoistureSensorOutputPin=ctl?.OpenPin(21);
if(MoistureSensorOutputPin!=null){
MoistureSensorOutputPin.SetDriveMode(GpioPinDriveMode.Input);
DispatcherTimer=newDispatcherTimer(){
Interval=TimeSpan.FromSeconds(1)
};
DispatcherTimer.Tick+=(O_O,n_n)=》{
varpinv=MoistureSensorOutputPin.Read();
if(pinv==GpioPinValue.High){
Debug.WriteLine(“IsDry”);
}
else{
Debug.WriteLine(“OkWaterDetected!”);
}
};
DispatcherTimer.Start();
}
}