介紹
土壤濕度傳感器
土壤水分基本上是土壤中存在的水分含量。這可以使用土壤濕度傳感器進行測量,該傳感器由兩個充當探針的導電探針組成。它可以根據兩個導電板之間的電阻變化來測量土壤中的水分含量。
兩個導電板之間的電阻與土壤中存在的水分含量成反比變化。
有關土壤濕度傳感器及其使用方法的更多信息,請參閱傳感器和模塊部分中的主題土壤濕度傳感器。
接口圖
土壤濕度傳感器與 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 IDE和NodeMCU 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 土壤水分的串行監視器輸出窗口
現在讓我們使用 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 串行監視器輸出窗口
資料來源:https://www.electronicwings.com/nodemcu/soil-moisture-sensor-interfacing-with-nodemcu
沒有留言:
張貼留言