# 從感測器觸發水果品質檢測 ![本課程的手繪筆記概述](../../../../../translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.tw.jpg) > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 ## 課前測驗 [課前測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/35) ## 簡介 物聯網應用並不僅僅是單一設備捕捉數據並將其發送到雲端,更多時候是多個設備共同協作,使用感測器從物理世界捕捉數據,根據這些數據做出決策,並通過執行器或可視化方式與物理世界進行交互。 在本課程中,您將深入了解如何設計複雜的物聯網應用,整合多個感測器、多個雲端服務來分析和存儲數據,並通過執行器顯示響應。您將學習如何設計一個水果品質控制系統的原型,包括使用接近感測器觸發物聯網應用,以及該原型的架構。 本課程將涵蓋以下內容: * [設計複雜的物聯網應用](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [設計水果品質控制系統](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [從感測器觸發水果品質檢測](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [水果品質檢測器使用的數據](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [使用開發者設備模擬多個物聯網設備](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [進入量產階段](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) > 🗑 這是本專案的最後一課,因此在完成本課程和作業後,請記得清理您的雲端服務。您需要這些服務來完成作業,因此請確保先完成作業。 > > 如有需要,請參考[清理專案指南](../../../clean-up.md)以獲取相關指示。 ## 設計複雜的物聯網應用 物聯網應用由許多元件組成,包括各種設備和網路服務。 物聯網應用可以描述為由*設備*(things)發送數據生成*洞察*(insights),這些*洞察*再生成*行動*(actions),以改善業務或流程。例如,一個引擎(設備)發送溫度數據。這些數據用於評估引擎是否運行正常(洞察)。洞察則用於主動優化引擎的維護計劃(行動)。 * 不同的設備收集不同的數據。 * 物聯網服務基於這些數據提供洞察,有時還會結合其他來源的數據。 * 這些洞察驅動行動,包括控制設備中的執行器或可視化數據。 ### 物聯網架構參考 ![物聯網架構參考](../../../../../translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.tw.png) 上圖展示了一個物聯網架構參考。 > 🎓 *架構參考*是一個示例架構,您可以在設計新系統時用作參考。在這種情況下,如果您正在構建新的物聯網系統,可以遵循此架構參考,並根據需要替換自己的設備和服務。 * **設備**是從感測器收集數據的裝置,可能與邊緣服務交互以解釋數據,例如使用影像分類器解釋影像數據。設備的數據被發送到物聯網服務。 * **洞察**來自無伺服器應用或存儲數據的分析。 * **行動**可以是發送命令到設備,或是可視化數據以幫助人類做出決策。 ![Azure 物聯網架構參考](../../../../../translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.tw.png) 上圖展示了在這些課程中涵蓋的一些元件和服務,以及它們如何在物聯網架構參考中相互連接。 * **設備** - 您已撰寫設備程式碼以從感測器捕捉數據,並使用 Custom Vision 在雲端和邊緣設備上分析影像。這些數據被發送到 IoT Hub。 * **洞察** - 您已使用 Azure Functions 回應發送到 IoT Hub 的訊息,並將數據存儲在 Azure Storage 中以供後續分析。 * **行動** - 您已根據雲端的決策控制執行器並向設備發送命令,並使用 Azure Maps 可視化數據。 ✅ 想一想您使用過的其他物聯網設備,例如智能家居設備。該設備及其軟體涉及哪些設備、洞察和行動? 此模式可以根據需要擴展到任意大小,添加更多設備和服務。 ### 數據與安全性 在定義系統架構時,您需要不斷考慮數據和安全性。 * 您的設備發送和接收哪些數據? * 如何保護和加密這些數據? * 如何控制對設備和雲端服務的訪問? ✅ 想一想您擁有的任何物聯網設備的數據安全性。哪些數據是個人數據,應在傳輸和存儲時保持私密?哪些數據不應存儲? ## 設計水果品質控制系統 現在讓我們將設備、洞察和行動的概念應用到水果品質檢測器,設計一個更大的端到端應用。 假設您被要求構建一個水果品質檢測器,用於加工廠。水果通過輸送帶系統運輸,目前員工需要手動檢查水果並移除任何未成熟的水果。為了降低成本,廠主希望有一個自動化系統。 ✅ 隨著物聯網(以及技術)的興起,許多手動工作正在被機器取代。進行一些研究:估計有多少工作因物聯網而消失?又有多少新工作因構建物聯網設備而創造? 您需要構建一個系統,檢測水果到達輸送帶時,拍攝照片並使用在邊緣運行的 AI 模型進行檢查。結果被發送到雲端存儲,如果水果未成熟,則發出通知以便移除未成熟的水果。 | | | | - | - | | **設備** | 檢測水果到達輸送帶的感測器
拍攝並分類水果的相機
運行分類器的邊緣設備
通知未成熟水果的設備 | | **洞察** | 決定檢查水果的成熟度
存儲成熟度分類的結果
判斷是否需要警告未成熟水果 | | **行動** | 發送命令到設備拍攝水果並使用影像分類器檢查
發送命令到設備警告未成熟水果 | ### 應用原型設計 ![水果品質檢測的物聯網架構參考](../../../../../translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.tw.png) 上圖展示了此原型應用的架構參考。 * 配備接近感測器的物聯網設備檢測到水果到達。這會向雲端發送訊息,表示檢測到水果。 * 雲端的無伺服器應用向另一設備發送命令,拍攝照片並進行分類。 * 配備相機的物聯網設備拍攝照片並將其發送到邊緣運行的影像分類器。結果隨後被發送到雲端。 * 雲端的無伺服器應用存儲這些信息,以便稍後分析未成熟水果的百分比。如果水果未成熟,則向另一個物聯網設備發送命令,通過 LED 警告工廠工人。 > 💁 整個物聯網應用可以作為單一設備實現,所有啟動影像分類和控制 LED 的邏輯都內建其中。它可以僅使用 IoT Hub 來追蹤檢測到的未成熟水果數量並配置設備。在本課程中,擴展此應用以展示大型物聯網應用的概念。 在原型中,您將在單一設備上實現所有功能。如果您使用的是微控制器,則需要使用單獨的邊緣設備運行影像分類器。您已經學習了構建此應用所需的大部分知識。 ## 從感測器觸發水果品質檢測 物聯網設備需要某種觸發器來指示水果何時準備好進行分類。一種觸發方式是通過測量距離感測器到水果的距離,判斷水果是否在輸送帶上的正確位置。 ![接近感測器發送雷射光束到物體(如香蕉),並計算光束反射回來的時間](../../../../../translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.tw.png) 接近感測器可用於測量感測器到物體的距離。它們通常發送電磁輻射束,例如雷射光束或紅外線,然後檢測輻射從物體反射回來的信號。從光束發送到信號反射回來的時間可用於計算距離。 > 💁 您可能已經使用過接近感測器而未意識到。例如,大多數智能手機在您將其靠近耳朵時會關閉螢幕,以防止耳垂意外結束通話。這是通過接近感測器實現的,感測器檢測到螢幕附近的物體並在手機距離一定範圍外時重新啟用觸控功能。 ### 任務 - 使用距離感測器觸發水果品質檢測 按照相關指南,使用接近感測器檢測物體並與您的物聯網設備交互: * [Arduino - Wio Terminal](wio-terminal-proximity.md) * [單板電腦 - Raspberry Pi](pi-proximity.md) * [單板電腦 - 虛擬設備](virtual-device-proximity.md) ## 水果品質檢測器使用的數據 原型水果檢測器有多個元件相互通信。 ![元件之間的通信](../../../../../translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.tw.png) * 接近感測器測量到水果的距離並將其發送到 IoT Hub * 控制相機的命令從 IoT Hub 發送到相機設備 * 影像分類的結果被發送到 IoT Hub * 控制 LED 警告未成熟水果的命令從 IoT Hub 發送到配備 LED 的設備 在構建應用之前,最好先定義這些訊息的結構。 > 💁 幾乎每位有經驗的開發者都曾因發送的數據與預期數據不一致而花費數小時、數天甚至數週追蹤錯誤。 例如 - 如果您正在發送溫度信息,如何定義 JSON?您可以使用名為 `temperature` 的欄位,也可以使用常見縮寫 `temp`。 ```json { "temperature": 20.7 } ``` 與: ```json { "temp": 20.7 } ``` 您還需要考慮單位 - 溫度是以 °C 還是 °F 表示?如果您使用消費者設備測量溫度並更改顯示單位,您需要確保發送到雲端的單位保持一致。 ✅ 進行一些研究:單位問題如何導致價值 1.25 億美元的火星氣候探測器墜毀? 思考水果品質檢測器發送的數據。如何定義每個訊息?在哪裡分析數據並決定發送哪些數據? 例如 - 使用接近感測器觸發影像分類。物聯網設備測量距離,但決策在哪裡做出?設備是否決定水果足夠接近並發送訊息告訴 IoT Hub 觸發分類?或者它是否發送距離測量並讓 IoT Hub 做出決策? 這些問題的答案是 - 視情況而定。每個使用案例都不同,這就是為什麼作為物聯網開發者,您需要了解您正在構建的系統、它的使用方式以及檢測到的數據。 * 如果決策由 IoT Hub 做出,您需要發送多個距離測量。 * 如果發送過多訊息,會增加 IoT Hub 的成本以及物聯網設備所需的頻寬(尤其是在有數百萬設備的工廠中)。這也可能會減慢設備速度。 * 如果在設備上做出決策,您需要提供一種方式來配置設備以微調機器。 ## 使用開發者設備模擬多個物聯網設備 為了構建您的原型,您需要讓物聯網開發套件模擬多個設備,發送遙測數據並回應命令。 ### 在 Raspberry Pi 或虛擬物聯網硬體上模擬多個物聯網設備 使用像 Raspberry Pi 這樣的單板電腦時,您可以同時運行多個應用程式。這意味著您可以通過創建多個應用程式(每個應用程式代表一個“物聯網設備”)來模擬多個物聯網設備。例如,您可以將每個設備實現為單獨的 Python 文件,並在不同的終端會話中運行它們。 > 💁 請注意,某些硬體在被多個應用程式同時存取時可能無法正常運作。 ### 在微控制器上模擬多個設備 在微控制器上模擬多個設備相對較為複雜。與單板電腦不同,微控制器無法同時運行多個應用程式,必須將所有不同物聯網設備的邏輯整合到單一應用程式中。 以下是一些讓這個過程更簡單的建議: * 為每個物聯網設備創建一個或多個類別,例如名為 `DistanceSensor`、`ClassifierCamera`、`LEDController` 的類別。每個類別可以有自己的 `setup` 和 `loop` 方法,由主程式的 `setup` 和 `loop` 函數調用。 * 在單一位置處理命令,並根據需要將命令導向相關的設備類別。 * 在主程式的 `loop` 函數中,您需要考慮每個不同設備的執行時間。例如,如果有一個設備類別需要每 10 秒處理一次,另一個需要每 1 秒處理一次,那麼在主程式的 `loop` 函數中可以使用 1 秒的延遲。每次 `loop` 調用都觸發需要每秒處理的設備代碼,並使用計數器來計算每次循環,當計數器達到 10 時處理另一個設備(然後重置計數器)。 ## 移向生產階段 原型將成為最終生產系統的基礎。在移向生產階段時,可能會有以下差異: * 耐用的元件 - 使用能夠承受工廠中的噪音、熱量、振動和壓力的硬體。 * 使用內部通信 - 一些元件會直接通信,避免跳轉到雲端,僅將數據發送到雲端進行存儲。具體實現方式取決於工廠的設置,可以是直接通信,也可以通過使用閘道設備在邊緣運行部分物聯網服務。 * 配置選項 - 每個工廠和使用案例都不同,因此硬體需要具備可配置性。例如,接近傳感器可能需要在不同距離檢測不同的水果。與其將觸發分類的距離硬編碼,您可能希望通過雲端進行配置,例如使用設備雙胞胎。 * 自動化水果移除 - 不再使用 LED 提示水果未成熟,而是使用自動化設備將其移除。 ✅ 做些研究:生產設備與開發套件還有哪些其他不同之處? --- ## 🚀 挑戰 在本課中,您學習了一些設計物聯網系統所需的概念。回想之前的項目,它們如何適應上述的參考架構? 選擇一個之前的項目,思考設計一個更複雜的解決方案,將多種功能結合在一起,超越項目中所涵蓋的內容。繪製架構圖,並思考您需要的所有設備和服務。 例如 - 一個結合 GPS 和傳感器的車輛追蹤設備,用於監控冷藏卡車內的溫度、引擎啟動和關閉時間,以及駕駛員的身份。涉及哪些設備、服務、傳輸的數據,以及安全和隱私的考量? ## 課後測驗 [課後測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/36) ## 回顧與自學 * 閱讀更多關於物聯網架構的內容,請參考 [Microsoft Docs 上的 Azure IoT 參考架構文檔](https://docs.microsoft.com/azure/architecture/reference-architectures/iot?WT.mc_id=academic-17441-jabenn) * 閱讀更多關於設備雙胞胎的內容,請參考 [Microsoft Docs 上的 IoT Hub 設備雙胞胎文檔](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-device-twins?WT.mc_id=academic-17441-jabenn) * 閱讀關於 OPC-UA 的內容,這是一種用於工業自動化的機器對機器通信協議,請參考 [Wikipedia 上的 OPC-UA 頁面](https://wikipedia.org/wiki/OPC_Unified_Architecture) ## 作業 [構建一個水果品質檢測器](assignment.md) **免責聲明**: 本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們致力於提供準確的翻譯,請注意自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋不承擔責任。