跳至主要内容

偵測土壤濕度

本課概述的手繪筆記

手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。

本課程是 IoT 01 for Beginners Project 2 - Digital Agriculture series 的一部分,由 Microsoft Reactor 提供。

土壤濕度感測器與數位農業

課前測驗

課前測驗

介紹

在上一課中,我們探討了測量環境屬性並使用它來預測植物生長。溫度可以被控制,但這需要昂貴的設備和受控環境。對於植物來說,最容易控制的環境屬性是水——從大規模灌溉系統到小孩用澆水壺澆花,水是每天都在控制的。

一個小孩在澆花

在本課中,你將學習如何測量土壤濕度,而在下一課中,你將學習如何控制自動澆水系統。本課將介紹第三個感測器,你已經使用過光感測器和溫度感測器,因此在本課中,你還將學習更多關於感測器和執行器如何與物聯網設備通信,以便更好地了解土壤濕度感測器如何將數據傳送到物聯網設備。

在本課中,我們將涵蓋:

土壤濕度

植物需要水來生長。它們通過整個植物吸收水分,其中大部分是通過根系吸收的。植物使用水來做三件事:

  • 光合作用 - 植物利用水、二氧化碳和光進行化學反應,產生碳水化合物和氧氣。
  • 蒸騰作用 - 植物利用水來進行二氧化碳從空氣中擴散到植物內部的過程,通過葉片上的氣孔進行。這個過程還將養分運送到植物各處,並冷卻植物,類似於人類出汗。
  • 結構 - 植物還需要水來維持其結構——它們的水分含量達到90%(而人類只有60%),這些水分使細胞保持堅挺。如果植物缺水,它會枯萎並最終死亡。

水分通過植物根部吸收,然後在植物內部運輸,用於光合作用和植物結構

✅ 做一些研究:有多少水分是通過蒸騰作用流失的?

根系從植物生長的土壤中的水分中提供水分。土壤中的水分太少,植物無法吸收足夠的水分來生長;水分太多,根系無法吸收足夠的氧氣來運作。這會導致根系死亡,植物無法獲取足夠的養分來生存。

為了讓農民獲得最佳的植物生長,土壤需要保持不過濕也不過乾。物聯網設備可以通過測量土壤濕度來幫助農民,只在需要時進行澆水。

測量土壤濕度的方法

有多種不同類型的感測器可以用來測量土壤濕度:

  • 電阻式 - 電阻式感測器有兩個探針插入土壤。一個探針發送電流,另一個探針接收電流。感測器測量土壤的電阻——測量在第二個探針處電流的下降程度。水是良好的導電體,因此土壤的水分含量越高,電阻越低。

    電阻式土壤濕度感測器

    💁 你可以使用兩塊金屬(如釘子)製作一個電阻式土壤濕度感測器,將它們相隔幾厘米,並使用萬用表測量它們之間的電阻。

  • 電容式 - 電容式濕度感測器測量在正負電極板之間可以儲存的電荷量,或稱為電容。隨著濕度水平的變化,土壤的電容也會變化,這可以轉換為電壓,並由物聯網設備測量。土壤越濕,輸出的電壓越低。

    電容式土壤濕度感測器

這些都是模擬感測器,返回的電壓表示土壤濕度。那麼這個電壓如何傳送到你的代碼中呢?在進一步了解這些感測器之前,讓我們看看感測器和執行器如何與物聯網設備通信。

感測器如何與物聯網設備通信

到目前為止,在這些課程中,你已經學習了許多感測器和執行器,如果你一直在進行實體硬體實驗,這些感測器和執行器一直在與你的物聯網開發套件通信。但是這種通信是如何工作的呢?土壤濕度感測器的電阻測量是如何變成你可以在代碼中使用的數字的呢?

要與大多數感測器和執行器通信,你需要一些硬體和一個通信協議——這是一種定義良好的數據傳送和接收方式。以電容式土壤濕度感測器為例:

  • 這個感測器是如何連接到物聯網設備的?
  • 如果它測量的是電壓,這是一個模擬信號,它需要一個ADC來創建數值表示,這個數值以交替電壓的形式傳送0和1——但每個位元傳送的時間有多長?
  • 如果感測器返回的是數位值,那將是一串0和1,同樣每個位元傳送的時間有多長?
  • 如果電壓高0.1秒,這是一個1位元,還是2個連續的1位元,還是10個?
  • 數字從哪裡開始?00001101是25,還是前5個位元是前一個數值的結尾?

硬體提供了數據傳送的物理連接,不同的通信協議確保數據以正確的方式傳送或接收,以便可以解釋。

通用輸入輸出(GPIO)引腳

GPIO是一組引腳,你可以用來將硬體連接到你的物聯網設備,通常在物聯網開發套件(如Raspberry Pi或Wio Terminal)上可用。你可以使用本節中介紹的各種通信協議通過GPIO引腳進行通信。一些GPIO引腳提供電壓,通常是3.3V或5V,一些引腳是接地的,其他引腳可以編程設置為發送電壓(輸出)或接收電壓(輸入)。

💁 電路需要通過你使用的電路將電壓連接到接地。你可以將電壓視為電池的正極(+ve)端子,接地視為負極(-ve)端子。

當你只關心開或關的值時,你可以直接使用GPIO引腳與一些數位感測器和執行器。例如:

  • 按鈕。你可以將按鈕連接在5V引腳和設置為輸入的引腳之間。當你按下按鈕時,它會完成從5V引腳通過按鈕到輸入引腳的電路。從代碼中,你可以讀取輸入引腳的電壓,如果是高電壓(5V),則按鈕被按下,如果是低電壓(0V),則按鈕未被按下。請記住,實際的電壓本身並未被讀取,而是根據電壓是否超過閾值來獲得1或0的數位信號。

    按鈕接收5伏特信號。未按下時返回0伏特,或0,按下時返回5伏特,或1

  • LED。你可以將LED連接在輸出引腳和接地引腳之間(使用電阻器,否則會燒壞LED)。從代碼中,你可以將輸出引腳設置為高電壓,它會發送3.3V,形成從3.3V引腳通過LED到接地引腳的電路。這會點亮LED。

    LED接收0(3.3V)的信號,點亮LED。如果接收0(0V),LED不會點亮。

對於更高級的感測器,你可以使用GPIO引腳直接與數位感測器和執行器通信,或通過具有ADC和DAC的控制板與模擬感測器和執行器通信。

💁 如果你在這些實驗中使用Raspberry Pi,Grove Base Hat具有將模擬感測器信號轉換為數位信號以通過GPIO傳送的硬體。

✅ 如果你有一個具有GPIO引腳的物聯網設備,找到這些引腳並找到一個指示哪些引腳是電壓、接地或可編程的圖表。

模擬引腳

一些設備,如Arduino設備,提供模擬引腳。這些引腳與GPIO引腳相同,但除了支持數位信號外,它們還具有ADC,可以將電壓範圍轉換為數值。通常ADC具有10位元解析度,這意味著它將電壓轉換為0-1,023的數值。

例如,在3.3V的板上,如果感測器返回3.3V,返回的數值將是1,023。如果返回的電壓是1.65V,返回的數值將是511。

土壤濕度感測器發送3.3V並返回1.65V,或讀數511

💁 在夜燈 - 第3課中,光感測器返回0-1,023的數值。如果你使用的是Wio Terminal,感測器連接到模擬引腳。如果你使用的是Raspberry Pi,則感測器連接到具有集成ADC的基座帽上的模擬引腳,以通過GPIO引腳通信。虛擬設備設置為發送0-1,023的數值以模擬模擬引腳。

土壤濕度感測器依賴於電壓,因此將使用模擬引腳並給出0-1,023的數值。

互連集成電路(I2C)

I2C,讀作I-squared-C,是一種多控制器、多外圍設備協議,任何連接的設備都可以作為控制器或外圍設備通過I2C總線(傳輸數據的通信系統的名稱)進行通信。數據以地址封包的形式傳送,每個封包包含目標設備的地址。

💁 這種模型以前被稱為主/從,但由於其與奴隸制的聯繫,這種術語正在被淘汰。開源硬體協會已採用控制器/外圍設備,但你可能仍會看到舊術語的引用。

設備在連接到I2C總線時具有一個地址,通常在設備上硬編碼。例如,每種類型的Seeed的Grove感測器都有相同的地址,因此所有光感測器都有相同的地址,所有按鈕都有不同於光感測器地址的地址。一些設備可以通過更改跳線設置或焊接引腳來更改地址。

I2C總線由2根主要線纜組成,還有2根電源線:

線纜名稱描述
SDA串行數據這根線纜用於在設備之間傳送數據。
SCL串行時鐘這根線纜以控制器設置的速率傳送時鐘信號。
VCC電壓公共集電極為設備提供電源。這與SDA和SCL線纜相連,以通過上拉電阻提供電源,當沒有設備是控制器時,該電阻會關閉信號。
GND接地為電路提供公共接地。

I2C總線,3個設備連接到SDA和SCL線纜,共享一個公共接地線

要傳送數據,一個設備將發出開始條件,表示它準備好傳送數據。然後它將成為控制器。控制器然後傳送它想要通信的設備的地址,以及它是要讀取還是寫入數據。數據傳送完成後,控制器發出停止條件,表示它已完成。之後,另一個設備可以成為控制器並傳送或接收數據。

I2C有速度限制,有3種不同模式以固定速度運行。最快的是高速模式,最大速度為3.4Mbps(每秒百萬位元),但很少有設備支持這種速度。例如,Raspberry Pi限制在400Kbps(每秒千位元)的快速模式。標準模式運行在100Kbps。

💁 如果你使用的是帶有Grove Base帽的Raspberry Pi作為你的物聯網硬體,你將能夠看到板上有多個I2C插座,可以用來與I2C感測器通信。模擬Grove感測器也使用I2C,通過ADC將模擬值作為數位數據傳送,因此你使用的光感測器模擬了一個模擬引腳,值通過I2C傳送,因為Raspberry Pi只支持數位引腳。

通用非同步收發器(UART)

UART涉及允許兩個設備通信的物理電路。每個設備有2個通信引腳——發送(Tx)和接收(Rx),第一個設備的Tx引腳連接到第二個設備的Rx引腳,第二個設備的Tx引腳連接到第一個設備的Rx引腳。這允許數據在兩個方向上傳送。

  • 設備1從其Tx引腳傳送數據,設備2在其Rx引腳接收數據
  • 設備1在其Rx引腳接收數據,這些數據由設備2從其Tx引腳傳送

UART,將一個芯片的Tx引腳連接到另一個芯片的Rx引腳,反之亦然

🎓 數據一次傳送一位,這被稱為串行通信。大多數操作系統和微控制器都有串行端口,即可以傳送和接收串行數據的連接,這些連接可供你的代碼使用。

UART設備有一個波特率(也稱為符號率),即數據將以每秒位元數的速度傳送和接收。常見的波特率是9,600,這意味著每秒傳送9,600位(0和1)數據。

UART使用開始和停止位——即它發送一個開始位,表示它即將發送一個字節(8位)數據,然後在發送8位數據後發送一個停止位。

UART速度取決於硬體,但即使是最快的實現也不超過6.5Mbps(每秒百萬位元,或每秒傳送的0或1位數據)。

你可以在GPIO引腳上使用UART - 你可以將一個引腳設置為Tx,另一個引腳設置為Rx,然後將這些引腳連接到另一個設備。

💁 如果你使用的是帶有Grove Base帽的Raspberry Pi作為你的物聯網硬體,你將能夠看到板上有一個UART插座,你可以用來與使用UART協議的感測器通信。

串行外設接口(SPI)

SPI設計用於短距離通信,例如在微控制器上與存儲設備(如閃存)通信。它基於控制器/外圍設備模型,具有單個控制器(通常是物聯網設備的處理器)與多個外圍設備進行交互。控制器通過選擇一個外圍設備並發送或請求數據來控制一切。

💁 與I2C一樣,控制器和外圍設備的術語是最近的變化,因此你可能會看到仍在使用的舊術語。

SPI控制器使用3根線纜,外加每個外圍設備1根額外的線纜。外圍設備使用4根線纜。這些線纜是:

線纜名稱描述
COPI控制器輸出,外圍設備輸入這根線纜用於將數據從控制器發送到外圍設備。
CIPO控制器輸入,外圍設備輸出這根線纜用於將數據從外圍設備發送到控制器。
SCLK串行時鐘這根線纜以控制器設置的速率傳送時鐘信號。
CS芯片選擇控制器有多根線纜,每個外圍設備一根,每根線纜連接到相應外圍設備的CS線纜。

SPI with on controller and two peripherals

CS線纜用於一次激活一個外圍設備,通過COPI和CIPO線纜進行通信。當控制器需要更改外圍設備時,它會停用連接到當前活動外圍設備的CS線纜,然後激活連接到下一個要通信的外圍設備的線纜。

SPI是全雙工的,這意味著控制器可以同時從同一外圍設備發送和接收數據,使用COPI和CIPO線纜。SPI使用SCLK線纜上的時鐘信號來保持設備同步,因此不像直接通過UART發送那樣需要開始和停止位。

SPI沒有定義的速度限制,實現通常能夠每秒傳輸多兆字節的數據。

物聯網開發套件通常支持在一些GPIO引腳上使用SPI。例如,在Raspberry Pi上,你可以使用GPIO引腳19、21、23、24和26來進行SPI通信。

無線

一些感測器可以通過標準無線協議進行通信,例如藍牙(主要是低功耗藍牙,或BLE)、LoRaWAN(一種Long Range低功耗網絡協議)或WiFi。這些允許遠程感測器不需要物理連接到物聯網設備。

一個這樣的例子是商業土壤濕度感測器。這些感測器將測量田地中的土壤濕度,然後通過LoRaWan將數據發送到集線器設備,該設備將處理數據或通過互聯網發送數據。這允許感測器遠離管理數據的物聯網設備,減少功耗和對大型WiFi網絡或長電纜的需求。

BLE在高級感測器中很受歡迎,例如在手腕上工作的健身追踪器。這些設備結合了多個感測器,並通過BLE將感測器數據發送到你的手機等物聯網設備。

✅ 你身上、家中或學校中是否有任何藍牙感測器?這些可能包括溫度感測器、佔用感測器、設備追踪器和健身設備。

商業設備連接的一種流行方式是Zigbee。Zigbee使用WiFi在設備之間形成網狀網絡,每個設備連接到盡可能多的附近設備,形成大量像蜘蛛網一樣的連接。當一個設備想要發送消息到互聯網時,它可以將消息發送到最近的設備,然後這些設備將消息轉發給其他附近的設備,依此類推,直到消息到達協調器並可以發送到互聯網。

🐝 Zigbee這個名字指的是蜜蜂返回蜂巢後的搖擺舞。

測量土壤中的濕度水平

你可以使用土壤濕度感測器、物聯網設備和家中的植物或附近的土壤來測量土壤中的濕度水平。

任務 - 測量土壤濕度

通過相關指南使用你的物聯網設備測量土壤濕度:

感測器校準

感測器依賴於測量電氣特性,例如電阻或電容。

🎓 電阻,以歐姆(Ω)為單位,是電流通過某物時的阻力。當電壓施加到材料上時,通過它的電流量取決於材料的電阻。你可以在維基百科的電阻頁面上閱讀更多內容。

🎓 電容,以法拉(F)為單位,是元件或電路收集和存儲電能的能力。你可以在維基百科的電容頁面上閱讀更多內容。

這些測量值並不總是有用的——想像一下,一個溫度感測器給你一個22.5KΩ的測量值!相反,測量值需要通過校準轉換為有用的單位——即將測量值與測量量匹配,以便將新測量值轉換為正確的單位。

一些感測器是預先校準的。例如,你在上一課中使用的溫度感測器已經校準,可以返回°C的溫度測量值。在工廠中,第一個創建的感測器將暴露於一系列已知溫度,並測量電阻。然後,這將用於構建一個計算公式,可以將測量值從Ω(電阻單位)轉換為°C。

💁 計算溫度與電阻的公式稱為Steinhart–Hart方程

土壤濕度感測器校準

土壤濕度是通過重量含水量或體積含水量來測量的。

  • 重量含水量是每單位重量土壤中的水的重量,以每公斤乾土中的公斤水數量來測量
  • 體積含水量是每單位體積土壤中的水的體積,以每立方米乾土中的立方米水數量來測量

🇺🇸 對於美國人,由於單位的一致性,這些可以用磅代替公斤或立方英尺代替立方米來測量。

土壤濕度感測器測量電阻或電容——這不僅隨土壤濕度變化,還隨土壤類型變化,因為土壤中的成分會改變其電氣特性。理想情況下,感測器應該進行校準——即從感測器獲取讀數並與使用更科學方法獲得的測量值進行比較。例如,實驗室可以使用一年中幾次從特定田地採集的樣本計算重量含水量,並使用這些數據校準感測器,將感測器讀數與重量含水量匹配。

A graph of voltage vs soil moisture content

上圖顯示了如何校準感測器。捕獲土壤樣本的電壓,然後在實驗室中通過比較濕重和乾重(通過測量濕重,然後在烤箱中乾燥並測量乾重)來測量。獲取幾個讀數後,可以將其繪製在圖表上,並將一條線擬合到這些點上。然後,這條線可以用來將物聯網設備獲取的土壤濕度感測器讀數轉換為實際的土壤濕度測量值。

💁 對於電阻式土壤濕度感測器,隨著土壤濕度增加,電壓增加。對於電容式土壤濕度感測器,隨著土壤濕度增加,電壓減少,因此這些圖表的斜率是向下的,而不是向上的。

A soil moisture value interpolated from the graph

上圖顯示了土壤濕度感測器的電壓讀數,通過將其對應到圖表上的線,可以計算出實際的土壤濕度。

這種方法意味著農民只需要為一塊田地獲取幾個實驗室測量值,然後他們可以使用物聯網設備來測量土壤濕度——大大加快了測量時間。


🚀 挑戰

電阻式和電容式土壤濕度感測器有許多不同之處。這些差異是什麼,哪種類型(如果有的話)最適合農民使用?這個答案在發展中國家和發達國家之間是否會有所不同?

課後測驗

課後測驗

回顧與自學

閱讀感測器和執行器使用的硬體和協議:

作業

校準你的感測器