2022年8月23日 星期二

土壤濕度傳感器與 NodeMCU 的接口

 

介紹

土壤濕度

土壤濕度傳感器

土壤水分基本上是土壤中存在的水分含量。這可以使用土壤濕度傳感器進行測量,該傳感器由兩個充當探針的導電探針組成。它可以根據兩個導電板之間的電阻變化來測量土壤中的水分含量。

兩個導電板之間的電阻與土壤中存在的水分含量成反比變化。

有關土壤濕度傳感器及其使用方法的更多信息,請參閱傳感器和模塊部分中的主題土壤濕度傳感器

接口圖

土壤濕度傳感器與 NodeMCU 的接口

土壤濕度傳感器與 NodeMCU 的接口

例子

用百分比測量土壤水分。

 

在這裡,土壤濕度傳感器的模擬輸出使用 ADC 進行處理。以百分比表示的水分含量顯示在串行監視器上。

土壤濕度傳感器的輸出在 0 到 1023 的 ADC 值範圍內變化。這可以使用下面給出的公式以百分比形式表示為濕度值。

Analog Output = ADC Value / 1023

Moisture in percentage = 100 – (Analog output * 100)

對於零水分,我們得到 10 位 ADC 的最大值,即 1023。這反過來又給出了約 0% 的水分。

NodeMCU ADC 可用於測量來自土壤濕度傳感器的模擬電壓。要了解 NodeMCU 的 ADC,請參閱 NodeMCU ADC with ESPlorer IDENodeMCU ADC with Arduino IDE

我們可以用 Lua Script 或 C/C++ 語言為 NodeMCU Dev Kit 編寫代碼。我們使用 ESPlorer IDE 編寫 Lua 腳本,使用 Arduino IDE 編寫 C/C++ 代碼。要了解更多信息,請參閱 使用 ESPlorer IDE 開始使用 NodeMCU(對 NodeMCU 使用 Lua 腳本)和使用 Arduino IDE 開始使用 NodeMCU(對 NodeMCU 使用基於 C 語言的 Arduino 草圖)。

 

讓我們為 NodeMCU 編寫 Lua 腳本,以在其上使用 ADC 測量土壤水分。

土壤水分的 Lua 腳本

sensor_pin = 0;  --Connect Soil moisture analog sensor pin to A0 of NodeMCU

while true do
  local moisture_percentage = ( 100.00 - ( (adc.read(sensor_pin)/1023.00) * 100.00 ) )
  print(string.format("Soil Moisture(in Percentage) = %0.4g",moisture_percentage),"%")
  tmr.delay(100000);
end

ESPlorer 串行輸出窗口

ESPlorer 土壤水分的串行監視器輸出窗口

ESPlorer 串行輸出窗口

 

現在讓我們使用 Arduino IDE 為 NodeMCU 編寫一個土壤水分的程序

土壤水分的 Arduino 草圖

const int sensor_pin = A0;  /* Connect Soil moisture analog sensor pin to A0 of NodeMCU */

void setup() {
  Serial.begin(9600); /* Define baud rate for serial communication */
}

void loop() {
  float moisture_percentage;

  moisture_percentage = ( 100.00 - ( (analogRead(sensor_pin)/1023.00) * 100.00 ) );

  Serial.print("Soil Moisture(in Percentage) = ");
  Serial.print(moisture_percentage);
  Serial.println("%");

  delay(1000);
}

Arduino 串行輸出窗口

土壤水分的 Arduino 串行監視器輸出窗口

Arduino 串行輸出窗口

 


資料來源:https://www.electronicwings.com/nodemcu/soil-moisture-sensor-interfacing-with-nodemcu

沒有留言: