国产精品久久久久久亚洲影视,插我舔内射18免费视频,国产+精品+在线观看,国产精品18久久久久久麻辣,丰满少妇69激情啪啪无

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

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

來源: 電路城
2021-11-22
類別:工業(yè)控制
eye 6
文章創(chuàng)建人 拍明

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

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

image.png

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

  1. MT05S-ABB005 1-Wire土壤濕度傳感器

    • 型號/編號:MT05S-ABB005(含土壤濕度、土壤溫度與電導(dǎo)率測量功能,電源2.7~12V DC,5米長測量電纜)。

    • 功能/作用:采用FDR(頻域反射)測量原理,實現(xiàn)土壤體積含水率(VWC)0%~100%測量,并可選配電導(dǎo)率測量,附帶DS18B20兼容的1-Wire協(xié)議接口,同時內(nèi)置溫度測量功能,用戶可根據(jù)訂購選項選擇帶有或不帶電導(dǎo)率測量的版型。

    • 選用理由:MT05S兼具土壤濕度、溫度及可選電導(dǎo)率三種測量參數(shù),減少了多傳感器集成時的線路與編程復(fù)雜度;1-Wire總線僅需一根數(shù)據(jù)線即可與主控板通信,便于布線;超低待機功耗(最大30μA)、較高測量精度(0%~50%:±3%,50%~100%:±5%),且具備IP68防護等級,可直接埋入土壤中長期使用,耐酸堿腐蝕,適應(yīng)農(nóng)業(yè)與溫室應(yīng)用場景需求;外置長達(dá)5m的測量電纜可靈活拓展測量范圍。

  2. Arduino Uno R3開發(fā)板

    • 型號/編號:Arduino Uno R3(ATmega328P主控,14路數(shù)字I/O口,6路ADC口,5V/16MHz工作頻率)。

    • 功能/作用:作為傳感器與下位設(shè)備(PC或串口屏等)的橋梁,讀取MT05S傳感器1-Wire數(shù)據(jù)并解碼,將結(jié)果通過串口或網(wǎng)絡(luò)模塊上傳;可運行演示示例程序,支持即插即用;多路I/O可集成其他傳感器或執(zhí)行器。

    • 選用理由:Arduino Uno R3擁有成熟的社區(qū)與豐富的示例庫,兼容OneWire與DS18B20協(xié)議庫,易于與MT05S配合;板載穩(wěn)壓器支持外接5V電源;成本低廉、學(xué)習(xí)曲線平緩;板上自帶USB轉(zhuǎn)串口模塊,可直接與PC連接進行調(diào)試,適合示范與小規(guī)模部署。

  3. Raspberry Pi 3B+ 單板計算機

    • 型號/編號:Raspberry Pi 3 Model B+(Arm Cortex-A53四核處理器,1GB內(nèi)存,支持Wi-Fi與以太網(wǎng))。

    • 功能/作用:用于運行Python腳本,通過樹莓派的1-Wire接口(GPIO4)直接與MT05S通信,實時采集并處理土壤環(huán)境數(shù)據(jù),可進一步進行圖形化展示、Web服務(wù)器部署或?qū)?shù)據(jù)發(fā)送至云平臺;可接入攝像頭、觸摸屏等進行人機交互擴展。

    • 選用理由:樹莓派3B+具有較高計算資源與網(wǎng)絡(luò)功能,可承載輕量級數(shù)據(jù)庫或可視化界面;官方支持1-Wire總線,通過啟用GPIO4系統(tǒng)可原生掛載MT05S設(shè)備;豐富的Python庫簡化開發(fā);適合后期拓展為邊緣計算節(jié)點,具備更強擴展能力。

  4. 4.7kΩ 1/4W 上拉電阻

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

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

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

  5. 5V 2A DC 穩(wěn)壓電源模塊

    • 型號/編號:LM2596S/AMS1117-5.0等基于DCDC或LDO穩(wěn)壓模塊,輸入7V~12V DC,輸出5V 2A。

    • 功能/作用:為Arduino Uno、MT05S供電,并可通過5V電源供給其他外設(shè)(如電源指示燈、串口屏、繼電器模塊等);如在樹莓派側(cè)也可使用5V 2.5A或3A電源適配器為樹莓派及MT05S提供穩(wěn)定電壓。

    • 選用理由:穩(wěn)壓模塊體積小、成本低,易于集成到系統(tǒng)箱體中;LM2596S DCDC模塊效率高、發(fā)熱低;AMS1117-5.0線性穩(wěn)壓器輸出噪聲小,可作為MT05S或Arduino板的備用供電。

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

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

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

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

  7. Micro USB 數(shù)據(jù)線

    • 型號/編號:USB A to Micro B 數(shù)據(jù)線。

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

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

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

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

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

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

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

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

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

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

  10. 線材附件與防護殼

    • 型號/編號:PVC線套、熱縮管、電工膠帶、塑料殼體若干。

    • 功能/作用:用于包裹電路,避免短路;保護MT05S與接線不受土壤腐蝕;同時可對整個原型進行一定程度的防水、防塵處理。

    • 選用理由:現(xiàn)場環(huán)境復(fù)雜,土壤濕度高,必須對裸露引腳進行絕緣、密封;熱縮管能緊密包裹杜邦線連接處,防止接觸不良;選配塑料殼體可將Arduino與上拉電阻、電源模塊固定并提供一定防護。

三、硬件接線與接線圖說明
本節(jié)主要詳細(xì)闡述MT05S與Arduino、MT05S與樹莓派兩種主控板之間的硬件連接方式及電路邏輯,確保用戶能依據(jù)接線圖正確搭建系統(tǒng)。

3.1 MT05S與Arduino Uno的連接方式
MT05S采用1-Wire總線接口,與DS18B20兼容,只需單根數(shù)據(jù)線“DATA”連接至Arduino Uno的數(shù)字IO口,同時需要在該總線上加裝上拉電阻至5V,為保證通信穩(wěn)定性,推薦使用4.7kΩ上拉電阻;MT05S還需要連接電源與地線,要求2.7V~12V直流供電,Arduino板輸出的5V可直接供給MT05S的VCC。具體接線如下:

  • MT05S 紅色線(VCC)→ Arduino Uno 5V 引腳

  • MT05S 黑色線(GND)→ Arduino Uno GND 引腳

  • MT05S 黃色線(DATA)→ Arduino Uno 數(shù)字引腳2(D2)(或其他可用數(shù)字I/O)

  • 一端4.7kΩ上拉電阻 → Arduino Uno 5V,另一端 → Arduino Uno 數(shù)字引腳2(D2)

整套電路可在面包板上進行物理連接,如圖3-1所示。示意圖中,MT05S探頭通過5米長電纜連接接頭板,該接頭板再通過杜邦線接入Arduino Uno,同時在數(shù)據(jù)線上并聯(lián)4.7kΩ電阻拉至5V。

MT05S與Arduino Uno接線

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

  2. 接頭板上對應(yīng)標(biāo)注VCC、GND、DQ(數(shù)據(jù))端;

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

  4. 在D2與5V之間并聯(lián)一只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”),并重啟系統(tǒng);MT05S的數(shù)據(jù)線直接連接至GPIO4,需在該線路并聯(lián)一個4.7kΩ上拉至3.3V電源;同時將MT05S VCC連接至樹莓派的3.3V或5V輸出(建議使用3.3V避免邏輯電平?jīng)_突),將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供電,則需在數(shù)據(jù)線上加裝電平轉(zhuǎn)換電路,或者使用GPIO口的耐受5V保護措施(例如額外保護二極管或電平轉(zhuǎn)換板)。

圖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),并在此處并聯(lián)4.7kΩ上拉電阻至3.3V;

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

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

4.1 開發(fā)環(huán)境與依賴庫

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

  • 依賴庫

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

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

    3. Adafruit_SSD1306與Adafruit_GFX(若使用SSD1306 OLED顯示模塊實現(xiàn)本地顯示)。

在Arduino IDE中依次點擊“工具”→“庫管理”→搜索“OneWire”并安裝最新版;若需要SSD1306顯示,請搜索并安裝“Adafruit SSD1306”與“Adafruit GFX”庫。

