基于 MT05S 的土壤濕度傳感(接線圖+演示文件+Arduino和樹莓派源碼)


原標題:基于 MT05S 的土壤濕度傳感(接線圖+演示文件+Arduino和樹莓派源碼)
一、系統概述
本方案基于MT05S 1-Wire土壤濕度傳感器,通過Arduino和樹莓派實現對土壤濕度、土壤溫度及電導率(EC)的實時測量與數據采集,將傳感器探頭直接插入土壤中,借助1-Wire總線協議將測得的模擬和值轉換數據傳輸至主控板,然后在串口終端或圖形界面上顯示,并可進一步將數據上傳至云平臺或本地數據庫進行存儲與分析。由于MT05S采用一體化封裝設計,具備IP68防護等級,可長期埋入土壤不受損,同時功耗極低(待機電流最大30μA,測量電流僅15mA/100ms),適合對盆栽、小面積苗圃以及大規模溫室等場景的土壤環境監測,兼具高穩定性與高精度,可在-40℃~85℃的溫度范圍內正常工作,充分滿足農業種植、智能灌溉、環境監測等應用需求 。該方案主要包含傳感器模塊、Arduino主控模塊、樹莓派主控模塊、輔助電路及連接線纜等硬件部分,以及Arduino C/C++開發環境和Python開發環境下的示例源碼文件。以下內容將依次介紹優選元器件的選型理由與功能作用、詳細接線方式、Arduino端與樹莓派端的軟件實現及演示文件說明,旨在為推動“智能農業+物聯網”應用落地提供完整參考。
二、優選元器件型號與選用理由
本節列出實現MT05S土壤濕度傳感系統所需的各類核心元器件,包括傳感器本體、主控板、電源模塊、上拉電阻、連線與輔助配件,并對其型號、作用、優勢與選用理由進行詳細說明,為后續硬件設計與采購提供參考依據。
MT05S-ABB005 1-Wire土壤濕度傳感器
型號/編號:MT05S-ABB005(含土壤濕度、土壤溫度與電導率測量功能,電源2.7~12V DC,5米長測量電纜)。
功能/作用:采用FDR(頻域反射)測量原理,實現土壤體積含水率(VWC)0%~100%測量,并可選配電導率測量,附帶DS18B20兼容的1-Wire協議接口,同時內置溫度測量功能,用戶可根據訂購選項選擇帶有或不帶電導率測量的版型。
選用理由:MT05S兼具土壤濕度、溫度及可選電導率三種測量參數,減少了多傳感器集成時的線路與編程復雜度;1-Wire總線僅需一根數據線即可與主控板通信,便于布線;超低待機功耗(最大30μA)、較高測量精度(0%~50%:±3%,50%~100%:±5%),且具備IP68防護等級,可直接埋入土壤中長期使用,耐酸堿腐蝕,適應農業與溫室應用場景需求;外置長達5m的測量電纜可靈活拓展測量范圍。
Arduino Uno R3開發板
型號/編號:Arduino Uno R3(ATmega328P主控,14路數字I/O口,6路ADC口,5V/16MHz工作頻率)。
功能/作用:作為傳感器與下位設備(PC或串口屏等)的橋梁,讀取MT05S傳感器1-Wire數據并解碼,將結果通過串口或網絡模塊上傳;可運行演示示例程序,支持即插即用;多路I/O可集成其他傳感器或執行器。
選用理由:Arduino Uno R3擁有成熟的社區與豐富的示例庫,兼容OneWire與DS18B20協議庫,易于與MT05S配合;板載穩壓器支持外接5V電源;成本低廉、學習曲線平緩;板上自帶USB轉串口模塊,可直接與PC連接進行調試,適合示范與小規模部署。
Raspberry Pi 3B+ 單板計算機
型號/編號:Raspberry Pi 3 Model B+(Arm Cortex-A53四核處理器,1GB內存,支持Wi-Fi與以太網)。
功能/作用:用于運行Python腳本,通過樹莓派的1-Wire接口(GPIO4)直接與MT05S通信,實時采集并處理土壤環境數據,可進一步進行圖形化展示、Web服務器部署或將數據發送至云平臺;可接入攝像頭、觸摸屏等進行人機交互擴展。
選用理由:樹莓派3B+具有較高計算資源與網絡功能,可承載輕量級數據庫或可視化界面;官方支持1-Wire總線,通過啟用GPIO4系統可原生掛載MT05S設備;豐富的Python庫簡化開發;適合后期拓展為邊緣計算節點,具備更強擴展能力。
4.7kΩ 1/4W 上拉電阻
型號/編號:YAGEO 4.7kΩ ±5% 貼片或插件電阻。
功能/作用:為1-Wire總線提供必要的上拉電平支持,使單總線設備(MT05S)在Idle(空閑)狀態下保持高電平,通過開漏或集電極/漏極輸出實現數據通信;在單總線通信過程中,保證時序與信號完整性。
選用理由:4.7kΩ為常見的1-Wire總線標準上拉阻值,既能保證通信速度與穩定性,又能在低功耗模式下減少待機泄漏電流;1/4W功率足以應對5V電平環境;貼片或插件封裝方便在面包板或PCB設計中使用。
5V 2A DC 穩壓電源模塊
型號/編號:LM2596S/AMS1117-5.0等基于DCDC或LDO穩壓模塊,輸入7V~12V DC,輸出5V 2A。
功能/作用:為Arduino Uno、MT05S供電,并可通過5V電源供給其他外設(如電源指示燈、串口屏、繼電器模塊等);如在樹莓派側也可使用5V 2.5A或3A電源適配器為樹莓派及MT05S提供穩定電壓。
選用理由:穩壓模塊體積小、成本低,易于集成到系統箱體中;LM2596S DCDC模塊效率高、發熱低;AMS1117-5.0線性穩壓器輸出噪聲小,可作為MT05S或Arduino板的備用供電。
面包板及杜邦線(公對母/公對公)
型號/編號:MB-102透明大號面包板、20cm杜邦線若干。
功能/作用:用于原型搭建階段將MT05S、Arduino、上拉電阻等模塊進行臨時電路連接,方便快速組裝與調試;杜邦線可將各引腳對應連接至面包板或Arduino GPIO口。
選用理由:面包板無需焊接,可任意組合跳線;杜邦線常見、易采購;適合實驗室或教學場景;待后期完成原型驗證后可定制PCB或接線更為緊湊可靠的方案。
Micro USB 數據線
型號/編號:USB A to Micro B 數據線。
功能/作用:為Arduino Uno提供5V電源與程序下載功能,同時可作為串口通信通道;若使用Arduino IDE進行串口打印、調試,數據線必不可少。
選用理由:Micro USB為Arduino Uno標準接口;通用性高、隨處可購;即插即用,配合Arduino IDE快速燒寫代碼與監控串口輸出。
Micro SD 卡(16GB或以上)
型號/編號:Sandisk 16GB Class10 Micro SD 卡。
功能/作用:用在樹莓派系統啟動盤,預裝Raspbian或Raspberry Pi OS,用于存儲操作系統與Python示例程序,以及在本地存儲采集到的土壤數據日志。
選用理由:較大的容量可保證操作系統與日志文件空間充足;Class10讀寫速度快,能滿足系統啟動與數據存儲需求;品牌卡更穩定、不易損壞。
可選擴展:OLED 0.96寸 I2C 顯示模塊
型號/編號:SSD1306 0.96″ 128×64像素 I2C OLED。
功能/作用:在Arduino或樹莓派端可用于本地實時顯示土壤濕度、溫度與電導率數值,無需串口監視器即可直觀查看;如在戶外安裝可省去額外電腦查看。
選用理由:I2C接口僅需兩根引腳;128×64分辨率足以展示多行文本數據;功耗低、可視性好;適合小型信息顯示;也可后期用作系統調試輔助。
線材附件與防護殼
型號/編號:PVC線套、熱縮管、電工膠帶、塑料殼體若干。
功能/作用:用于包裹電路,避免短路;保護MT05S與接線不受土壤腐蝕;同時可對整個原型進行一定程度的防水、防塵處理。
選用理由:現場環境復雜,土壤濕度高,必須對裸露引腳進行絕緣、密封;熱縮管能緊密包裹杜邦線連接處,防止接觸不良;選配塑料殼體可將Arduino與上拉電阻、電源模塊固定并提供一定防護。
三、硬件接線與接線圖說明
本節主要詳細闡述MT05S與Arduino、MT05S與樹莓派兩種主控板之間的硬件連接方式及電路邏輯,確保用戶能依據接線圖正確搭建系統。
3.1 MT05S與Arduino Uno的連接方式
MT05S采用1-Wire總線接口,與DS18B20兼容,只需單根數據線“DATA”連接至Arduino Uno的數字IO口,同時需要在該總線上加裝上拉電阻至5V,為保證通信穩定性,推薦使用4.7kΩ上拉電阻;MT05S還需要連接電源與地線,要求2.7V~12V直流供電,Arduino板輸出的5V可直接供給MT05S的VCC。具體接線如下:
MT05S 紅色線(VCC)→ Arduino Uno 5V 引腳
MT05S 黑色線(GND)→ Arduino Uno GND 引腳
MT05S 黃色線(DATA)→ Arduino Uno 數字引腳2(D2)(或其他可用數字I/O)
一端4.7kΩ上拉電阻 → Arduino Uno 5V,另一端 → Arduino Uno 數字引腳2(D2)
整套電路可在面包板上進行物理連接,如圖3-1所示。示意圖中,MT05S探頭通過5米長電纜連接接頭板,該接頭板再通過杜邦線接入Arduino Uno,同時在數據線上并聯4.7kΩ電阻拉至5V。
MT05S與Arduino Uno接線
MT05S探頭直接插入待測土壤;
接頭板上對應標注VCC、GND、DQ(數據)端;
將VCC連接至Arduino Uno的5V,GND連接至Arduino Uno的GND,DQ連接至Arduino Uno數字口D2;
在D2與5V之間并聯一只4.7kΩ上拉電阻;
可選OLED模塊的I2C接口(SDA→A4,SCL→A5)連接至Arduino用于本地顯示。
3.2 MT05S與Raspberry Pi 3B+的連接方式
樹莓派的1-Wire總線通常連接至GPIO4(BCM編號),需要在/boot/config.txt文件中啟用1-Wire總線模塊(在文件末尾添加“dtoverlay=w1-gpio,gpiopin=4,pullup=on”),并重啟系統;MT05S的數據線直接連接至GPIO4,需在該線路并聯一個4.7kΩ上拉至3.3V電源;同時將MT05S VCC連接至樹莓派的3.3V或5V輸出(建議使用3.3V避免邏輯電平沖突),將MT05S GND連接至樹莓派GND。具體接線如下:
MT05S 紅色線(VCC)→ Raspberry Pi 3.3V 引腳(Pin1)
MT05S 黑色線(GND)→ Raspberry Pi GND 引腳(Pin6)
MT05S 黃色線(DATA)→ Raspberry Pi GPIO4 引腳(Pin7)
4.7kΩ上拉電阻 → 連接在GPIO4(DATA)與3.3V(Pin1)之間
如圖3-2所示,MT05S探頭的VCC連接至樹莓派的3.3V,因樹莓派的GPIO引腳為3.3V邏輯電平,使用3.3V供電可有效保證1-Wire信號電平匹配并保護GPIO口不被高壓損壞;若選擇5V供電,則需在數據線上加裝電平轉換電路,或者使用GPIO口的耐受5V保護措施(例如額外保護二極管或電平轉換板)。
圖3-2:MT05S與Raspberry Pi 3B+接線示意圖
在樹莓派/boot/config.txt啟用1-Wire總線(dtoverlay=w1-gpio,gpiopin=4,pullup=on);
MT05S VCC → Raspberry Pi 3.3V(Pin1),MT05S GND → Raspberry Pi GND(Pin6);
MT05S DATA → Raspberry Pi GPIO4(Pin7),并在此處并聯4.7kΩ上拉電阻至3.3V;
若需要OLED顯示,可利用I2C(GPIO2為SDA,GPIO3為SCL)接入SSD1306模塊。
四、Arduino端軟件實現與演示文件說明
本節圍繞Arduino Uno對MT05S進行讀寫及數據處理,提供完整示例代碼、庫引用說明與程序邏輯解讀,以便用戶快速運行并采集土壤參數數據。
4.1 開發環境與依賴庫
Arduino IDE版本:Arduino IDE 1.8.x或以上,Windows/Mac/Linux均適用。
依賴庫:
OneWire庫(用于1-Wire總線通信,與MT05S兼容DS18B20協議),可通過Library Manager安裝。
DallasTemperature庫(若僅需要溫度,可封裝溫度讀取,但MT05S數據包第三、四字節為土壤溫度高低位,此示例不使用DallasTemperature,此處使用OneWire自定義代碼讀?。?/span>
Adafruit_SSD1306與Adafruit_GFX(若使用SSD1306 OLED顯示模塊實現本地顯示)。
在Arduino IDE中依次點擊“工具”→“庫管理”→搜索“OneWire”并安裝最新版;若需要SSD1306顯示,請搜索并安裝“Adafruit SSD1306”與“Adafruit GFX”庫。
4.2 示例代碼結構與功能
以下示例代碼基于OneWire庫實現MT05S的轉換指令、數據讀取、CRC校驗與數值解析,并將土壤溫度、濕度與電導率實時打印至串口監視器。代碼注釋詳盡,便于理解通信時序與寄存器含義。
#include <OneWire.h>
// 定義MT05S連接引腳
#define MT05S_PIN 2 // 將MT05S數據線連接至Arduino數字引腳2
OneWire oneWire(MT05S_PIN);
void setup() {
Serial.begin(9600); // 初始化串口,波特率9600
delay(1000);
Serial.println("------------ MT05S Soil Sensor Demo ------------");
}
void loop() {
byte scratchpad[9]; // 存放讀出的9字節數據
// 發送復位脈沖
if (!oneWire.reset()) {
Serial.println("No response from MT05S sensor. Check wiring!");
delay(1000);
return;
}
// 跳過ROM選擇(Skip ROM),直接對掛接在總線上唯一設備操作
oneWire.skip();
// 發送轉換溫度及濕度指令(0x44)
oneWire.write(0x44);
// 等待轉換完成,MT05S轉換周期最大100ms,此處輪詢DQ線狀態
while (oneWire.read_bit() == 0) {
delay(10);
}
// 再次發送復位脈沖以開始讀取Scratchpad
oneWire.reset();
oneWire.skip();
oneWire.write(0xBE); // Read Scratchpad指令
// 讀取9字節數據到scratchpad數組
for (int i = 0; i < 9; i++) {
scratchpad[i] = oneWire.read();
}
// 驗證CRC:計算前8字節CRC與第9字節比對
byte crcCalc = OneWire::crc8(scratchpad, 8);
if (crcCalc != scratchpad[8]) {
Serial.println("CRC ERROR! Data invalid.");
delay(1000);
return;
}
// 將多個字節拼接成有符號整數
int16_t tempRaw = (scratchpad[0] & 0xFF) | ((scratchpad[1] & 0xFF) << 8);
int16_t moistRaw = (scratchpad[2] & 0xFF) | ((scratchpad[3] & 0xFF) << 8);
int16_t ecRaw = (scratchpad[4] & 0xFF) | ((scratchpad[5] & 0xFF) << 8);
// 轉換為實際物理量
float temperature = tempRaw / 100.0; // 單位:℃,保留兩位小數
float moisture = moistRaw / 100.0; // 單位:%,保留兩位小數
float conductivity = ecRaw / 1000.0; // 單位:ms/cm,保留三位小數
// 串口打印
Serial.print("Temperature(C) = ");
Serial.print(temperature, 2);
Serial.print(" Moisture(%) = ");
Serial.print(moisture, 2);
Serial.print(" EC(ms/cm) = ");
Serial.println(conductivity, 3);
delay(1000); // 每秒鐘讀取一次
}
代碼說明:
OneWire oneWire(MT05S_PIN);
:初始化OneWire對象,使其通過數字引腳2與MT05S通信;oneWire.reset(); oneWire.skip(); oneWire.write(0x44);
:向總線發送復位脈沖后,跳過ROM選擇,直接對唯一掛在總線上的MT05S發出“轉換指令”(0x44),啟動溫度、濕度與EC測量;oneWire.read_bit()
:讀取數據線電平,通過輪詢等待MT05S轉換完成;oneWire.write(0xBE)
:START讀Scratchpad命令,讀取MT05S寄存器中的9字節數據;使用
OneWire::crc8()
函數對前8字節進行CRC8校驗,與第9字節對比,保障數據完整性;利用
makeWord
或位拼接方式將高低字節組合成16位整數,并根據MT05S數據手冊說明分別除以100.0或1000.0還原為含物理意義的數值;通過串口打印溫度、濕度與電導率,便于在“串口監視器”窗口中實時查看測量結果。
4.3 演示文件說明
MT05S_Arduino_Demo.ino:上述示例代碼文件,可直接在Arduino IDE中打開并上傳;
MT05S_Arduino_OLED.ino(可選):在MT05S_Arduino_Demo基礎上集成SSD1306 OLED顯示,將測量結果以文本形式在0.96″ OLED屏上實時顯示;需要在代碼開頭添加對SSD1306與GFX庫的引用,示例如下:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(9600);
// 初始化OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.println("MT05S Soil Sensor");
display.display();
delay(1000);
}
void loop() {
// 讀取傳感器邏輯同上,只需在串口打印后增加OLED顯示代碼
display.clearDisplay();
display.setCursor(0, 0);
display.print("T: ");
display.print(temperature, 2);
display.println(" C");
display.print("M: ");
display.print(moisture, 2);
display.println(" %");
display.print("EC: ");
display.print(conductivity, 3);
display.println(" mS/cm");
display.display();
delay(1000);
}該文件可在Arduino IDE中編譯,并在OLED模塊與MT05S模塊同時連接的情況下運行,實現本地數據顯示,免除串口監視器查看步驟;顯示效果為三行數據顯示:溫度、濕度與電導率。
4.4 注意事項與調試建議
上拉電阻應與MT05S數據線共用,一端連接至MT05S數據線(DQ),另一端連接至Arduino 5V,以保證1-Wire總線處于空閑時保持高電平;若上拉電阻值過大可能導致信號上升緩慢,影響通信穩定性;若過小則會加大靜態功耗,一般采用4.7kΩ最為合適;
在不同Arduino板上,若數字引腳使用了PWM或占用其他外設,需要在代碼中修改
MT05S_PIN
為對應引腳,并在連接時確保不與其他模塊沖突;若在測量過程中發現讀數異?;駽RC錯誤,應首先檢查物理接線是否牢固、杜邦線是否接觸不良;其次可調整數據線引腳上的上拉電阻數值,或者縮短線路長度以減少電容負載;
MT05S探頭若長期插入土壤會被泥土附著,建議定期拔出清洗探頭表面以保持測量精度;若土壤中鹽分濃度較高,可能對電導率測量造成影響,此時可在軟件層面加入溫度補償或數據濾波。
五、樹莓派端軟件實現與演示文件說明
本節針對Raspberry Pi 3B+系統環境進行設置,講解如何在Raspbian(現稱Raspberry Pi OS)系統中啟用1-Wire總線驅動、讀取MT05S數據,并提供Python示例腳本以便快速運行。
5.1 系統環境準備
操作系統:建議使用Raspberry Pi OS(32-bit)最新版本,可從樹莓派官網下載映像并燒錄至Micro SD卡中;
網絡連接:將樹莓派通過網線或Wi-Fi接入互聯網,以便下載操作系統更新與所需Python庫;
SSH/桌面:可選擇在本地連接顯示器、鍵盤鼠標進行調試,或在另一臺PC通過SSH終端遠程登錄;
5.2 啟用1-Wire總線驅動
在樹莓派啟動后,打開終端并執行以下命令編輯/boot/config.txt
文件:
sudo nano /boot/config.txt
在文件末尾添加一行:
dtoverlay=w1-gpio,gpiopin=4,pullup=on
該配置表示啟用GPIO4作為1-Wire總線引腳,并開啟內部上拉電阻(若使用外部4.7kΩ上拉可將pullup
設置為off
或直接刪除此參數);保存并退出nano后,執行以下命令使更改生效:
sudo reboot
重啟后,檢查/sys/bus/w1/devices/
目錄即可看到以28-
開頭的設備文件夾,該編號即為MT05S的ROM Code。例如:28-060504030201
。
5.3 Python示例腳本
在終端中創建一個Python腳本用于讀取MT05S數據并打印,以下示例代碼可保存為mt05s_read.py
:
#!/usr/bin/python3
import time
# 請根據實際在/sys/bus/w1/devices/下的設備編號修改ROMCODE
ROMCODE = '28-060504030201'
device_file = '/sys/bus/w1/devices/' + ROMCODE + '/w1_slave'
def read_raw():
"""
讀取設備文件的原始內容,共兩行
"""
with open(device_file, 'r') as f:
lines = f.readlines()
return lines
def read_mt05s():
"""
解析MT05S數據,返回溫度、濕度、電導率三元組
"""
lines = read_raw()
# 檢查第一行末尾是否包含"YES"以保證數據合法
while lines[0].strip()[-3:] != 'YES':
print("CRC check failed or incorrect data, retrying...")
time.sleep(0.2)
lines = read_raw()
# 第二行中包含3個至少6個16進制數值,分別對應溫度、濕度、EC
parts = lines[1].strip().split(' ')
# 溫度高位與低位
temp_hi = int(parts[0], 16)
temp_lo = int(parts[1], 16)
temp_raw = temp_hi * 256 + temp_lo
# 濕度高位與低位
moist_hi = int(parts[2], 16)
moist_lo = int(parts[3], 16)
moist_raw = moist_hi * 256 + moist_lo
# 電導率高位與低位
ec_hi = int(parts[4], 16)
ec_lo = int(parts[5], 16)
ec_raw = ec_hi * 256 + ec_lo
# 轉換為物理量
temperature = temp_raw / 100.0 # 單位:℃
moisture = moist_raw / 100.0 # 單位:%
conductivity = ec_raw / 1000.0 # 單位:ms/cm
return temperature, moisture, conductivity
if __name__ == "__main__":
print("------- MT05S Soil Sensor Reading Demo -------")
print("ROM Code = {}".format(ROMCODE))
print("---------------------------------------------")
while True:
try:
t, m, e = read_mt05s()
print("Temperature(C) = {:.2f} | Moisture(%) = {:.2f} |
EC(ms/cm) = {:.3f}".format(t, m, e))
except FileNotFoundError:
print("Device file not found. Check ROMCODE or wiring!")
except Exception as ex:
print("Error reading MT05S:", ex)
time.sleep(1)
腳本說明:
將
ROMCODE
替換為實際設備目錄名稱,可通過命令ls /sys/bus/w1/devices/
獲?。?/span>read_raw()
函數負責打開并讀取MT05S對應的w1_slave設備文件,共返回兩行文本,第一行末尾的“YES”/“NO”表示CRC校驗結果;若不為“YES”,則循環等待并重試;第二行按空格分隔后,前三對字節分別為溫度、濕度與電導率的高低八位,使用16進制轉換后組合成整數,最后通過除以100.0或1000.0轉化為實際工程物理量;
在主循環中,捕獲讀取過程中可能出現的
FileNotFoundError
與其他異常,提示用戶檢查接線或ROMCODE;
將腳本保存至樹莓派,并賦予可執行權限:
chmod +x mt05s_read.py
然后運行:
sudo ./mt05s_read.py
即可在終端中每秒輸出一次MT05S測量的溫度、濕度與電導率數值。
5.4 演示文件說明
mt05s_read.py:上述Python示例腳本,實現MT05S讀數解碼與打??;
mt05s_wiring.pdf:接線說明PDF,可包含文字與箭頭示意圖,建議將MT05S VCC/GND/DATA與Raspberry Pi對應引腳連接示意畫出;
requirements.txt(可選):包含Python環境依賴包(由于示例僅使用標準庫,無額外依賴,可忽略);
README.md:對項目進行簡要說明,包括在項目根目錄進行的操作步驟、注意事項、ROMCODE查找方法等;
以上文件可打包成.zip
或.tar.gz
格式分發,用戶僅需復制至樹莓派后解壓,并根據README提示運行即可。若需要在系統啟動時自動運行腳本,可將運行命令插入/etc/rc.local
或創建systemd
服務。
六、測試與校準建議
在實際部署中,為保證MT05S的測量精度與穩定性,需對傳感器進行初步測試與環境校準,以適應不同土壤類型與溫度環境的差異。
6.1 出廠測試驗證
將MT05S探頭懸空置于空氣中,讀數應接近0%濕度,且溫度應接近環境溫度;
將探頭插入已知含水量的土壤樣本(可使用標準土壤濕度杯測法獲取真實體積含水率),記錄輸出值并與理論值對比,判斷傳感器誤差;
若需要測量電導率功能,可將探頭放入已知電導率溶液(如50 μS/cm、1000 μS/cm標準溶液)中,驗證EC讀數準確性;
6.2 現場校準方法
溫度校準:可在0℃冰水混合物與25℃室溫水中分別測量MT05S溫度讀數,記錄實際溫度與輸出溫度的偏差,如存在系統性誤差可在軟件端做偏移修正;
濕度校準:選取若干不同比例(如5%、15%、25%~35%)的土壤樣本,將其烘干后按重量補加一定質量的水,保證土壤達到預期體積含水率,用MT05S測量并對比理論值,擬合線性或曲線回歸系數,用于軟件端換算;
電導率校準:在常見農業土壤肥料環境下,土壤電導率會受到養分含量與土壤溫度影響,建議用戶自行使用標準KCl溶液做多點校準,獲取對應EC讀數;軟件可根據溫度值使用內置溫度補償公式對EC進行校準;
6.3 注意事項
MT05S探頭上的絕緣層需保持清潔,若長時間埋土,泥土黏附會導致導電性能異常,可定期用干凈水沖洗或酒精擦拭探針;
在不同土壤類型(沙土、壤土、黏土等)測量時,土壤顆粒結構與電導率特性存在差異,校準曲線應針對實際現場土壤進行多點采樣;
電導率與濕度并不等價,若土壤含鹽量高可導致EC讀數偏高,應結合濕度值與溫度值進行綜合分析;
推薦在關鍵測量節點設置軟硬件濾波功能,例如在軟件端對測量值進行移動平均、低通濾波或中位數濾波,以減少偶發誤差;
七、演示文件與源碼匯總
以下為本次方案所包含的演示文件與源碼清單,用戶可直接下載后參考運行,并根據實際需要進行二次開發:
MT05S_Arduino_Demo.ino:Arduino Uno示例代碼,用于讀取MT05S并打印至串口;
MT05S_Arduino_OLED.ino:Arduino Uno示例代碼,集成SSD1306 OLED顯示,實現本地數據顯示;
mt05s_read.py:Python腳本,用于Raspberry Pi實時讀取MT05S溫度、濕度與EC數據;
mt05s_wiring.pdf:接線圖文檔,包含Arduino與樹莓派兩種接線示意圖;
README.md:項目說明文檔,介紹各示例文件作用、運行環境與步驟;
requirements.txt:Python依賴列表(本示例代碼僅依賴標準庫,無需額外安裝,可不包含該文件);
MT05S_User_Manual.pdf:來自MT05S生產商官方的用戶手冊(包括寄存器說明、命令時序、出廠校準報告等),可作為參考文檔;
上述文件可統一打包發布或托管至GitHub、GitLab等代碼倉庫,便于團隊協作與后續維護。
八、擴展應用與系統優化
除基礎數據采集功能外,用戶還可根據需求對系統進行進一步擴展與優化,以提升系統的實用性與智能化水平。以下列出若干可選擴展方向,供讀者參考:
8.1 引入無線傳輸模塊,實現遠程監測
LoRa無線模塊:可選RAKWireless RAK811、SX1278或MT05S兼容的LoRa外設,將Arduino或樹莓派側的采集數據通過LoRa網絡發送到中心網關,實現遠距離無線覆蓋;
Wi-Fi模塊:對于具有Wi-Fi信號覆蓋的場景,可在Arduino側選用ESP8266、ESP32等開發板,將MT05S數據通過MQTT或HTTP協議推送至云平臺;在Raspberry Pi側可直接使用內置Wi-Fi,運行Python腳本時將數據上傳至數據庫或Web服務器。
8.2 本地Web服務器與圖形化界面
在Raspberry Pi上安裝輕量級Web服務器(如Flask、Django或Node.js),開發簡單Web頁面,將MT05S測量值以曲線或表格形式呈現,并支持歷史數據查詢;
配置樹莓派攝像頭,將土壤區域環境情況實時拍照,與濕度數據結合生成可視化報告;
8.3 數據庫與遠程存儲
將MT05S數據存儲至SQLite、MySQL或InfluxDB,可以方便后續數據分析與可視化;樹莓派端可編寫Python腳本周期性讀取并寫入數據庫,或者通過Python定時任務(cron)實現自動化;
若部署環境具備公網或VPN,可搭建Node-RED、ThingSpeak、AWS IoT等云端服務,將數據實時上報,實現在線監測與預警推送;
8.4 多路傳感與數據融合
在相同1-Wire總線上若需多個MT05S測量不同位置的土壤濕度,可將多只MT05S并聯至同一數據線,利用其唯一的ROM Code區別不同設備,并在軟件中循環查詢;
可結合其他傳感器(如DS18B20溫度傳感器、DHT22環境溫濕度傳感器、光照傳感、CO2傳感、PH電極等),實現對環境參數的多維度采集與分析;
通過樹莓派或單片機側算法將不同傳感器數據進行關聯,如在土壤溫度過低時推送加熱或防凍預警;
8.5 低功耗優化與現場供電
若系統需長時間在野外或無電源區域運行,可采用鋰電池+太陽能板的組合為Arduino或樹莓派供電,并在程序中采用深度睡眠或間隔采樣策略降低功耗;
MT05S本身待機電流極低,結合低功耗主控板(如ESP32-Low Power或STM32L系列)可進一步延長續航時間;在節點與網關間使用LoRa通信,減少Wi-Fi或GPRS模塊的高功耗;
8.6 系統穩定性與防護
在土壤環境酷熱或嚴寒的地區,可為MT05S探頭配備防護套(例如聚四氟乙烯涂層或硅膠薄膜)以防止長時間暴露造成傳感失準;
在移動設備或震動頻繁場所,需對電路進行防震設計,選用抗拉扯杜邦線或屏蔽線纜,并給電子元器件做好固定;
建議在電源輸入端加入TVS二極管或保險絲,對電源突波與靜電進行保護,避免在雷雨季節或沙塵天氣損壞設備。
九、總結
本方案圍繞MT05S 1-Wire土壤濕度傳感器,集成了Arduino Uno與Raspberry Pi 3B+兩種主控方式,詳細說明了優選元器件型號、作用、選用理由以及功能實現,涵蓋硬件接線、Arduino示例代碼、樹莓派Python腳本、演示文件說明與測試校準建議,滿足了用戶對“基于MT05S的土壤濕度傳感(接線圖+演示文件+Arduino和樹莓派源碼)”的需求。本方案采用模塊化設計,留有豐富的擴展接口與升級空間,便于在“智能農業+物聯網”場景中根據實際需求進行功能拓展與性能優化。通過本文,用戶可快速完成土壤參數采集系統的原型搭建,并在后續通過數據存儲、云平臺對接與智能算法實現精準灌溉、環境監控與決策支持,最大化發揮MT05S高精度、低功耗與易集成的優勢,為智慧農業與環境監測應用提供參考與借鑒。
責任編輯:David
【免責聲明】
1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。
2、本文的引用僅供讀者交流學習使用,不涉及商業目的。
3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。
4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。
拍明芯城擁有對此聲明的最終解釋權。