植物澆水是許多人初學Arduino時會選擇的第一個實用的專題。這個專題的有幾個重點,先從土壤濕度感測器去偵測土壤的濕度,如果太乾,就透過繼電器,啟動抽手馬達澆水。
我們提供的套件裡,還配有一個電源板和9V的外接電源,這樣可以讓接線變得簡單,還能利用外部電源供電給UNO板和抽手馬達。
購買Arduino植物澆水套件:
https://www.jmaker.com.tw/products/watering
相對於繼電器來說,土壤濕度感測器的操作很簡單,它可以選擇數位輸出或是類比輸出。如果選擇數位輸出那UNO板就要接DO腳,乾濕的分界值就是透過轉接板上的十字旋鈕去控制。
若是用類比輸出,接的是AO腳,會比較靈活,你會得到0~1023之間的值,可以從程式中去判斷濕或乾。這個例子我們是用類比輸出的方式。
土壤濕度感測器的接線:
AO >> A0
VCC >> 3.3V
GND >> GND
再來就是繼電器了,這次用的是高電平版本,至於詳細用法,如果還不熟悉的朋友,可以參考我們專文的介紹。
GND >> GND
VCC >> 5V
S >> PIN7
繼電器(Relay)的使用:
https://blog.jmaker.com.tw/arduino-relay/
另外還有一個主角:馬達。它就只有兩條線:
正極 >> 繼電器上的NO
負極 >> 電源板上的GND
我們也介紹一下電源板的接法:
馬達和UNO板的GND >> 都接到電源板上的GND
繼電器COM >> 3.3V
UNO板的VIN >> 3.3V
DC座 >> 9V電源 (一定要接!)
以下是詳細的接線圖:
再來就是寫程式了,程式很簡單,就是偵測土壤的濕度,濕度的數值可以在監控視窗看到,可自行調整臨界值的百分比。然後再判斷是不是要啟動馬達供水;如果需要供水,就啟動一定的時間,然後停止。
/*
* 本程式為Arduino植物澆水的範例程式,由傑森創工提供
* 購買套件:https://www.jmaker.com.tw/products/watering
*
* 粉絲團:https://www.facebook.com/jasonshow
* 傑森創工購物網:https://www.jmaker.com.tw/
* 傑森創工部落格:https://blog.jmaker.com.tw/
*/
void setup() {
pinMode(7,OUTPUT);
Serial.println(moisture);
}
void loop() {
int moisturePin = analogRead(A0); //從A0讀取土壤濕度的數值
int moisture = ( 100 - ( (moisturePin / 1023.00) * 100 ) ); //把讀到的數值換算成百分比
Serial.println(moisture);
if (moisture < 40) { // 如果低於某個百分比,就讓馬達運作。但這個數值是依你的植裁來決定的,請自行修改。
digitalWrite(7, HIGH); //啟動馬達
delay(2000); // 抽水的時間,這個也自行決定。
}
else {
digitalWrite(7, LOW); // 關閉馬達
delay(60000); // 要進行下次偵測濕度前,停留多久,這個也可以自行決定。
}
}