4.2 示例代碼結(jié)構(gòu)與功能
以下示例代碼基于OneWire庫實現(xiàn)MT05S的轉(zhuǎn)換指令、數(shù)據(jù)讀取、CRC校驗與數(shù)值解析,并將土壤溫度、濕度與電導(dǎo)率實時打印至串口監(jiān)視器。代碼注釋詳盡,便于理解通信時序與寄存器含義。

#include <OneWire.h>

// 定義MT05S連接引腳
#define MT05S_PIN 2  // 將MT05S數(shù)據(jù)線連接至Arduino數(shù)字引腳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字節(jié)數(shù)據(jù)

 // 發(fā)送復(fù)位脈沖
 if (!oneWire.reset()) {
   Serial.println("No response from MT05S sensor. Check wiring!");
   delay(1000);
   return;
 }

 // 跳過ROM選擇(Skip ROM),直接對掛接在總線上唯一設(shè)備操作
 oneWire.skip();

 // 發(fā)送轉(zhuǎn)換溫度及濕度指令(0x44)
 oneWire.write(0x44);

 // 等待轉(zhuǎn)換完成,MT05S轉(zhuǎn)換周期最大100ms,此處輪詢DQ線狀態(tài)
 while (oneWire.read_bit() == 0) {
   delay(10);
 }

 // 再次發(fā)送復(fù)位脈沖以開始讀取Scratchpad
 oneWire.reset();
 oneWire.skip();
 oneWire.write(0xBE);  // Read Scratchpad指令

 // 讀取9字節(jié)數(shù)據(jù)到scratchpad數(shù)組
 for (int i = 0; i < 9; i++) {
   scratchpad[i] = oneWire.read();
 }

 // 驗證CRC:計算前8字節(jié)CRC與第9字節(jié)比對
 byte crcCalc = OneWire::crc8(scratchpad, 8);
 if (crcCalc != scratchpad[8]) {
   Serial.println("CRC ERROR! Data invalid.");
   delay(1000);
   return;
 }

 // 將多個字節(jié)拼接成有符號整數(shù)
 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);

 // 轉(zhuǎn)換為實際物理量
 float temperature = tempRaw / 100.0;    // 單位:℃,保留兩位小數(shù)
 float moisture = moistRaw / 100.0;      // 單位:%,保留兩位小數(shù)
 float conductivity = ecRaw / 1000.0;    // 單位:ms/cm,保留三位小數(shù)

 // 串口打印
 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對象,使其通過數(shù)字引腳2與MT05S通信;

  • oneWire.reset(); oneWire.skip(); oneWire.write(0x44);:向總線發(fā)送復(fù)位脈沖后,跳過ROM選擇,直接對唯一掛在總線上的MT05S發(fā)出“轉(zhuǎn)換指令”(0x44),啟動溫度、濕度與EC測量;

  • oneWire.read_bit():讀取數(shù)據(jù)線電平,通過輪詢等待MT05S轉(zhuǎn)換完成;

  • oneWire.write(0xBE):START讀Scratchpad命令,讀取MT05S寄存器中的9字節(jié)數(shù)據(jù);

  • 使用OneWire::crc8()函數(shù)對前8字節(jié)進行CRC8校驗,與第9字節(jié)對比,保障數(shù)據(jù)完整性;

  • 利用makeWord或位拼接方式將高低字節(jié)組合成16位整數(shù),并根據(jù)MT05S數(shù)據(jù)手冊說明分別除以100.0或1000.0還原為含物理意義的數(shù)值;

  • 通過串口打印溫度、濕度與電導(dǎo)率,便于在“串口監(jiān)視器”窗口中實時查看測量結(jié)果。

4.3 演示文件說明

  • MT05S_Arduino_Demo.ino:上述示例代碼文件,可直接在Arduino IDE中打開并上傳;

  • MT05S_Arduino_OLED.ino(可選):在MT05S_Arduino_Demo基礎(chǔ)上集成SSD1306 OLED顯示,將測量結(jié)果以文本形式在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模塊同時連接的情況下運行,實現(xiàn)本地數(shù)據(jù)顯示,免除串口監(jiān)視器查看步驟;顯示效果為三行數(shù)據(jù)顯示:溫度、濕度與電導(dǎo)率。

