a片在线观看免费看视频_欧美婬片在线a_同性男男无遮挡无码视频_久久99狠狠色精品一区_《性妲己》电影在线观看_久久久99婷婷久久久久久_亚洲精品久久久久58_激情在线成人福利小电影_色婷婷久久综合五月激情网

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 技術方案 >工業控制 > 基于 MT05S 的土壤濕度傳感(接線圖+演示文件+Arduino和樹莓派源碼)

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

來源: 電路城
2021-11-22
類別:工業控制
eye 6
文章創建人 拍明

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

一、系統概述
本方案基于MT05S 1-Wire土壤濕度傳感器,通過Arduino和樹莓派實現對土壤濕度、土壤溫度及電導率(EC)的實時測量與數據采集,將傳感器探頭直接插入土壤中,借助1-Wire總線協議將測得的模擬和值轉換數據傳輸至主控板,然后在串口終端或圖形界面上顯示,并可進一步將數據上傳至云平臺或本地數據庫進行存儲與分析。由于MT05S采用一體化封裝設計,具備IP68防護等級,可長期埋入土壤不受損,同時功耗極低(待機電流最大30μA,測量電流僅15mA/100ms),適合對盆栽、小面積苗圃以及大規模溫室等場景的土壤環境監測,兼具高穩定性與高精度,可在-40℃~85℃的溫度范圍內正常工作,充分滿足農業種植、智能灌溉、環境監測等應用需求 。該方案主要包含傳感器模塊、Arduino主控模塊、樹莓派主控模塊、輔助電路及連接線纜等硬件部分,以及Arduino C/C++開發環境和Python開發環境下的示例源碼文件。以下內容將依次介紹優選元器件的選型理由與功能作用、詳細接線方式、Arduino端與樹莓派端的軟件實現及演示文件說明,旨在為推動“智能農業+物聯網”應用落地提供完整參考。

image.png

二、優選元器件型號與選用理由
本節列出實現MT05S土壤濕度傳感系統所需的各類核心元器件,包括傳感器本體、主控板、電源模塊、上拉電阻、連線與輔助配件,并對其型號、作用、優勢與選用理由進行詳細說明,為后續硬件設計與采購提供參考依據。

  1. 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的測量電纜可靈活拓展測量范圍。

  2. 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連接進行調試,適合示范與小規模部署。

  3. 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. 4.7kΩ 1/4W 上拉電阻

    • 型號/編號:YAGEO 4.7kΩ ±5% 貼片或插件電阻。

    • 功能/作用:為1-Wire總線提供必要的上拉電平支持,使單總線設備(MT05S)在Idle(空閑)狀態下保持高電平,通過開漏或集電極/漏極輸出實現數據通信;在單總線通信過程中,保證時序與信號完整性。

    • 選用理由:4.7kΩ為常見的1-Wire總線標準上拉阻值,既能保證通信速度與穩定性,又能在低功耗模式下減少待機泄漏電流;1/4W功率足以應對5V電平環境;貼片或插件封裝方便在面包板或PCB設計中使用。

  5. 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板的備用供電。

  6. 面包板及杜邦線(公對母/公對公)

    • 型號/編號:MB-102透明大號面包板、20cm杜邦線若干。

    • 功能/作用:用于原型搭建階段將MT05S、Arduino、上拉電阻等模塊進行臨時電路連接,方便快速組裝與調試;杜邦線可將各引腳對應連接至面包板或Arduino GPIO口。

    • 選用理由:面包板無需焊接,可任意組合跳線;杜邦線常見、易采購;適合實驗室或教學場景;待后期完成原型驗證后可定制PCB或接線更為緊湊可靠的方案。

  7. Micro USB 數據線

    • 型號/編號:USB A to Micro B 數據線。

    • 功能/作用:為Arduino Uno提供5V電源與程序下載功能,同時可作為串口通信通道;若使用Arduino IDE進行串口打印、調試,數據線必不可少。

    • 選用理由:Micro USB為Arduino Uno標準接口;通用性高、隨處可購;即插即用,配合Arduino IDE快速燒寫代碼與監控串口輸出。

  8. Micro SD 卡(16GB或以上)

    • 型號/編號:Sandisk 16GB Class10 Micro SD 卡。

    • 功能/作用:用在樹莓派系統啟動盤,預裝Raspbian或Raspberry Pi OS,用于存儲操作系統與Python示例程序,以及在本地存儲采集到的土壤數據日志。

    • 選用理由:較大的容量可保證操作系統與日志文件空間充足;Class10讀寫速度快,能滿足系統啟動與數據存儲需求;品牌卡更穩定、不易損壞。

  9. 可選擴展:OLED 0.96寸 I2C 顯示模塊

    • 型號/編號:SSD1306 0.96″ 128×64像素 I2C OLED。

    • 功能/作用:在Arduino或樹莓派端可用于本地實時顯示土壤濕度、溫度與電導率數值,無需串口監視器即可直觀查看;如在戶外安裝可省去額外電腦查看。

    • 選用理由:I2C接口僅需兩根引腳;128×64分辨率足以展示多行文本數據;功耗低、可視性好;適合小型信息顯示;也可后期用作系統調試輔助。

  10. 線材附件與防護殼

    • 型號/編號: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接線

  1. MT05S探頭直接插入待測土壤;

  2. 接頭板上對應標注VCC、GND、DQ(數據)端;

  3. 將VCC連接至Arduino Uno的5V,GND連接至Arduino Uno的GND,DQ連接至Arduino Uno數字口D2;

  4. 在D2與5V之間并聯一只4.7kΩ上拉電阻;

  5. 可選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+接線示意圖

  1. 在樹莓派/boot/config.txt啟用1-Wire總線(dtoverlay=w1-gpio,gpiopin=4,pullup=on);

  2. MT05S VCC → Raspberry Pi 3.3V(Pin1),MT05S GND → Raspberry Pi GND(Pin6);

  3. MT05S DATA → Raspberry Pi GPIO4(Pin7),并在此處并聯4.7kΩ上拉電阻至3.3V;

  4. 若需要OLED顯示,可利用I2C(GPIO2為SDA,GPIO3為SCL)接入SSD1306模塊。

