一、樹莓派采集土壤濕度傳感器數(shù)據(jù)
生活中我們經(jīng)常會(huì)養(yǎng)一些花花草草,但是因?yàn)槠匠9ぷ髅β祷蛘咂渌虑橥鸭依锏倪@些花花草草給忘記了澆水。導(dǎo)致自己喜歡的花草就這樣枯萎了,又或者在農(nóng)業(yè)生產(chǎn)環(huán)境中對(duì)新生的培育發(fā)芽的種子對(duì)濕度要求比較高的情況。那么有沒有一款可以自動(dòng)澆水的的方案了。這里玩樹莓派的極客朋友可能會(huì)想到用土壤濕度傳感器來判斷什么時(shí)候澆水,沒錯(cuò)今天我們牛人技術(shù)就為大家講講用樹莓派采集土壤濕度的方法。
二、傳感器的選擇和連接
市面上有兩種原理的傳感器,分別是電阻式土壤濕度傳感器和電容式土壤濕度傳感器。這里我們建議大家使用電容式土壤濕度傳感器因?yàn)槌似渚雀咝┲?,電阻式土壤傳感器因?yàn)槠湓O(shè)計(jì)的原理會(huì)使得長期放入土壤里的傳感腳極容易被電解和腐蝕,從而大大降低了傳感器的使用壽命而且也影響精度。
一般電容式土壤濕度傳感器都是支持3.3伏特至5.5伏特的電壓,這個(gè)區(qū)間的電壓在樹莓派的GPIO接口上還是非常容易取得的,連接到樹莓派的5V電壓腳上之后接上ADC模擬信號(hào)轉(zhuǎn)數(shù)字信號(hào)轉(zhuǎn)換模塊板上。這里土壤傳感器模塊和樹莓派相連接的一方有四個(gè)針腳他們分別是AO模擬信號(hào)輸出,DO數(shù)字信號(hào)輸出,GND電源負(fù)極,VCC電源正極(采用3.3V或者5V電壓)這里我們把VCC連接到樹莓派的PIN2針腳上面,把GND連接到樹莓派的PIN6針腳上面,然后再把數(shù)字信號(hào)輸出腳DO連接到樹莓派的GPIO_GEN1的GPIO18端口上面。然后再把傳感器模塊的另一端兩個(gè)針腳連到土壤接觸插銷板上面,這樣土壤濕度傳感器的連接就基本完畢了。
三、PYTHON采集土壤傳感器代碼
代碼中通過獲取GPIO的電平高低來判斷土壤中的水分含量
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();
}
}
四、土壤濕度傳感器的使用(樹莓派3)
前幾天在淘寶上買了個(gè)長得這樣的土壤濕度傳感器:
結(jié)果搜了一圈,網(wǎng)上似乎還沒有Windows10的例子代碼,又只能自己爆了。這個(gè)傳感器有4個(gè)陣腳,意思分別是:
所以,我們把VCC接到樹莓派的DC3.3v輸出上,我用的是PIN01,GND接在任何一個(gè)接地端口上,我用的是PIN09,DO輸出接任何一個(gè)空閑的GPIO端口,我用的是21。如果不清楚樹莓派端口布局的朋友可以參考這張圖:
連線完成就像是這樣:
電源連通之后,電源燈會(huì)亮起:
調(diào)節(jié)傳感器上的旋鈕(藍(lán)色的菊花),這個(gè)是靈敏度的校準(zhǔn),也是個(gè)閾值,直到在干燥空氣中不讓DO-LED亮起。
倒一杯水,或者沒有水的話,舔一下傳感器的觸角,DO-LED應(yīng)該會(huì)亮起,這時(shí)候就校準(zhǔn)好了。然后就能爆代碼了!
這個(gè)傳感器在干燥時(shí)候輸出的是高電平,遇到水輸出低電平。根據(jù)這個(gè)原理,把代碼爆成這樣:
注意不要用這個(gè)事件:
這個(gè)會(huì)重復(fù)輸出好多次的。
運(yùn)行結(jié)果