4.4 注意事項與調(diào)試建議

  • 上拉電阻應(yīng)與MT05S數(shù)據(jù)線共用,一端連接至MT05S數(shù)據(jù)線(DQ),另一端連接至Arduino 5V,以保證1-Wire總線處于空閑時保持高電平;若上拉電阻值過大可能導(dǎo)致信號上升緩慢,影響通信穩(wěn)定性;若過小則會加大靜態(tài)功耗,一般采用4.7kΩ最為合適;

  • 在不同Arduino板上,若數(shù)字引腳使用了PWM或占用其他外設(shè),需要在代碼中修改MT05S_PIN為對應(yīng)引腳,并在連接時確保不與其他模塊沖突;

  • 若在測量過程中發(fā)現(xiàn)讀數(shù)異常或CRC錯誤,應(yīng)首先檢查物理接線是否牢固、杜邦線是否接觸不良;其次可調(diào)整數(shù)據(jù)線引腳上的上拉電阻數(shù)值,或者縮短線路長度以減少電容負(fù)載;

  • MT05S探頭若長期插入土壤會被泥土附著,建議定期拔出清洗探頭表面以保持測量精度;若土壤中鹽分濃度較高,可能對電導(dǎo)率測量造成影響,此時可在軟件層面加入溫度補償或數(shù)據(jù)濾波。

五、樹莓派端軟件實現(xiàn)與演示文件說明
本節(jié)針對Raspberry Pi 3B+系統(tǒng)環(huán)境進行設(shè)置,講解如何在Raspbian(現(xiàn)稱Raspberry Pi OS)系統(tǒng)中啟用1-Wire總線驅(qū)動、讀取MT05S數(shù)據(jù),并提供Python示例腳本以便快速運行。

5.1 系統(tǒng)環(huán)境準(zhǔn)備

  • 操作系統(tǒng):建議使用Raspberry Pi OS(32-bit)最新版本,可從樹莓派官網(wǎng)下載映像并燒錄至Micro SD卡中;

  • 網(wǎng)絡(luò)連接:將樹莓派通過網(wǎng)線或Wi-Fi接入互聯(lián)網(wǎng),以便下載操作系統(tǒng)更新與所需Python庫;

  • SSH/桌面:可選擇在本地連接顯示器、鍵盤鼠標(biāo)進行調(diào)試,或在另一臺PC通過SSH終端遠(yuǎn)程登錄;

5.2 啟用1-Wire總線驅(qū)動
在樹莓派啟動后,打開終端并執(zhí)行以下命令編輯
/boot/config.txt文件:

sudo nano /boot/config.txt

在文件末尾添加一行:

dtoverlay=w1-gpio,gpiopin=4,pullup=on

該配置表示啟用GPIO4作為1-Wire總線引腳,并開啟內(nèi)部上拉電阻(若使用外部4.7kΩ上拉可將pullup設(shè)置為off或直接刪除此參數(shù));保存并退出nano后,執(zhí)行以下命令使更改生效:

sudo reboot

重啟后,檢查/sys/bus/w1/devices/目錄即可看到以28-開頭的設(shè)備文件夾,該編號即為MT05S的ROM Code。例如:28-060504030201 。

5.3 Python示例腳本
在終端中創(chuàng)建一個Python腳本用于讀取MT05S數(shù)據(jù)并打印,以下示例代碼可保存為
mt05s_read.py

#!/usr/bin/python3
import time

# 請根據(jù)實際在/sys/bus/w1/devices/下的設(shè)備編號修改ROMCODE
ROMCODE = '28-060504030201'
device_file = '/sys/bus/w1/devices/' + ROMCODE + '/w1_slave'

def read_raw():
   """
   讀取設(shè)備文件的原始內(nèi)容,共兩行
   """
   with open(device_file, 'r') as f:
       lines = f.readlines()
   return lines

