搜尋程式碼

ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件

ESP32 教學 24/55 - 量度土壤濕度用於灌溉 | SunFounder 嘅 ESP32 IoT 學習套件

喺呢個教學入面,我哋會學吓點樣用SunFounder ESP32配合土壤濕度感測器嚟量度土壤嘅濕度水平,咁樣可以幫手自動化灌溉系統。透過監測濕度水平,當濕度跌到某個閾值以下嘅時候,我哋可以觸發蜂鳴器,表示植物需要淋水。呢個項目對維持植物健康好有價值,而且可以擴展去做各種環境感測應用。(喺影片00:00位置)

soil_mositure_module

我哋會用一個電容式土壤濕度感測器,佢嘅運作原理係量度兩塊板之間嘅電容變化,而呢個變化會根據周圍介質嘅水分含量而改變。呢個感測器會提供一個模擬輸出,反映濕度水平,等我哋可以根據讀數嚟做決定。ESP32會讀取模擬輸出,如果土壤太乾嘅話,就會啟動蜂鳴器。

硬件講解

對於呢個項目,主要嘅組件包括SunFounder ESP32微控制器、電容式土壤濕度感測器同一個蜂鳴器。ESP32內置Wi-Fi同藍牙功能,可以做到遠程監測同控制。土壤濕度感測器由兩塊板組成,用嚟量度電容,而電容會根據土壤嘅濕度水平而改變。呢個電容變化會改變輸出電壓,ESP32透過模擬輸入嚟讀取。當濕度水平跌到設定嘅閾值以下嘅時候,蜂鳴器就會提醒我哋。

soil_mositure_module_schematic

數據手冊詳情

製造商 SunFounder
零件編號 土壤濕度感測器
工作電壓 3.3至5V
輸出類型 模擬
訊號範圍 0至3.3V
響應時間 快速
尺寸 大約60 x 20毫米
備註/變體 電容式感測器

 

  • 確保感測器唔好完全浸入水入面,以免損壞。
  • 如有需要,使用合適嘅上拉電阻嚟確保讀數穩定。
  • 針對你嘅特定土壤類型校準感測器,以獲得準確嘅濕度讀數。
  • 保持正確嘅接線連接,避免訊號損失。
  • 小心電源供應,避免過壓情況。

接線說明

ESP32-24-soild-moisture-wiring

要將土壤濕度感測器接駁到ESP32,首先將感測器嘅VCC引腳連接到ESP32上嘅3.3V引腳。然後,將感測器嘅GND引腳連接到ESP32上嘅一個GND引腳。土壤濕度感測器嘅模擬輸出引腳應該連接到ESP32上嘅模擬引腳35。至於蜂鳴器,將正極引腳連接到ESP32上嘅數碼引腳13,負極引腳連接到GND。確保所有連接都穩固,避免操作期間出現間歇性問題。

代碼示例同講解

下面係代碼嘅一個簡短摘錄,用嚟初始化串行通訊同讀取濕度感測器數值:

void setup() {
  // 以每秒115200位元初始化串行通訊:
  Serial.begin(115200);
}

呢段代碼設定咗串行通訊,等我哋可以喺串行監視器度睇到濕度感測器嘅讀數。

跟住,我哋有主循環,喺入面讀取感測器嘅模擬數值:

void loop() {
  // 讀取模擬數值
  int analogValue = analogRead(35);
  
  // 印出數值
  Serial.printf("Analog value = %d\n",analogValue);
  
  delay(300);  // 每次讀取之間延遲,令串行監視器讀取更清晰
}

喺呢個循環入面,代碼會持續從引腳35讀取模擬數值,並且每300毫秒印一次去串行監視器。咁樣我哋就可以實時監測濕度水平。

示範/預期效果

當濕度感測器放入乾燥土壤嘅時候,模擬數值會比較高,表示濕度低。相反,當感測器插入潮濕土壤嘅時候,數值會明顯下降。如果讀數跌到設定嘅閾值(例如2000)以下,連接喺引腳13嘅蜂鳴器就會啟動,表示植物需要淋水。要小心浮動輸入,同埋確保感測器唔好暴露喺超出建議範圍嘅水入面(喺影片02:30位置)。

影片時間戳

  • 00:00開始
  • 1:51項目介紹
  • 5:53接線講解
  • 7:23Arduino代碼講解
  • 9:09喺Arduino IDE度選擇ESP32板同COM端口
  • 10:47喺植物盆上嘅項目示範
  • 14:30當盆乾嘅時候開啟蜂鳴器

圖片

ESP32-24-soild-moisture-wiring
ESP32-24-soild-moisture-wiring
ESP32-24-soild-moisture-schematic
ESP32-24-soild-moisture-schematic
soil_mositure_module
soil_mositure_module
soil_mositure_module_schematic
soil_mositure_module_schematic
823-ESP32 Tutorial 24/55- Arduino code for soil moisture measurement
語言: C++
void setup() {
  // Initialize serial communication at 115200 bits per second:
  Serial.begin(115200);
}

void loop() {
  // Read the analog value
  int analogValue = analogRead(35);
  
  // Print out the values
  Serial.printf("Analog value = %d\n",analogValue);
  
  delay(300);  // delay between reads for clear read from serial monitor
}

資源與參考資料

文件📁

冇文件可用。