You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/tw/2-farm/lessons/2-detect-soil-moisture/README.md

13 KiB

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

💁 這種模型過去被稱為主/從master/slave但由於其與奴隸制的聯想這種術語正在被棄用。開源硬件協會Open Source Hardware Association已採用控制器/外設controller/peripheral,但你可能仍會看到對舊術語的引用。

設備在連接到 I²C 線路時會有一個地址通常是硬編碼在設備上的。例如Seeed 的每種 Grove 傳感器都有相同的地址,因此所有光傳感器都有相同的地址,所有按鈕的地址也相同,但與光傳感器的地址不同。一些設備可以通過更改跳線設置或焊接引腳來更改地址。

I²C 線路由兩條主要的信號線以及兩條電源線組成:

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

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

要傳輸數據,一個設備會發出啟動條件,表明它準備好傳輸數據。它隨後成為控制器。控制器接著發送它想要通信的設備地址,以及它是要讀取還是寫入數據。在數據傳輸完成後,控制器會發送停止條件,表明它已完成。之後,另一個設備可以成為控制器並發送或接收數據。

22C 有速度限制,並且有三種不同模式以固定速度運行。最快的模式是高速模式,最大速度為 3.4Mbps每秒百萬位元但支持該速度的設備非常少。例如Raspberry Pi 的速度限制在 400Kbps每秒千位元的快速模式。標準模式的速度為 100Kbps。

💁 如果您使用 Raspberry Pi 搭配 Grove Base hat 作為您的 IoT 硬件,您可以在板上看到多個 I2C 插座,這些插座可用於與 I2C 感測器進行通信。類比 Grove 感測器也使用 I2C並通過 ADC類比數位轉換器將類比值作為數位數據傳送因此您使用的光感測器模擬了一個類比引腳並通過 I2C 傳送值,因為 Raspberry Pi 只支持數位引腳。

通用非同步接收器-傳送器 (UART)

UART 涉及允許兩個設備通信的物理電路。每個設備都有兩個通信引腳——傳送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.5 Mbps每秒百萬位元或每秒傳送的 0 或 1 數據)。

您可以通過 GPIO 引腳使用 UART——您可以將一個引腳設置為 Tx另一個引腳設置為 Rx然後將它們連接到另一個設備。

💁 如果您使用 Raspberry Pi 搭配 Grove Base hat 作為您的 IoT 硬件,您可以在板上看到一個 UART 插座,可用於與使用 UART 協議的感測器通信。

串行外設接口 (SPI)

SPI 設計用於短距離通信,例如微控制器與存儲設備(如快閃記憶體)通信。它基於控制器/外設模型,單個控制器(通常是 IoT 設備的處理器)與多個外設交互。控制器通過選擇外設並傳送或請求數據來控制所有操作。

💁 與 I2C 一樣,控制器和外設這些術語是最近的改變,因此您可能仍會看到使用舊術語。

SPI 控制器使用 3 條線,外加每個外設一條額外的線。外設使用 4 條線。這些線包括:

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

SPI 控制器和兩個外設

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

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

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

IoT 開發套件通常支持通過一些 GPIO 引腳使用 SPI。例如在 Raspberry Pi 上,您可以使用 GPIO 引腳 19、21、23、24 和 26 進行 SPI。

無線

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

一個例子是商業土壤濕度感測器。這些感測器會測量田地中的土壤濕度,然後通過 LoRaWAN 傳送數據到集線設備,該設備會處理數據或通過互聯網傳送數據。這使得感測器可以遠離管理數據的 IoT 設備,減少功耗以及對大型 WiFi 網絡或長電纜的需求。

BLE 在高級感測器中很受歡迎,例如用於手腕上的健身追蹤器。這些感測器結合多個感測器,並通過 BLE 將感測器數據傳送到 IoT 設備,例如您的手機。

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

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

🐝 Zigbee 的名字來源於蜜蜂返回蜂巢後的搖擺舞。

測量土壤中的濕度水平

您可以使用土壤濕度感測器、IoT 設備以及室內植物或附近的土壤來測量土壤濕度水平。

任務 - 測量土壤濕度

按照相關指南使用您的 IoT 設備測量土壤濕度:

感測器校準

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

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

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

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

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

💁 計算電阻與溫度的公式稱為 SteinhartHart 方程

土壤濕度感測器校準

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

  • 重力含水量是每單位重量的土壤中水的重量,測量值為每公斤乾土中的公斤水
  • 體積含水量是每單位體積的土壤中水的體積,測量值為每立方米乾土中的立方米水

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

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

電壓與土壤濕度含量的圖表

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

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

從圖表中插值的土壤濕度值

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

這種方法意味著農民只需要為田地獲得幾個實驗室測量值,然後可以使用 IoT 設備測量土壤濕度——大大加快了測量速度。


🚀 挑戰

電阻式和電容式土壤濕度感測器有許多差異。這些差異是什麼?哪種類型(如果有的話)最適合農民使用?這個答案是否會因發展中國家和已開發國家而改變?

課後測驗

課後測驗

回顧與自學

閱讀有關感測器和執行器使用的硬件和協議的資料:

作業

校準您的感測器

免責聲明
本文件使用 AI 翻譯服務 Co-op Translator 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原始語言的文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責。