def read_mt05s():
   """
   解析MT05S數(shù)據(jù),返回溫度、濕度、電導(dǎo)率三元組
   """
   lines = read_raw()
   # 檢查第一行末尾是否包含"YES"以保證數(shù)據(jù)合法
   while lines[0].strip()[-3:] != 'YES':
       print("CRC check failed or incorrect data, retrying...")
       time.sleep(0.2)
       lines = read_raw()

   # 第二行中包含3個至少6個16進制數(shù)值,分別對應(yīng)溫度、濕度、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
   # 電導(dǎo)率高位與低位
   ec_hi = int(parts[4], 16)
   ec_lo = int(parts[5], 16)
   ec_raw = ec_hi * 256 + ec_lo

   # 轉(zhuǎn)換為物理量
   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替換為實際設(shè)備目錄名稱,可通過命令ls /sys/bus/w1/devices/獲??;

  • read_raw()函數(shù)負(fù)責(zé)打開并讀取MT05S對應(yīng)的w1_slave設(shè)備文件,共返回兩行文本,第一行末尾的“YES”/“NO”表示CRC校驗結(jié)果;若不為“YES”,則循環(huán)等待并重試;

  • 第二行按空格分隔后,前三對字節(jié)分別為溫度、濕度與電導(dǎo)率的高低八位,使用16進制轉(zhuǎn)換后組合成整數(shù),最后通過除以100.0或1000.0轉(zhuǎn)化為實際工程物理量;

  • 在主循環(huán)中,捕獲讀取過程中可能出現(xiàn)的FileNotFoundError與其他異常,提示用戶檢查接線或ROMCODE;

將腳本保存至樹莓派,并賦予可執(zhí)行權(quán)限:

chmod +x mt05s_read.py

然后運行:

sudo ./mt05s_read.py

即可在終端中每秒輸出一次MT05S測量的溫度、濕度與電導(dǎo)率數(shù)值。

5.4 演示文件說明

  • mt05s_read.py:上述Python示例腳本,實現(xiàn)MT05S讀數(shù)解碼與打?。?/span>

  • mt05s_wiring.pdf:接線說明PDF,可包含文字與箭頭示意圖,建議將MT05S VCC/GND/DATA與Raspberry Pi對應(yīng)引腳連接示意畫出;

  • requirements.txt(可選):包含Python環(huán)境依賴包(由于示例僅使用標(biāo)準(zhǔn)庫,無額外依賴,可忽略);

  • README.md:對項目進行簡要說明,包括在項目根目錄進行的操作步驟、注意事項、ROMCODE查找方法等;

以上文件可打包成.zip.tar.gz格式分發(fā),用戶僅需復(fù)制至樹莓派后解壓,并根據(jù)README提示運行即可。若需要在系統(tǒng)啟動時自動運行腳本,可將運行命令插入/etc/rc.local或創(chuàng)建systemd服務(wù)。

六、測試與校準(zhǔn)建議
在實際部署中,為保證MT05S的測量精度與穩(wěn)定性,需對傳感器進行初步測試與環(huán)境校準(zhǔn),以適應(yīng)不同土壤類型與溫度環(huán)境的差異。

6.1 出廠測試驗證

  • 將MT05S探頭懸空置于空氣中,讀數(shù)應(yīng)接近0%濕度,且溫度應(yīng)接近環(huán)境溫度;

  • 將探頭插入已知含水量的土壤樣本(可使用標(biāo)準(zhǔn)土壤濕度杯測法獲取真實體積含水率),記錄輸出值并與理論值對比,判斷傳感器誤差;

  • 若需要測量電導(dǎo)率功能,可將探頭放入已知電導(dǎo)率溶液(如50 μS/cm、1000 μS/cm標(biāo)準(zhǔn)溶液)中,驗證EC讀數(shù)準(zhǔn)確性;

6.2 現(xiàn)場校準(zhǔn)方法

  • 溫度校準(zhǔn):可在0℃冰水混合物與25℃室溫水中分別測量MT05S溫度讀數(shù),記錄實際溫度與輸出溫度的偏差,如存在系統(tǒng)性誤差可在軟件端做偏移修正;

  • 濕度校準(zhǔn):選取若干不同比例(如5%、15%、25%~35%)的土壤樣本,將其烘干后按重量補加一定質(zhì)量的水,保證土壤達(dá)到預(yù)期體積含水率,用MT05S測量并對比理論值,擬合線性或曲線回歸系數(shù),用于軟件端換算;

  • 電導(dǎo)率校準(zhǔn):在常見農(nóng)業(yè)土壤肥料環(huán)境下,土壤電導(dǎo)率會受到養(yǎng)分含量與土壤溫度影響,建議用戶自行使用標(biāo)準(zhǔn)KCl溶液做多點校準(zhǔn),獲取對應(yīng)EC讀數(shù);軟件可根據(jù)溫度值使用內(nèi)置溫度補償公式對EC進行校準(zhǔn);