四、Arduino端軟件實現與演示文件說明
本節圍繞Arduino Uno對MT05S進行讀寫及數據處理,提供完整示例代碼、庫引用說明與程序邏輯解讀,以便用戶快速運行并采集土壤參數數據。

4.1 開發環境與依賴庫

  • Arduino IDE版本:Arduino IDE 1.8.x或以上,Windows/Mac/Linux均適用。

  • 依賴庫

    1. OneWire庫(用于1-Wire總線通信,與MT05S兼容DS18B20協議),可通過Library Manager安裝。

    2. DallasTemperature庫(若僅需要溫度,可封裝溫度讀取,但MT05S數據包第三、四字節為土壤溫度高低位,此示例不使用DallasTemperature,此處使用OneWire自定義代碼讀?。?/span>

    3. 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讀數偏高,應結合濕度值與溫度值進行綜合分析;

  • 推薦在關鍵測量節點設置軟硬件濾波功能,例如在軟件端對測量值進行移動平均、低通濾波或中位數濾波,以減少偶發誤差;

七、演示文件與源碼匯總
以下為本次方案所包含的演示文件與源碼清單,用戶可直接下載后參考運行,并根據實際需要進行二次開發:

  1. MT05S_Arduino_Demo.ino:Arduino Uno示例代碼,用于讀取MT05S并打印至串口;

  2. MT05S_Arduino_OLED.ino:Arduino Uno示例代碼,集成SSD1306 OLED顯示,實現本地數據顯示;

  3. mt05s_read.py:Python腳本,用于Raspberry Pi實時讀取MT05S溫度、濕度與EC數據;

  4. mt05s_wiring.pdf:接線圖文檔,包含Arduino與樹莓派兩種接線示意圖;

  5. README.md:項目說明文檔,介紹各示例文件作用、運行環境與步驟;

  6. requirements.txt:Python依賴列表(本示例代碼僅依賴標準庫,無需額外安裝,可不包含該文件);

  7. 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)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

相關資訊

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告