6.3 注意事項

  • MT05S探頭上的絕緣層需保持清潔,若長時間埋土,泥土黏附會導(dǎo)致導(dǎo)電性能異常,可定期用干凈水沖洗或酒精擦拭探針;

  • 在不同土壤類型(沙土、壤土、黏土等)測量時,土壤顆粒結(jié)構(gòu)與電導(dǎo)率特性存在差異,校準(zhǔn)曲線應(yīng)針對實際現(xiàn)場土壤進行多點采樣;

  • 電導(dǎo)率與濕度并不等價,若土壤含鹽量高可導(dǎo)致EC讀數(shù)偏高,應(yīng)結(jié)合濕度值與溫度值進行綜合分析;

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

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

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

  2. MT05S_Arduino_OLED.ino:Arduino Uno示例代碼,集成SSD1306 OLED顯示,實現(xiàn)本地數(shù)據(jù)顯示;

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

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

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

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

  7. MT05S_User_Manual.pdf:來自MT05S生產(chǎn)商官方的用戶手冊(包括寄存器說明、命令時序、出廠校準(zhǔn)報告等),可作為參考文檔;

上述文件可統(tǒng)一打包發(fā)布或托管至GitHub、GitLab等代碼倉庫,便于團隊協(xié)作與后續(xù)維護。

八、擴展應(yīng)用與系統(tǒng)優(yōu)化
除基礎(chǔ)數(shù)據(jù)采集功能外,用戶還可根據(jù)需求對系統(tǒng)進行進一步擴展與優(yōu)化,以提升系統(tǒng)的實用性與智能化水平。以下列出若干可選擴展方向,供讀者參考:

8.1 引入無線傳輸模塊,實現(xiàn)遠(yuǎn)程監(jiān)測

  • LoRa無線模塊:可選RAKWireless RAK811、SX1278或MT05S兼容的LoRa外設(shè),將Arduino或樹莓派側(cè)的采集數(shù)據(jù)通過LoRa網(wǎng)絡(luò)發(fā)送到中心網(wǎng)關(guān),實現(xiàn)遠(yuǎn)距離無線覆蓋;

  • Wi-Fi模塊:對于具有Wi-Fi信號覆蓋的場景,可在Arduino側(cè)選用ESP8266、ESP32等開發(fā)板,將MT05S數(shù)據(jù)通過MQTT或HTTP協(xié)議推送至云平臺;在Raspberry Pi側(cè)可直接使用內(nèi)置Wi-Fi,運行Python腳本時將數(shù)據(jù)上傳至數(shù)據(jù)庫或Web服務(wù)器。

8.2 本地Web服務(wù)器與圖形化界面

  • 在Raspberry Pi上安裝輕量級Web服務(wù)器(如Flask、Django或Node.js),開發(fā)簡單Web頁面,將MT05S測量值以曲線或表格形式呈現(xiàn),并支持歷史數(shù)據(jù)查詢;

  • 配置樹莓派攝像頭,將土壤區(qū)域環(huán)境情況實時拍照,與濕度數(shù)據(jù)結(jié)合生成可視化報告;

8.3 數(shù)據(jù)庫與遠(yuǎn)程存儲

  • 將MT05S數(shù)據(jù)存儲至SQLite、MySQL或InfluxDB,可以方便后續(xù)數(shù)據(jù)分析與可視化;樹莓派端可編寫Python腳本周期性讀取并寫入數(shù)據(jù)庫,或者通過Python定時任務(wù)(cron)實現(xiàn)自動化;

  • 若部署環(huán)境具備公網(wǎng)或VPN,可搭建Node-RED、ThingSpeak、AWS IoT等云端服務(wù),將數(shù)據(jù)實時上報,實現(xiàn)在線監(jiān)測與預(yù)警推送;

8.4 多路傳感與數(shù)據(jù)融合

  • 在相同1-Wire總線上若需多個MT05S測量不同位置的土壤濕度,可將多只MT05S并聯(lián)至同一數(shù)據(jù)線,利用其唯一的ROM Code區(qū)別不同設(shè)備,并在軟件中循環(huán)查詢;

  • 可結(jié)合其他傳感器(如DS18B20溫度傳感器、DHT22環(huán)境溫濕度傳感器、光照傳感、CO2傳感、PH電極等),實現(xiàn)對環(huán)境參數(shù)的多維度采集與分析;

  • 通過樹莓派或單片機側(cè)算法將不同傳感器數(shù)據(jù)進行關(guān)聯(lián),如在土壤溫度過低時推送加熱或防凍預(yù)警;

8.5 低功耗優(yōu)化與現(xiàn)場供電

  • 若系統(tǒng)需長時間在野外或無電源區(qū)域運行,可采用鋰電池+太陽能板的組合為Arduino或樹莓派供電,并在程序中采用深度睡眠或間隔采樣策略降低功耗;

  • MT05S本身待機電流極低,結(jié)合低功耗主控板(如ESP32-Low Power或STM32L系列)可進一步延長續(xù)航時間;在節(jié)點與網(wǎng)關(guān)間使用LoRa通信,減少Wi-Fi或GPRS模塊的高功耗;

8.6 系統(tǒng)穩(wěn)定性與防護

  • 在土壤環(huán)境酷熱或嚴(yán)寒的地區(qū),可為MT05S探頭配備防護套(例如聚四氟乙烯涂層或硅膠薄膜)以防止長時間暴露造成傳感失準(zhǔn);

  • 在移動設(shè)備或震動頻繁場所,需對電路進行防震設(shè)計,選用抗拉扯杜邦線或屏蔽線纜,并給電子元器件做好固定;

  • 建議在電源輸入端加入TVS二極管或保險絲,對電源突波與靜電進行保護,避免在雷雨季節(jié)或沙塵天氣損壞設(shè)備。

九、總結(jié)
本方案圍繞MT05S 1-Wire土壤濕度傳感器,集成了Arduino Uno與Raspberry Pi 3B+兩種主控方式,詳細(xì)說明了優(yōu)選元器件型號、作用、選用理由以及功能實現(xiàn),涵蓋硬件接線、Arduino示例代碼、樹莓派Python腳本、演示文件說明與測試校準(zhǔn)建議,滿足了用戶對“基于MT05S的土壤濕度傳感(接線圖+演示文件+Arduino和樹莓派源碼)”的需求。本方案采用模塊化設(shè)計,留有豐富的擴展接口與升級空間,便于在“智能農(nóng)業(yè)+物聯(lián)網(wǎng)”場景中根據(jù)實際需求進行功能拓展與性能優(yōu)化。通過本文,用戶可快速完成土壤參數(shù)采集系統(tǒng)的原型搭建,并在后續(xù)通過數(shù)據(jù)存儲、云平臺對接與智能算法實現(xiàn)精準(zhǔn)灌溉、環(huán)境監(jiān)控與決策支持,最大化發(fā)揮MT05S高精度、低功耗與易集成的優(yōu)勢,為智慧農(nóng)業(yè)與環(huán)境監(jiān)測應(yīng)用提供參考與借鑒。

責(zé)任編輯:David

【免責(zé)聲明】

1、本文內(nèi)容、數(shù)據(jù)、圖表等來源于網(wǎng)絡(luò)引用或其他公開資料,版權(quán)歸屬原作者、原發(fā)表出處。若版權(quán)所有方對本文的引用持有異議,請聯(lián)系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學(xué)習(xí)使用,不涉及商業(yè)目的。

3、本文內(nèi)容僅代表作者觀點,拍明芯城不對內(nèi)容的準(zhǔn)確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關(guān)結(jié)果。

4、如需轉(zhuǎn)載本方擁有版權(quán)的文章,請聯(lián)系拍明芯城(marketing@iczoom.com)注明“轉(zhuǎn)載原因”。未經(jīng)允許私自轉(zhuǎn)載拍明芯城將保留追究其法律責(zé)任的權(quán)利。

拍明芯城擁有對此聲明的最終解釋權(quán)。

上一篇: 已是第一篇
標(biāo)簽: MT05S 土壤濕度傳感

相關(guān)資訊

拍明芯城微信圖標(biāo)

各大手機應(yīng)用商城搜索“拍明芯城”

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

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