chore(i18n): sync translations with latest source changes (chunk 1/1, 187 changes)

pull/577/head
localizeflow[bot] 6 months ago
parent 6ce7bc8f5b
commit 55c0db967e

@ -738,8 +738,8 @@
"language_code": "zh-HK" "language_code": "zh-HK"
}, },
"README.md": { "README.md": {
"original_hash": "3fcc056cd3837e33d2bdf79f9c359fcf", "original_hash": "accf69391fa4450eadbf492ca024cccf",
"translation_date": "2026-01-30T01:22:40+00:00", "translation_date": "2026-04-06T16:25:43+00:00",
"source_file": "README.md", "source_file": "README.md",
"language_code": "zh-HK" "language_code": "zh-HK"
}, },

@ -1,6 +1,6 @@
# 物聯網簡介 # 物聯網簡介
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-1.2606670fa61ee904.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。

@ -203,7 +203,7 @@ Python 的一個強大功能是能夠安裝 [Pip 套件](https://pypi.org)——
應用程式將開始運行並在你的網頁瀏覽器中打開: 應用程式將開始運行並在你的網頁瀏覽器中打開:
![Counter Fit 應用程式在瀏覽器中運行](../../../../../translated_images/zh-HK/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.png) ![Counter Fit 應用程式在瀏覽器中運行](../../../../../translated_images/zh-HK/counterfit-first-run.433326358b669b31.webp)
它將顯示為 *Disconnected*,右上角的 LED 是熄滅的。 它將顯示為 *Disconnected*,右上角的 LED 是熄滅的。
@ -224,7 +224,7 @@ Python 的一個強大功能是能夠安裝 [Pip 套件](https://pypi.org)——
1. 在這個新終端中,像之前一樣運行 `app.py` 文件。CounterFit 的狀態將變為 **Connected**,LED 會亮起。 1. 在這個新終端中,像之前一樣運行 `app.py` 文件。CounterFit 的狀態將變為 **Connected**,LED 會亮起。
![Counter Fit 顯示為已連接](../../../../../translated_images/zh-HK/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.png) ![Counter Fit 顯示為已連接](../../../../../translated_images/zh-HK/counterfit-connected.ed30b46d8f79b092.webp)
> 💁 你可以在 [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) 資料夾中找到這段程式碼。 > 💁 你可以在 [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) 資料夾中找到這段程式碼。

@ -1,6 +1,6 @@
# 深入了解物聯網 # 深入了解物聯網
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-2.324b0580d620c25e.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -38,7 +38,7 @@
這些設備通過使用感測器從周圍環境收集數據,或通過控制輸出或執行器進行物理改變來與物理世界互動。典型的例子是一個智能恆溫器——一個具有溫度感測器、設置目標溫度的方式(如旋鈕或觸控螢幕),以及與加熱或冷卻系統連接的設備,當檢測到的溫度超出目標範圍時,系統會啟動。 這些設備通過使用感測器從周圍環境收集數據,或通過控制輸出或執行器進行物理改變來與物理世界互動。典型的例子是一個智能恆溫器——一個具有溫度感測器、設置目標溫度的方式(如旋鈕或觸控螢幕),以及與加熱或冷卻系統連接的設備,當檢測到的溫度超出目標範圍時,系統會啟動。
![一個圖示顯示溫度和旋鈕作為物聯網設備的輸入,並控制加熱器作為輸出](../../../../../translated_images/zh-HK/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.png) ![一個圖示顯示溫度和旋鈕作為物聯網設備的輸入,並控制加熱器作為輸出](../../../../../translated_images/zh-HK/basic-thermostat.a923217fd1f37e5a.webp)
可以作為物聯網設備的物件種類繁多,從專門感測某一項的硬體到通用設備,甚至包括你的智能手機!智能手機可以使用感測器檢測周圍環境,並使用執行器與世界互動——例如,使用 GPS 感測器檢測你的地點,並通過揚聲器提供導航指示。 可以作為物聯網設備的物件種類繁多,從專門感測某一項的硬體到通用設備,甚至包括你的智能手機!智能手機可以使用感測器檢測周圍環境,並使用執行器與世界互動——例如,使用 GPS 感測器檢測你的地點,並通過揚聲器提供導航指示。
@ -54,7 +54,7 @@
以智能恆溫器為例,恆溫器通過家庭 WiFi 連接到雲端服務,將溫度數據發送到該服務,然後數據會被寫入某種數據庫,讓房主可以通過手機應用查看當前和過去的溫度。雲端中的另一個服務會知道房主想要的溫度,並通過雲端服務向物聯網設備發送消息,告訴加熱系統開啟或關閉。 以智能恆溫器為例,恆溫器通過家庭 WiFi 連接到雲端服務,將溫度數據發送到該服務,然後數據會被寫入某種數據庫,讓房主可以通過手機應用查看當前和過去的溫度。雲端中的另一個服務會知道房主想要的溫度,並通過雲端服務向物聯網設備發送消息,告訴加熱系統開啟或關閉。
![一個圖示顯示溫度和旋鈕作為物聯網設備的輸入,物聯網設備與雲端之間有雙向通信,雲端與手機之間也有雙向通信,並控制加熱器作為物聯網設備的輸出](../../../../../translated_images/zh-HK/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.png) ![一個圖示顯示溫度和旋鈕作為物聯網設備的輸入,物聯網設備與雲端之間有雙向通信,雲端與手機之間也有雙向通信,並控制加熱器作為物聯網設備的輸出](../../../../../translated_images/zh-HK/mobile-controlled-thermostat.4a994010473d8d6a.webp)
更智能的版本可以使用雲端的 AI,結合其他物聯網設備(如檢測房間使用情況的佔用感測器)的數據,以及天氣數據甚至你的日曆,來智能地設置溫度。例如,如果從日曆中讀取到你正在度假,它可以關閉加熱;或者根據你使用的房間逐一關閉加熱,並隨著數據的積累變得越來越準確。 更智能的版本可以使用雲端的 AI,結合其他物聯網設備(如檢測房間使用情況的佔用感測器)的數據,以及天氣數據甚至你的日曆,來智能地設置溫度。例如,如果從日曆中讀取到你正在度假,它可以關閉加熱;或者根據你使用的房間逐一關閉加熱,並隨著數據的積累變得越來越準確。
@ -94,7 +94,7 @@ CPU 依賴於時鐘每秒數百萬或數十億次的滴答聲。每次滴答聲
> 💁 CPU 使用 [取指-解碼-執行週期](https://wikipedia.org/wiki/Instruction_cycle) 執行程序。每次時鐘滴答,CPU 會從記憶體中取出下一條指令,解碼它,然後執行它,例如使用算術邏輯單元 (ALU) 來加兩個數字。一些執行可能需要多個滴答聲才能完成,因此下一個週期會在指令完成後的下一次滴答聲運行。 > 💁 CPU 使用 [取指-解碼-執行週期](https://wikipedia.org/wiki/Instruction_cycle) 執行程序。每次時鐘滴答,CPU 會從記憶體中取出下一條指令,解碼它,然後執行它,例如使用算術邏輯單元 (ALU) 來加兩個數字。一些執行可能需要多個滴答聲才能完成,因此下一個週期會在指令完成後的下一次滴答聲運行。
![取指-解碼-執行週期,顯示從存儲在 RAM 中的程序中取指令,然後在 CPU 上解碼並執行](../../../../../translated_images/zh-HK/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.png) ![取指-解碼-執行週期,顯示從存儲在 RAM 中的程序中取指令,然後在 CPU 上解碼並執行](../../../../../translated_images/zh-HK/fetch-decode-execute.2fd6f150f6280392.webp)
微控制器的時鐘速度遠低於桌面或筆記本電腦,甚至大多數智能手機。例如,Wio Terminal 的 CPU 運行速度為 120MHz,即每秒 120,000,000 次週期。 微控制器的時鐘速度遠低於桌面或筆記本電腦,甚至大多數智能手機。例如,Wio Terminal 的 CPU 運行速度為 120MHz,即每秒 120,000,000 次週期。
@ -182,7 +182,7 @@ Arduino 開發板使用 C 或 C++ 編程。使用 C/C++ 可以使程式碼編譯
你可以在 `setup` 函數中編寫初始化程式碼,例如連接 WiFi 和雲服務或初始化輸入和輸出引腳。而在 `loop` 函數中,你可以編寫處理程式碼,例如從感應器讀取數據並將其發送到雲端。通常你會在每次循環中加入延遲,例如,如果你只想每 10 秒發送一次感應器數據,你可以在循環結束時加入 10 秒的延遲,這樣微控制器可以進入休眠狀態以節省電力,然後在需要時 10 秒後再次運行循環。 你可以在 `setup` 函數中編寫初始化程式碼,例如連接 WiFi 和雲服務或初始化輸入和輸出引腳。而在 `loop` 函數中,你可以編寫處理程式碼,例如從感應器讀取數據並將其發送到雲端。通常你會在每次循環中加入延遲,例如,如果你只想每 10 秒發送一次感應器數據,你可以在循環結束時加入 10 秒的延遲,這樣微控制器可以進入休眠狀態以節省電力,然後在需要時 10 秒後再次運行循環。
![Arduino sketch 首先運行 setup,然後不斷重複運行 loop](../../../../../translated_images/zh-HK/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.png) ![Arduino sketch 首先運行 setup,然後不斷重複運行 loop](../../../../../translated_images/zh-HK/arduino-sketch.79590cb837ff7a7c.webp)
✅ 這種程式架構被稱為 *事件循環* 或 *消息循環*。許多應用程式在底層使用這種架構,這也是大多數運行在 Windows、macOS 或 Linux 等操作系統上的桌面應用程式的標準。`loop` 會監聽來自用戶界面元件(如按鈕)或設備(如鍵盤)的消息,並對其作出響應。你可以在這篇 [事件循環的文章](https://wikipedia.org/wiki/Event_loop) 中閱讀更多內容。 ✅ 這種程式架構被稱為 *事件循環* 或 *消息循環*。許多應用程式在底層使用這種架構,這也是大多數運行在 Windows、macOS 或 Linux 等操作系統上的桌面應用程式的標準。`loop` 會監聽來自用戶界面元件(如按鈕)或設備(如鍵盤)的消息,並對其作出響應。你可以在這篇 [事件循環的文章](https://wikipedia.org/wiki/Event_loop) 中閱讀更多內容。

@ -1,6 +1,6 @@
# 使用感應器和致動器與物理世界互動 # 使用感應器和致動器與物理世界互動
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-3.cc3b7b4cd646de59.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -92,7 +92,7 @@ IoT 設備是數字化的——它們無法處理模擬值,只能處理 0 和
最簡單的數字感應器是一個按鈕或開關。這是一個只有兩種狀態的感應器,開或關。 最簡單的數字感應器是一個按鈕或開關。這是一個只有兩種狀態的感應器,開或關。
![一個按鈕接收 5 伏特。未按下時返回 0 伏特,按下時返回 5 伏特](../../../../../translated_images/zh-HK/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.png) ![一個按鈕接收 5 伏特。未按下時返回 0 伏特,按下時返回 5 伏特](../../../../../translated_images/zh-HK/button.eadb560b77ac45e5.webp)
IoT 設備上的引腳(例如 GPIO 引腳)可以直接測量此信號作為 0 或 1。如果發送的電壓與返回的電壓相同,則讀取的值為 1,否則讀取的值為 0。無需轉換信號,它只能是 1 或 0。 IoT 設備上的引腳(例如 GPIO 引腳)可以直接測量此信號作為 0 或 1。如果發送的電壓與返回的電壓相同,則讀取的值為 1,否則讀取的值為 0。無需轉換信號,它只能是 1 或 0。
@ -125,7 +125,7 @@ IoT 設備上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
按照以下相關指南,為您的 IoT 設備添加致動器,並由感應器控制,以構建 IoT 夜燈。它將從光感應器收集光線強度,並使用 LED 作為致動器,在檢測到的光線強度過低時發出光。 按照以下相關指南,為您的 IoT 設備添加致動器,並由感應器控制,以構建 IoT 夜燈。它將從光感應器收集光線強度,並使用 LED 作為致動器,在檢測到的光線強度過低時發出光。
![任務的流程圖,顯示光線強度的讀取和檢查,以及 LED 的控制](../../../../../translated_images/zh-HK/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.png) ![任務的流程圖,顯示光線強度的讀取和檢查,以及 LED 的控制](../../../../../translated_images/zh-HK/assignment-1-flow.7552a51acb1a5ec8.webp)
* [Arduino - Wio Terminal](wio-terminal-actuator.md) * [Arduino - Wio Terminal](wio-terminal-actuator.md)
* [單板電腦 - Raspberry Pi](pi-actuator.md) * [單板電腦 - Raspberry Pi](pi-actuator.md)
@ -140,7 +140,7 @@ IoT 設備上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
模擬致動器接收模擬信號並將其轉換為某種交互,交互根據提供的電壓而改變。 模擬致動器接收模擬信號並將其轉換為某種交互,交互根據提供的電壓而改變。
一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了它的亮度。 一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了它的亮度。
![在低電壓下光線較暗,在高電壓下光線較亮](../../../../../translated_images/zh-HK/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.png) ![在低電壓下光線較暗,在高電壓下光線較亮](../../../../../translated_images/zh-HK/dimmable-light.9ceffeb195dec1a8.webp)
就像感應器一樣,實際的物聯網裝置是基於數碼信號運作的,而不是模擬信號。這意味著,若要傳送模擬信號,物聯網裝置需要一個數碼轉模擬轉換器(DAC),這個轉換器可以直接內建於物聯網裝置中,或者安裝在連接板上。這樣可以將物聯網裝置的0和1轉換成致動器可以使用的模擬電壓。 就像感應器一樣,實際的物聯網裝置是基於數碼信號運作的,而不是模擬信號。這意味著,若要傳送模擬信號,物聯網裝置需要一個數碼轉模擬轉換器(DAC),這個轉換器可以直接內建於物聯網裝置中,或者安裝在連接板上。這樣可以將物聯網裝置的0和1轉換成致動器可以使用的模擬電壓。
@ -187,7 +187,7 @@ IoT 設備上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
一個簡單的數碼致動器是LED。當裝置傳送數碼信號1時,會傳送高電壓以點亮LED。當傳送數碼信號0時,電壓降至0V,LED熄滅。 一個簡單的數碼致動器是LED。當裝置傳送數碼信號1時,會傳送高電壓以點亮LED。當傳送數碼信號0時,電壓降至0V,LED熄滅。
![LED在0伏特時熄滅,在5伏特時點亮](../../../../../translated_images/zh-HK/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.png) ![LED在0伏特時熄滅,在5伏特時點亮](../../../../../translated_images/zh-HK/led.ec6d94f66676a174.webp)
✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門閂以鎖定/解鎖門的操作。 ✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門閂以鎖定/解鎖門的操作。

@ -26,7 +26,7 @@ Grove LED 是一個模塊,包含多種顏色的 LED,讓你可以選擇喜歡
連接 LED。 連接 LED。
![一個 Grove LED](../../../../../translated_images/zh-HK/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.png) ![一個 Grove LED](../../../../../translated_images/zh-HK/grove-led.6c853be93f473cf2.webp)
1. 選擇你喜歡的 LED,並將 LED 的腳插入 LED 模塊上的兩個孔中。 1. 選擇你喜歡的 LED,並將 LED 的腳插入 LED 模塊上的兩個孔中。
@ -40,7 +40,7 @@ Grove LED 是一個模塊,包含多種顏色的 LED,讓你可以選擇喜歡
1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **D5** 的數字插座。這個插座位於 GPIO 插針旁邊的一排插座中,從左數第二個。 1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **D5** 的數字插座。這個插座位於 GPIO 插針旁邊的一排插座中,從左數第二個。
![Grove LED 連接到 D5 插座](../../../../../translated_images/zh-HK/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.png) ![Grove LED 連接到 D5 插座](../../../../../translated_images/zh-HK/pi-led.97f1d474981dc35d.webp)
## 編程夜燈 ## 編程夜燈

@ -16,13 +16,13 @@
連接光線感測器 連接光線感測器
![Grove 光線感測器](../../../../../translated_images/zh-HK/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.png) ![Grove 光線感測器](../../../../../translated_images/zh-HK/grove-light-sensor.b8127b7c434e632d.webp)
1. 將 Grove 電纜的一端插入光線感測器模組上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入光線感測器模組上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **A0** 的類比插座。此插座位於 GPIO 插針旁邊插座排的右數第二個。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **A0** 的類比插座。此插座位於 GPIO 插針旁邊插座排的右數第二個。
![Grove 光線感測器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.png) ![Grove 光線感測器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-light-sensor.66cc1e31fa48cd7d.webp)
## 程式設計光線感測器 ## 程式設計光線感測器

@ -36,11 +36,11 @@ Otherwise
1. 選擇 **Add** 按鈕,在 Pin 5 上創建 LED。 1. 選擇 **Add** 按鈕,在 Pin 5 上創建 LED。
![LED 設置](../../../../../translated_images/zh-HK/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.png) ![LED 設置](../../../../../translated_images/zh-HK/counterfit-create-led.ba9db1c9b8c622a6.webp)
LED 將被創建並顯示在執行器列表中。 LED 將被創建並顯示在執行器列表中。
![已創建的 LED](../../../../../translated_images/zh-HK/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.png) ![已創建的 LED](../../../../../translated_images/zh-HK/counterfit-led.c0ab02de6d256ad8.webp)
LED 創建後,你可以使用 *Color* 選擇器更改顏色。選擇顏色後,點擊 **Set** 按鈕即可更改顏色。 LED 創建後,你可以使用 *Color* 選擇器更改顏色。選擇顏色後,點擊 **Set** 按鈕即可更改顏色。

@ -28,11 +28,11 @@
1. 點擊 **Add** 按鈕,在 Pin 0 上創建光線感應器。 1. 點擊 **Add** 按鈕,在 Pin 0 上創建光線感應器。
![光線感應器設置](../../../../../translated_images/zh-HK/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.png) ![光線感應器設置](../../../../../translated_images/zh-HK/counterfit-create-light-sensor.9f36a5e0d4458d8d.webp)
光線感應器將被創建並顯示在感應器列表中。 光線感應器將被創建並顯示在感應器列表中。
![已創建的光線感應器](../../../../../translated_images/zh-HK/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.png) ![已創建的光線感應器](../../../../../translated_images/zh-HK/counterfit-light-sensor.5d0f5584df56b90f.webp)
## 編程光線感應器 ## 編程光線感應器

@ -26,7 +26,7 @@ Grove LED 是一個模組,內含多種顏色的 LED,讓你可以選擇喜歡
連接 LED。 連接 LED。
![一個 Grove LED](../../../../../translated_images/zh-HK/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.png) ![一個 Grove LED](../../../../../translated_images/zh-HK/grove-led.6c853be93f473cf2.webp)
1. 選擇你喜歡的 LED,將其引腳插入 LED 模組上的兩個孔中。 1. 選擇你喜歡的 LED,將其引腳插入 LED 模組上的兩個孔中。

@ -1,6 +1,6 @@
# 將你的設備連接到互聯網 # 將你的設備連接到互聯網
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-4.7344e074ea68fa54.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大的版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大的版本。
@ -47,7 +47,7 @@ MQTT 是 IoT 設備最流行的通信協議,本課程將介紹它。其他協
MQTT 有一個單一代理和多個客戶端。所有客戶端都連接到代理,代理根據需要將消息路由到相關客戶端。消息是通過命名主題進行路由,而不是直接發送到個別客戶端。客戶端可以發布到某個主題,任何訂閱該主題的客戶端都會接收到消息。 MQTT 有一個單一代理和多個客戶端。所有客戶端都連接到代理,代理根據需要將消息路由到相關客戶端。消息是通過命名主題進行路由,而不是直接發送到個別客戶端。客戶端可以發布到某個主題,任何訂閱該主題的客戶端都會接收到消息。
![IoT 設備在 /telemetry 主題上發布遙測數據,雲端服務訂閱該主題](../../../../../translated_images/zh-HK/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.png) ![IoT 設備在 /telemetry 主題上發布遙測數據,雲端服務訂閱該主題](../../../../../translated_images/zh-HK/mqtt.cbf7f21d9adc3e17.webp)
✅ 做一些研究。如果你有大量 IoT 設備,如何確保你的 MQTT 代理能處理所有消息? ✅ 做一些研究。如果你有大量 IoT 設備,如何確保你的 MQTT 代理能處理所有消息?
@ -69,7 +69,7 @@ MQTT 有一個單一代理和多個客戶端。所有客戶端都連接到代理
> 💁 該測試代理是公開且不安全的。任何人都可以監聽你發布的內容,因此不應用於需要保密的數據。 > 💁 該測試代理是公開且不安全的。任何人都可以監聽你發布的內容,因此不應用於需要保密的數據。
![作業的流程圖,顯示光線水平被讀取和檢查,LED 被控制](../../../../../translated_images/zh-HK/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.png) ![作業的流程圖,顯示光線水平被讀取和檢查,LED 被控制](../../../../../translated_images/zh-HK/assignment-1-internet-flow.3256feab5f052fd2.webp)
按照以下相關步驟將你的設備連接到 MQTT 代理: 按照以下相關步驟將你的設備連接到 MQTT 代理:
@ -350,7 +350,7 @@ Python 的一個強大功能是能夠安裝 [pip 套件](https://pypi.org)——
IoT 設備設計者還應考慮 IoT 設備在互聯網中斷或因位置導致信號丟失時是否仍能使用。一個智能溫控器應該能在無法向雲端發送遙測數據的情況下做出有限的決策來控制加熱。 IoT 設備設計者還應考慮 IoT 設備在互聯網中斷或因位置導致信號丟失時是否仍能使用。一個智能溫控器應該能在無法向雲端發送遙測數據的情況下做出有限的決策來控制加熱。
[![這輛法拉利因為有人在地下無信號的地方嘗試升級而被鎖死](../../../../../translated_images/zh-HK/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.png)](https://twitter.com/internetofshit/status/1315736960082808832) [![這輛法拉利因為有人在地下無信號的地方嘗試升級而被鎖死](../../../../../translated_images/zh-HK/bricked-car.dc38f8efadc6c59d.webp)](https://twitter.com/internetofshit/status/1315736960082808832)
為了讓 MQTT 處理連接中斷,設備和伺服器代碼需要負責確保消息的交付(如果需要),例如要求所有發送的消息都通過回覆主題上的額外消息進行回覆,如果沒有回覆則手動排隊以便稍後重播。 為了讓 MQTT 處理連接中斷,設備和伺服器代碼需要負責確保消息的交付(如果需要),例如要求所有發送的消息都通過回覆主題上的額外消息進行回覆,如果沒有回覆則手動排隊以便稍後重播。
@ -358,7 +358,7 @@ IoT 設備設計者還應考慮 IoT 設備在互聯網中斷或因位置導致
命令是由雲端發送到設備的消息,指示設備執行某些操作。大多數情況下,這涉及通過執行器輸出某些內容,但也可以是設備本身的指令,例如重啟或收集額外的遙測數據並將其作為命令的回應返回。 命令是由雲端發送到設備的消息,指示設備執行某些操作。大多數情況下,這涉及通過執行器輸出某些內容,但也可以是設備本身的指令,例如重啟或收集額外的遙測數據並將其作為命令的回應返回。
![一個連接到互聯網的溫控器接收到開啟加熱的命令](../../../../../translated_images/zh-HK/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.png) ![一個連接到互聯網的溫控器接收到開啟加熱的命令](../../../../../translated_images/zh-HK/commands.d6c06bbbb3a02cce.webp)
例如,溫控器可以接收到來自雲端的命令以開啟加熱。根據所有傳感器的遙測數據,如果雲服務決定加熱應該開啟,它就會發送相關命令。 例如,溫控器可以接收到來自雲端的命令以開啟加熱。根據所有傳感器的遙測數據,如果雲服務決定加熱應該開啟,它就會發送相關命令。

@ -1,6 +1,6 @@
# 使用物聯網預測植物生長 # 使用物聯網預測植物生長
![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.jpg) ![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-5.42b234299279d263.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -90,7 +90,7 @@
完整的 GDD 計算公式有點複雜,但通常使用簡化公式作為良好的近似值: 完整的 GDD 計算公式有點複雜,但通常使用簡化公式作為良好的近似值:
![GDD = T max + T min 除以 2,然後減去 T base](../../../../../translated_images/zh-HK/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.png) ![GDD = T max + T min 除以 2,然後減去 T base](../../../../../translated_images/zh-HK/gdd-calculation.79b3660f9c5757aa.webp)
* **GDD** - 這是生長度日的數量 * **GDD** - 這是生長度日的數量
* **T max** - 這是每日最高溫度(攝氏度) * **T max** - 這是每日最高溫度(攝氏度)
@ -118,7 +118,7 @@
計算結果為: 計算結果為:
![GDD = 16 + 12 除以 2,然後減去 10,結果為 4](../../../../../translated_images/zh-HK/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.png) ![GDD = 16 + 12 除以 2,然後減去 10,結果為 4](../../../../../translated_images/zh-HK/gdd-calculation-corn.64a58b7a7afcd0df.webp)
玉米在那一天獲得了 4 GDD。假設一種需要 800 GDD 才能成熟的玉米品種,它還需要 796 GDD 才能達到成熟。 玉米在那一天獲得了 4 GDD。假設一種需要 800 GDD 才能成熟的玉米品種,它還需要 796 GDD 才能達到成熟。
@ -239,7 +239,7 @@ CSV 文件將有兩列——*日期* 和 *溫度*。*日期* 列設置為服務
例如,如果當天的最高溫度是 25°C,最低溫度是 12°C: 例如,如果當天的最高溫度是 25°C,最低溫度是 12°C:
![GDD = 25 + 12 除以 2,然後從結果中減去 10,得到 8.5](../../../../../translated_images/zh-HK/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.png) ![GDD = 25 + 12 除以 2,然後從結果中減去 10,得到 8.5](../../../../../translated_images/zh-HK/gdd-calculation-strawberries.59f57db94b22adb8.webp)
* 25 + 12 = 37 * 25 + 12 = 37
* 37 / 2 = 18.5 * 37 / 2 = 18.5

@ -33,7 +33,7 @@
Jupyter 會啟動並在你的瀏覽器中打開 Notebook。按照 Notebook 中的指引逐步操作,視覺化測量的溫度並計算生長度日。 Jupyter 會啟動並在你的瀏覽器中打開 Notebook。按照 Notebook 中的指引逐步操作,視覺化測量的溫度並計算生長度日。
![Jupyter Notebook](../../../../../translated_images/zh-HK/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.png) ![Jupyter Notebook](../../../../../translated_images/zh-HK/gdd-jupyter-notebook.c5b52cf21094f158.webp)
## 評分標準 ## 評分標準

@ -16,13 +16,13 @@ Grove 溫度感應器可以連接到 Raspberry Pi。
連接溫度感應器 連接溫度感應器
![Grove 溫度感應器](../../../../../translated_images/zh-HK/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.png) ![Grove 溫度感應器](../../../../../translated_images/zh-HK/grove-dht11.07f8eafceee17004.webp)
1. 將 Grove 電纜的一端插入濕度和溫度感應器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入濕度和溫度感應器上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base hat 的數字插座 **D5**。此插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。 1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base hat 的數字插座 **D5**。此插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。
![Grove 溫度感應器連接到插座 A0](../../../../../translated_images/zh-HK/pi-temperature-sensor.3ff82fff672c8e565ef25a39d26d111de006b825a7e0867227ef4e7fbff8553c.png) ![Grove 溫度感應器連接到插座 A0](../../../../../translated_images/zh-HK/pi-temperature-sensor.3ff82fff672c8e56.webp)
## 編程溫度感應器 ## 編程溫度感應器

@ -38,11 +38,11 @@
1. 點擊 **Add** 按鈕,在 Pin 5 上創建濕度感應器。 1. 點擊 **Add** 按鈕,在 Pin 5 上創建濕度感應器。
![濕度感應器設置](../../../../../translated_images/zh-HK/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.png) ![濕度感應器設置](../../../../../translated_images/zh-HK/counterfit-create-humidity-sensor.2750e27b6f30e09c.webp)
濕度感應器將被創建並顯示在感應器列表中。 濕度感應器將被創建並顯示在感應器列表中。
![濕度感應器已創建](../../../../../translated_images/zh-HK/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.png) ![濕度感應器已創建](../../../../../translated_images/zh-HK/counterfit-humidity-sensor.7b12f7f339e430cb.webp)
1. 創建溫度感應器: 1. 創建溫度感應器:
@ -54,11 +54,11 @@
1. 點擊 **Add** 按鈕,在 Pin 6 上創建溫度感應器。 1. 點擊 **Add** 按鈕,在 Pin 6 上創建溫度感應器。
![溫度感應器設置](../../../../../translated_images/zh-HK/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.png) ![溫度感應器設置](../../../../../translated_images/zh-HK/counterfit-create-temperature-sensor.199350ed34f7343d.webp)
溫度感應器將被創建並顯示在感應器列表中。 溫度感應器將被創建並顯示在感應器列表中。
![溫度感應器已創建](../../../../../translated_images/zh-HK/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.png) ![溫度感應器已創建](../../../../../translated_images/zh-HK/counterfit-temperature-sensor.f0560236c96a9016.webp)
## 編寫溫度感應器應用 ## 編寫溫度感應器應用

@ -18,7 +18,7 @@ Grove 溫度感應器可以連接到 Wio Terminal 的數字端口。
連接溫度感應器。 連接溫度感應器。
![Grove 溫度感應器](../../../../../translated_images/zh-HK/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.png) ![Grove 溫度感應器](../../../../../translated_images/zh-HK/grove-dht11.07f8eafceee17004.webp)
1. 將 Grove 電纜的一端插入濕度和溫度感應器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入濕度和溫度感應器上的插座。它只能以一種方式插入。

@ -20,14 +20,14 @@
重力土壤濕度的計算公式為: 重力土壤濕度的計算公式為:
![土壤濕度百分比等於濕土重量減去乾土重量,除以乾土重量,再乘以100](../../../../../translated_images/zh-HK/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.png) ![土壤濕度百分比等於濕土重量減去乾土重量,除以乾土重量,再乘以100](../../../../../translated_images/zh-HK/gsm-calculation.6da38c6201eec14e.webp)
* W - 濕土的重量 * W - 濕土的重量
* W - 乾土的重量 * W - 乾土的重量
例如,假設你有一份土壤樣本,濕重為212克,乾重為197克。 例如,假設你有一份土壤樣本,濕重為212克,乾重為197克。
![填入計算公式的例子](../../../../../translated_images/zh-HK/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.png) ![填入計算公式的例子](../../../../../translated_images/zh-HK/gsm-calculation-example.99f9803b4f29e976.webp)
* W = 212克 * W = 212克
* W = 197克 * W = 197克

@ -18,13 +18,13 @@ Grove 土壤濕度傳感器可以連接到 Raspberry Pi。
連接土壤濕度傳感器。 連接土壤濕度傳感器。
![Grove 土壤濕度傳感器](../../../../../translated_images/zh-HK/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.png) ![Grove 土壤濕度傳感器](../../../../../translated_images/zh-HK/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78b.webp)
1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的模擬插座 **A0**。該插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的模擬插座 **A0**。該插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。
![Grove 土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.png) ![Grove 土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-soil-moisture-sensor.fdd7eb2393792cf6.webp)
1. 將土壤濕度傳感器插入土壤中。傳感器上有一條“最高位置線”——一條白線。將傳感器插入土壤,直到但不超過這條線。 1. 將土壤濕度傳感器插入土壤中。傳感器上有一條“最高位置線”——一條白線。將傳感器插入土壤,直到但不超過這條線。

@ -34,11 +34,11 @@
1. 點擊 **Add** 按鈕,在 Pin 0 上創建 *Soil Moisture* 傳感器。 1. 點擊 **Add** 按鈕,在 Pin 0 上創建 *Soil Moisture* 傳感器。
![土壤濕度傳感器設置](../../../../../translated_images/zh-HK/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.png) ![土壤濕度傳感器設置](../../../../../translated_images/zh-HK/counterfit-create-soil-moisture-sensor.35266135a5e0ae68.webp)
土壤濕度傳感器將被創建並顯示在傳感器列表中。 土壤濕度傳感器將被創建並顯示在傳感器列表中。
![已創建的土壤濕度傳感器](../../../../../translated_images/zh-HK/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.png) ![已創建的土壤濕度傳感器](../../../../../translated_images/zh-HK/counterfit-soil-moisture-sensor.81742b2de0e9de60.webp)
## 編程土壤濕度傳感器應用 ## 編程土壤濕度傳感器應用

@ -18,7 +18,7 @@ Grove 土壤濕度傳感器可以連接到 Wio Terminal 的可配置模擬/數
連接土壤濕度傳感器。 連接土壤濕度傳感器。
![Grove 土壤濕度傳感器](../../../../../translated_images/zh-HK/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.png) ![Grove 土壤濕度傳感器](../../../../../translated_images/zh-HK/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78b.webp)
1. 將 Grove 電纜的一端插入土壤濕度傳感器的插座中。電纜只能以一種方式插入。 1. 將 Grove 電纜的一端插入土壤濕度傳感器的插座中。電纜只能以一種方式插入。

@ -1,6 +1,6 @@
# 自動化植物灌溉 # 自動化植物灌溉
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-7.30b5f577d3cb8e03.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -32,7 +32,7 @@ IoT 設備使用低電壓。雖然這足以驅動感測器和像 LED 這樣的
解決方案是將水泵連接到外部電源,並使用執行器來開啟或關閉水泵,就像你用手指打開燈一樣。用手指翻動開關只需要很少的能量(來自你的身體),而這個動作會將燈連接到 110V/240V 的市電。 解決方案是將水泵連接到外部電源,並使用執行器來開啟或關閉水泵,就像你用手指打開燈一樣。用手指翻動開關只需要很少的能量(來自你的身體),而這個動作會將燈連接到 110V/240V 的市電。
![一個燈開關打開燈的電源](../../../../../translated_images/zh-HK/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.png) ![一個燈開關打開燈的電源](../../../../../translated_images/zh-HK/light-switch.760317ad6ab8bd6d.webp)
> 🎓 [市電](https://wikipedia.org/wiki/Mains_electricity) 是指通過國家基礎設施輸送到家庭和企業的電力,在世界許多地方都很常見。 > 🎓 [市電](https://wikipedia.org/wiki/Mains_electricity) 是指通過國家基礎設施輸送到家庭和企業的電力,在世界許多地方都很常見。
@ -72,7 +72,7 @@ IoT 設備使用低電壓。雖然這足以驅動感測器和像 LED 這樣的
電磁鐵啟動並拉動槓桿所需的功率很小,可以使用 IoT 開發板的 3.3V 或 5V 輸出來控制。輸出電路則可以承載更多的功率,具體取決於繼電器,包括市電電壓甚至更高的工業用電壓。這樣,IoT 開發板可以控制灌溉系統,從單株植物的小型水泵到整個商業農場的大型工業系統。 電磁鐵啟動並拉動槓桿所需的功率很小,可以使用 IoT 開發板的 3.3V 或 5V 輸出來控制。輸出電路則可以承載更多的功率,具體取決於繼電器,包括市電電壓甚至更高的工業用電壓。這樣,IoT 開發板可以控制灌溉系統,從單株植物的小型水泵到整個商業農場的大型工業系統。
![一個 Grove 繼電器,標註了控制電路、輸出電路和繼電器](../../../../../translated_images/zh-HK/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.png) ![一個 Grove 繼電器,標註了控制電路、輸出電路和繼電器](../../../../../translated_images/zh-HK/grove-relay-labelled.293e068f5c3c2a19.webp)
上圖顯示了一個 Grove 繼電器。控制電路連接到 IoT 設備,使用 3.3V 或 5V 打開或關閉繼電器。輸出電路有兩個端子,任一端都可以是電源或接地。輸出電路可以處理高達 250V、10A 的電流,足以驅動一系列市電設備。你還可以找到能處理更高功率的繼電器。 上圖顯示了一個 Grove 繼電器。控制電路連接到 IoT 設備,使用 3.3V 或 5V 打開或關閉繼電器。輸出電路有兩個端子,任一端都可以是電源或接地。輸出電路可以處理高達 250V、10A 的電流,足以驅動一系列市電設備。你還可以找到能處理更高功率的繼電器。

@ -18,13 +18,13 @@ Grove 繼電器可以連接到 Raspberry Pi。
連接繼電器。 連接繼電器。
![Grove 繼電器](../../../../../translated_images/zh-HK/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.png) ![Grove 繼電器](../../../../../translated_images/zh-HK/grove-relay.d426958ca210fbd0.webp)
1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的數字插座 **D5**。此插座位於 GPIO 插腳旁邊插座行的第二個位置。保持土壤濕度感測器連接到 **A0** 插座。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的數字插座 **D5**。此插座位於 GPIO 插腳旁邊插座行的第二個位置。保持土壤濕度感測器連接到 **A0** 插座。
![Grove 繼電器連接到 D5 插座,土壤濕度感測器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.png) ![Grove 繼電器連接到 D5 插座,土壤濕度感測器連接到 A0 插座](../../../../../translated_images/zh-HK/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e.webp)
1. 如果土壤濕度感測器尚未插入土壤,請將其插入土壤中(從上一課程中)。 1. 如果土壤濕度感測器尚未插入土壤,請將其插入土壤中(從上一課程中)。

@ -28,11 +28,11 @@
1. 點擊 **Add** 按鈕,在 Pin 5 上創建繼電器。 1. 點擊 **Add** 按鈕,在 Pin 5 上創建繼電器。
![繼電器設置](../../../../../translated_images/zh-HK/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.png) ![繼電器設置](../../../../../translated_images/zh-HK/counterfit-create-relay.fa7c40fd0f2f6afc.webp)
繼電器將被創建並顯示在 Actuators 列表中。 繼電器將被創建並顯示在 Actuators 列表中。
![已創建的繼電器](../../../../../translated_images/zh-HK/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.png) ![已創建的繼電器](../../../../../translated_images/zh-HK/counterfit-relay.bbf74c1dbdc8b9ac.webp)
## 編程繼電器 ## 編程繼電器

@ -18,7 +18,7 @@ Grove 繼電器可以連接到 Wio Terminal 的數字端口。
連接繼電器。 連接繼電器。
![Grove 繼電器](../../../../../translated_images/zh-HK/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.png) ![Grove 繼電器](../../../../../translated_images/zh-HK/grove-relay.d426958ca210fbd0.webp)
1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。

@ -1,6 +1,6 @@
# 將你的植物遷移到雲端 # 將你的植物遷移到雲端
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-8.3f21f3c11159e6a0.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -46,8 +46,8 @@ IoT 設備通過公共 MQTT broker 進行通信,這是一種展示原理的方
雲端經常被戲稱為「別人的電腦」。最初的想法很簡單——與其購買電腦,不如租用別人的電腦。雲計算提供商會管理大型數據中心,負責購買和安裝硬件,管理電力和冷卻、網絡連接、建築安全、硬件和軟件更新等所有事情。作為客戶,你只需租用所需的電腦,需求增加時租用更多,需求減少時減少租用數量。這些雲端數據中心遍布全球。 雲端經常被戲稱為「別人的電腦」。最初的想法很簡單——與其購買電腦,不如租用別人的電腦。雲計算提供商會管理大型數據中心,負責購買和安裝硬件,管理電力和冷卻、網絡連接、建築安全、硬件和軟件更新等所有事情。作為客戶,你只需租用所需的電腦,需求增加時租用更多,需求減少時減少租用數量。這些雲端數據中心遍布全球。
![一個 Microsoft 雲端數據中心](../../../../../translated_images/zh-HK/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.png) ![一個 Microsoft 雲端數據中心](../../../../../translated_images/zh-HK/azure-region-existing.73f704604f2aa6cb.webp)
![一個 Microsoft 雲端數據中心的擴建計劃](../../../../../translated_images/zh-HK/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.png) ![一個 Microsoft 雲端數據中心的擴建計劃](../../../../../translated_images/zh-HK/azure-region-planned-expansion.a5074a1e8af74f15.webp)
這些數據中心的面積可以達到數平方公里。上圖是幾年前拍攝的 Microsoft 雲端數據中心,展示了初始規模以及擴建計劃。擴建所清理的區域超過 5 平方公里。 這些數據中心的面積可以達到數平方公里。上圖是幾年前拍攝的 Microsoft 雲端數據中心,展示了初始規模以及擴建計劃。擴建所清理的區域超過 5 平方公里。
@ -108,11 +108,11 @@ Azure 提供兩種類型的免費訂閱:
IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或直接使用通信協議(如 MQTT 或 HTTP)連接到雲服務。設備 SDK 通常是最簡單的路徑,因為它處理了所有細節,例如知道要發布或訂閱的主題,以及如何處理安全性。 IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或直接使用通信協議(如 MQTT 或 HTTP)連接到雲服務。設備 SDK 通常是最簡單的路徑,因為它處理了所有細節,例如知道要發布或訂閱的主題,以及如何處理安全性。
![設備通過設備 SDK 連接到服務。伺服器代碼也通過 SDK 連接到服務](../../../../../translated_images/zh-HK/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.png) ![設備通過設備 SDK 連接到服務。伺服器代碼也通過 SDK 連接到服務](../../../../../translated_images/zh-HK/iot-service-connectivity.7e873847921a5d6f.webp)
你的設備然後通過該服務與應用程序的其他部分通信——類似於你之前通過 MQTT 發送遙測數據和接收命令的方式。這通常使用服務 SDK 或類似的庫。消息從設備發送到服務,應用程序的其他組件可以讀取這些消息,並將消息發送回設備。 你的設備然後通過該服務與應用程序的其他部分通信——類似於你之前通過 MQTT 發送遙測數據和接收命令的方式。這通常使用服務 SDK 或類似的庫。消息從設備發送到服務,應用程序的其他組件可以讀取這些消息,並將消息發送回設備。
![沒有有效密鑰的設備無法連接到 IoT 服務](../../../../../translated_images/zh-HK/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.png) ![沒有有效密鑰的設備無法連接到 IoT 服務](../../../../../translated_images/zh-HK/iot-service-allowed-denied-connection.818b0063ac213fb8.webp)
這些服務通過了解所有可以連接並發送數據的設備來實現安全性,這可以通過預先註冊設備或為設備提供密鑰或證書來完成,設備在首次連接時使用這些密鑰或證書進行註冊。未知設備無法連接,如果嘗試連接,服務會拒絕並忽略其發送的消息。 這些服務通過了解所有可以連接並發送數據的設備來實現安全性,這可以通過預先註冊設備或為設備提供密鑰或證書來完成,設備在首次連接時使用這些密鑰或證書進行註冊。未知設備無法連接,如果嘗試連接,服務會拒絕並忽略其發送的消息。
@ -124,7 +124,7 @@ IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或
現在你已擁有 Azure 訂閱,可以註冊一個 IoT 服務。Microsoft 的 IoT 服務叫做 Azure IoT Hub。 現在你已擁有 Azure 訂閱,可以註冊一個 IoT 服務。Microsoft 的 IoT 服務叫做 Azure IoT Hub。
![Azure IoT Hub 標誌](../../../../../translated_images/zh-HK/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.png) ![Azure IoT Hub 標誌](../../../../../translated_images/zh-HK/azure-iot-hub-logo.28a19de76d0a1932.webp)
以下影片簡要介紹了 Azure IoT Hub: 以下影片簡要介紹了 Azure IoT Hub:

@ -1,6 +1,6 @@
# 將應用程式邏輯遷移到雲端 # 將應用程式邏輯遷移到雲端
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-9.dfe99c8e891f48e1.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -28,7 +28,7 @@
無伺服器(或無伺服器計算)是指創建小型代碼塊,這些代碼塊會在雲端中根據不同類型的事件執行。當事件發生時,您的代碼會被執行,並接收有關該事件的數據。這些事件可以來自多種來源,包括網頁請求、放入佇列的消息、數據庫中數據的更改,或者 IoT 裝置發送到 IoT 服務的消息。 無伺服器(或無伺服器計算)是指創建小型代碼塊,這些代碼塊會在雲端中根據不同類型的事件執行。當事件發生時,您的代碼會被執行,並接收有關該事件的數據。這些事件可以來自多種來源,包括網頁請求、放入佇列的消息、數據庫中數據的更改,或者 IoT 裝置發送到 IoT 服務的消息。
![事件從 IoT 服務發送到無伺服器服務,所有事件同時由多個函數處理](../../../../../translated_images/zh-HK/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.png) ![事件從 IoT 服務發送到無伺服器服務,所有事件同時由多個函數處理](../../../../../translated_images/zh-HK/iot-messages-to-serverless.0194da1cc0732bb7.webp)
> 💁 如果您之前使用過數據庫觸發器,可以將其視為類似的概念,即代碼因事件(如插入一行)而觸發。 > 💁 如果您之前使用過數據庫觸發器,可以將其視為類似的概念,即代碼因事件(如插入一行)而觸發。
@ -54,7 +54,7 @@
Microsoft 的無伺服器計算服務稱為 Azure Functions。 Microsoft 的無伺服器計算服務稱為 Azure Functions。
![Azure Functions 標誌](../../../../../translated_images/zh-HK/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.png) ![Azure Functions 標誌](../../../../../translated_images/zh-HK/azure-functions-logo.1cfc8e3204c9c44a.webp)
以下的短視頻提供了 Azure Functions 的概覽: 以下的短視頻提供了 Azure Functions 的概覽:

@ -1,6 +1,6 @@
# 保護你的植物安全 # 保護你的植物安全
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-10.829c86b80b9403bb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大的版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大的版本。
@ -52,11 +52,11 @@
當設備連接到物聯網服務時,它會使用一個ID來識別自己。問題是這個ID可能會被克隆——黑客可以設置一個惡意設備,使用與真實設備相同的ID,但發送虛假數據。 當設備連接到物聯網服務時,它會使用一個ID來識別自己。問題是這個ID可能會被克隆——黑客可以設置一個惡意設備,使用與真實設備相同的ID,但發送虛假數據。
![有效設備和惡意設備可能使用相同的ID發送遙測數據](../../../../../translated_images/zh-HK/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.png) ![有效設備和惡意設備可能使用相同的ID發送遙測數據](../../../../../translated_images/zh-HK/iot-device-and-hacked-device-connecting.e0671675df74d6d9.webp)
解決方法是將發送的數據轉換為一種加密格式,使用設備和雲端都知道的一個值來加密數據。這個過程稱為*加密*,用於加密數據的值稱為*加密密鑰*。 解決方法是將發送的數據轉換為一種加密格式,使用設備和雲端都知道的一個值來加密數據。這個過程稱為*加密*,用於加密數據的值稱為*加密密鑰*。
![如果使用加密,則只有加密的消息會被接受,其他消息會被拒絕](../../../../../translated_images/zh-HK/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.png) ![如果使用加密,則只有加密的消息會被接受,其他消息會被拒絕](../../../../../translated_images/zh-HK/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f.webp)
雲端服務可以使用一個過程將數據轉換回可讀格式,這個過程稱為*解密*,使用相同的加密密鑰或一個*解密密鑰*。如果加密的消息無法通過密鑰解密,則表明設備已被攻擊,消息會被拒絕。 雲端服務可以使用一個過程將數據轉換回可讀格式,這個過程稱為*解密*,使用相同的加密密鑰或一個*解密密鑰*。如果加密的消息無法通過密鑰解密,則表明設備已被攻擊,消息會被拒絕。

@ -1,6 +1,6 @@
# 位置追蹤 # 位置追蹤
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-11.9fddbac4b664c6d5.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -63,13 +63,13 @@
> 💁 沒有人真正知道為什麼圓被分為 360 度。[維基百科上的角度頁面](https://wikipedia.org/wiki/Degree_(angle))介紹了一些可能的原因。 > 💁 沒有人真正知道為什麼圓被分為 360 度。[維基百科上的角度頁面](https://wikipedia.org/wiki/Degree_(angle))介紹了一些可能的原因。
![緯度線從北極的 90°,到赤道的 0°,再到南極的 -90°](../../../../../translated_images/zh-HK/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.png) ![緯度線從北極的 90°,到赤道的 0°,再到南極的 -90°](../../../../../translated_images/zh-HK/latitude-lines.11d8d91dfb2014a5.webp)
緯度是通過圍繞地球並與赤道平行的線來測量的,將北半球和南半球分為各 90°。赤道為 0°,北極為 90°,也稱為北緯 90°,南極為 -90°,或南緯 90°。 緯度是通過圍繞地球並與赤道平行的線來測量的,將北半球和南半球分為各 90°。赤道為 0°,北極為 90°,也稱為北緯 90°,南極為 -90°,或南緯 90°。
經度是測量東西方向的度數。經度的 0° 起點稱為*本初子午線*,於 1884 年被定義為一條從北極到南極的線,通過[英國格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)。 經度是測量東西方向的度數。經度的 0° 起點稱為*本初子午線*,於 1884 年被定義為一條從北極到南極的線,通過[英國格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)。
![經度線從本初子午線以西的 -180°,到本初子午線的 0°,再到以東的 180°](../../../../../translated_images/zh-HK/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.png) ![經度線從本初子午線以西的 -180°,到本初子午線的 0°,再到以東的 180°](../../../../../translated_images/zh-HK/longitude-meridians.ab4ef1c91c064586.webp)
> 🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。 > 🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。
@ -100,7 +100,7 @@
* 緯度為 47.6423109(赤道以北 47.6423109 度) * 緯度為 47.6423109(赤道以北 47.6423109 度)
* 經度為 -122.1390293(本初子午線以西 122.1390293 度)。 * 經度為 -122.1390293(本初子午線以西 122.1390293 度)。
![微軟總部位於 47.6423109,-122.117198](../../../../../translated_images/zh-HK/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.png) ![微軟總部位於 47.6423109,-122.117198](../../../../../translated_images/zh-HK/microsoft-gps-location-world.a321d481b010f6ad.webp)
## 全球定位系統(GPS) ## 全球定位系統(GPS)
@ -112,7 +112,7 @@ GPS 系統的工作原理是多顆衛星發送信號,包含每顆衛星的當
> 💁 GPS 感應器需要天線來檢測無線電波。內建於卡車和汽車的 GPS 天線通常安裝在擋風玻璃或車頂,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保內建於 GPS 系統或手機中的天線能夠清晰地看到天空,例如安裝在擋風玻璃上。 > 💁 GPS 感應器需要天線來檢測無線電波。內建於卡車和汽車的 GPS 天線通常安裝在擋風玻璃或車頂,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保內建於 GPS 系統或手機中的天線能夠清晰地看到天空,例如安裝在擋風玻璃上。
![通過知道感應器與多顆衛星的距離,可以計算出位置](../../../../../translated_images/zh-HK/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.png) ![通過知道感應器與多顆衛星的距離,可以計算出位置](../../../../../translated_images/zh-HK/gps-satellites.04acf1148fe25fbf.webp)
GPS 衛星環繞地球運行,並非固定在感應器上方,因此位置數據包括海拔高度(相對於海平面)以及緯度和經度。 GPS 衛星環繞地球運行,並非固定在感應器上方,因此位置數據包括海拔高度(相對於海平面)以及緯度和經度。

@ -18,13 +18,13 @@ Grove GPS 感測器可以連接到 Raspberry Pi。
連接 GPS 感測器。 連接 GPS 感測器。
![Grove GPS 感測器](../../../../../translated_images/zh-HK/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.png) ![Grove GPS 感測器](../../../../../translated_images/zh-HK/grove-gps-sensor.247943bf69b03f0d.webp)
1. 將 Grove 電纜的一端插入 GPS 感測器上的插座。它只能以一種方向插入。 1. 將 Grove 電纜的一端插入 GPS 感測器上的插座。它只能以一種方向插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上的 Grove Base Hat 的 UART 插座,該插座標記為 **UART**。此插座位於中間排,靠近 SD 卡插槽的一側,遠離 USB 端口和以太網插座。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上的 Grove Base Hat 的 UART 插座,該插座標記為 **UART**。此插座位於中間排,靠近 SD 卡插槽的一側,遠離 USB 端口和以太網插座。
![Grove GPS 感測器連接到 UART 插座](../../../../../translated_images/zh-HK/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.png) ![Grove GPS 感測器連接到 UART 插座](../../../../../translated_images/zh-HK/pi-gps-sensor.1f99ee2b2f652891.webp)
1. 將 GPS 感測器放置在天線能夠看到天空的位置——理想情況下靠近窗戶或室外。天線周圍沒有障礙物時,信號會更清晰。 1. 將 GPS 感測器放置在天線能夠看到天空的位置——理想情況下靠近窗戶或室外。天線周圍沒有障礙物時,信號會更清晰。

@ -38,11 +38,11 @@
1. 點擊 **Add** 按鈕,在 `/dev/ttyAMA0` 端口上創建 GPS 感測器。 1. 點擊 **Add** 按鈕,在 `/dev/ttyAMA0` 端口上創建 GPS 感測器。
![GPS 感測器設置](../../../../../translated_images/zh-HK/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.png) ![GPS 感測器設置](../../../../../translated_images/zh-HK/counterfit-create-gps-sensor.6385dc9357d85ad1.webp)
GPS 感測器將被創建並顯示在感測器列表中。 GPS 感測器將被創建並顯示在感測器列表中。
![已創建的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.png) ![已創建的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor.3fbb15af0a536756.webp)
## 編程 GPS 感測器 ## 編程 GPS 感測器
@ -102,17 +102,17 @@
* 將 **Source** 設置為 `Lat/Lon`,並設置明確的緯度、經度以及用於獲取 GPS 定位的衛星數量。此值僅會發送一次,因此勾選 **Repeat** 框以使數據每秒重複發送。 * 將 **Source** 設置為 `Lat/Lon`,並設置明確的緯度、經度以及用於獲取 GPS 定位的衛星數量。此值僅會發送一次,因此勾選 **Repeat** 框以使數據每秒重複發送。
![選擇緯度和經度的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.png) ![選擇緯度和經度的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-latlon.008c867d75464fbe.webp)
* 將 **Source** 設置為 `NMEA`,並在文本框中添加一些 NMEA 句子。所有這些值都會被發送,每個新的 GGA(位置修正)句子可以在 1 秒延遲後被讀取。 * 將 **Source** 設置為 `NMEA`,並在文本框中添加一些 NMEA 句子。所有這些值都會被發送,每個新的 GGA(位置修正)句子可以在 1 秒延遲後被讀取。
![設置 NMEA 句子的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.png) ![設置 NMEA 句子的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-nmea.c62eea442171e17e.webp)
你可以使用像 [nmeagen.org](https://www.nmeagen.org) 這樣的工具通過在地圖上繪製來生成這些句子。這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。 你可以使用像 [nmeagen.org](https://www.nmeagen.org) 這樣的工具通過在地圖上繪製來生成這些句子。這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。
* 將 **Source** 設置為 GPX 文件,並上傳一個包含軌跡位置的 GPX 文件。你可以從一些流行的地圖和徒步網站(如 [AllTrails](https://www.alltrails.com/))下載 GPX 文件。這些文件包含多個 GPS 位置作為軌跡,GPS 感測器將以 1 秒間隔返回每個新位置。 * 將 **Source** 設置為 GPX 文件,並上傳一個包含軌跡位置的 GPX 文件。你可以從一些流行的地圖和徒步網站(如 [AllTrails](https://www.alltrails.com/))下載 GPX 文件。這些文件包含多個 GPS 位置作為軌跡,GPS 感測器將以 1 秒間隔返回每個新位置。
![設置 GPX 文件的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.png) ![設置 GPX 文件的 GPS 感測器](../../../../../translated_images/zh-HK/counterfit-gps-sensor-gpxfile.8310b063ce8a425c.webp)
這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。 這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。

@ -18,7 +18,7 @@ Grove GPS 感測器可以連接到 Wio Terminal。
連接 GPS 感測器。 連接 GPS 感測器。
![Grove GPS 感測器](../../../../../translated_images/zh-HK/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.png) ![Grove GPS 感測器](../../../../../translated_images/zh-HK/grove-gps-sensor.247943bf69b03f0d.webp)
1. 將 Grove 線纜的一端插入 GPS 感測器的插槽。它只能以一種方式插入。 1. 將 Grove 線纜的一端插入 GPS 感測器的插槽。它只能以一種方式插入。

@ -1,6 +1,6 @@
# 儲存位置數據 # 儲存位置數據
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-12.ca7f53039712a3ec.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -75,7 +75,7 @@ NoSQL 數據庫之所以被稱為 NoSQL,是因為它們沒有 SQL 數據庫的
> 💁 儘管名稱如此,一些 NoSQL 數據庫允許使用 SQL 查詢數據。 > 💁 儘管名稱如此,一些 NoSQL 數據庫允許使用 SQL 查詢數據。
![NoSQL 數據庫中的文件夾中的文檔](../../../../../translated_images/zh-HK/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.png) ![NoSQL 數據庫中的文件夾中的文檔](../../../../../translated_images/zh-HK/noqsl-database.62d24ccf5b73f60d.webp)
NoSQL 數據庫沒有預定義的模式來限制數據存儲方式,你可以插入任何非結構化數據,通常使用 JSON 文檔。這些文檔可以像電腦上的文件一樣組織到文件夾中。每個文檔可以與其他文檔有不同的字段——例如,如果你存儲農場車輛的 IoT 數據,有些可能有加速度計和速度數據字段,其他可能有拖車內部溫度字段。如果你添加了一種新型卡車,例如內置秤來跟蹤運載的農產品重量,那麼你的 IoT 設備可以添加這個新字段,並且可以在不更改數據庫的情況下存儲。 NoSQL 數據庫沒有預定義的模式來限制數據存儲方式,你可以插入任何非結構化數據,通常使用 JSON 文檔。這些文檔可以像電腦上的文件一樣組織到文件夾中。每個文檔可以與其他文檔有不同的字段——例如,如果你存儲農場車輛的 IoT 數據,有些可能有加速度計和速度數據字段,其他可能有拖車內部溫度字段。如果你添加了一種新型卡車,例如內置秤來跟蹤運載的農產品重量,那麼你的 IoT 設備可以添加這個新字段,並且可以在不更改數據庫的情況下存儲。
@ -89,7 +89,7 @@ NoSQL 數據庫沒有預定義的模式來限制數據存儲方式,你可以
在上一課中,你從連接到 IoT 設備的 GPS 感應器捕捉了 GPS 數據。要在雲端存儲這些 IoT 數據,你需要將其發送到 IoT 服務。你將再次使用 Azure IoT Hub,這是你在上一個項目中使用的同一個 IoT 雲服務。 在上一課中,你從連接到 IoT 設備的 GPS 感應器捕捉了 GPS 數據。要在雲端存儲這些 IoT 數據,你需要將其發送到 IoT 服務。你將再次使用 Azure IoT Hub,這是你在上一個項目中使用的同一個 IoT 雲服務。
![將 GPS 遙測數據從 IoT 設備發送到 IoT Hub](../../../../../translated_images/zh-HK/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.png) ![將 GPS 遙測數據從 IoT 設備發送到 IoT Hub](../../../../../translated_images/zh-HK/gps-telemetry-iot-hub.8115335d51cd2c12.webp)
### 任務 - 將 GPS 數據發送到 IoT Hub ### 任務 - 將 GPS 數據發送到 IoT Hub
@ -171,7 +171,7 @@ message = Message(json.dumps(message_json))
一旦數據流入你的 IoT Hub,你可以編寫一些無伺服器代碼來監聽發佈到 Event-Hub 兼容端點的事件。這是暖路徑——這些數據將被存儲並在下一課中用於報告行程。 一旦數據流入你的 IoT Hub,你可以編寫一些無伺服器代碼來監聽發佈到 Event-Hub 兼容端點的事件。這是暖路徑——這些數據將被存儲並在下一課中用於報告行程。
![將 GPS 遙測數據從 IoT 設備發送到 IoT Hub,然後通過事件中心觸發器發送到 Azure Functions](../../../../../translated_images/zh-HK/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.png) ![將 GPS 遙測數據從 IoT 設備發送到 IoT Hub,然後通過事件中心觸發器發送到 Azure Functions](../../../../../translated_images/zh-HK/gps-telemetry-iot-hub-functions.24d3fa5592455e9f.webp)
### 任務 - 使用無伺服器代碼處理 GPS 事件 ### 任務 - 使用無伺服器代碼處理 GPS 事件
@ -193,7 +193,7 @@ message = Message(json.dumps(message_json))
## Azure 存儲帳戶 ## Azure 存儲帳戶
![Azure Storage 標誌](../../../../../translated_images/zh-HK/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.png) ![Azure Storage 標誌](../../../../../translated_images/zh-HK/azure-storage-logo.605c0f602c640d48.webp)
Azure 存儲帳戶是一種通用存儲服務,可以以多種方式存儲數據。你可以存儲數據為 Blob、隊列、表或文件,並且可以同時使用這些方式。 Azure 存儲帳戶是一種通用存儲服務,可以以多種方式存儲數據。你可以存儲數據為 Blob、隊列、表或文件,並且可以同時使用這些方式。

@ -1,6 +1,6 @@
# 可視化位置數據 # 可視化位置數據
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-13.a259db1485021be7.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -64,11 +64,11 @@
對人類來說,理解這些數據可能很困難。這是一堆沒有意義的數字。作為可視化這些數據的第一步,可以將其繪製成折線圖: 對人類來說,理解這些數據可能很困難。這是一堆沒有意義的數字。作為可視化這些數據的第一步,可以將其繪製成折線圖:
![上述數據的折線圖](../../../../../translated_images/zh-HK/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.png) ![上述數據的折線圖](../../../../../translated_images/zh-HK/chart-soil-moisture.fd6d9d0cdc0b5f75.webp)
這可以進一步改進,添加一條線來指示自動灌溉系統在土壤濕度讀數達到 450 時啟動的情況: 這可以進一步改進,添加一條線來指示自動灌溉系統在土壤濕度讀數達到 450 時啟動的情況:
![土壤濕度折線圖,顯示 450 的啟動線](../../../../../translated_images/zh-HK/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.png) ![土壤濕度折線圖,顯示 450 的啟動線](../../../../../translated_images/zh-HK/chart-soil-moisture-relay.fbb391236d34a64d.webp)
這張圖表可以非常快速地顯示土壤濕度水平以及灌溉系統啟動的時間點。 這張圖表可以非常快速地顯示土壤濕度水平以及灌溉系統啟動的時間點。
@ -84,7 +84,7 @@
使用地圖是一項有趣的練習,有很多選擇,例如 Bing Maps、Leaflet、Open Street Maps 和 Google Maps。在本課程中,你將學習 [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) 以及如何使用它來顯示你的 GPS 數據。 使用地圖是一項有趣的練習,有很多選擇,例如 Bing Maps、Leaflet、Open Street Maps 和 Google Maps。在本課程中,你將學習 [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) 以及如何使用它來顯示你的 GPS 數據。
![Azure Maps 標誌](../../../../../translated_images/zh-HK/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.png) ![Azure Maps 標誌](../../../../../translated_images/zh-HK/azure-maps-logo.35d01dcfbd81fe61.webp)
Azure Maps 是“一系列地理空間服務和 SDK,使用最新的地圖數據為網頁和移動應用提供地理背景。”開發者可以使用這些工具創建美觀、互動的地圖,並實現例如推薦交通路線、提供交通事故信息、室內導航、搜索功能、海拔信息、天氣服務等功能。 Azure Maps 是“一系列地理空間服務和 SDK,使用最新的地圖數據為網頁和移動應用提供地理背景。”開發者可以使用這些工具創建美觀、互動的地圖,並實現例如推薦交通路線、提供交通事故信息、室內導航、搜索功能、海拔信息、天氣服務等功能。
@ -185,7 +185,7 @@ Azure Maps 是“一系列地理空間服務和 SDK,使用最新的地圖數
如果你在網頁瀏覽器中打開你的 `index.html` 文件,你應該會看到一張地圖加載並聚焦在西雅圖地區。 如果你在網頁瀏覽器中打開你的 `index.html` 文件,你應該會看到一張地圖加載並聚焦在西雅圖地區。
![顯示西雅圖(美國華盛頓州的一個城市)的地圖](../../../../../translated_images/zh-HK/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.png) ![顯示西雅圖(美國華盛頓州的一個城市)的地圖](../../../../../translated_images/zh-HK/map-image.8fb2c53eb23ef39c.webp)
✅ 嘗試調整縮放和中心參數以更改地圖顯示。你可以添加對應於數據緯度和經度的不同坐標來重新定位地圖。 ✅ 嘗試調整縮放和中心參數以更改地圖顯示。你可以添加對應於數據緯度和經度的不同坐標來重新定位地圖。
@ -319,7 +319,7 @@ Azure Maps 是“一系列地理空間服務和 SDK,使用最新的地圖數
1. 在瀏覽器中加載 HTML 頁面。地圖將加載,然後從儲存體中加載所有 GPS 數據並將其繪製在地圖上。 1. 在瀏覽器中加載 HTML 頁面。地圖將加載,然後從儲存體中加載所有 GPS 數據並將其繪製在地圖上。
![一張顯示西雅圖附近 Saint Edward 州立公園地圖的圖片,地圖邊緣顯示了一條路徑上的圓形標記](../../../../../translated_images/zh-HK/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.png) ![一張顯示西雅圖附近 Saint Edward 州立公園地圖的圖片,地圖邊緣顯示了一條路徑上的圓形標記](../../../../../translated_images/zh-HK/map-path.896832e72dc696ff.webp)
> 💁 您可以在 [code](../../../../../3-transport/lessons/3-visualize-location-data/code) 文件夾中找到這段代碼。 > 💁 您可以在 [code](../../../../../3-transport/lessons/3-visualize-location-data/code) 文件夾中找到這段代碼。

@ -1,6 +1,6 @@
# 地理圍欄 # 地理圍欄
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-14.63980c5150ae3c15.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -35,7 +35,7 @@
地理圍欄是一個虛擬的邊界,用於真實世界的地理區域。地理圍欄可以是圓形的,定義為一個點和半徑(例如建築物周圍 100 米的圓形),或者是覆蓋某個區域的多邊形,例如學校區域、城市邊界或大學或辦公園區。 地理圍欄是一個虛擬的邊界,用於真實世界的地理區域。地理圍欄可以是圓形的,定義為一個點和半徑(例如建築物周圍 100 米的圓形),或者是覆蓋某個區域的多邊形,例如學校區域、城市邊界或大學或辦公園區。
![一些地理圍欄示例,顯示 Microsoft 公司商店周圍的圓形地理圍欄,以及 Microsoft 西園區周圍的多邊形地理圍欄](../../../../../translated_images/zh-HK/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.png) ![一些地理圍欄示例,顯示 Microsoft 公司商店周圍的圓形地理圍欄,以及 Microsoft 西園區周圍的多邊形地理圍欄](../../../../../translated_images/zh-HK/geofence-examples.172fbc534665769f.webp)
> 💁 你可能已經在不知情的情況下使用過地理圍欄。如果你曾使用 iOS 提醒應用或 Google Keep 根據位置設置提醒,那麼你就使用過地理圍欄。這些應用會根據提供的位置設置地理圍欄,並在你的手機進入地理圍欄時提醒你。 > 💁 你可能已經在不知情的情況下使用過地理圍欄。如果你曾使用 iOS 提醒應用或 Google Keep 根據位置設置提醒,那麼你就使用過地理圍欄。這些應用會根據提供的位置設置地理圍欄,並在你的手機進入地理圍欄時提醒你。
@ -212,7 +212,7 @@ Azure Maps(你在上一課中用來可視化 GPS 數據的服務)允許你
例如,假設 GPS 讀數顯示車輛沿著一條道路行駛,該道路最終與地理圍欄相鄰。如果單個 GPS 值不準確,將車輛定位在地理圍欄內,儘管沒有車輛通行的可能性,那麼可以忽略該值。 例如,假設 GPS 讀數顯示車輛沿著一條道路行駛,該道路最終與地理圍欄相鄰。如果單個 GPS 值不準確,將車輛定位在地理圍欄內,儘管沒有車輛通行的可能性,那麼可以忽略該值。
![GPS 路徑顯示車輛沿著 520 公路經過 Microsoft 園區,GPS 讀數沿著道路分佈,除了其中一個在園區內,位於地理圍欄內](../../../../../translated_images/zh-HK/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.png) ![GPS 路徑顯示車輛沿著 520 公路經過 Microsoft 園區,GPS 讀數沿著道路分佈,除了其中一個在園區內,位於地理圍欄內](../../../../../translated_images/zh-HK/geofence-crossing-inaccurate-gps.6a3ed911202ad9ca.webp)
在上圖中,微軟園區的一部分設置了地理圍欄。紅線顯示卡車沿著520行駛,圓圈表示GPS讀數。大部分讀數是準確的並沿著520,但有一個不準確的讀數位於地理圍欄內。這個讀數不可能是正確的——卡車不可能突然從520轉入園區,然後再回到520。檢查地理圍欄的程式碼需要在執行地理圍欄測試結果之前考慮之前的讀數。 在上圖中,微軟園區的一部分設置了地理圍欄。紅線顯示卡車沿著520行駛,圓圈表示GPS讀數。大部分讀數是準確的並沿著520,但有一個不準確的讀數位於地理圍欄內。這個讀數不可能是正確的——卡車不可能突然從520轉入園區,然後再回到520。檢查地理圍欄的程式碼需要在執行地理圍欄測試結果之前考慮之前的讀數。
✅ 你需要哪些額外的數據來檢查GPS讀數是否可以被認為是正確的? ✅ 你需要哪些額外的數據來檢查GPS讀數是否可以被認為是正確的?
@ -284,7 +284,7 @@ Azure Maps(你在上一課中用來可視化 GPS 數據的服務)允許你
答案是它無法知道!相反,你可以定義多個獨立的連接來讀取事件,每個連接都可以管理未讀消息的重播。這些被稱為*消費者群組*。當你連接到端點時,你可以指定你想要連接的消費者群組。應用程式的每個組件將連接到不同的消費者群組。 答案是它無法知道!相反,你可以定義多個獨立的連接來讀取事件,每個連接都可以管理未讀消息的重播。這些被稱為*消費者群組*。當你連接到端點時,你可以指定你想要連接的消費者群組。應用程式的每個組件將連接到不同的消費者群組。
![一個IoT Hub有3個消費者群組,將相同的消息分發到3個不同的Functions應用程式](../../../../../translated_images/zh-HK/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.png) ![一個IoT Hub有3個消費者群組,將相同的消息分發到3個不同的Functions應用程式](../../../../../translated_images/zh-HK/consumer-groups.a3262e26fc27ba20.webp)
理論上,每個消費者群組最多可以連接5個應用程式,並且它們都會在消息到達時接收消息。最佳實踐是每個消費者群組僅由一個應用程式訪問,以避免重複消息處理,並確保在重新啟動時所有排隊消息都能正確處理。例如,如果你在本地啟動了Functions應用程式並且在雲端運行,它們都會處理消息,導致存儲帳戶中存儲的Blob重複。 理論上,每個消費者群組最多可以連接5個應用程式,並且它們都會在消息到達時接收消息。最佳實踐是每個消費者群組僅由一個應用程式訪問,以避免重複消息處理,並確保在重新啟動時所有排隊消息都能正確處理。例如,如果你在本地啟動了Functions應用程式並且在雲端運行,它們都會處理消息,導致存儲帳戶中存儲的Blob重複。

@ -1,6 +1,6 @@
# 訓練水果品質檢測器 # 訓練水果品質檢測器
![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.jpg) ![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-15.843d21afdc6fb2bb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -38,7 +38,7 @@
自動化收割的興起將食品分類從收割階段移到了工廠。食品會在長長的輸送帶上運輸,人工團隊挑選出不符合品質標準的食品。儘管使用機械收割降低了成本,但人工分類食品仍然需要一定的費用。 自動化收割的興起將食品分類從收割階段移到了工廠。食品會在長長的輸送帶上運輸,人工團隊挑選出不符合品質標準的食品。儘管使用機械收割降低了成本,但人工分類食品仍然需要一定的費用。
![如果檢測到紅色番茄,它會繼續不受干擾地前進。如果檢測到綠色番茄,則會被槓桿彈入廢料箱](../../../../../translated_images/zh-HK/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.png) ![如果檢測到紅色番茄,它會繼續不受干擾地前進。如果檢測到綠色番茄,則會被槓桿彈入廢料箱](../../../../../translated_images/zh-HK/optical-tomato-sorting.61aa134bdda4e5b1.webp)
下一步的演進是使用機器進行分類,這些機器可以內置於收割機中或安裝在加工廠中。第一代這些機器使用光學傳感器檢測顏色,並控制執行器將綠色番茄推入廢料箱,使用槓桿或氣流,讓紅色番茄繼續在輸送帶網絡上前進。 下一步的演進是使用機器進行分類,這些機器可以內置於收割機中或安裝在加工廠中。第一代這些機器使用光學傳感器檢測顏色,並控制執行器將綠色番茄推入廢料箱,使用槓桿或氣流,讓紅色番茄繼續在輸送帶網絡上前進。
@ -62,7 +62,7 @@
> 🎓 ML 模型的結果稱為 *預測* > 🎓 ML 模型的結果稱為 *預測*
![兩根香蕉,一根成熟的香蕉預測為 99.7% 成熟,0.3% 未成熟;另一根未成熟的香蕉預測為 1.4% 成熟,98.6% 未成熟](../../../../../translated_images/zh-HK/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.png) ![兩根香蕉,一根成熟的香蕉預測為 99.7% 成熟,0.3% 未成熟;另一根未成熟的香蕉預測為 1.4% 成熟,98.6% 未成熟](../../../../../translated_images/zh-HK/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50e.webp)
ML 模型不會給出二元答案,而是提供概率。例如,模型可能會給出一張香蕉的圖片,預測 `成熟` 為 99.7%,`未成熟` 為 0.3%。您的代碼會選擇最佳預測並判斷該香蕉是成熟的。 ML 模型不會給出二元答案,而是提供概率。例如,模型可能會給出一張香蕉的圖片,預測 `成熟` 為 99.7%,`未成熟` 為 0.3%。您的代碼會選擇最佳預測並判斷該香蕉是成熟的。
@ -90,7 +90,7 @@ ML 模型不會給出二元答案,而是提供概率。例如,模型可能
Custom Vision 是一個基於雲的工具,用於訓練圖像分類器。它允許您僅使用少量圖片訓練分類器。您可以通過 Web 入口、Web API 或 SDK 上傳圖片,並為每張圖片提供一個 *標籤*,該標籤表示該圖片的分類。然後,您可以訓練模型並測試其性能。一旦您對模型感到滿意,您可以發布版本,通過 Web API 或 SDK 訪問。 Custom Vision 是一個基於雲的工具,用於訓練圖像分類器。它允許您僅使用少量圖片訓練分類器。您可以通過 Web 入口、Web API 或 SDK 上傳圖片,並為每張圖片提供一個 *標籤*,該標籤表示該圖片的分類。然後,您可以訓練模型並測試其性能。一旦您對模型感到滿意,您可以發布版本,通過 Web API 或 SDK 訪問。
![Azure Custom Vision 標誌](../../../../../translated_images/zh-HK/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.png) ![Azure Custom Vision 標誌](../../../../../translated_images/zh-HK/custom-vision-logo.d3d4e7c8a87ec9da.webp)
> 💁 您可以使用每個分類僅 5 張圖片訓練 Custom Vision 模型,但更多圖片效果更好。至少 30 張圖片可以獲得更好的結果。 > 💁 您可以使用每個分類僅 5 張圖片訓練 Custom Vision 模型,但更多圖片效果更好。至少 30 張圖片可以獲得更好的結果。
@ -146,7 +146,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Co
創建項目時,請確保使用您之前創建的 `fruit-quality-detector-training` 資源。使用 *分類* 項目類型、*多類* 分類類型和 *食品* 領域。 創建項目時,請確保使用您之前創建的 `fruit-quality-detector-training` 資源。使用 *分類* 項目類型、*多類* 分類類型和 *食品* 領域。
![Custom Vision 項目的設置,名稱設為 fruit-quality-detector,無描述,資源設為 fruit-quality-detector-training,項目類型設為分類,分類類型設為多類,領域設為食品](../../../../../translated_images/zh-HK/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.png) ![Custom Vision 項目的設置,名稱設為 fruit-quality-detector,無描述,資源設為 fruit-quality-detector-training,項目類型設為分類,分類類型設為多類,領域設為食品](../../../../../translated_images/zh-HK/custom-vision-create-project.cf46325b92d8b131.webp)
✅ 花些時間探索您的圖像分類器的 Custom Vision UI。 ✅ 花些時間探索您的圖像分類器的 Custom Vision UI。
@ -164,7 +164,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Co
* 使用2根成熟的香蕉,從不同角度拍攝每根香蕉的幾張圖片,至少拍攝7張(5張用於訓練,2張用於測試),但理想情況下更多。 * 使用2根成熟的香蕉,從不同角度拍攝每根香蕉的幾張圖片,至少拍攝7張(5張用於訓練,2張用於測試),但理想情況下更多。
![2根不同香蕉的照片](../../../../../translated_images/zh-HK/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.png) ![2根不同香蕉的照片](../../../../../translated_images/zh-HK/banana-training-images.530eb203346d73bc.webp)
* 使用2根未成熟的香蕉重複相同的過程。 * 使用2根未成熟的香蕉重複相同的過程。
@ -174,7 +174,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Co
1. 按照[Microsoft文檔中建立分類器快速入門的上傳和標記圖片部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images)的指引上傳您的訓練圖片。將成熟的水果標記為`ripe`,未成熟的水果標記為`unripe`。 1. 按照[Microsoft文檔中建立分類器快速入門的上傳和標記圖片部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images)的指引上傳您的訓練圖片。將成熟的水果標記為`ripe`,未成熟的水果標記為`unripe`。
![上傳成熟和未成熟香蕉圖片的對話框](../../../../../translated_images/zh-HK/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.png) ![上傳成熟和未成熟香蕉圖片的對話框](../../../../../translated_images/zh-HK/image-upload-bananas.0751639f3815e0ec.webp)
1. 按照[Microsoft文檔中建立分類器快速入門的訓練分類器部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier)的指引,使用您上傳的圖片訓練圖片分類器。 1. 按照[Microsoft文檔中建立分類器快速入門的訓練分類器部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier)的指引,使用您上傳的圖片訓練圖片分類器。
@ -192,7 +192,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Co
1. 按照[Microsoft文檔中測試模型的指引](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model)測試您的圖片分類器。使用您之前創建的測試圖片,而不是任何用於訓練的圖片。 1. 按照[Microsoft文檔中測試模型的指引](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model)測試您的圖片分類器。使用您之前創建的測試圖片,而不是任何用於訓練的圖片。
![一根未成熟香蕉被預測為未成熟,概率為98.9%,成熟概率為1.1%](../../../../../translated_images/zh-HK/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.png) ![一根未成熟香蕉被預測為未成熟,概率為98.9%,成熟概率為1.1%](../../../../../translated_images/zh-HK/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64.webp)
1. 嘗試使用您所有的測試圖片並觀察概率。 1. 嘗試使用您所有的測試圖片並觀察概率。

@ -1,6 +1,6 @@
# 從 IoT 裝置檢查水果品質 # 從 IoT 裝置檢查水果品質
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-16.215daf18b00631fb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片以查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片以查看更大版本。
@ -26,7 +26,7 @@
顧名思義,攝影機感測器是可以連接到 IoT 裝置的攝影機。它們可以拍攝靜態影像或錄製串流影片。有些會返回原始影像數據,而另一些則會將影像數據壓縮成 JPEG 或 PNG 等影像檔案。通常,與 IoT 裝置配合使用的攝影機比你習慣使用的攝影機要小得多,解析度也較低,但你也可以找到解析度高到可以媲美高端手機的攝影機。你還可以選擇各種可更換鏡頭、多攝影機配置、紅外線熱成像攝影機或紫外線攝影機。 顧名思義,攝影機感測器是可以連接到 IoT 裝置的攝影機。它們可以拍攝靜態影像或錄製串流影片。有些會返回原始影像數據,而另一些則會將影像數據壓縮成 JPEG 或 PNG 等影像檔案。通常,與 IoT 裝置配合使用的攝影機比你習慣使用的攝影機要小得多,解析度也較低,但你也可以找到解析度高到可以媲美高端手機的攝影機。你還可以選擇各種可更換鏡頭、多攝影機配置、紅外線熱成像攝影機或紫外線攝影機。
![場景中的光線通過鏡頭並聚焦在 CMOS 感測器上](../../../../../translated_images/zh-HK/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.png) ![場景中的光線通過鏡頭並聚焦在 CMOS 感測器上](../../../../../translated_images/zh-HK/cmos-sensor.75f9cd74decb1371.webp)
大多數攝影機感測器使用影像感測器,其中每個像素都是一個光電二極管。鏡頭將影像聚焦到影像感測器上,數千或數百萬個光電二極管檢測落在每個二極管上的光線,並將其記錄為像素數據。 大多數攝影機感測器使用影像感測器,其中每個像素都是一個光電二極管。鏡頭將影像聚焦到影像感測器上,數千或數百萬個光電二極管檢測落在每個二極管上的光線,並將其記錄為像素數據。
@ -74,7 +74,7 @@
1. 選擇該迭代版本的 **Publish** 按鈕。 1. 選擇該迭代版本的 **Publish** 按鈕。
![發佈按鈕](../../../../../translated_images/zh-HK/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.png) ![發佈按鈕](../../../../../translated_images/zh-HK/custom-vision-publish-button.b7174e1977b0c33b.webp)
1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `fruit-quality-detector-prediction` 資源。將名稱保留為 `Iteration2`,然後選擇 **Publish** 按鈕。 1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `fruit-quality-detector-prediction` 資源。將名稱保留為 `Iteration2`,然後選擇 **Publish** 按鈕。
@ -88,7 +88,7 @@
同時複製 *Prediction-Key* 值。這是一個安全密鑰,當你呼叫模型時必須傳遞該密鑰。只有傳遞此密鑰的應用程式才能使用該模型,其他應用程式將被拒絕。 同時複製 *Prediction-Key* 值。這是一個安全密鑰,當你呼叫模型時必須傳遞該密鑰。只有傳遞此密鑰的應用程式才能使用該模型,其他應用程式將被拒絕。
![預測 API 對話框顯示 URL 和密鑰](../../../../../translated_images/zh-HK/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.png) ![預測 API 對話框顯示 URL 和密鑰](../../../../../translated_images/zh-HK/custom-vision-prediction-key-endpoint.30c569ffd0338864.webp)
✅ 當發佈一個新迭代版本時,它會有一個不同的名稱。你認為應該如何更改 IoT 裝置使用的迭代版本? ✅ 當發佈一個新迭代版本時,它會有一個不同的名稱。你認為應該如何更改 IoT 裝置使用的迭代版本?
@ -109,7 +109,7 @@
為了讓影像分類器獲得最佳結果,你需要使用與預測影像盡可能相似的影像來訓練模型。例如,如果你使用手機攝影機捕捉影像進行訓練,那麼影像的質量、清晰度和顏色將與連接到 IoT 裝置的攝影機不同。 為了讓影像分類器獲得最佳結果,你需要使用與預測影像盡可能相似的影像來訓練模型。例如,如果你使用手機攝影機捕捉影像進行訓練,那麼影像的質量、清晰度和顏色將與連接到 IoT 裝置的攝影機不同。
![兩張香蕉圖片,一張是 IoT 裝置拍攝的低解析度影像,另一張是手機拍攝的高解析度影像](../../../../../translated_images/zh-HK/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.png) ![兩張香蕉圖片,一張是 IoT 裝置拍攝的低解析度影像,另一張是手機拍攝的高解析度影像](../../../../../translated_images/zh-HK/banana-picture-compare.174df164dc326a42.webp)
在上圖中,左側的香蕉圖片是使用 Raspberry Pi 攝影機拍攝的,右側的圖片是使用 iPhone 在相同位置拍攝的同一根香蕉。兩者的質量有明顯差異——iPhone 的圖片更清晰,顏色更鮮豔,對比度更高。 在上圖中,左側的香蕉圖片是使用 Raspberry Pi 攝影機拍攝的,右側的圖片是使用 iPhone 在相同位置拍攝的同一根香蕉。兩者的質量有明顯差異——iPhone 的圖片更清晰,顏色更鮮豔,對比度更高。

@ -16,7 +16,7 @@ Raspberry Pi 需要一個相機。
### 任務 - 連接相機 ### 任務 - 連接相機
![Raspberry Pi 相機](../../../../../translated_images/zh-HK/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.png) ![Raspberry Pi 相機](../../../../../translated_images/zh-HK/pi-camera-module.4278753c31bd6e75.webp)
1. 關閉 Raspberry Pi 的電源。 1. 關閉 Raspberry Pi 的電源。
@ -24,17 +24,17 @@ Raspberry Pi 需要一個相機。
你可以在 [Raspberry Pi 相機模組入門文檔](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) 中找到如何打開夾子並插入排線的動畫。 你可以在 [Raspberry Pi 相機模組入門文檔](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) 中找到如何打開夾子並插入排線的動畫。
![扁平排線插入相機模組](../../../../../translated_images/zh-HK/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.png) ![扁平排線插入相機模組](../../../../../translated_images/zh-HK/pi-camera-ribbon-cable.0bf82acd251611c2.webp)
1. 從 Raspberry Pi 上移除 Grove Base Hat。 1. 從 Raspberry Pi 上移除 Grove Base Hat。
1. 將扁平排線穿過 Grove Base Hat 上的相機插槽。確保排線的藍色面朝向標有 **A0**、**A1** 等的模擬端口。 1. 將扁平排線穿過 Grove Base Hat 上的相機插槽。確保排線的藍色面朝向標有 **A0**、**A1** 等的模擬端口。
![扁平排線穿過 Grove Base Hat](../../../../../translated_images/zh-HK/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.png) ![扁平排線穿過 Grove Base Hat](../../../../../translated_images/zh-HK/grove-base-hat-ribbon-cable.501fed202fcf73b1.webp)
1. 將扁平排線插入 Raspberry Pi 上的相機端口。同樣,拉起黑色塑料夾,插入排線,然後推回夾子。排線的藍色面應朝向 USB 和以太網端口。 1. 將扁平排線插入 Raspberry Pi 上的相機端口。同樣,拉起黑色塑料夾,插入排線,然後推回夾子。排線的藍色面應朝向 USB 和以太網端口。
![扁平排線連接到 Raspberry Pi 的相機插座](../../../../../translated_images/zh-HK/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.png) ![扁平排線連接到 Raspberry Pi 的相機插座](../../../../../translated_images/zh-HK/pi-camera-socket-ribbon-cable.a18309920b118009.webp)
1. 重新安裝 Grove Base Hat。 1. 重新安裝 Grove Base Hat。
@ -101,7 +101,7 @@ Raspberry Pi 需要一個相機。
`camera.rotation = 0` 行設置影像的旋轉角度。扁平排線從相機底部進入,但如果你的相機旋轉過以便更容易指向你想要分類的物品,則可以將此行更改為旋轉的角度。 `camera.rotation = 0` 行設置影像的旋轉角度。扁平排線從相機底部進入,但如果你的相機旋轉過以便更容易指向你想要分類的物品,則可以將此行更改為旋轉的角度。
![相機懸掛在飲料罐上方](../../../../../translated_images/zh-HK/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.png) ![相機懸掛在飲料罐上方](../../../../../translated_images/zh-HK/pi-camera-upside-down.5376961ba3145988.webp)
例如,如果你將扁平排線懸掛在某物上,使其位於相機的頂部,則將旋轉設置為 180: 例如,如果你將扁平排線懸掛在某物上,使其位於相機的頂部,則將旋轉設置為 180:

@ -84,7 +84,7 @@ Custom Vision 服務提供了一個 Python SDK,可用於分類圖片。
你將能看到拍攝的圖片,以及這些值在 Custom Vision 的 **Predictions** 標籤中。 你將能看到拍攝的圖片,以及這些值在 Custom Vision 的 **Predictions** 標籤中。
![一根香蕉在 Custom Vision 中被預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-HK/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.png) ![一根香蕉在 Custom Vision 中被預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-HK/custom-vision-banana-prediction.30cdff4e1d72db5d.webp)
> 💁 你可以在 [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) 或 [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) 文件夾中找到這段代碼。 > 💁 你可以在 [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) 或 [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) 文件夾中找到這段代碼。

@ -34,11 +34,11 @@
1. 選擇 **Add** 按鈕以創建相機。 1. 選擇 **Add** 按鈕以創建相機。
![相機設置](../../../../../translated_images/zh-HK/counterfit-create-camera.a5de97f59c0bd3cbe0416d7e89a3cfe86d19fbae05c641c53a91286412af0a34.png) ![相機設置](../../../../../translated_images/zh-HK/counterfit-create-camera.a5de97f59c0bd3cb.webp)
相機將被創建並顯示在感應器列表中。 相機將被創建並顯示在感應器列表中。
![創建的相機](../../../../../translated_images/zh-HK/counterfit-camera.001ec52194c8ee5d3f617173da2c79e1df903d10882adc625cbfc493525125d4.png) ![創建的相機](../../../../../translated_images/zh-HK/counterfit-camera.001ec52194c8ee5d.webp)
## 編程相機 ## 編程相機
@ -103,7 +103,7 @@
1. 配置 CounterFit 中相機將捕捉的影像。你可以將 *Source* 設置為 *File*,然後上傳一個影像文件,或者將 *Source* 設置為 *WebCam*,影像將從你的網絡攝像頭捕捉。確保在選擇圖片或網絡攝像頭後選擇 **Set** 按鈕。 1. 配置 CounterFit 中相機將捕捉的影像。你可以將 *Source* 設置為 *File*,然後上傳一個影像文件,或者將 *Source* 設置為 *WebCam*,影像將從你的網絡攝像頭捕捉。確保在選擇圖片或網絡攝像頭後選擇 **Set** 按鈕。
![CounterFit 中設置文件為影像來源,以及網絡攝像頭顯示一個人拿著香蕉的預覽](../../../../../translated_images/zh-HK/counterfit-camera-options.eb3bd5150a8e7dffbf24bc5bcaba0cf2cdef95fbe6bbe393695d173817d6b8df.png) ![CounterFit 中設置文件為影像來源,以及網絡攝像頭顯示一個人拿著香蕉的預覽](../../../../../translated_images/zh-HK/counterfit-camera-options.eb3bd5150a8e7dff.webp)
1. 一個影像將被捕捉並保存為 `image.jpg`,位於當前文件夾中。你將在 VS Code 的資源管理器中看到此文件。選擇該文件以查看影像。如果需要旋轉,根據需要更新 `camera.rotation = 0` 行並重新拍攝影像。 1. 一個影像將被捕捉並保存為 `image.jpg`,位於當前文件夾中。你將在 VS Code 的資源管理器中看到此文件。選擇該文件以查看影像。如果需要旋轉,根據需要更新 `camera.rotation = 0` 行並重新拍攝影像。

@ -16,7 +16,7 @@ ArduCam 沒有 Grove 插槽,而是通過 Wio Terminal 的 GPIO 引腳連接到
連接相機。 連接相機。
![ArduCam 傳感器](../../../../../translated_images/zh-HK/arducam.20e4e4cbb268296570b5914e20d6c349fc42ddac9ed4e1b9deba2188204eebae.png) ![ArduCam 傳感器](../../../../../translated_images/zh-HK/arducam.20e4e4cbb2682965.webp)
1. ArduCam 底部的引腳需要連接到 Wio Terminal 的 GPIO 引腳。為了更容易找到正確的引腳,將隨 Wio Terminal 附帶的 GPIO 引腳貼紙貼在引腳周圍: 1. ArduCam 底部的引腳需要連接到 Wio Terminal 的 GPIO 引腳。為了更容易找到正確的引腳,將隨 Wio Terminal 附帶的 GPIO 引腳貼紙貼在引腳周圍:
@ -35,7 +35,7 @@ ArduCam 沒有 Grove 插槽,而是通過 Wio Terminal 的 GPIO 引腳連接到
| SDA | 3 (I2C1_SDA) | I²C 串行數據 | | SDA | 3 (I2C1_SDA) | I²C 串行數據 |
| SCL | 5 (I2C1_SCL) | I²C 串行時鐘 | | SCL | 5 (I2C1_SCL) | I²C 串行時鐘 |
![用跳線連接到 ArduCam 的 Wio Terminal](../../../../../translated_images/zh-HK/arducam-wio-terminal-connections.a4d5a4049bdb5ab800a2877389fc6ecf5e4ff307e6451ff56c517e6786467d0a.png) ![用跳線連接到 ArduCam 的 Wio Terminal](../../../../../translated_images/zh-HK/arducam-wio-terminal-connections.a4d5a4049bdb5ab8.webp)
GND 和 VCC 連接為 ArduCam 提供 5V 電源。它以 5V 運行,不同於以 3V 運行的 Grove 傳感器。這個電源直接來自為設備供電的 USB-C 連接。 GND 和 VCC 連接為 ArduCam 提供 5V 電源。它以 5V 運行,不同於以 3V 運行的 Grove 傳感器。這個電源直接來自為設備供電的 USB-C 連接。
@ -456,7 +456,7 @@ Wio Terminal 僅支持最大 16GB 的 microSD 卡。如果你的 SD 卡更大,
1. 關閉 microSD 卡電源,稍微推入並釋放以彈出卡片,你可能需要使用細小工具完成此操作。將 microSD 卡插入電腦以查看影像。 1. 關閉 microSD 卡電源,稍微推入並釋放以彈出卡片,你可能需要使用細小工具完成此操作。將 microSD 卡插入電腦以查看影像。
![使用 ArduCam 捕捉的香蕉照片](../../../../../translated_images/zh-HK/banana-arducam.be1b32d4267a8194b0fd042362e56faa431da9cd4af172051b37243ea9be0256.jpg) ![使用 ArduCam 捕捉的香蕉照片](../../../../../translated_images/zh-HK/banana-arducam.be1b32d4267a8194.webp)
💁 相機的白平衡可能需要幾張圖片才能自我調整。您會根據拍攝的圖片顏色注意到這一點,前幾張可能顏色看起來不太對。您可以通過修改程式碼,在 `setup` 函數中拍攝幾張被忽略的圖片來解決這個問題。 💁 相機的白平衡可能需要幾張圖片才能自我調整。您會根據拍攝的圖片顏色注意到這一點,前幾張可能顏色看起來不太對。您可以通過修改程式碼,在 `setup` 函數中拍攝幾張被忽略的圖片來解決這個問題。

@ -208,7 +208,7 @@ Custom Vision 服務提供了一個 REST API,Wio Terminal 可以使用它來
你將能夠看到拍攝的影像,並在 Custom Vision 的 **Predictions** 標籤中看到這些值。 你將能夠看到拍攝的影像,並在 Custom Vision 的 **Predictions** 標籤中看到這些值。
![Custom Vision 中的一根香蕉,預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-HK/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.png) ![Custom Vision 中的一根香蕉,預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-HK/custom-vision-banana-prediction.30cdff4e1d72db5d.webp)
> 💁 你可以在 [code-classify/wio-terminal](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/wio-terminal) 資料夾中找到這段程式碼。 > 💁 你可以在 [code-classify/wio-terminal](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/wio-terminal) 資料夾中找到這段程式碼。

@ -1,6 +1,6 @@
# 在邊緣設備上運行水果檢測器 # 在邊緣設備上運行水果檢測器
![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.jpg) ![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-17.bc333c3c35ba8e42.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -33,11 +33,11 @@
邊緣計算指的是將處理物聯網數據的計算機儘可能靠近數據生成的地方。與其在雲端進行處理,邊緣計算將處理移至雲端的邊緣——你的內部網絡。 邊緣計算指的是將處理物聯網數據的計算機儘可能靠近數據生成的地方。與其在雲端進行處理,邊緣計算將處理移至雲端的邊緣——你的內部網絡。
![一個架構圖顯示雲端的互聯網服務和本地網絡上的物聯網設備](../../../../../translated_images/zh-HK/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.png) ![一個架構圖顯示雲端的互聯網服務和本地網絡上的物聯網設備](../../../../../translated_images/zh-HK/cloud-without-edge.b4da641f6022c95e.webp)
在之前的課程中,你的設備收集數據並將數據發送到雲端進行分析,運行無伺服器函數或AI模型。 在之前的課程中,你的設備收集數據並將數據發送到雲端進行分析,運行無伺服器函數或AI模型。
![一個架構圖顯示本地網絡上的物聯網設備連接到邊緣設備,邊緣設備再連接到雲端](../../../../../translated_images/zh-HK/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.png) ![一個架構圖顯示本地網絡上的物聯網設備連接到邊緣設備,邊緣設備再連接到雲端](../../../../../translated_images/zh-HK/cloud-with-edge.1e26462c62c126fe.webp)
邊緣計算將部分雲端服務移至與物聯網設備同一網絡上的計算機,僅在需要時與雲端通信。例如,你可以在邊緣設備上運行AI模型來分析水果的成熟度,僅將分析結果(如成熟水果與未成熟水果的數量)發送回雲端。 邊緣計算將部分雲端服務移至與物聯網設備同一網絡上的計算機,僅在需要時與雲端通信。例如,你可以在邊緣設備上運行AI模型來分析水果的成熟度,僅將分析結果(如成熟水果與未成熟水果的數量)發送回雲端。
@ -85,7 +85,7 @@
## Azure IoT Edge ## Azure IoT Edge
![Azure IoT Edge標誌](../../../../../translated_images/zh-HK/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.png) ![Azure IoT Edge標誌](../../../../../translated_images/zh-HK/azure-iot-edge-logo.c1c076749b5cba2e.webp)
Azure IoT Edge 是一項服務,可以幫助你將工作負載從雲端移至邊緣。你可以將設備設置為邊緣設備,並從雲端向該邊緣設備部署代碼。這使得你可以混合使用雲端和邊緣的功能。 Azure IoT Edge 是一項服務,可以幫助你將工作負載從雲端移至邊緣。你可以將設備設置為邊緣設備,並從雲端向該邊緣設備部署代碼。這使得你可以混合使用雲端和邊緣的功能。
@ -99,7 +99,7 @@ IoT Edge 集成在 IoT Hub 中,因此你可以使用管理物聯網設備的
IoT Edge 從 *容器* 中運行代碼——容器是獨立運行的應用程序,與計算機上的其他應用程序隔離。當你運行容器時,它就像在你的計算機內部運行的獨立計算機,擁有自己的軟件、服務和應用程序。大多數情況下,容器無法訪問計算機上的任何內容,除非你選擇與容器共享某些內容,例如文件夾。容器通過開放端口暴露服務,你可以連接到該端口或將其暴露到網絡。 IoT Edge 從 *容器* 中運行代碼——容器是獨立運行的應用程序,與計算機上的其他應用程序隔離。當你運行容器時,它就像在你的計算機內部運行的獨立計算機,擁有自己的軟件、服務和應用程序。大多數情況下,容器無法訪問計算機上的任何內容,除非你選擇與容器共享某些內容,例如文件夾。容器通過開放端口暴露服務,你可以連接到該端口或將其暴露到網絡。
![一個網頁請求被重定向到容器](../../../../../translated_images/zh-HK/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.png) ![一個網頁請求被重定向到容器](../../../../../translated_images/zh-HK/container-web-browser.4ee81dd4f0d8838c.webp)
例如,你可以有一個容器在端口80上運行網站,這是默認的HTTP端口,然後你可以將其暴露在你的計算機上,也是在端口80。 例如,你可以有一個容器在端口80上運行網站,這是默認的HTTP端口,然後你可以將其暴露在你的計算機上,也是在端口80。
@ -195,11 +195,11 @@ IoT Edge 從 *容器* 中運行代碼——容器是獨立運行的應用程序
## 為部署準備容器 ## 為部署準備容器
![容器被建置後推送到容器註冊表,然後從容器註冊表部署到邊緣設備](../../../../../translated_images/zh-HK/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.png) ![容器被建置後推送到容器註冊表,然後從容器註冊表部署到邊緣設備](../../../../../translated_images/zh-HK/container-edge-flow.c246050dd60ceefd.webp)
下載模型後,需要將其建置為容器,然後推送到容器註冊表——一個可以儲存容器的線上位置。IoT Edge 可以從註冊表下載容器並推送到你的設備。 下載模型後,需要將其建置為容器,然後推送到容器註冊表——一個可以儲存容器的線上位置。IoT Edge 可以從註冊表下載容器並推送到你的設備。
![Azure 容器註冊表標誌](../../../../../translated_images/zh-HK/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.png) ![Azure 容器註冊表標誌](../../../../../translated_images/zh-HK/azure-container-registry-logo.09494206991d4b29.webp)
本課程中使用的容器註冊表是 Azure 容器註冊表。這不是免費服務,因此完成後請務必[清理你的專案](../../../clean-up.md)以節省費用。 本課程中使用的容器註冊表是 Azure 容器註冊表。這不是免費服務,因此完成後請務必[清理你的專案](../../../clean-up.md)以節省費用。

@ -1,6 +1,6 @@
# 從感應器觸發水果質量檢測 # 從感應器觸發水果質量檢測
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-18.92c32ed1d354caa5.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -39,7 +39,7 @@
### 參考物聯網架構 ### 參考物聯網架構
![參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.png) ![參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture.2278b98b55c6d4e8.webp)
上圖展示了一個參考物聯網架構。 上圖展示了一個參考物聯網架構。
@ -49,7 +49,7 @@
* **洞察**來自無伺服器應用程式,或來自對存儲數據的分析。 * **洞察**來自無伺服器應用程式,或來自對存儲數據的分析。
* **行動**可以是發送給設備的命令,或是數據的可視化,讓人類做出決策。 * **行動**可以是發送給設備的命令,或是數據的可視化,讓人類做出決策。
![參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.png) ![參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture-azure.0b8d2161af924cb1.webp)
上圖展示了在這些課程中涵蓋的一些組件和服務,以及它們如何在參考物聯網架構中相互連接。 上圖展示了在這些課程中涵蓋的一些組件和服務,以及它們如何在參考物聯網架構中相互連接。
@ -89,7 +89,7 @@
### 應用程式原型設計 ### 應用程式原型設計
![水果質量檢測的參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.png) ![水果質量檢測的參考物聯網架構](../../../../../translated_images/zh-HK/iot-reference-architecture-fruit-quality.cc705f121c3b6fa7.webp)
上圖展示了該原型應用程式的參考架構。 上圖展示了該原型應用程式的參考架構。
@ -124,7 +124,7 @@
原型水果檢測器包含多個相互通信的組件。 原型水果檢測器包含多個相互通信的組件。
![各組件之間的通信](../../../../../translated_images/zh-HK/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.png) ![各組件之間的通信](../../../../../translated_images/zh-HK/fruit-quality-detector-message-flow.adf2a65da8fd8741.webp)
* 一個接近感應器測量與水果的距離,並將數據發送到 IoT Hub * 一個接近感應器測量與水果的距離,並將數據發送到 IoT Hub
* 控制相機的命令從 IoT Hub 發送到相機設備 * 控制相機的命令從 IoT Hub 發送到相機設備

@ -20,7 +20,7 @@ Grove 飛行時間感應器可以連接到 Raspberry Pi。
連接飛行時間感應器。 連接飛行時間感應器。
![Grove 飛行時間感應器](../../../../../translated_images/zh-HK/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.png) ![Grove 飛行時間感應器](../../../../../translated_images/zh-HK/grove-time-of-flight-sensor.d82ff2165bfded9f.webp)
1. 將 Grove 電纜的一端插入飛行時間感應器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入飛行時間感應器上的插座。它只能以一種方式插入。

@ -36,11 +36,11 @@
1. 點擊 **Add** 按鈕以創建距離傳感器。 1. 點擊 **Add** 按鈕以創建距離傳感器。
![距離傳感器設置](../../../../../translated_images/zh-HK/counterfit-create-distance-sensor.967c9fb98f27888d95920c9784d004c972490eb71f70397fe13bd70a79a879a3.png) ![距離傳感器設置](../../../../../translated_images/zh-HK/counterfit-create-distance-sensor.967c9fb98f27888d.webp)
距離傳感器將被創建並顯示在傳感器列表中。 距離傳感器將被創建並顯示在傳感器列表中。
![已創建的距離傳感器](../../../../../translated_images/zh-HK/counterfit-distance-sensor.079eefeeea0b68afc36431ce8fcbe2f09a7e4916ed1cd5cb30e696db53bc18fa.png) ![已創建的距離傳感器](../../../../../translated_images/zh-HK/counterfit-distance-sensor.079eefeeea0b68af.webp)
## 編程距離傳感器 ## 編程距離傳感器

@ -20,7 +20,7 @@ Grove 飛行時間感測器可以連接到 Wio Terminal。
連接飛行時間感測器。 連接飛行時間感測器。
![一個 Grove 飛行時間感測器](../../../../../translated_images/zh-HK/grove-time-of-flight-sensor.d82ff2165bfded9f485de54d8d07195a6270a602696825fca19f629ddfe94e86.png) ![一個 Grove 飛行時間感測器](../../../../../translated_images/zh-HK/grove-time-of-flight-sensor.d82ff2165bfded9f.webp)
1. 將 Grove 線纜的一端插入飛行時間感測器上的插槽。它只能以一種方式插入。 1. 將 Grove 線纜的一端插入飛行時間感測器上的插槽。它只能以一種方式插入。

@ -1,6 +1,6 @@
# 訓練一個庫存檢測器 # 訓練一個庫存檢測器
![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-19.cf6973cecadf080c4b526310620dc4d6f5994c80fb0139c6f378cc9ca2d435cd.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-HK/lesson-19.cf6973cecadf080c.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -36,7 +36,7 @@
影像分類是針對整個影像進行分類——判斷整個影像符合每個標籤的概率。你會得到模型訓練時使用的每個標籤的概率。 影像分類是針對整個影像進行分類——判斷整個影像符合每個標籤的概率。你會得到模型訓練時使用的每個標籤的概率。
![腰果和番茄醬的影像分類](../../../../../translated_images/zh-HK/image-classifier-cashews-tomato.bc2e16ab8f05cf9ac0f59f73e32efc4227f9a5b601b90b2c60f436694547a965.png) ![腰果和番茄醬的影像分類](../../../../../translated_images/zh-HK/image-classifier-cashews-tomato.bc2e16ab8f05cf9a.webp)
在上面的例子中,兩張影像使用了一個訓練來分類腰果罐或番茄醬罐的模型進行分類。第一張影像是一罐腰果,影像分類器的結果如下: 在上面的例子中,兩張影像使用了一個訓練來分類腰果罐或番茄醬罐的模型進行分類。第一張影像是一罐腰果,影像分類器的結果如下:
@ -60,7 +60,7 @@
> 🎓 *邊界框* 是物件周圍的框。 > 🎓 *邊界框* 是物件周圍的框。
![腰果和番茄醬的物件檢測](../../../../../translated_images/zh-HK/object-detector-cashews-tomato.1af7c26686b4db0e709754aeb196f4e73271f54e2085db3bcccb70d4a0d84d97.png) ![腰果和番茄醬的物件檢測](../../../../../translated_images/zh-HK/object-detector-cashews-tomato.1af7c26686b4db0e.webp)
上面的影像包含一罐腰果和三罐番茄醬。物件檢測器檢測到了腰果,返回了包含腰果的邊界框以及該邊界框包含物件的概率,在此例中為 97.6%。物件檢測器還檢測到了三罐番茄醬,並提供了三個單獨的邊界框,每個檢測到的罐子都有一個邊界框以及該邊界框包含番茄醬罐的概率。 上面的影像包含一罐腰果和三罐番茄醬。物件檢測器檢測到了腰果,返回了包含腰果的邊界框以及該邊界框包含物件的概率,在此例中為 97.6%。物件檢測器還檢測到了三罐番茄醬,並提供了三個單獨的邊界框,每個檢測到的罐子都有一個邊界框以及該邊界框包含番茄醬罐的概率。
@ -111,7 +111,7 @@
創建項目時,請確保使用你之前創建的 `stock-detector-training` 資源。使用 *Object Detection* 項目類型和 *Products on Shelves* 域。 創建項目時,請確保使用你之前創建的 `stock-detector-training` 資源。使用 *Object Detection* 項目類型和 *Products on Shelves* 域。
![Custom Vision 項目設置,名稱設置為 fruit-quality-detector,無描述,資源設置為 fruit-quality-detector-training,項目類型設置為 classification,分類類型設置為 multi class,域設置為 food](../../../../../translated_images/zh-HK/custom-vision-create-object-detector-project.32d4fb9aa8e7e7375f8a799bfce517aca970f2cb65e42d4245c5e635c734ab29.png) ![Custom Vision 項目設置,名稱設置為 fruit-quality-detector,無描述,資源設置為 fruit-quality-detector-training,項目類型設置為 classification,分類類型設置為 multi class,域設置為 food](../../../../../translated_images/zh-HK/custom-vision-create-object-detector-project.32d4fb9aa8e7e737.webp)
✅ *Products on Shelves* 域專門用於檢測貨架上的庫存。閱讀更多有關不同域的信息,請參考 [Microsoft Docs 上的 Select a domain 文檔](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection)。 ✅ *Products on Shelves* 域專門用於檢測貨架上的庫存。閱讀更多有關不同域的信息,請參考 [Microsoft Docs 上的 Select a domain 文檔](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection)。
@ -133,11 +133,11 @@
1. 按照 Microsoft Docs 上 [Build an object detector quickstart 的 Upload and tag images 部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) 上傳你的訓練影像。根據你想檢測的物件類型創建相關標籤。 1. 按照 Microsoft Docs 上 [Build an object detector quickstart 的 Upload and tag images 部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) 上傳你的訓練影像。根據你想檢測的物件類型創建相關標籤。
![上傳對話框顯示上傳成熟和未成熟香蕉的圖片](../../../../../translated_images/zh-HK/image-upload-object-detector.77c7892c3093cb59b79018edecd678749a75d71a099bc8a2d2f2f76320f88a5b.png) ![上傳對話框顯示上傳成熟和未成熟香蕉的圖片](../../../../../translated_images/zh-HK/image-upload-object-detector.77c7892c3093cb59.webp)
畫物件的邊界框時,保持框緊貼物件。標記所有影像可能需要一些時間,但工具會檢測它認為是邊界框的部分,從而加快速度。 畫物件的邊界框時,保持框緊貼物件。標記所有影像可能需要一些時間,但工具會檢測它認為是邊界框的部分,從而加快速度。
![標記一些番茄醬](../../../../../translated_images/zh-HK/object-detector-tag-tomato-paste.f47c362fb0f0eb582f3bc68cf3855fb43a805106395358d41896a269c210b7b4.png) ![標記一些番茄醬](../../../../../translated_images/zh-HK/object-detector-tag-tomato-paste.f47c362fb0f0eb58.webp)
> 💁 如果你有超過 15 張影像的每個物件,你可以在 15 張影像後進行訓練,然後使用 **Suggested tags** 功能。這將使用訓練的模型檢測未標記影像中的物件。你可以確認檢測到的物件,或者拒絕並重新畫邊界框。這可以節省大量時間。 > 💁 如果你有超過 15 張影像的每個物件,你可以在 15 張影像後進行訓練,然後使用 **Suggested tags** 功能。這將使用訓練的模型檢測未標記影像中的物件。你可以確認檢測到的物件,或者拒絕並重新畫邊界框。這可以節省大量時間。
@ -155,7 +155,7 @@
1. 使用 **Quick Test** 按鈕上傳測試影像並驗證物件是否被檢測到。使用你之前創建的測試影像,而不是任何用於訓練的影像。 1. 使用 **Quick Test** 按鈕上傳測試影像並驗證物件是否被檢測到。使用你之前創建的測試影像,而不是任何用於訓練的影像。
![檢測到 3 罐番茄醬,概率分別為 38%、35.5% 和 34.6%](../../../../../translated_images/zh-HK/object-detector-detected-tomato-paste.52656fe87af4c37b4ee540526d63e73ed075da2e54a9a060aa528e0c562fb1b6.png) ![檢測到 3 罐番茄醬,概率分別為 38%、35.5% 和 34.6%](../../../../../translated_images/zh-HK/object-detector-detected-tomato-paste.52656fe87af4c37b.webp)
1. 嘗試所有你擁有的測試影像並觀察概率。 1. 嘗試所有你擁有的測試影像並觀察概率。

@ -1,6 +1,6 @@
# 從物聯網設備檢查庫存 # 從物聯網設備檢查庫存
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-20.0211df9551a8abb3.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -62,7 +62,7 @@
1. 為該迭代版本選擇 **Publish** 按鈕。 1. 為該迭代版本選擇 **Publish** 按鈕。
![發佈按鈕](../../../../../translated_images/zh-HK/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.png) ![發佈按鈕](../../../../../translated_images/zh-HK/custom-vision-object-detector-publish-button.34ee379fc650ccb9.webp)
1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `stock-detector-prediction` 資源。名稱保持為 `Iteration2`,然後選擇 **Publish** 按鈕。 1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `stock-detector-prediction` 資源。名稱保持為 `Iteration2`,然後選擇 **Publish** 按鈕。
@ -76,7 +76,7 @@
同時複製 *Prediction-Key* 值。這是一個安全密鑰,調用模型時必須傳遞該密鑰。只有傳遞該密鑰的應用程式才能使用模型,其他應用程式將被拒絕。 同時複製 *Prediction-Key* 值。這是一個安全密鑰,調用模型時必須傳遞該密鑰。只有傳遞該密鑰的應用程式才能使用模型,其他應用程式將被拒絕。
![顯示 URL 和密鑰的預測 API 對話框](../../../../../translated_images/zh-HK/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.png) ![顯示 URL 和密鑰的預測 API 對話框](../../../../../translated_images/zh-HK/custom-vision-prediction-key-endpoint.30c569ffd0338864.webp)
✅ 當發佈新迭代版本時,它將有不同的名稱。你認為應該如何更改物聯網設備使用的迭代版本? ✅ 當發佈新迭代版本時,它將有不同的名稱。你認為應該如何更改物聯網設備使用的迭代版本?
@ -95,7 +95,7 @@
在 Custom Vision 的 **Predictions** 標籤中,預測結果會在發送進行預測的圖像上繪製邊界框。 在 Custom Vision 的 **Predictions** 標籤中,預測結果會在發送進行預測的圖像上繪製邊界框。
![貨架上4罐番茄醬的預測結果,分別為35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.png) ![貨架上4罐番茄醬的預測結果,分別為35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca341.webp)
在上圖中,偵測到4罐番茄醬。在結果中,每個被偵測物件的圖像上都疊加了一個紅色方框,表示該物件的邊界框。 在上圖中,偵測到4罐番茄醬。在結果中,每個被偵測物件的圖像上都疊加了一個紅色方框,表示該物件的邊界框。
@ -103,7 +103,7 @@
邊界框由4個值定義——上邊距(top)、左邊距(left)、高度(height)和寬度(width)。這些值的範圍是0到1,表示相對於圖像大小的百分比位置。原點(0,0)是圖像的左上角,因此上邊距是從頂部的距離,而邊界框的底部是上邊距加上高度。 邊界框由4個值定義——上邊距(top)、左邊距(left)、高度(height)和寬度(width)。這些值的範圍是0到1,表示相對於圖像大小的百分比位置。原點(0,0)是圖像的左上角,因此上邊距是從頂部的距離,而邊界框的底部是上邊距加上高度。
![番茄醬罐頭周圍的邊界框](../../../../../translated_images/zh-HK/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.png) ![番茄醬罐頭周圍的邊界框](../../../../../translated_images/zh-HK/bounding-box.1420a7ea0d3d15f7.webp)
上圖的寬度為600像素,高度為800像素。邊界框從320像素處開始,給出上邊距值為0.4(800 x 0.4 = 320)。從左側開始,邊界框從240像素處開始,給出左邊距值為0.4(600 x 0.4 = 240)。邊界框的高度為240像素,給出高度值為0.3(800 x 0.3 = 240)。邊界框的寬度為120像素,給出寬度值為0.2(600 x 0.2 = 120)。 上圖的寬度為600像素,高度為800像素。邊界框從320像素處開始,給出上邊距值為0.4(800 x 0.4 = 320)。從左側開始,邊界框從240像素處開始,給出左邊距值為0.4(600 x 0.4 = 240)。邊界框的高度為240像素,給出高度值為0.3(800 x 0.3 = 240)。邊界框的寬度為120像素,給出寬度值為0.2(600 x 0.2 = 120)。
@ -118,7 +118,7 @@
你可以結合邊界框和概率來評估偵測的準確性。例如,物件偵測器可能會偵測到多個重疊的物件,例如一個罐頭在另一個罐頭內。你的程式碼可以檢查邊界框,理解這是不可能的,並忽略任何與其他物件有顯著重疊的物件。 你可以結合邊界框和概率來評估偵測的準確性。例如,物件偵測器可能會偵測到多個重疊的物件,例如一個罐頭在另一個罐頭內。你的程式碼可以檢查邊界框,理解這是不可能的,並忽略任何與其他物件有顯著重疊的物件。
![兩個重疊的邊界框圍繞一罐番茄醬](../../../../../translated_images/zh-HK/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.png) ![兩個重疊的邊界框圍繞一罐番茄醬](../../../../../translated_images/zh-HK/overlap-object-detection.d431e03cae75072a.webp)
在上圖中,一個邊界框顯示了一個78.3%概率的番茄醬罐頭預測。另一個邊界框稍小,位於第一個邊界框內,概率為64.3%。你的程式碼可以檢查邊界框,發現它們完全重疊,並忽略較低概率的預測,因為不可能一個罐頭在另一個罐頭內。 在上圖中,一個邊界框顯示了一個78.3%概率的番茄醬罐頭預測。另一個邊界框稍小,位於第一個邊界框內,概率為64.3%。你的程式碼可以檢查邊界框,發現它們完全重疊,並忽略較低概率的預測,因為不可能一個罐頭在另一個罐頭內。

@ -67,7 +67,7 @@
你將能夠在 Custom Vision 的 **Predictions**(預測)標籤中看到拍攝的影像和這些值。 你將能夠在 Custom Vision 的 **Predictions**(預測)標籤中看到拍攝的影像和這些值。
![架子上有 4 罐番茄醬,預測結果分別為 35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.png) ![架子上有 4 罐番茄醬,預測結果分別為 35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca341.webp)
> 💁 你可以在 [code-detect/pi](../../../../../5-retail/lessons/2-check-stock-device/code-detect/pi) 或 [code-detect/virtual-iot-device](../../../../../5-retail/lessons/2-check-stock-device/code-detect/virtual-iot-device) 資料夾中找到此代碼。 > 💁 你可以在 [code-detect/pi](../../../../../5-retail/lessons/2-check-stock-device/code-detect/pi) 或 [code-detect/virtual-iot-device](../../../../../5-retail/lessons/2-check-stock-device/code-detect/virtual-iot-device) 資料夾中找到此代碼。

@ -95,7 +95,7 @@
你將能夠看到拍攝的影像,並在 Custom Vision 的 **Predictions** 標籤中看到這些值。 你將能夠看到拍攝的影像,並在 Custom Vision 的 **Predictions** 標籤中看到這些值。
![架子上有 4 罐番茄醬,檢測結果分別為 35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.png) ![架子上有 4 罐番茄醬,檢測結果分別為 35.8%、33.5%、25.7% 和 16.6%](../../../../../translated_images/zh-HK/custom-vision-stock-prediction.942266ab1bcca341.webp)
> 💁 你可以在 [code-detect/wio-terminal](../../../../../5-retail/lessons/2-check-stock-device/code-detect/wio-terminal) 資料夾中找到這段程式碼。 > 💁 你可以在 [code-detect/wio-terminal](../../../../../5-retail/lessons/2-check-stock-device/code-detect/wio-terminal) 資料夾中找到這段程式碼。

@ -1,6 +1,6 @@
# 使用物聯網設備進行語音識別 # 使用物聯網設備進行語音識別
![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-21.e34de51354d6606fb5ee08d8c89d0222eea0a2a7aaf744a8805ae847c4f69dc4.jpg) ![本課程概述的手繪筆記](../../../../../translated_images/zh-HK/lesson-21.e34de51354d6606f.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -51,7 +51,7 @@
動圈式麥克風不需要電源,電信號完全由麥克風產生。 動圈式麥克風不需要電源,電信號完全由麥克風產生。
![Patti Smith 使用 Shure SM58(動圈心型)麥克風演唱](../../../../../translated_images/zh-HK/dynamic-mic.8babac890a2d80dfb0874b5bf37d4b851fe2aeb9da6fd72945746176978bf3bb.jpg) ![Patti Smith 使用 Shure SM58(動圈心型)麥克風演唱](../../../../../translated_images/zh-HK/dynamic-mic.8babac890a2d80df.webp)
* 緞帶式 - 緞帶式麥克風與動圈式麥克風類似,但它使用金屬緞帶代替振膜。該緞帶在磁場中移動時會產生電流。與動圈式麥克風一樣,緞帶式麥克風不需要電源。 * 緞帶式 - 緞帶式麥克風與動圈式麥克風類似,但它使用金屬緞帶代替振膜。該緞帶在磁場中移動時會產生電流。與動圈式麥克風一樣,緞帶式麥克風不需要電源。
@ -59,11 +59,11 @@
* 電容式 - 電容式麥克風有一個薄金屬振膜和一個固定的金屬背板。電流被施加到這兩者上,當振膜振動時,板之間的靜電荷發生變化,產生信號。電容式麥克風需要電源才能工作,稱為 *幻象電源*。 * 電容式 - 電容式麥克風有一個薄金屬振膜和一個固定的金屬背板。電流被施加到這兩者上,當振膜振動時,板之間的靜電荷發生變化,產生信號。電容式麥克風需要電源才能工作,稱為 *幻象電源*。
![AKG Acoustics 的 C451B 小振膜電容式麥克風](../../../../../translated_images/zh-HK/condenser-mic.6f6ed5b76ca19e0ec3fd0c544601542d4479a6cb7565db336de49fbbf69f623e.jpg) ![AKG Acoustics 的 C451B 小振膜電容式麥克風](../../../../../translated_images/zh-HK/condenser-mic.6f6ed5b76ca19e0e.webp)
* MEMS - 微機電系統麥克風,或 MEMS,是芯片上的麥克風。它們在硅芯片上刻有壓力敏感振膜,工作原理類似於電容式麥克風。這些麥克風可以非常小,並集成到電路中。 * MEMS - 微機電系統麥克風,或 MEMS,是芯片上的麥克風。它們在硅芯片上刻有壓力敏感振膜,工作原理類似於電容式麥克風。這些麥克風可以非常小,並集成到電路中。
![電路板上的 MEMS 麥克風](../../../../../translated_images/zh-HK/mems-microphone.80574019e1f5e4d9ee72fed720ecd25a39fc2969c91355d17ebb24ba4159e4c4.png) ![電路板上的 MEMS 麥克風](../../../../../translated_images/zh-HK/mems-microphone.80574019e1f5e4d9.webp)
在上圖中,標記為 **LEFT** 的芯片是一個 MEMS 麥克風,其振膜寬度不到一毫米。 在上圖中,標記為 **LEFT** 的芯片是一個 MEMS 麥克風,其振膜寬度不到一毫米。
@ -159,7 +159,7 @@
## 語音轉文字 ## 語音轉文字
![語音服務標誌](../../../../../translated_images/zh-HK/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.png) ![語音服務標誌](../../../../../translated_images/zh-HK/azure-speech-logo.a1f08c4befb0159f.webp)
就像之前項目中的圖像分類一樣,有一些預建的人工智能服務可以將音頻文件中的語音轉換為文字。其中一項服務是語音服務,它是認知服務的一部分,這些預建的人工智能服務可以在你的應用中使用。 就像之前項目中的圖像分類一樣,有一些預建的人工智能服務可以將音頻文件中的語音轉換為文字。其中一項服務是語音服務,它是認知服務的一部分,這些預建的人工智能服務可以在你的應用中使用。

@ -16,13 +16,13 @@ Raspberry Pi 需要一個按鈕來控制音訊捕捉。
#### 任務 - 連接按鈕 #### 任務 - 連接按鈕
![Grove 按鈕](../../../../../translated_images/zh-HK/grove-button.a70cfbb809a8563681003250cf5b06d68cdcc68624f9e2f493d5a534ae2da1e5.png) ![Grove 按鈕](../../../../../translated_images/zh-HK/grove-button.a70cfbb809a85636.webp)
1. 將 Grove 電纜的一端插入按鈕模組上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入按鈕模組上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Grove 基座 HAT 上標記為 **D5** 的數字插座。這個插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Grove 基座 HAT 上標記為 **D5** 的數字插座。這個插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。
![Grove 按鈕連接到 D5 插座](../../../../../translated_images/zh-HK/pi-button.c7a1a4f55943341ce1baf1057658e9a205804d4131d258e820c93f951df0abf3.png) ![Grove 按鈕連接到 D5 插座](../../../../../translated_images/zh-HK/pi-button.c7a1a4f55943341c.webp)
## 捕捉音訊 ## 捕捉音訊

@ -34,7 +34,7 @@ Raspberry Pi 配備了一個 3.5mm 耳機插孔。你可以使用它來連接耳
1. 如果你使用的是 ReSpeaker 2-Mics Pi HAT,可以移除 Grove 基座帽,然後將 ReSpeaker 帽安裝到其位置。 1. 如果你使用的是 ReSpeaker 2-Mics Pi HAT,可以移除 Grove 基座帽,然後將 ReSpeaker 帽安裝到其位置。
![一個安裝了 ReSpeaker 帽的 Raspberry Pi](../../../../../translated_images/zh-HK/pi-respeaker-hat.f00fabe7dd039a93e2e0aa0fc946c9af0c6a9eb17c32fa1ca097fb4e384f69f0.png) ![一個安裝了 ReSpeaker 帽的 Raspberry Pi](../../../../../translated_images/zh-HK/pi-respeaker-hat.f00fabe7dd039a93.webp)
在本課程的後續部分,你將需要一個 Grove 按鈕,但此帽子內建了一個按鈕,因此不需要 Grove 基座帽。 在本課程的後續部分,你將需要一個 Grove 按鈕,但此帽子內建了一個按鈕,因此不需要 Grove 基座帽。

@ -10,7 +10,7 @@
✅ 在 [維基百科的直接記憶體存取頁面](https://wikipedia.org/wiki/Direct_memory_access) 上了解更多關於 DMA 的資訊。 ✅ 在 [維基百科的直接記憶體存取頁面](https://wikipedia.org/wiki/Direct_memory_access) 上了解更多關於 DMA 的資訊。
![音頻從麥克風進入 ADC,然後進入 DMAC。這會寫入一個緩衝區。當這個緩衝區滿了之後,它會被處理,DMAC 會寫入第二個緩衝區](../../../../../translated_images/zh-HK/dmac-adc-buffers.4509aee49145c90bc2e1be472b8ed2ddfcb2b6a81ad3e559114aca55f5fff759.png) ![音頻從麥克風進入 ADC,然後進入 DMAC。這會寫入一個緩衝區。當這個緩衝區滿了之後,它會被處理,DMAC 會寫入第二個緩衝區](../../../../../translated_images/zh-HK/dmac-adc-buffers.4509aee49145c90b.webp)
DMAC 可以以固定的間隔從 ADC 捕捉音頻,例如每秒 16,000 次以捕捉 16KHz 的音頻。它可以將捕捉到的數據寫入預先分配的記憶體緩衝區,當緩衝區滿了之後,將其提供給程式碼進行處理。使用這些記憶體可能會延遲音頻捕捉,但你可以設置多個緩衝區。DMAC 會先寫入緩衝區 1,當緩衝區 1 滿了之後,通知程式碼處理緩衝區 1,然後 DMAC 會寫入緩衝區 2。當緩衝區 2 滿了之後,它會通知程式碼,然後回到寫入緩衝區 1。這樣,只要你在填滿一個緩衝區的時間內處理完數據,就不會丟失任何數據。 DMAC 可以以固定的間隔從 ADC 捕捉音頻,例如每秒 16,000 次以捕捉 16KHz 的音頻。它可以將捕捉到的數據寫入預先分配的記憶體緩衝區,當緩衝區滿了之後,將其提供給程式碼進行處理。使用這些記憶體可能會延遲音頻捕捉,但你可以設置多個緩衝區。DMAC 會先寫入緩衝區 1,當緩衝區 1 滿了之後,通知程式碼處理緩衝區 1,然後 DMAC 會寫入緩衝區 2。當緩衝區 2 滿了之後,它會通知程式碼,然後回到寫入緩衝區 1。這樣,只要你在填滿一個緩衝區的時間內處理完數據,就不會丟失任何數據。

@ -1,6 +1,6 @@
# 理解語言 # 理解語言
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-22.6148ea28500d9e00c396aaa2649935fb6641362c8f03d8e5e90a676977ab01dd.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-22.6148ea28500d9e00.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -46,7 +46,7 @@
## 創建語言理解模型 ## 創建語言理解模型
![LUIS 標誌](../../../../../translated_images/zh-HK/luis-logo.5cb4f3e88c020ee6df4f614e8831f4a4b6809a7247bf52085fb48d629ef9be52.png) ![LUIS 標誌](../../../../../translated_images/zh-HK/luis-logo.5cb4f3e88c020ee6.webp)
你可以使用 LUIS(Language Understanding Intelligent Service),一個來自 Microsoft 的語言理解服務,來創建語言理解模型。LUIS 是認知服務的一部分。 你可以使用 LUIS(Language Understanding Intelligent Service),一個來自 Microsoft 的語言理解服務,來創建語言理解模型。LUIS 是認知服務的一部分。
@ -169,7 +169,7 @@
1. 當你輸入每個示例時,LUIS 會開始檢測實體,並將檢測到的實體用下劃線標記並標籤。 1. 當你輸入每個示例時,LUIS 會開始檢測實體,並將檢測到的實體用下劃線標記並標籤。
![示例中數字和時間單位被 LUIS 用下劃線標記](../../../../../translated_images/zh-HK/luis-intent-examples.25716580b2d2723cf1bafdf277d015c7f046d8cfa20f27bddf3a0873ec45fab7.png) ![示例中數字和時間單位被 LUIS 用下劃線標記](../../../../../translated_images/zh-HK/luis-intent-examples.25716580b2d2723c.webp)
### 任務 - 訓練和測試模型 ### 任務 - 訓練和測試模型

@ -1,6 +1,6 @@
# 設定計時器並提供語音回饋 # 設定計時器並提供語音回饋
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-23.f38483e1d4df4828990d3f02d60e46c978b075d384ae7cb4f7bab738e107c850.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-23.f38483e1d4df4828.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。

@ -1,6 +1,6 @@
# 支援多語言 # 支援多語言
![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-24.4246968ed058510ab275052e87ef9aa89c7b2f938915d103c605c04dc6cd5bb7.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-HK/lesson-24.4246968ed058510a.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -74,7 +74,7 @@
### 認知服務語音服務 ### 認知服務語音服務
![語音服務標誌](../../../../../translated_images/zh-HK/azure-speech-logo.a1f08c4befb0159f2cb5d692d3baf5b599e7b44759d316da907bda1508f46a4a.png) ![語音服務標誌](../../../../../translated_images/zh-HK/azure-speech-logo.a1f08c4befb0159f.webp)
你在過去幾課中使用的語音服務具有語音識別的翻譯功能。當你進行語音識別時,可以請求不僅獲取相同語言的文字,還可以獲取其他語言的翻譯文字。 你在過去幾課中使用的語音服務具有語音識別的翻譯功能。當你進行語音識別時,可以請求不僅獲取相同語言的文字,還可以獲取其他語言的翻譯文字。
@ -82,7 +82,7 @@
### 認知服務翻譯服務 ### 認知服務翻譯服務
![翻譯服務標誌](../../../../../translated_images/zh-HK/azure-translator-logo.c6ed3a4a433edfd2f11577eca105412c50b8396b194cbbd730723dd1d0793bcd.png) ![翻譯服務標誌](../../../../../translated_images/zh-HK/azure-translator-logo.c6ed3a4a433edfd2.webp)
翻譯服務是一個專門的翻譯服務,可以將文字從一種語言翻譯成一種或多種目標語言。除了翻譯,它還支援許多額外功能,例如屏蔽不雅詞語。它還允許你為特定單詞或句子提供特定翻譯,以處理不希望翻譯的術語或具有特定知名翻譯的術語。 翻譯服務是一個專門的翻譯服務,可以將文字從一種語言翻譯成一種或多種目標語言。除了翻譯,它還支援許多額外功能,例如屏蔽不雅詞語。它還允許你為特定單詞或句子提供特定翻譯,以處理不希望翻譯的術語或具有特定知名翻譯的術語。

@ -25,7 +25,7 @@
> >
> 例如,如果你用英文訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將「設置一個 2 分 27 秒的計時器」這樣的句子從英文翻譯成法語,然後使用 **聆聽翻譯** 按鈕,將翻譯後的內容說入麥克風。 > 例如,如果你用英文訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將「設置一個 2 分 27 秒的計時器」這樣的句子從英文翻譯成法語,然後使用 **聆聽翻譯** 按鈕,將翻譯後的內容說入麥克風。
> >
> ![Bing 翻譯上的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.png) > ![Bing 翻譯上的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a9.webp)
1. 在 `speech_api_key` 下方新增翻譯 API 金鑰: 1. 在 `speech_api_key` 下方新增翻譯 API 金鑰:

@ -37,7 +37,7 @@
> >
> 例如,如果你用英語訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將像 "設置一個 2 分 27 秒的計時器" 這樣的句子從英語翻譯成法語,然後使用 **聆聽翻譯** 按鈕將翻譯語音說入你的麥克風。 > 例如,如果你用英語訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將像 "設置一個 2 分 27 秒的計時器" 這樣的句子從英語翻譯成法語,然後使用 **聆聽翻譯** 按鈕將翻譯語音說入你的麥克風。
> >
> ![Bing 翻譯中的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.png) > ![Bing 翻譯中的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a9.webp)
1. 替換 `recognizer_config` 和 `recognizer` 的聲明為以下內容: 1. 替換 `recognizer_config` 和 `recognizer` 的聲明為以下內容:

@ -105,7 +105,7 @@
> >
> 例如,如果你用英語訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將 "set a 2 minute and 27 second timer" 從英語翻譯成法語,然後使用 **聆聽翻譯** 按鈕將翻譯語音說入麥克風。 > 例如,如果你用英語訓練 LUIS,但希望使用法語作為使用者語言,你可以使用 Bing 翻譯將 "set a 2 minute and 27 second timer" 從英語翻譯成法語,然後使用 **聆聽翻譯** 按鈕將翻譯語音說入麥克風。
> >
> ![Bing 翻譯上的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a92f41ea74a5cf42bb4c63d6faaa08e7f46924e072a35daa48.png) > ![Bing 翻譯上的聆聽翻譯按鈕](../../../../../translated_images/zh-HK/bing-translate.348aa796d6efe2a9.webp)
1. 在 `SPEECH_LOCATION` 下方新增翻譯 API 金鑰和位置: 1. 在 `SPEECH_LOCATION` 下方新增翻譯 API 金鑰和位置:

@ -10,203 +10,214 @@
### 加入 Azure AI Foundry 社群 ### 加入 Azure AI Foundry 社群
如果你在建立 AI 應用時遇到困難或有任何問題,歡迎加入與其他學習者和經驗豐富的開發者一同討論 MCP。這是一個支持性的社群,鼓勵提問並自由分享知識。 如果你在建立 AI 應用程式時遇到困難或有任何問題,歡迎加入與其他學習者及經驗豐富的開發者一起討論 MCP 的行列。這是一個支持性的社群,歡迎提問並自由分享知識。
[![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG) [![Microsoft Foundry Discord](https://dcbadge.limes.pink/api/server/nTYy5BXMWG)](https://discord.gg/nTYy5BXMWG)
如果你有產品反饋或在建立過程中遇到錯誤,請造訪: 如果你在開發過程中有產品回饋或錯誤,請造訪:
[![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum) [![Microsoft Foundry Developer Forum](https://img.shields.io/badge/GitHub-Microsoft_Foundry_Developer_Forum-blue?style=for-the-badge&logo=github&color=000000&logoColor=fff)](https://aka.ms/foundry/forum)
請按照以下步驟開始使用這些資源: 請依照以下步驟開始使用這些資源:
1. **Fork 此儲存庫**:點擊 [![GitHub forks](https://img.shields.io/github/forks/microsoft/IoT-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/IoT-For-Beginners/fork) 1. <strong>派生這個儲存庫</strong>:點擊 [![GitHub forks](https://img.shields.io/github/forks/microsoft/IoT-For-Beginners.svg?style=social&label=Fork)](https://GitHub.com/microsoft/IoT-For-Beginners/fork)
2. **克隆此儲存庫**: `git clone https://github.com/microsoft/IoT-For-Beginners.git` 2. <strong>複製儲存庫</strong>: `git clone https://github.com/microsoft/IoT-For-Beginners.git`
3. [**加入 Microsoft Foundry Discord,與專家和其他開發者會面**](https://discord.com/invite/ByRwuEEgH4) 3. [**加入 Microsot Foundry Discord,並與專家及其他開發者會面**](https://discord.com/invite/ByRwuEEgH4)
### 🌐 多語言支援 ### 🌐 多語言支援
#### 透過 GitHub Action 支援(自動且永遠保持最新) #### 透過 GitHub Action 支援(自動且隨時更新)
<!-- CO-OP TRANSLATOR LANGUAGES TABLE START --> <!-- CO-OP TRANSLATOR LANGUAGES TABLE START -->
[Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](./README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md) [Arabic](../ar/README.md) | [Bengali](../bn/README.md) | [Bulgarian](../bg/README.md) | [Burmese (Myanmar)](../my/README.md) | [Chinese (Simplified)](../zh-CN/README.md) | [Chinese (Traditional, Hong Kong)](./README.md) | [Chinese (Traditional, Macau)](../zh-MO/README.md) | [Chinese (Traditional, Taiwan)](../zh-TW/README.md) | [Croatian](../hr/README.md) | [Czech](../cs/README.md) | [Danish](../da/README.md) | [Dutch](../nl/README.md) | [Estonian](../et/README.md) | [Finnish](../fi/README.md) | [French](../fr/README.md) | [German](../de/README.md) | [Greek](../el/README.md) | [Hebrew](../he/README.md) | [Hindi](../hi/README.md) | [Hungarian](../hu/README.md) | [Indonesian](../id/README.md) | [Italian](../it/README.md) | [Japanese](../ja/README.md) | [Kannada](../kn/README.md) | [Khmer](../km/README.md) | [Korean](../ko/README.md) | [Lithuanian](../lt/README.md) | [Malay](../ms/README.md) | [Malayalam](../ml/README.md) | [Marathi](../mr/README.md) | [Nepali](../ne/README.md) | [Nigerian Pidgin](../pcm/README.md) | [Norwegian](../no/README.md) | [Persian (Farsi)](../fa/README.md) | [Polish](../pl/README.md) | [Portuguese (Brazil)](../pt-BR/README.md) | [Portuguese (Portugal)](../pt-PT/README.md) | [Punjabi (Gurmukhi)](../pa/README.md) | [Romanian](../ro/README.md) | [Russian](../ru/README.md) | [Serbian (Cyrillic)](../sr/README.md) | [Slovak](../sk/README.md) | [Slovenian](../sl/README.md) | [Spanish](../es/README.md) | [Swahili](../sw/README.md) | [Swedish](../sv/README.md) | [Tagalog (Filipino)](../tl/README.md) | [Tamil](../ta/README.md) | [Telugu](../te/README.md) | [Thai](../th/README.md) | [Turkish](../tr/README.md) | [Ukrainian](../uk/README.md) | [Urdu](../ur/README.md) | [Vietnamese](../vi/README.md)
> **偏好本地克隆?** > **想本地複製?**
>
> 此儲存庫包含超過 50 種語言的翻譯,會大幅增加下載大小。若要不下載翻譯內容,請使用稀疏檢出功能: > 這個儲存庫包括 50 多種語言的翻譯,會大幅增加下載大小。若想不包含翻譯只複製部分,請使用稀疏檢出:
>
> **Bash / macOS / Linux:**
> ```bash > ```bash
> git clone --filter=blob:none --sparse https://github.com/microsoft/IoT-For-Beginners.git > git clone --filter=blob:none --sparse https://github.com/microsoft/IoT-For-Beginners.git
> cd IoT-For-Beginners > cd IoT-For-Beginners
> git sparse-checkout set --no-cone '/*' '!translations' '!translated_images' > git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'
> ``` > ```
> 這樣就能更快下載,並擁有進行課程所需的所有內容。 >
> **CMD (Windows):**
> ```cmd
> git clone --filter=blob:none --sparse https://github.com/microsoft/IoT-For-Beginners.git
> cd IoT-For-Beginners
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> 這樣你可以更快下載並獲得完成課程所需的所有內容。
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END --> <!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
# IoT 初學者課程計劃 # 新手物聯網課程大綱
微軟的 Azure Cloud Advocates 很高興提供一個為期 12 週、共 24 課的 IoT 基礎課程。每堂課包含課前和課後測驗、完成課程的書面指引、解答、作業等。我們採用專案導向的教學法,讓你邊做邊學,這是學習新技能的有效方法。 微軟的 Azure Cloud Advocates 很高興提供一套為期 12 週、共 24 課的物聯網基礎課程。每課包含課前和課後小測驗、詳盡的書面教學、解答、作業等等。我們以專案為核心的教學法讓你在實作中學習,這是新技能更容易「融會貫通」的有效方法。
這些專案涵蓋食物從農場到餐桌的旅程。包括農業、運輸、製造、零售和消費,這些都是 IoT 裝置熱門的產業領域。 課程的專案涵蓋食物從農場到餐桌的整個過程,包括農業、物流、製造、零售與消費端,這些都是物聯網設備常見應用領域。
![課程路線圖,涵蓋 24 課,內容包含介紹、農業、運輸、加工、零售及烹飪](../../translated_images/zh-HK/Roadmap.bb1dec285dda0eda.webp) ![課程路線圖,涵蓋 24 課,內容含簡介、農業、運輸、加工、零售及烹飪](../../translated_images/zh-HK/Roadmap.bb1dec285dda0eda.webp)
> 速寫筆記由 [Nitya Narasimhan](https://github.com/nitya) 製作。點擊圖片可查看較大版本。 > 繪圖筆記由 [Nitya Narasimhan](https://github.com/nitya) 製作。點擊圖片可觀看大圖。
**衷心感謝編寫者 [Jen Fox](https://github.com/jenfoxbot)、[Jen Looper](https://github.com/jlooper)、[Jim Bennett](https://github.com/jimbobbennett) 與速寫筆記藝術家 [Nitya Narasimhan](https://github.com/nitya)。** **非常感謝我們的作者 [Jen Fox](https://github.com/jenfoxbot)、[Jen Looper](https://github.com/jlooper)、[Jim Bennett](https://github.com/jimbobbennett),以及繪圖筆記藝術家 [Nitya Narasimhan](https://github.com/nitya)。**
**也感謝我們的 [Microsoft Learn 學生大使團隊](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) 協助審核及翻譯課程內容 - 包括 [Aditya Garg](https://github.com/AdityaGarg00)、[Anurag Sharma](https://github.com/Anurag-0-1-A)、[Arpita Das](https://github.com/Arpiiitaaa)、[Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/)、[Bhavesh Suneja](https://github.com/EliteWarrior315)、[Faith Hunja](https://faithhunja.github.io/)、[Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/)、[Manvi Jha](https://github.com/Severus-Matthew)、[Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/)、[Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119)、[Mohammad Zulfikar](https://github.com/mohzulfikar)、[Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba)、[Thanmai Gowducheruvu](https://github.com/innovation-platform) 與 [Zina Kamel](https://www.linkedin.com/in/zina-kamel/)。** **同時感謝我們的 [Microsoft Learn 學生大使團隊](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) 審閱與翻譯這套課程——[Aditya Garg](https://github.com/AdityaGarg00)、[Anurag Sharma](https://github.com/Anurag-0-1-A)、[Arpita Das](https://github.com/Arpiiitaaa)、[Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/)、[Bhavesh Suneja](https://github.com/EliteWarrior315)、[Faith Hunja](https://faithhunja.github.io/)、[Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/)、[Manvi Jha](https://github.com/Severus-Matthew)、[Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/)、[Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119)、[Mohammad Zulfikar](https://github.com/mohzulfikar)、[Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba)、[Thanmai Gowducheruvu](https://github.com/innovation-platform) 和 [Zina Kamel](https://www.linkedin.com/in/zina-kamel/)。**
認識團隊吧! 認識團隊成員!
[![促銷影片](../../images/IOT.gif)](https://youtu.be/-wippUJRi5k) [![宣傳影片](../../images/IOT.gif)](https://youtu.be/-wippUJRi5k)
**Gif 由** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) 製作 **Gif 由** [Mohit Jaisal](https://linkedin.com/in/mohitjaisal) 製作
> 🎥 點擊上方圖片觀看本專案影片! > 🎥 點擊上方圖片觀看專案影片!
> **教師們**,我們提供了[使用本課程的建議](for-teachers.md)。若想自行建立課程,亦可參考我們附上的[課程模板](lesson-template/README.md)。 > <strong>給老師的建議</strong> 我們[提供了使用這份課程的建議](for-teachers.md),如果你想建立自己的課程,我們也提供了[課程模板](lesson-template/README.md)。
> **[學生們](https://aka.ms/student-page)**,若想自行使用本課程,請 fork 整個儲存庫並獨立完成練習,從課前測驗開始,閱讀課程內容並完成其他活動。嘗試理解課程內容後自行完成專案,不建議直接複製解答程式碼;不過每個專案導向課程的 /solutions 資料夾中有提供程式碼。另一個方法是組織朋輩學習小組,一起學習內容。若要進階學習,我們推薦 [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn)。 > **[給學生](https://aka.ms/student-page)**,若想自行使用這門課程,請派生整個儲存庫並自行完成練習,從課前小測驗開始,閱讀講義並完成所有活動。盡量理解課程後自行完成專案,而非直接複製解答代碼;不過專案導向課程的/solutions資料夾中有提供解答代碼。另一個方式是組成讀書會,與朋友一同學習。若想更深入學習,我們推薦[Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn)。
關於本課程的影片介紹,請觀看此影片: 想要瞭解這課程的視訊總覽,請看這 影片:
[![促銷影片](https://img.youtube.com/vi/bccEMm8gRuc/0.jpg)](https://youtube.com/watch?v=bccEMm8gRuc "Promo video") [![宣傳影片](https://img.youtube.com/vi/bccEMm8gRuc/0.jpg)](https://youtube.com/watch?v=bccEMm8gRuc "Promo video")
> 🎥 點擊上方圖片觀看本專案影片! > 🎥 點擊上方圖片觀看專案影片!
## 教學理念 ## 教學法
我們在開發這套課程時,採用了兩個教學原則:確保專案導向,以及包含頻繁的測驗。課程結束時,學生將完成一套植物監控與灌溉系統、車輛追蹤器、智慧工廠以追蹤及檢查食物,還有一個語音控制的烹飪計時器;同時學會物聯網基礎,包括如何撰寫裝置程式碼、連接雲端、分析遙測資料,並在邊緣運行 AI。 本課程採用兩大教學原則:專案導向與頻繁的小測驗。學完系列課程結束時,學生將完成植物監控及澆水系統、車輛追蹤器、智慧工廠的食物追蹤與檢查系統,以及語音控制烹飪計時器,並學會物聯網基本概念,包括如何撰寫裝置程式碼、連接雲端、分析遙測資料及在邊緣運行 AI。
透過專案對應內容,讓學生更投入學習,也提高概念記憶度。 結合實際專案讓內容更有趣,學習成效與概念的記憶也會有所提升。
另外,上課前的低壓力測驗能幫助學生設定學習目標,而課後測驗則促進學習鞏固。本課程設計靈活有趣,可完整或部分修讀。專案由簡入深,隨著 12 週週期逐漸變得更複雜。 此外,課前的低壓力測驗能讓學生設立學習目標,課後再有第二次測驗則幫助鞏固所學。這套課程設計彈性且有趣,學員可全修或部分選修,專案從簡單到複雜,循序漸進完成 12 週循環。
每個專案都依據學生和嗜好者可取得的真實硬體設計。專案同時探討特定領域,提供相關背景知識。要成為成功的開發者,了解你解決問題的領域非常重要,這些背景知識幫助學生將物聯網解決方案與實際問題情境相連結,明白自己建構解決方案的原因,並體會最終使用者的需求。 每個專案使用學生及愛好者可取得的實體硬體為基礎,探索專案領域並提供相關背景知識。成功的開發者通常會對所解決的領域有所理解,提供背景知識幫助學生將物聯網方案與學習內容,放在真實世界可能遇到的問題脈絡中思考。學生能了解所建構方案的「為什麼」,並心懷對最終用戶的理解。
## 硬體設備 ## 硬體
我們有兩個物聯網硬件選擇,視個人喜好、編程語言知識或偏好、學習目標及可用性而定。我們亦提供了「虛擬硬件」版本,適合沒有硬件的用家,或想在購買前多了解的學習者。您可以在[硬件頁面](./hardware.md)閱讀更多內容及「購物清單」,其中包括我們的合作夥伴 Seeed Studio 提供的完整套件購買連結。
我們提供兩款 IoT 硬體選項,供專案使用,取決於個人喜好、程式語言知識或學習目標與硬體可用性。另也提供「虛擬硬體」版本,適合尚無硬體或想先學習再購買的人。你可以在 [硬體頁面](./hardware.md) 詳讀更多內容,並取得購買套件的清單,亦包含我們合作夥伴 Seeed Studio 的連結。 > 💁 請參閱我們的[行為守則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)及[翻譯指南](TRANSLATIONS.md)。我們歡迎您的建設性意見!
> 💁 查閱我們的[行為守則](CODE_OF_CONDUCT.md)、[貢獻指南](CONTRIBUTING.md)及[翻譯指南](TRANSLATIONS.md)。歡迎您提供建設性的意見反饋!
> >
> 🔧 遇到問題?請查看我們的[疑難排解指南](TROUBLESHOOTING.md),了解常見問題的解決方法。 > 🔧 遇到問題?請查看我們的[疑難排解指南](TROUBLESHOOTING.md),尋找常見問題解決方案。
## 每個課程包含: ## 每節課包含:
- 手繪筆記 - 筆記草圖
- 可選補充影片 - 選擇性的補充視頻
- 課前熱身小測驗 - 課前暖身測驗
- 書面課程內容 - 書面課程內容
- 專案式課程包含逐步指導如何完成專案 - 對於基於項目的課程,提供逐步指導如何構建項目
- 知識檢查 - 知識檢查
- 挑戰題 - 挑戰題
- 補充閱讀 - 補充閱讀
- 作業 - 作業
- [課後小測驗](https://ff-quizzes.netlify.app/en/) - [課後測驗](https://ff-quizzes.netlify.app/en/)
> **關於小測驗的說明**:所有小測驗均包含在 quiz-app 資料夾內,共有 48 個小測驗,每個小測驗包含三題。這些小測驗會在課程內容中提供連結,但 quiz app 也能本地運行或部署到 Azure;請依照 quiz-app 資料夾內的說明操作。目前正在逐步進行本地化。 > <strong>關於測驗的說明</strong>:所有測驗均包含於 quiz-app 資料夾內,共有 48 個測驗,每個測驗包含三道題目。測驗連結設於課程中,但測驗應用可於本地運行或部署至 Azure;請按照 quiz-app 資料夾中的指示操作。測驗正逐步本地化中。
## 課程 ## 課程
| | 專案名稱 | 教授概念 | 學習目標 | 連結課程 | | | 項目名稱 | 授課概念 | 學習目標 | 連結課程 |
| :---: | :------------------------------------: | :---------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------: | | :---: | :---------------------------------: | :--------------------------------------------------: | --------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------------------------------------------------------------------------: |
| 01 | [Getting started](./1-getting-started/README.md) | 物聯網入門 | 學習物聯網的基本原理與物聯網解決方案的基礎元素,如感測器與雲端服務,同時設定您的第一個物聯網裝置 | [Introduction to IoT](./1-getting-started/lessons/1-introduction-to-iot/README.md) | | 01 | [入門](./1-getting-started/README.md) | 物聯網介紹 | 學習物聯網的基本原理及物聯網解決方案的基本組件,例如感應器和雲端服務,同時設置您的第一個物聯網設備 | [物聯網介紹](./1-getting-started/lessons/1-introduction-to-iot/README.md) |
| 02 | [Getting started](./1-getting-started/README.md) | 深入了解物聯網 | 深入了解物聯網系統的組成元件,並學習微控制器與單板電腦的基礎知識 | [A deeper dive into IoT](./1-getting-started/lessons/2-deeper-dive/README.md) | | 02 | [入門](./1-getting-started/README.md) | 深入了解物聯網 | 學習更多有關物聯網系統的組件,以及微控制器和單板電腦 | [深入了解物聯網](./1-getting-started/lessons/2-deeper-dive/README.md) |
| 03 | [Getting started](./1-getting-started/README.md) | 使用感測器與執行器與物理世界互動 | 瞭解如何利用感測器擷取物理世界資料,與利用執行器傳送反饋,同時打造一個夜燈 | [Interact with the physical world with sensors and actuators](./1-getting-started/lessons/3-sensors-and-actuators/README.md) | | 03 | [入門](./1-getting-started/README.md) | 透過感應器和執行器與實體世界互動 | 瞭解感應器用於從物理世界收集數據,及執行器用於回饋,並構建一個夜燈 | [透過感應器和執行器與實體世界互動](./1-getting-started/lessons/3-sensors-and-actuators/README.md) |
| 04 | [Getting started](./1-getting-started/README.md) | 將您的裝置連接到網際網路 | 學習如何將物聯網裝置連接到網際網路,透過連接夜燈到 MQTT 代理伺服器來傳送與接收訊息 | [Connect your device to the Internet](./1-getting-started/lessons/4-connect-internet/README.md) | | 04 | [入門](./1-getting-started/README.md) | 連接裝置至互聯網 | 學習如何將物聯網設備連接至互聯網,透過連接您的夜燈到 MQTT 代理發送及接收消息 | [連接裝置至互聯網](./1-getting-started/lessons/4-connect-internet/README.md) |
| 05 | [Farm](./2-farm/README.md) | 預測植物生長 | 使用物聯網裝置擷取的溫度資料,學習如何預測植物生長 | [Predict plant growth](./2-farm/lessons/1-predict-plant-growth/README.md) | | 05 | [農場](./2-farm/README.md) | 預測植物生長 | 學習如何利用物聯網裝置收集的溫度數據來預測植物生長 | [預測植物生長](./2-farm/lessons/1-predict-plant-growth/README.md) |
| 06 | [Farm](./2-farm/README.md) | 偵測土壤濕度 | 學習如何偵測土壤濕度並校準土壤濕度感測器 | [Detect soil moisture](./2-farm/lessons/2-detect-soil-moisture/README.md) | | 06 | [農場](./2-farm/README.md) | 檢測土壤濕度 | 學習如何檢測土壤濕度並校準土壤濕度感測器 | [檢測土壤濕度](./2-farm/lessons/2-detect-soil-moisture/README.md) |
| 07 | [Farm](./2-farm/README.md) | 自動化植物澆水 | 學習如何使用繼電器與 MQTT 自動與定時澆水 | [Automated plant watering](./2-farm/lessons/3-automated-plant-watering/README.md) | | 07 | [農場](./2-farm/README.md) | 自動化灌溉系統 | 學習如何利用繼電器與 MQTT 自動化及定時灌溉 | [自動化灌溉系統](./2-farm/lessons/3-automated-plant-watering/README.md) |
| 08 | [Farm](./2-farm/README.md) | 將您的植物遷移至雲端 | 了解雲端與雲端託管的物聯網服務,以及如何將您的植物連接到這些服務之一,而非使用公共 MQTT 代理伺服器 | [Migrate your plant to the cloud](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) | | 08 | [農場](./2-farm/README.md) | 將您的植物數據遷移至雲端 | 學習關於雲端及雲端物聯網服務,以及如何將您的植物接入這類服務,而非公眾 MQTT 代理 | [將您的植物數據遷移至雲端](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) |
| 09 | [Farm](./2-farm/README.md) | 將您的應用程式邏輯遷移到雲端 | 了解如何在雲端撰寫響應物聯網訊息的應用程式邏輯 | [Migrate your application logic to the cloud](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) | | 09 | [農場](./2-farm/README.md) | 將應用程式邏輯遷移至雲端 | 學習如何在雲端編寫可回應物聯網消息的應用程式邏輯 | [將應用程式邏輯遷移至雲端](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) |
| 10 | [Farm](./2-farm/README.md) | 保護您的植物安全 | 了解物聯網安全概念以及如何使用金鑰與憑證來保護您的植物安全 | [Keep your plant secure](./2-farm/lessons/6-keep-your-plant-secure/README.md) | | 10 | [農場](./2-farm/README.md) | 保護您的植物安全 | 學習物聯網安全,及如何用密鑰和證書保障您的植物安全 | [保護您的植物安全](./2-farm/lessons/6-keep-your-plant-secure/README.md) |
| 11 | [Transport](./3-transport/README.md) | 位置追蹤 | 了解物聯網裝置的 GPS 位置追蹤 | [Location tracking](./3-transport/lessons/1-location-tracking/README.md) | | 11 | [運輸](./3-transport/README.md) | 位置追蹤 | 學習物聯網設備的 GPS 位置跟蹤 | [位置追蹤](./3-transport/lessons/1-location-tracking/README.md) |
| 12 | [Transport](./3-transport/README.md) | 儲存位置資料 | 學習如何儲存物聯網資料以供後續視覺化或分析 | [Store location data](./3-transport/lessons/2-store-location-data/README.md) | | 12 | [運輸](./3-transport/README.md) | 儲存位置資料 | 學習如何儲存物聯網數據以便後續視覺化或分析 | [儲存位置資料](./3-transport/lessons/2-store-location-data/README.md) |
| 13 | [Transport](./3-transport/README.md) | 視覺化位置資料 | 了解如何在地圖上視覺化位置資料,以及地圖如何以二維方式表示真實的三維世界 | [Visualize location data](./3-transport/lessons/3-visualize-location-data/README.md) | | 13 | [運輸](./3-transport/README.md) | 視覺化位置資料 | 了解如何在地圖上視覺化位置資料,以及地圖如何以二維形式呈現三維的現實世界 | [視覺化位置資料](./3-transport/lessons/3-visualize-location-data/README.md) |
| 14 | [Transport](./3-transport/README.md) | 地理圍欄 | 了解什麼是地理圍欄,以及如何利用它在供應鏈車輛接近目的地時發出警示 | [Geofences](./3-transport/lessons/4-geofences/README.md) | | 14 | [運輸](./3-transport/README.md) | 地理圍欄 | 學習關於地理圍欄,以及如何用它們在供應鏈中車輛靠近目的地時發出警示 | [地理圍欄](./3-transport/lessons/4-geofences/README.md) |
| 15 | [Manufacturing](./4-manufacturing/README.md) | 訓練水果品質檢測器 | 了解如何在雲端訓練影像分類器來檢測水果品質 | [Train a fruit quality detector](./4-manufacturing/lessons/1-train-fruit-detector/README.md) | | 15 | [製造](./4-manufacturing/README.md) | 訓練水果品質檢測器 | 學習如何在雲端訓練圖像分類器來檢測水果品質 | [訓練水果品質檢測器](./4-manufacturing/lessons/1-train-fruit-detector/README.md) |
| 16 | [Manufacturing](./4-manufacturing/README.md) | 從物聯網裝置檢查水果品質 | 了解如何從物聯網裝置使用您的水果品質檢測器 | [Check fruit quality from an IoT device](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) | | 16 | [製造](./4-manufacturing/README.md) | 從物聯網裝置檢測水果品質 | 學習如何使用您的水果品質檢測器於物聯網裝置 | [從物聯網裝置檢測水果品質](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) |
| 17 | [Manufacturing](./4-manufacturing/README.md) | 在邊緣運行您的水果檢測器 | 了解如何在物聯網邊緣裝置上運行您的水果檢測器 | [Run your fruit detector on the edge](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) | | 17 | [製造](./4-manufacturing/README.md) | 在邊緣裝置執行水果檢測器 | 學習如何在物聯網裝置的邊緣計算端運行水果檢測器 | [在邊緣裝置執行水果檢測器](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) |
| 18 | [Manufacturing](./4-manufacturing/README.md) | 從感測器觸發水果品質檢測 | 了解如何從感測器觸發水果品質檢測 | [Trigger fruit quality detection from a sensor](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) | | 18 | [製造](./4-manufacturing/README.md) | 從感測器觸發水果品質檢測 | 學習如何從感測器觸發水果品質檢測 | [從感測器觸發水果品質檢測](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) |
| 19 | [Retail](./5-retail/README.md) | 訓練庫存檢測器 | 了解如何使用物件偵測訓練庫存檢測器以計算商店內的庫存 | [Train a stock detector](./5-retail/lessons/1-train-stock-detector/README.md) | | 19 | [零售](./5-retail/README.md) | 訓練庫存檢測器 | 學習如何利用物件檢測訓練庫存檢測器來統計店內庫存 | [訓練庫存檢測器](./5-retail/lessons/1-train-stock-detector/README.md) |
| 20 | [Retail](./5-retail/README.md) | 從物聯網裝置檢查庫存 | 了解如何使用物件偵測模型從物聯網裝置檢查庫存 | [Check stock from an IoT device](./5-retail/lessons/2-check-stock-device/README.md) | | 20 | [零售](./5-retail/README.md) | 從物聯網裝置檢查庫存 | 學習如何使用物聯網裝置和物件檢測模型來檢查庫存 | [從物聯網裝置檢查庫存](./5-retail/lessons/2-check-stock-device/README.md) |
| 21 | [Consumer](./6-consumer/README.md) | 利用物聯網裝置識別語音 | 了解如何從物聯網裝置識別語音,打造智慧計時器 | [Recognize speech with an IoT device](./6-consumer/lessons/1-speech-recognition/README.md) | | 21 | [消費者](./6-consumer/README.md) | 利用物聯網裝置進行語音識別 | 學習如何利用物聯網裝置來識別語音,用以構建智能計時器 | [利用物聯網裝置進行語音識別](./6-consumer/lessons/1-speech-recognition/README.md) |
| 22 | [Consumer](./6-consumer/README.md) | 語言理解 | 了解如何理解對物聯網裝置說出的句子 | [Understand language](./6-consumer/lessons/2-language-understanding/README.md) | | 22 | [消費者](./6-consumer/README.md) | 理解語言 | 學習如何理解對物聯網裝置說出的句子 | [理解語言](./6-consumer/lessons/2-language-understanding/README.md) |
| 23 | [Consumer](./6-consumer/README.md) | 設定計時器並提供語音反饋 | 了解如何在物聯網裝置上設計計時器,並在計時開始與結束時給予語音反饋 | [Set a timer and provide spoken feedback](./6-consumer/lessons/3-spoken-feedback/README.md) | | 23 | [消費者](./6-consumer/README.md) | 設定計時器並提供語音反饋 | 學習如何在物聯網裝置上設定計時器,並於計時器開始及結束時提供語音反饋 | [設定計時器並提供語音反饋](./6-consumer/lessons/3-spoken-feedback/README.md) |
| 24 | [Consumer](./6-consumer/README.md) | 支援多種語言 | 了解如何支援多語言設定,包含語音輸入及智慧計時器的語音回應 | [Support multiple languages](./6-consumer/lessons/4-multiple-language-support/README.md) | | 24 | [消費者](./6-consumer/README.md) | 支援多語言 | 學習如何支援多種語言,包含語音輸入及智能計時器的語音回應 | [支援多語言](./6-consumer/lessons/4-multiple-language-support/README.md) |
## 離線存取 ## 離線存取
您可以使用 [Docsify](https://docsify.js.org/#/) 離線執行本文件。請先 fork 本儲存庫,並於本機安裝 [Docsify](https://docsify.js.org/#/quickstart),接著在本儲存庫根目錄中執行 `docsify serve`。網站將會在本機的 3000 埠提供服務:`localhost:3000`。 您可以使用 [Docsify](https://docsify.js.org/#/) 離線瀏覽本文件。請分支此倉庫,並在本地機器上[安裝 Docsify](https://docsify.js.org/#/quickstart),然後於本倉庫根目錄輸入 `docsify serve`。網站將在您本機的 3000 埠運行,網址為:`localhost:3000`。
## 小測驗 ## 測驗
感謝社群提供互動式小測驗,測試您對每個章節的理解。您可以[在此測試您的知識](https://ff-quizzes.netlify.app/en/)。 感謝社區提供互動式測驗,測試您對各章節的理解。您可以在[這裡](https://ff-quizzes.netlify.app/en/) 測試您的知識。
### PDF ### PDF
您可以生成內容的 PDF 以供離線使用。請確定已安裝 [npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm),並在本儲存庫根目錄執行以下指令: 如有需要,您可以生成本內容的 PDF 以便離線存取。請確保您已[安裝 npm](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm),並在本倉庫根目錄執行以下命令:
```sh ```sh
npm i npm i
npm run convert npm run convert
``` ```
### 投影片 ### 投影片
部分課程有相應的投影片,請見 [slides](../../slides) 資料夾。 部分課程有投影片,可於 [slides](../../slides) 資料夾找到。
## 其他課程 ## 其他課程
我們團隊還有其他課程!歡迎參考: 我們的團隊還有其他課程!請查看:
<!-- CO-OP TRANSLATOR OTHER COURSES START --> <!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain ### LangChain
[![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners) [![LangChain4j for Beginners](https://img.shields.io/badge/LangChain4j%20for%20Beginners-22C55E?style=for-the-badge&&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchain4j-for-beginners)
[![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin) [![LangChain.js for Beginners](https://img.shields.io/badge/LangChain.js%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[![LangChain for Beginners](https://img.shields.io/badge/LangChain%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=0553D6)](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
--- ---
### Azure / Edge / MCP / Agents ### Azure / Edge / MCP / Agents
[![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst) [![AZD for Beginners](https://img.shields.io/badge/AZD%20for%20Beginners-0078D4?style=for-the-badge&labelColor=E5E7EB&color=0078D4)](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Edge AI for Beginners](https://img.shields.io/badge/Edge%20AI%20for%20Beginners-00B8E4?style=for-the-badge&labelColor=E5E7EB&color=00B8E4)](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst) [![MCP for Beginners](https://img.shields.io/badge/MCP%20for%20Beginners-009688?style=for-the-badge&labelColor=E5E7EB&color=009688)](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者 AI 代理人](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst) [![AI Agents for Beginners](https://img.shields.io/badge/AI%20Agents%20for%20Beginners-00C49A?style=for-the-badge&labelColor=E5E7EB&color=00C49A)](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
--- ---
### 生成式 AI 系列 ### 生成式 AI 系列
[![初學者生成式 AI](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst) [![Generative AI for Beginners](https://img.shields.io/badge/Generative%20AI%20for%20Beginners-8B5CF6?style=for-the-badge&labelColor=E5E7EB&color=8B5CF6)](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst) [![Generative AI (.NET)](https://img.shields.io/badge/Generative%20AI%20(.NET)-9333EA?style=for-the-badge&labelColor=E5E7EB&color=9333EA)](https://github.com/microsoft/Generative-AI-for-beginners-dotnet?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst) [![Generative AI (Java)](https://img.shields.io/badge/Generative%20AI%20(Java)-C084FC?style=for-the-badge&labelColor=E5E7EB&color=C084FC)](https://github.com/microsoft/generative-ai-for-beginners-java?WT.mc_id=academic-105485-koreyst)
[![生成式 AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst) [![Generative AI (JavaScript)](https://img.shields.io/badge/Generative%20AI%20(JavaScript)-E879F9?style=for-the-badge&labelColor=E5E7EB&color=E879F9)](https://github.com/microsoft/generative-ai-with-javascript?WT.mc_id=academic-105485-koreyst)
--- ---
### 核心學習 ### 核心學習
[![初學者機器學習](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst) [![ML for Beginners](https://img.shields.io/badge/ML%20for%20Beginners-22C55E?style=for-the-badge&labelColor=E5E7EB&color=22C55E)](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者數據科學](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst) [![Data Science for Beginners](https://img.shields.io/badge/Data%20Science%20for%20Beginners-84CC16?style=for-the-badge&labelColor=E5E7EB&color=84CC16)](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者人工智能](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst) [![AI for Beginners](https://img.shields.io/badge/AI%20for%20Beginners-A3E635?style=for-the-badge&labelColor=E5E7EB&color=A3E635)](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者網絡安全](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung) [![Cybersecurity for Beginners](https://img.shields.io/badge/Cybersecurity%20for%20Beginners-F97316?style=for-the-badge&labelColor=E5E7EB&color=F97316)](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[![初學者網頁開發](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst) [![Web Dev for Beginners](https://img.shields.io/badge/Web%20Dev%20for%20Beginners-EC4899?style=for-the-badge&labelColor=E5E7EB&color=EC4899)](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者物聯網](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst) [![IoT for Beginners](https://img.shields.io/badge/IoT%20for%20Beginners-14B8A6?style=for-the-badge&labelColor=E5E7EB&color=14B8A6)](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[![初學者 XR 開發](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst) [![XR Development for Beginners](https://img.shields.io/badge/XR%20Development%20for%20Beginners-38BDF8?style=for-the-badge&labelColor=E5E7EB&color=38BDF8)](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
--- ---
### Copilot 系列 ### Copilot 系列
[![AI 配對編程 Copilot](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst) [![Copilot for AI Paired Programming](https://img.shields.io/badge/Copilot%20for%20AI%20Paired%20Programming-FACC15?style=for-the-badge&labelColor=E5E7EB&color=FACC15)](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[![C#/.NET Copilot](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst) [![Copilot for C#/.NET](https://img.shields.io/badge/Copilot%20for%20C%23/.NET-FBBF24?style=for-the-badge&labelColor=E5E7EB&color=FBBF24)](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[![Copilot 冒險](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst) [![Copilot Adventure](https://img.shields.io/badge/Copilot%20Adventure-FDE68A?style=for-the-badge&labelColor=E5E7EB&color=FDE68A)](https://github.com/microsoft/CopilotAdventures?WT.mc_id=academic-105485-koreyst)
<!-- CO-OP TRANSLATOR OTHER COURSES END --> <!-- CO-OP TRANSLATOR OTHER COURSES END -->
## 圖片版權聲明 ## 圖像來源說明
你可以在本課程所需的 [Attributions](./attributions.md) 中找到使用圖片的所有版權聲明。 您可以在[Attributions](./attributions.md) 中找到本課程所用圖像的所有來源說明。
--- ---
<!-- CO-OP TRANSLATOR DISCLAIMER START --> <!-- CO-OP TRANSLATOR DISCLAIMER START -->
**免責聲明**: **免責聲明**:
本文件已使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。儘管我們力求準確,但請注意自動翻譯可能包含錯誤或不準確之處。原始語言版本的文件應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用本翻譯所引起的任何誤解或誤譯概不負責。 本文件是使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 翻譯而成。雖然我們致力於確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。原始語言文件應視為權威來源。對於重要資訊,建議採用專業人工翻譯。我們對因使用本翻譯而引起的任何誤解或誤釋概不負責。
<!-- CO-OP TRANSLATOR DISCLAIMER END --> <!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -26,7 +26,7 @@ Seeed Studios 非常友善地將所有硬件製作成易於購買的套件:
**[Seeed 和 Microsoft 的物聯網入門 - Raspberry Pi 4 初學者套件](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)** **[Seeed 和 Microsoft 的物聯網入門 - Raspberry Pi 4 初學者套件](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)**
[![Raspberry Pi 硬件套件](../../translated_images/zh-HK/pi-hardware-kit.26dbadaedb7dd44c73b0131d5d68ea29472ed0a9744f90d5866c6d82f2d16380.png)](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html) [![Raspberry Pi 硬件套件](../../translated_images/zh-HK/pi-hardware-kit.26dbadaedb7dd44c.webp)](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)
## Arduino ## Arduino

@ -738,8 +738,8 @@
"language_code": "zh-MO" "language_code": "zh-MO"
}, },
"README.md": { "README.md": {
"original_hash": "3fcc056cd3837e33d2bdf79f9c359fcf", "original_hash": "accf69391fa4450eadbf492ca024cccf",
"translation_date": "2026-01-30T01:21:13+00:00", "translation_date": "2026-04-06T16:23:59+00:00",
"source_file": "README.md", "source_file": "README.md",
"language_code": "zh-MO" "language_code": "zh-MO"
}, },

@ -1,6 +1,6 @@
# 物聯網簡介 # 物聯網簡介
![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-1.2606670fa61ee904687da5d6fa4e726639d524d064c895117da1b95b9ff6251d.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-1.2606670fa61ee904.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。

@ -203,7 +203,7 @@ Python 的一個強大功能是能夠安裝 [Pip 套件](https://pypi.org)——
該應用將開始運行並在瀏覽器中打開: 該應用將開始運行並在瀏覽器中打開:
![在瀏覽器中運行的 Counter Fit 應用](../../../../../translated_images/zh-MO/counterfit-first-run.433326358b669b31d0e99c3513cb01bfbb13724d162c99cdcc8f51ecf5f9c779.png) ![在瀏覽器中運行的 Counter Fit 應用](../../../../../translated_images/zh-MO/counterfit-first-run.433326358b669b31.webp)
它將顯示為 *Disconnected*,右上角的 LED 為關閉狀態。 它將顯示為 *Disconnected*,右上角的 LED 為關閉狀態。
@ -224,7 +224,7 @@ Python 的一個強大功能是能夠安裝 [Pip 套件](https://pypi.org)——
1. 在這個新終端中,像之前一樣運行 `app.py` 文件。CounterFit 的狀態將變為 **Connected**,LED 會亮起。 1. 在這個新終端中,像之前一樣運行 `app.py` 文件。CounterFit 的狀態將變為 **Connected**,LED 會亮起。
![Counter Fit 顯示為已連接](../../../../../translated_images/zh-MO/counterfit-connected.ed30b46d8f79b0921f3fc70be10366e596a89dca3f80c2224a9d9fc98fccf884.png) ![Counter Fit 顯示為已連接](../../../../../translated_images/zh-MO/counterfit-connected.ed30b46d8f79b092.webp)
> 💁 你可以在 [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) 資料夾中找到這段程式碼。 > 💁 你可以在 [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) 資料夾中找到這段程式碼。

@ -1,6 +1,6 @@
# 深入探討物聯網 (IoT) # 深入探討物聯網 (IoT)
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-2.324b0580d620c25e0a24fb7fddfc0b29a846dd4b82c08e7a9466d580ee78ce51.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-2.324b0580d620c25e.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -38,7 +38,7 @@
這些設備通過使用感測器來收集周圍環境的數據,或者通過控制輸出或執行器來進行物理改變。典型的例子是智能恆溫器——一種具有溫度感測器、可設置所需溫度的方式(如旋鈕或觸控屏),以及連接到加熱或冷卻系統的設備,當檢測到的溫度超出所需範圍時,系統會啟動。溫度感測器檢測到房間太冷,執行器則啟動加熱系統。 這些設備通過使用感測器來收集周圍環境的數據,或者通過控制輸出或執行器來進行物理改變。典型的例子是智能恆溫器——一種具有溫度感測器、可設置所需溫度的方式(如旋鈕或觸控屏),以及連接到加熱或冷卻系統的設備,當檢測到的溫度超出所需範圍時,系統會啟動。溫度感測器檢測到房間太冷,執行器則啟動加熱系統。
![顯示溫度和旋鈕作為物聯網設備輸入,以及加熱器控制作為輸出的圖示](../../../../../translated_images/zh-MO/basic-thermostat.a923217fd1f37e5a6f3390396a65c22a387419ea2dd17e518ec24315ba6ae9a8.png) ![顯示溫度和旋鈕作為物聯網設備輸入,以及加熱器控制作為輸出的圖示](../../../../../translated_images/zh-MO/basic-thermostat.a923217fd1f37e5a.webp)
物聯網設備的種類繁多,從專用硬體到一般用途設備,甚至包括您的智能手機!智能手機可以使用感測器檢測周圍環境,並使用執行器與世界互動——例如使用 GPS 感測器檢測您的位置,並使用揚聲器提供導航指示。 物聯網設備的種類繁多,從專用硬體到一般用途設備,甚至包括您的智能手機!智能手機可以使用感測器檢測周圍環境,並使用執行器與世界互動——例如使用 GPS 感測器檢測您的位置,並使用揚聲器提供導航指示。
@ -54,7 +54,7 @@
以智能恆溫器為例,恆溫器通過家庭 WiFi 連接到雲端服務,並將溫度數據發送到該服務。雲端服務將數據寫入某種數據庫,讓房主可以通過手機應用查看當前和過去的溫度。雲端中的另一個服務知道房主想要的溫度,並通過雲端服務向物聯網設備發送消息,告訴加熱系統開啟或關閉。 以智能恆溫器為例,恆溫器通過家庭 WiFi 連接到雲端服務,並將溫度數據發送到該服務。雲端服務將數據寫入某種數據庫,讓房主可以通過手機應用查看當前和過去的溫度。雲端中的另一個服務知道房主想要的溫度,並通過雲端服務向物聯網設備發送消息,告訴加熱系統開啟或關閉。
![顯示溫度和旋鈕作為物聯網設備輸入,物聯網設備與雲端的雙向通信,雲端與手機的雙向通信,以及加熱器控制作為物聯網設備輸出的圖示](../../../../../translated_images/zh-MO/mobile-controlled-thermostat.4a994010473d8d6a52ba68c67e5f02dc8928c717e93ca4b9bc55525aa75bbb60.png) ![顯示溫度和旋鈕作為物聯網設備輸入,物聯網設備與雲端的雙向通信,雲端與手機的雙向通信,以及加熱器控制作為物聯網設備輸出的圖示](../../../../../translated_images/zh-MO/mobile-controlled-thermostat.4a994010473d8d6a.webp)
更智能的版本可以使用雲端中的 AI,結合其他物聯網設備(如佔用感測器)連接的其他感測器數據,以及天氣和您的日曆等數據,智能地設置溫度。例如,如果日曆顯示您正在度假,它可以關閉加熱;或者根據您使用的房間逐一關閉加熱,並從數據中學習以越來越準確。 更智能的版本可以使用雲端中的 AI,結合其他物聯網設備(如佔用感測器)連接的其他感測器數據,以及天氣和您的日曆等數據,智能地設置溫度。例如,如果日曆顯示您正在度假,它可以關閉加熱;或者根據您使用的房間逐一關閉加熱,並從數據中學習以越來越準確。
@ -94,7 +94,7 @@ CPU 依賴於時鐘,每秒鐘滴答數百萬或數十億次。每次滴答或
> 💁 CPU 使用 [取指-解碼-執行週期](https://wikipedia.org/wiki/Instruction_cycle) 執行程序。每次時鐘滴答,CPU 從記憶體中取指令,解碼,然後執行,例如使用算術邏輯單元 (ALU) 加法兩個數字。一些執行可能需要多個滴答才能完成,因此下一個週期將在指令完成後的下一次滴答運行。 > 💁 CPU 使用 [取指-解碼-執行週期](https://wikipedia.org/wiki/Instruction_cycle) 執行程序。每次時鐘滴答,CPU 從記憶體中取指令,解碼,然後執行,例如使用算術邏輯單元 (ALU) 加法兩個數字。一些執行可能需要多個滴答才能完成,因此下一個週期將在指令完成後的下一次滴答運行。
![取指-解碼-執行週期顯示取指令從存儲在 RAM 中的程序中取指令,然後在 CPU 上解碼並執行](../../../../../translated_images/zh-MO/fetch-decode-execute.2fd6f150f6280392807f4475382319abd0cee0b90058e1735444d6baa6f2078c.png) ![取指-解碼-執行週期顯示取指令從存儲在 RAM 中的程序中取指令,然後在 CPU 上解碼並執行](../../../../../translated_images/zh-MO/fetch-decode-execute.2fd6f150f6280392.webp)
微控制器的時鐘速度遠低於桌上型或筆記型電腦,甚至大多數智能手機。比如 Wio Terminal 的 CPU 運行速度為 120MHz,即每秒 120,000,000 次週期。 微控制器的時鐘速度遠低於桌上型或筆記型電腦,甚至大多數智能手機。比如 Wio Terminal 的 CPU 運行速度為 120MHz,即每秒 120,000,000 次週期。
@ -182,7 +182,7 @@ Arduino 開發板使用 C 或 C++ 進行程式設計。使用 C/C++ 可以使程
你可以在 `setup` 函式中撰寫初始化程式碼,例如連接 WiFi 和雲端服務或初始化輸入和輸出接腳。在 `loop` 函式中撰寫處理程式碼,例如從感測器讀取數據並將其發送到雲端。通常你會在每次迴圈中加入延遲,例如,如果你只希望每 10 秒發送一次感測器數據,你可以在迴圈結尾加入 10 秒的延遲,讓微控制器進入睡眠模式以節省電力,然後在需要時 10 秒後再次運行迴圈。 你可以在 `setup` 函式中撰寫初始化程式碼,例如連接 WiFi 和雲端服務或初始化輸入和輸出接腳。在 `loop` 函式中撰寫處理程式碼,例如從感測器讀取數據並將其發送到雲端。通常你會在每次迴圈中加入延遲,例如,如果你只希望每 10 秒發送一次感測器數據,你可以在迴圈結尾加入 10 秒的延遲,讓微控制器進入睡眠模式以節省電力,然後在需要時 10 秒後再次運行迴圈。
![Arduino sketch 首先運行 setup,然後不斷重複運行 loop](../../../../../translated_images/zh-MO/arduino-sketch.79590cb837ff7a7c6a68d1afda6cab83fd53d3bb1bd9a8bf2eaf8d693a4d3ea6.png) ![Arduino sketch 首先運行 setup,然後不斷重複運行 loop](../../../../../translated_images/zh-MO/arduino-sketch.79590cb837ff7a7c.webp)
✅ 這種程式架構被稱為 *事件迴圈* 或 *訊息迴圈*。許多應用程式在底層使用這種架構,並且是大多數運行在 Windows、macOS 或 Linux 等作業系統上的桌面應用程式的標準。`loop` 會監聽來自使用者介面元件(例如按鈕)或裝置(例如鍵盤)的訊息,並對其作出回應。你可以在這篇 [事件迴圈文章](https://wikipedia.org/wiki/Event_loop) 中閱讀更多內容。 ✅ 這種程式架構被稱為 *事件迴圈* 或 *訊息迴圈*。許多應用程式在底層使用這種架構,並且是大多數運行在 Windows、macOS 或 Linux 等作業系統上的桌面應用程式的標準。`loop` 會監聽來自使用者介面元件(例如按鈕)或裝置(例如鍵盤)的訊息,並對其作出回應。你可以在這篇 [事件迴圈文章](https://wikipedia.org/wiki/Event_loop) 中閱讀更多內容。

@ -1,6 +1,6 @@
# 使用感測器和致動器與物理世界互動 # 使用感測器和致動器與物理世界互動
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-3.cc3b7b4cd646de59.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -92,7 +92,7 @@ IoT 裝置是數位的——它們無法處理類比值,只能處理 0 和 1
最簡單的數位感測器是按鈕或開關。這是一個具有兩種狀態的感測器,開或關。 最簡單的數位感測器是按鈕或開關。這是一個具有兩種狀態的感測器,開或關。
![一個按鈕接收 5 伏特。未按下時返回 0 伏特,按下時返回 5 伏特](../../../../../translated_images/zh-MO/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.png) ![一個按鈕接收 5 伏特。未按下時返回 0 伏特,按下時返回 5 伏特](../../../../../translated_images/zh-MO/button.eadb560b77ac45e5.webp)
IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為 0 或 1。如果發送的電壓與返回的電壓相同,則讀取值為 1,否則讀取值為 0。無需轉換信號,它只能是 1 或 0。 IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為 0 或 1。如果發送的電壓與返回的電壓相同,則讀取值為 1,否則讀取值為 0。無需轉換信號,它只能是 1 或 0。
@ -125,7 +125,7 @@ IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
按照以下相關指南,將致動器添加到您的 IoT 裝置,並由感測器控制,以構建 IoT 夜燈。它將從光感測器收集光線強度,並使用 LED 作為致動器,在檢測到光線強度過低時發出光。 按照以下相關指南,將致動器添加到您的 IoT 裝置,並由感測器控制,以構建 IoT 夜燈。它將從光感測器收集光線強度,並使用 LED 作為致動器,在檢測到光線強度過低時發出光。
![作業的流程圖,顯示光線強度被讀取和檢查,並控制 LED](../../../../../translated_images/zh-MO/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.png) ![作業的流程圖,顯示光線強度被讀取和檢查,並控制 LED](../../../../../translated_images/zh-MO/assignment-1-flow.7552a51acb1a5ec8.webp)
* [Arduino - Wio Terminal](wio-terminal-actuator.md) * [Arduino - Wio Terminal](wio-terminal-actuator.md)
* [單板電腦 - Raspberry Pi](pi-actuator.md) * [單板電腦 - Raspberry Pi](pi-actuator.md)
@ -140,7 +140,7 @@ IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
類比致動器接收類比信號並將其轉換為某種交互,交互根據提供的電壓而改變。 類比致動器接收類比信號並將其轉換為某種交互,交互根據提供的電壓而改變。
一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了燈的亮度。 一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了燈的亮度。
![低電壓下的燈光暗淡,高電壓下的燈光明亮](../../../../../translated_images/zh-MO/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.png) ![低電壓下的燈光暗淡,高電壓下的燈光明亮](../../../../../translated_images/zh-MO/dimmable-light.9ceffeb195dec1a8.webp)
就像感測器一樣,實際的物聯網設備使用的是數位信號,而非類比信號。這意味著要傳送類比信號,物聯網設備需要一個數位到類比轉換器(DAC),可以直接內建在物聯網設備中,也可以在連接板上。這個轉換器會將物聯網設備的0和1轉換成致動器可以使用的類比電壓。 就像感測器一樣,實際的物聯網設備使用的是數位信號,而非類比信號。這意味著要傳送類比信號,物聯網設備需要一個數位到類比轉換器(DAC),可以直接內建在物聯網設備中,也可以在連接板上。這個轉換器會將物聯網設備的0和1轉換成致動器可以使用的類比電壓。
@ -187,7 +187,7 @@ IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為
一個簡單的數位致動器是LED。當設備傳送數位信號1時,會傳送高電壓使LED亮起。當傳送數位信號0時,電壓降至0V,LED熄滅。 一個簡單的數位致動器是LED。當設備傳送數位信號1時,會傳送高電壓使LED亮起。當傳送數位信號0時,電壓降至0V,LED熄滅。
![LED在0伏特時熄滅,在5伏特時亮起](../../../../../translated_images/zh-MO/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.png) ![LED在0伏特時熄滅,在5伏特時亮起](../../../../../translated_images/zh-MO/led.ec6d94f66676a174.webp)
✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門栓鎖定/解鎖門的操作。 ✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門栓鎖定/解鎖門的操作。

@ -26,7 +26,7 @@ Grove LED 是一個模組,包含多種 LED,您可以選擇喜歡的顏色。
連接 LED。 連接 LED。
![Grove LED](../../../../../translated_images/zh-MO/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.png) ![Grove LED](../../../../../translated_images/zh-MO/grove-led.6c853be93f473cf2.webp)
1. 選擇您喜歡的 LED,並將其腳插入 LED 模組上的兩個孔中。 1. 選擇您喜歡的 LED,並將其腳插入 LED 模組上的兩個孔中。
@ -40,7 +40,7 @@ Grove LED 是一個模組,包含多種 LED,您可以選擇喜歡的顏色。
1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **D5** 的數位插座。此插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。 1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **D5** 的數位插座。此插座位於 GPIO 引腳旁邊的一排插座中,從左數第二個。
![Grove LED 連接到 D5 插座](../../../../../translated_images/zh-MO/pi-led.97f1d474981dc35d1c7996c7b17de355d3d0a6bc9606d79fa5f89df933415122.png) ![Grove LED 連接到 D5 插座](../../../../../translated_images/zh-MO/pi-led.97f1d474981dc35d.webp)
## 程式設計夜燈 ## 程式設計夜燈

@ -16,13 +16,13 @@
連接光線感測器 連接光線感測器
![Grove 光線感測器](../../../../../translated_images/zh-MO/grove-light-sensor.b8127b7c434e632d6bcdb57587a14e9ef69a268a22df95d08628f62b8fa5505c.png) ![Grove 光線感測器](../../../../../translated_images/zh-MO/grove-light-sensor.b8127b7c434e632d.webp)
1. 將 Grove 電纜的一端插入光線感測器模組上的插座。電纜只能以一種方向插入。 1. 將 Grove 電纜的一端插入光線感測器模組上的插座。電纜只能以一種方向插入。
1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **A0** 的類比插座。此插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。 1. 在 Raspberry Pi 關閉電源的情況下,將 Grove 電纜的另一端連接到 Grove Base hat 上標記為 **A0** 的類比插座。此插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。
![Grove 光線感測器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-light-sensor.66cc1e31fa48cd7d5f23400d4b2119aa41508275cb7c778053a7923b4e972d7e.png) ![Grove 光線感測器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-light-sensor.66cc1e31fa48cd7d.webp)
## 程式設計光線感測器 ## 程式設計光線感測器

@ -36,11 +36,11 @@ Otherwise
1. 選擇 **Add** 按鈕,在 Pin 5 上創建 LED。 1. 選擇 **Add** 按鈕,在 Pin 5 上創建 LED。
![LED 設置](../../../../../translated_images/zh-MO/counterfit-create-led.ba9db1c9b8c622a635d6dfae5cdc4e70c2b250635bd4f0601c6cf0bd22b7ba46.png) ![LED 設置](../../../../../translated_images/zh-MO/counterfit-create-led.ba9db1c9b8c622a6.webp)
LED 將被創建並顯示在執行器列表中。 LED 將被創建並顯示在執行器列表中。
![已創建的 LED](../../../../../translated_images/zh-MO/counterfit-led.c0ab02de6d256ad84d9bad4d67a7faa709f0ea83e410cfe9b5561ef0cef30b1c.png) ![已創建的 LED](../../../../../translated_images/zh-MO/counterfit-led.c0ab02de6d256ad8.webp)
LED 創建後,你可以使用 *Color* 選擇器更改顏色。選擇顏色後,點擊 **Set** 按鈕即可更改顏色。 LED 創建後,你可以使用 *Color* 選擇器更改顏色。選擇顏色後,點擊 **Set** 按鈕即可更改顏色。

@ -28,11 +28,11 @@
1. 點擊 **Add** 按鈕,在 Pin 0 上創建光線感測器。 1. 點擊 **Add** 按鈕,在 Pin 0 上創建光線感測器。
![光線感測器設置](../../../../../translated_images/zh-MO/counterfit-create-light-sensor.9f36a5e0d4458d8d554d54b34d2c806d56093d6e49fddcda2d20f6fef7f5cce1.png) ![光線感測器設置](../../../../../translated_images/zh-MO/counterfit-create-light-sensor.9f36a5e0d4458d8d.webp)
光線感測器將被創建並顯示在感測器列表中。 光線感測器將被創建並顯示在感測器列表中。
![已創建的光線感測器](../../../../../translated_images/zh-MO/counterfit-light-sensor.5d0f5584df56b90f6b2561910d9cb20dfbd73eeff2177c238d38f4de54aefae1.png) ![已創建的光線感測器](../../../../../translated_images/zh-MO/counterfit-light-sensor.5d0f5584df56b90f.webp)
## 編寫光線感測器程式 ## 編寫光線感測器程式

@ -26,7 +26,7 @@ Grove LED 是一個模組,包含多種 LED,允許你選擇顏色。
連接 LED。 連接 LED。
![一個 Grove LED](../../../../../translated_images/zh-MO/grove-led.6c853be93f473cf2c439cfc74bb1064732b22251a83cedf66e62f783f9cc1a79.png) ![一個 Grove LED](../../../../../translated_images/zh-MO/grove-led.6c853be93f473cf2.webp)
1. 選擇你喜歡的 LED,並將 LED 的腳插入 LED 模組上的兩個孔中。 1. 選擇你喜歡的 LED,並將 LED 的腳插入 LED 模組上的兩個孔中。

@ -1,6 +1,6 @@
# 將您的設備連接到互聯網 # 將您的設備連接到互聯網
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-4.7344e074ea68fa545fd320b12dce36d72dd62d28c3b4596cb26cf315f434b98f.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-4.7344e074ea68fa54.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -47,7 +47,7 @@ MQTT 是 IoT 設備最流行的通信協議,本課程將介紹它。其他協
MQTT 有一個單一的代理和多個客戶端。所有客戶端都連接到代理,代理根據需要將消息路由到相關客戶端。消息通過命名主題進行路由,而不是直接發送到個別客戶端。客戶端可以發布到某個主題,任何訂閱該主題的客戶端都會收到消息。 MQTT 有一個單一的代理和多個客戶端。所有客戶端都連接到代理,代理根據需要將消息路由到相關客戶端。消息通過命名主題進行路由,而不是直接發送到個別客戶端。客戶端可以發布到某個主題,任何訂閱該主題的客戶端都會收到消息。
![IoT 設備在 /telemetry 主題上發布遙測數據,雲端服務訂閱該主題](../../../../../translated_images/zh-MO/mqtt.cbf7f21d9adc3e17548b359444cc11bb4bf2010543e32ece9a47becf54438c23.png) ![IoT 設備在 /telemetry 主題上發布遙測數據,雲端服務訂閱該主題](../../../../../translated_images/zh-MO/mqtt.cbf7f21d9adc3e17.webp)
✅ 做些研究。如果您有大量 IoT 設備,如何確保您的 MQTT 代理能夠處理所有消息? ✅ 做些研究。如果您有大量 IoT 設備,如何確保您的 MQTT 代理能夠處理所有消息?
@ -69,7 +69,7 @@ MQTT 有一個單一的代理和多個客戶端。所有客戶端都連接到代
> 💁 此測試代理是公開且不安全的。任何人都可以監聽您發布的內容,因此不應用於需要保密的數據。 > 💁 此測試代理是公開且不安全的。任何人都可以監聽您發布的內容,因此不應用於需要保密的數據。
![作業的流程圖,顯示光線水平的讀取和檢查,以及 LED 的控制](../../../../../translated_images/zh-MO/assignment-1-internet-flow.3256feab5f052fd273bf4e331157c574c2c3fa42e479836fc9c3586f41db35a5.png) ![作業的流程圖,顯示光線水平的讀取和檢查,以及 LED 的控制](../../../../../translated_images/zh-MO/assignment-1-internet-flow.3256feab5f052fd2.webp)
按照以下相關步驟將您的設備連接到 MQTT 代理: 按照以下相關步驟將您的設備連接到 MQTT 代理:
@ -350,7 +350,7 @@ Python 的一個強大功能是能夠安裝 [pip 套件](https://pypi.org)——
IoT 裝置設計者還應考慮 IoT 裝置在網路中斷或因位置導致信號丟失時是否仍能使用。一個智能溫控器應該能在無法將 telemetry 發送到雲端的情況下做出有限的決策來控制加熱。 IoT 裝置設計者還應考慮 IoT 裝置在網路中斷或因位置導致信號丟失時是否仍能使用。一個智能溫控器應該能在無法將 telemetry 發送到雲端的情況下做出有限的決策來控制加熱。
[![這輛法拉利因為有人在地下室嘗試升級而變磚,因為沒有手機信號](../../../../../translated_images/zh-MO/bricked-car.dc38f8efadc6c59d76211f981a521efb300939283dee468f79503aae3ec67615.png)](https://twitter.com/internetofshit/status/1315736960082808832) [![這輛法拉利因為有人在地下室嘗試升級而變磚,因為沒有手機信號](../../../../../translated_images/zh-MO/bricked-car.dc38f8efadc6c59d.webp)](https://twitter.com/internetofshit/status/1315736960082808832)
為了讓 MQTT 處理連線中斷,裝置和伺服器程式碼需要負責確保訊息的傳遞,例如要求所有發送的訊息都需要在回覆主題上收到回覆訊息,如果沒有收到回覆,則手動排隊以便稍後重播。 為了讓 MQTT 處理連線中斷,裝置和伺服器程式碼需要負責確保訊息的傳遞,例如要求所有發送的訊息都需要在回覆主題上收到回覆訊息,如果沒有收到回覆,則手動排隊以便稍後重播。
@ -358,7 +358,7 @@ IoT 裝置設計者還應考慮 IoT 裝置在網路中斷或因位置導致信
指令是由雲端發送到裝置的訊息,用於指示裝置執行某些操作。大多數情況下,這涉及通過致動器輸出某些內容,但也可能是對裝置本身的指令,例如重新啟動或收集額外的 telemetry 並將其作為指令的回應返回。 指令是由雲端發送到裝置的訊息,用於指示裝置執行某些操作。大多數情況下,這涉及通過致動器輸出某些內容,但也可能是對裝置本身的指令,例如重新啟動或收集額外的 telemetry 並將其作為指令的回應返回。
![一個連接到網路的溫控器接收到開啟加熱的指令](../../../../../translated_images/zh-MO/commands.d6c06bbbb3a02cce95f2831a1c331daf6dedd4e470c4aa2b0ae54f332016e504.png) ![一個連接到網路的溫控器接收到開啟加熱的指令](../../../../../translated_images/zh-MO/commands.d6c06bbbb3a02cce.webp)
例如,溫控器可能會接收到來自雲端的指令以開啟加熱。根據所有感測器的 telemetry 數據,如果雲端服務決定應該開啟加熱,它就會發送相關指令。 例如,溫控器可能會接收到來自雲端的指令以開啟加熱。根據所有感測器的 telemetry 數據,如果雲端服務決定應該開啟加熱,它就會發送相關指令。

@ -1,6 +1,6 @@
## 使用物聯網預測植物生長 ## 使用物聯網預測植物生長
![本課程概述的手繪筆記](../../../../../translated_images/zh-MO/lesson-5.42b234299279d263143148b88ab4583861a32ddb03110c6c1120e41bb88b2592.jpg) ![本課程概述的手繪筆記](../../../../../translated_images/zh-MO/lesson-5.42b234299279d263.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -90,7 +90,7 @@
完整的 GDD 計算公式稍微複雜,但通常使用簡化公式作為良好的近似值: 完整的 GDD 計算公式稍微複雜,但通常使用簡化公式作為良好的近似值:
![GDD = T max + T min 除以 2,減去 T base](../../../../../translated_images/zh-MO/gdd-calculation.79b3660f9c5757aa92dc2dd2cdde75344e2d2c1565c4b3151640f7887edc0275.png) ![GDD = T max + T min 除以 2,減去 T base](../../../../../translated_images/zh-MO/gdd-calculation.79b3660f9c5757aa.webp)
* **GDD** - 生長度日的數量 * **GDD** - 生長度日的數量
* **T max** - 每日最高溫度(攝氏度) * **T max** - 每日最高溫度(攝氏度)
@ -118,7 +118,7 @@
計算結果為: 計算結果為:
![GDD = 16 + 12 除以 2,減去 10,結果為 4](../../../../../translated_images/zh-MO/gdd-calculation-corn.64a58b7a7afcd0dfd46ff733996d939f17f4f3feac9f0d1c632be3523e51ebd9.png) ![GDD = 16 + 12 除以 2,減去 10,結果為 4](../../../../../translated_images/zh-MO/gdd-calculation-corn.64a58b7a7afcd0df.webp)
玉米在那一天獲得了 4 GDD。假設一種需要 800 GDD 才能成熟的玉米品種,它還需要 796 GDD 才能達到成熟。 玉米在那一天獲得了 4 GDD。假設一種需要 800 GDD 才能成熟的玉米品種,它還需要 796 GDD 才能達到成熟。
@ -239,7 +239,7 @@ CSV 文件將有兩列——*日期* 和 *溫度*。*日期* 列設置為服務
例如,如果當天的最高溫度是 25°C,最低溫度是 12°C: 例如,如果當天的最高溫度是 25°C,最低溫度是 12°C:
![GDD = 25 + 12 除以 2,然後從結果中減去 10,得到 8.5](../../../../../translated_images/zh-MO/gdd-calculation-strawberries.59f57db94b22adb8ff6efb951ace33af104a1c6ccca3ffb0f8169c14cb160c90.png) ![GDD = 25 + 12 除以 2,然後從結果中減去 10,得到 8.5](../../../../../translated_images/zh-MO/gdd-calculation-strawberries.59f57db94b22adb8.webp)
* 25 + 12 = 37 * 25 + 12 = 37
* 37 / 2 = 18.5 * 37 / 2 = 18.5

@ -33,7 +33,7 @@
Jupyter 會啟動並在瀏覽器中打開 Notebook。按照 Notebook 中的說明逐步操作,視覺化測量的溫度並計算生長度日。 Jupyter 會啟動並在瀏覽器中打開 Notebook。按照 Notebook 中的說明逐步操作,視覺化測量的溫度並計算生長度日。
![Jupyter Notebook](../../../../../translated_images/zh-MO/gdd-jupyter-notebook.c5b52cf21094f158a61f47f455490fd95f1729777ff90861a4521820bf354cdc.png) ![Jupyter Notebook](../../../../../translated_images/zh-MO/gdd-jupyter-notebook.c5b52cf21094f158.webp)
## 評分標準 ## 評分標準

@ -16,7 +16,7 @@ Grove 溫度感測器可以連接到 Raspberry Pi。
連接溫度感測器 連接溫度感測器
![Grove 溫度感測器](../../../../../translated_images/zh-MO/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.png) ![Grove 溫度感測器](../../../../../translated_images/zh-MO/grove-dht11.07f8eafceee17004.webp)
1. 將 Grove 線纜的一端插入濕度與溫度感測器的插座。它只能以一種方式插入。 1. 將 Grove 線纜的一端插入濕度與溫度感測器的插座。它只能以一種方式插入。

@ -38,11 +38,11 @@
1. 點擊 **Add** 按鈕,在 Pin 5 上創建濕度感測器。 1. 點擊 **Add** 按鈕,在 Pin 5 上創建濕度感測器。
![濕度感測器設置](../../../../../translated_images/zh-MO/counterfit-create-humidity-sensor.2750e27b6f30e09cf4e22101defd5252710717620816ab41ba688f91f757c49a.png) ![濕度感測器設置](../../../../../translated_images/zh-MO/counterfit-create-humidity-sensor.2750e27b6f30e09c.webp)
濕度感測器將被創建並顯示在感測器列表中。 濕度感測器將被創建並顯示在感測器列表中。
![已創建的濕度感測器](../../../../../translated_images/zh-MO/counterfit-humidity-sensor.7b12f7f339e430cb26c8211d2dba4ef75261b353a01da0932698b5bebd693f27.png) ![已創建的濕度感測器](../../../../../translated_images/zh-MO/counterfit-humidity-sensor.7b12f7f339e430cb.webp)
1. 創建一個溫度感測器: 1. 創建一個溫度感測器:
@ -54,11 +54,11 @@
1. 點擊 **Add** 按鈕,在 Pin 6 上創建溫度感測器。 1. 點擊 **Add** 按鈕,在 Pin 6 上創建溫度感測器。
![溫度感測器設置](../../../../../translated_images/zh-MO/counterfit-create-temperature-sensor.199350ed34f7343d79dccbe95eaf6c11d2121f03d1c35ab9613b330c23f39b29.png) ![溫度感測器設置](../../../../../translated_images/zh-MO/counterfit-create-temperature-sensor.199350ed34f7343d.webp)
溫度感測器將被創建並顯示在感測器列表中。 溫度感測器將被創建並顯示在感測器列表中。
![已創建的溫度感測器](../../../../../translated_images/zh-MO/counterfit-temperature-sensor.f0560236c96a9016bafce7f6f792476fe3367bc6941a1f7d5811d144d4bcbfff.png) ![已創建的溫度感測器](../../../../../translated_images/zh-MO/counterfit-temperature-sensor.f0560236c96a9016.webp)
## 編寫溫度感測器應用程式 ## 編寫溫度感測器應用程式

@ -18,7 +18,7 @@ Grove 溫度感測器可以連接到 Wio Terminal 的數位端口。
連接溫度感測器。 連接溫度感測器。
![Grove 溫度感測器](../../../../../translated_images/zh-MO/grove-dht11.07f8eafceee170043efbb53e1d15722bd4e00fbaa9ff74290b57e9f66eb82c17.png) ![Grove 溫度感測器](../../../../../translated_images/zh-MO/grove-dht11.07f8eafceee17004.webp)
1. 將 Grove 電纜的一端插入濕度和溫度感測器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入濕度和溫度感測器上的插座。它只能以一種方式插入。

@ -13,7 +13,7 @@ I²C 線路由 2 條主要的數據線以及 2 條電源線組成:
| VCC | 電壓公共集電極(Voltage Common Collector) | 為設備提供電源。這條線通過上拉電阻連接到 SDA 和 SCL 線,當沒有設備作為控制器時,該電阻會將信號切換為關閉狀態。 | | VCC | 電壓公共集電極(Voltage Common Collector) | 為設備提供電源。這條線通過上拉電阻連接到 SDA 和 SCL 線,當沒有設備作為控制器時,該電阻會將信號切換為關閉狀態。 |
| GND | 接地(Ground) | 為電路提供公共接地。 | | GND | 接地(Ground) | 為電路提供公共接地。 |
![I2C 線路,3 個設備連接到 SDA 和 SCL 線,共享一條接地線](../../../../../translated_images/zh-MO/i2c.83da845dde02256bdd462dbe0d5145461416b74930571b89d1ae142841eeb584.png) ![I2C 線路,3 個設備連接到 SDA 和 SCL 線,共享一條接地線](../../../../../translated_images/zh-MO/i2c.83da845dde02256b.webp)
在傳輸數據時,一個設備會發出啟動條件(start condition),表示它準備好傳輸數據。此時它將成為控制器。控制器接著發送目標設備的地址,以及它是要讀取還是寫入數據。在數據傳輸完成後,控制器會發送停止條件(stop condition),表示它已完成。之後,另一個設備可以成為控制器,進行數據的發送或接收。 在傳輸數據時,一個設備會發出啟動條件(start condition),表示它準備好傳輸數據。此時它將成為控制器。控制器接著發送目標設備的地址,以及它是要讀取還是寫入數據。在數據傳輸完成後,控制器會發送停止條件(stop condition),表示它已完成。之後,另一個設備可以成為控制器,進行數據的發送或接收。

@ -20,14 +20,14 @@
重力土壤濕度的計算公式如下: 重力土壤濕度的計算公式如下:
![土壤濕度百分比公式:濕土重量減去乾土重量,除以乾土重量,再乘以100](../../../../../translated_images/zh-MO/gsm-calculation.6da38c6201eec14e7573bb2647aa18892883193553d23c9d77e5dc681522dfb2.png) ![土壤濕度百分比公式:濕土重量減去乾土重量,除以乾土重量,再乘以100](../../../../../translated_images/zh-MO/gsm-calculation.6da38c6201eec14e.webp)
* W - 濕土的重量 * W - 濕土的重量
* W - 乾土的重量 * W - 乾土的重量
例如,假設您有一份土壤樣本,濕重為212克,乾重為197克。 例如,假設您有一份土壤樣本,濕重為212克,乾重為197克。
![填入計算公式的範例](../../../../../translated_images/zh-MO/gsm-calculation-example.99f9803b4f29e97668e7c15412136c0c399ab12dbba0b89596fdae9d8aedb6fb.png) ![填入計算公式的範例](../../../../../translated_images/zh-MO/gsm-calculation-example.99f9803b4f29e976.webp)
* W = 212克 * W = 212克
* W = 197克 * W = 197克

@ -18,13 +18,13 @@ Grove 土壤濕度傳感器可以連接到 Raspberry Pi。
連接土壤濕度傳感器。 連接土壤濕度傳感器。
![Grove 土壤濕度傳感器](../../../../../translated_images/zh-MO/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.png) ![Grove 土壤濕度傳感器](../../../../../translated_images/zh-MO/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78b.webp)
1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的類比插座 **A0**。這個插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 的類比插座 **A0**。這個插座位於 GPIO 引腳旁邊的一排插座中,從右數第二個。
![Grove 土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-soil-moisture-sensor.fdd7eb2393792cf6739cacf1985d9f55beda16d372f30d0b5a51d586f978a870.png) ![Grove 土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-soil-moisture-sensor.fdd7eb2393792cf6.webp)
1. 將土壤濕度傳感器插入土壤中。傳感器上有一條“最高位置線”——一條白線。將傳感器插入到該線以下但不要超過該線。 1. 將土壤濕度傳感器插入土壤中。傳感器上有一條“最高位置線”——一條白線。將傳感器插入到該線以下但不要超過該線。

@ -34,11 +34,11 @@
1. 點擊 **Add** 按鈕,在 Pin 0 上創建 *Soil Moisture* 傳感器。 1. 點擊 **Add** 按鈕,在 Pin 0 上創建 *Soil Moisture* 傳感器。
![土壤濕度傳感器設置](../../../../../translated_images/zh-MO/counterfit-create-soil-moisture-sensor.35266135a5e0ae68b29a684d7db0d2933a8098b2307d197f7c71577b724603aa.png) ![土壤濕度傳感器設置](../../../../../translated_images/zh-MO/counterfit-create-soil-moisture-sensor.35266135a5e0ae68.webp)
土壤濕度傳感器將被創建並顯示在傳感器列表中。 土壤濕度傳感器將被創建並顯示在傳感器列表中。
![已創建的土壤濕度傳感器](../../../../../translated_images/zh-MO/counterfit-soil-moisture-sensor.81742b2de0e9de60a3b3b9a2ff8ecc686d428eb6d71820f27a693be26e5aceee.png) ![已創建的土壤濕度傳感器](../../../../../translated_images/zh-MO/counterfit-soil-moisture-sensor.81742b2de0e9de60.webp)
## 編寫土壤濕度傳感器應用程式 ## 編寫土壤濕度傳感器應用程式

@ -18,7 +18,7 @@ Grove 土壤濕度傳感器可以連接到 Wio Terminal 的可配置類比/數
連接土壤濕度傳感器。 連接土壤濕度傳感器。
![Grove 土壤濕度傳感器](../../../../../translated_images/zh-MO/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78be5cc5a07839385fd6718857f31b5bf5ad3d0c73c83b2f0ef.png) ![Grove 土壤濕度傳感器](../../../../../translated_images/zh-MO/grove-capacitive-soil-moisture-sensor.e7f0776cce30e78b.webp)
1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。電纜只能以一種方式插入。 1. 將 Grove 電纜的一端插入土壤濕度傳感器上的插座。電纜只能以一種方式插入。

@ -1,6 +1,6 @@
# 自動植物澆水系統 # 自動植物澆水系統
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-7.30b5f577d3cb8e031238751475cb519c7d6dbaea261b5df4643d086ffb2a03bb.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-7.30b5f577d3cb8e03.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -32,7 +32,7 @@ IoT 設備使用低電壓。雖然這足以驅動傳感器和低功率執行器
解決方案是將水泵連接到外部電源,並使用執行器來開關水泵,就像你用手指開關燈一樣。用手指翻動開關所需的能量非常少,但這能將燈連接到 110v/240v 的市電。 解決方案是將水泵連接到外部電源,並使用執行器來開關水泵,就像你用手指開關燈一樣。用手指翻動開關所需的能量非常少,但這能將燈連接到 110v/240v 的市電。
![燈開關將電力接通燈泡](../../../../../translated_images/zh-MO/light-switch.760317ad6ab8bd6d611da5352dfe9c73a94a0822ccec7df3c8bae35da18e1658.png) ![燈開關將電力接通燈泡](../../../../../translated_images/zh-MO/light-switch.760317ad6ab8bd6d.webp)
> 🎓 [市電](https://wikipedia.org/wiki/Mains_electricity) 是指通過國家基礎設施向家庭和企業提供的電力。 > 🎓 [市電](https://wikipedia.org/wiki/Mains_electricity) 是指通過國家基礎設施向家庭和企業提供的電力。
@ -72,7 +72,7 @@ IoT 設備使用低電壓。雖然這足以驅動傳感器和低功率執行器
電磁鐵啟動並拉動杠杆所需的功率不大,可以使用 IoT 開發板的 3.3V 或 5V 輸出進行控制。輸出電路可以承載更多功率,取決於繼電器,包括市電電壓甚至更高的工業用電功率。這樣,IoT 開發板可以控制灌溉系統,從單個植物的小型水泵到整個商業農場的大型工業系統。 電磁鐵啟動並拉動杠杆所需的功率不大,可以使用 IoT 開發板的 3.3V 或 5V 輸出進行控制。輸出電路可以承載更多功率,取決於繼電器,包括市電電壓甚至更高的工業用電功率。這樣,IoT 開發板可以控制灌溉系統,從單個植物的小型水泵到整個商業農場的大型工業系統。
![一個 Grove 繼電器,標註了控制電路、輸出電路和繼電器](../../../../../translated_images/zh-MO/grove-relay-labelled.293e068f5c3c2a199bd7892f2661fdc9e10c920b535cfed317fbd6d1d4ae1168.png) ![一個 Grove 繼電器,標註了控制電路、輸出電路和繼電器](../../../../../translated_images/zh-MO/grove-relay-labelled.293e068f5c3c2a19.webp)
上圖顯示了一個 Grove 繼電器。控制電路連接到 IoT 設備,使用 3.3V 或 5V 打開或關閉繼電器。輸出電路有兩個端子,任一端子可以是電源或接地。輸出電路可以處理高達 250V、10A 的電力,足以驅動一系列市電設備。你還可以找到能處理更高功率的繼電器。 上圖顯示了一個 Grove 繼電器。控制電路連接到 IoT 設備,使用 3.3V 或 5V 打開或關閉繼電器。輸出電路有兩個端子,任一端子可以是電源或接地。輸出電路可以處理高達 250V、10A 的電力,足以驅動一系列市電設備。你還可以找到能處理更高功率的繼電器。

@ -18,13 +18,13 @@ Grove 繼電器可以連接到 Raspberry Pi。
連接繼電器。 連接繼電器。
![一個 Grove 繼電器](../../../../../translated_images/zh-MO/grove-relay.d426958ca210fbd0fb7983d7edc069d46c73a8b0a099d94797bd756f7b6bb6be.png) ![一個 Grove 繼電器](../../../../../translated_images/zh-MO/grove-relay.d426958ca210fbd0.webp)
1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入繼電器上的插座。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 上標記為 **D5** 的數位插座。這個插座位於 GPIO 引腳旁邊那排插座的第二個位置。保持土壤濕度傳感器連接到 **A0** 插座。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到 Pi 上 Grove Base Hat 上標記為 **D5** 的數位插座。這個插座位於 GPIO 引腳旁邊那排插座的第二個位置。保持土壤濕度傳感器連接到 **A0** 插座。
![Grove 繼電器連接到 D5 插座,土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e69ec716cd2719ce117700bd1fc933eaf93476c103c57939b.png) ![Grove 繼電器連接到 D5 插座,土壤濕度傳感器連接到 A0 插座](../../../../../translated_images/zh-MO/pi-relay-and-soil-moisture-sensor.02f3198975b8c53e.webp)
1. 如果土壤濕度傳感器還沒有插入土壤,請將其插入土壤中(如果是從上一課程中留下的,則可能已經插入)。 1. 如果土壤濕度傳感器還沒有插入土壤,請將其插入土壤中(如果是從上一課程中留下的,則可能已經插入)。

@ -28,11 +28,11 @@
1. 選擇 **Add** 按鈕以在 Pin 5 上創建繼電器。 1. 選擇 **Add** 按鈕以在 Pin 5 上創建繼電器。
![繼電器設置](../../../../../translated_images/zh-MO/counterfit-create-relay.fa7c40fd0f2f6afc33b35ea94fcb235085be4861e14e3fe6b9b7bcfc82d1c888.png) ![繼電器設置](../../../../../translated_images/zh-MO/counterfit-create-relay.fa7c40fd0f2f6afc.webp)
繼電器將被創建並顯示在致動器列表中。 繼電器將被創建並顯示在致動器列表中。
![已創建的繼電器](../../../../../translated_images/zh-MO/counterfit-relay.bbf74c1dbdc8b9acd983367fcbd06703a402aefef6af54ddb28e11307ba8a12c.png) ![已創建的繼電器](../../../../../translated_images/zh-MO/counterfit-relay.bbf74c1dbdc8b9ac.webp)
## 編程繼電器 ## 編程繼電器

@ -1,6 +1,6 @@
# 將植物遷移到雲端 # 將植物遷移到雲端
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-8.3f21f3c11159e6a0a376351973ea5724d5de68fa23b4288853a174bed9ac48c3.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-8.3f21f3c11159e6a0.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -46,8 +46,8 @@ IoT 設備通過公共 MQTT broker 進行通信,這是一種演示原理的方
雲端常被戲稱為「別人的計算機」。最初的想法很簡單——與其購買計算機,不如租用別人的計算機。雲計算提供商會管理巨大的數據中心。他們負責購買和安裝硬件、管理電力和冷卻、網絡、建築安全、硬件和軟件更新等所有事情。作為客戶,你只需租用所需的計算機,需求增加時租用更多,需求減少時減少租用。這些雲端數據中心分布在世界各地。 雲端常被戲稱為「別人的計算機」。最初的想法很簡單——與其購買計算機,不如租用別人的計算機。雲計算提供商會管理巨大的數據中心。他們負責購買和安裝硬件、管理電力和冷卻、網絡、建築安全、硬件和軟件更新等所有事情。作為客戶,你只需租用所需的計算機,需求增加時租用更多,需求減少時減少租用。這些雲端數據中心分布在世界各地。
![Microsoft 雲端數據中心](../../../../../translated_images/zh-MO/azure-region-existing.73f704604f2aa6cb9b5a49ed40e93d4fd81ae3f4e6af4a8ca504023902832f56.png) ![Microsoft 雲端數據中心](../../../../../translated_images/zh-MO/azure-region-existing.73f704604f2aa6cb.webp)
![Microsoft 雲端數據中心擴展計劃](../../../../../translated_images/zh-MO/azure-region-planned-expansion.a5074a1e8af74f156a73552d502429e5b126ea5019274d767ecb4b9afdad442b.png) ![Microsoft 雲端數據中心擴展計劃](../../../../../translated_images/zh-MO/azure-region-planned-expansion.a5074a1e8af74f15.webp)
這些數據中心的面積可以達到數平方公里。上面的圖片拍攝於幾年前的 Microsoft 雲端數據中心,展示了初始規模以及擴展計劃。擴展清理出的區域超過 5 平方公里。 這些數據中心的面積可以達到數平方公里。上面的圖片拍攝於幾年前的 Microsoft 雲端數據中心,展示了初始規模以及擴展計劃。擴展清理出的區域超過 5 平方公里。
@ -108,11 +108,11 @@ Azure 是 Microsoft 的開發者雲端,也是你在這些課程中將使用的
IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或直接通過通信協議(如 MQTT 或 HTTP)連接到雲端服務。設備 SDK 通常是最簡單的路徑,因為它處理所有事情,例如知道要發布或訂閱哪些主題,以及如何處理安全性。 IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或直接通過通信協議(如 MQTT 或 HTTP)連接到雲端服務。設備 SDK 通常是最簡單的路徑,因為它處理所有事情,例如知道要發布或訂閱哪些主題,以及如何處理安全性。
![設備通過設備 SDK 連接到服務。伺服器代碼也通過 SDK 連接到服務](../../../../../translated_images/zh-MO/iot-service-connectivity.7e873847921a5d6fd60d0ba3a943210194518cee0d4e362476624316443275c3.png) ![設備通過設備 SDK 連接到服務。伺服器代碼也通過 SDK 連接到服務](../../../../../translated_images/zh-MO/iot-service-connectivity.7e873847921a5d6f.webp)
你的設備然後通過該服務與應用程序的其他部分通信——類似於你通過 MQTT 發送遙測數據和接收命令。這通常使用服務 SDK 或類似的庫。消息從設備發送到服務,應用程序的其他部分可以讀取這些消息,並將消息發送回設備。 你的設備然後通過該服務與應用程序的其他部分通信——類似於你通過 MQTT 發送遙測數據和接收命令。這通常使用服務 SDK 或類似的庫。消息從設備發送到服務,應用程序的其他部分可以讀取這些消息,並將消息發送回設備。
![沒有有效密鑰的設備無法連接到 IoT 服務](../../../../../translated_images/zh-MO/iot-service-allowed-denied-connection.818b0063ac213fb84204a7229303764d9b467ca430fb822b4ac2fca267d56726.png) ![沒有有效密鑰的設備無法連接到 IoT 服務](../../../../../translated_images/zh-MO/iot-service-allowed-denied-connection.818b0063ac213fb8.webp)
這些服務通過了解所有可以連接並發送數據的設備來實現安全性,這可以通過預先註冊設備或提供設備密鑰或證書來完成,設備可以在首次連接時使用這些密鑰或證書向服務註冊。未知設備無法連接,如果嘗試,服務會拒絕連接並忽略它們發送的消息。 這些服務通過了解所有可以連接並發送數據的設備來實現安全性,這可以通過預先註冊設備或提供設備密鑰或證書來完成,設備可以在首次連接時使用這些密鑰或證書向服務註冊。未知設備無法連接,如果嘗試,服務會拒絕連接並忽略它們發送的消息。
@ -124,7 +124,7 @@ IoT 設備可以通過設備 SDK(提供與服務功能交互的代碼庫)或
現在您已擁有 Azure 訂閱,您可以註冊一個 IoT 服務。Microsoft 的 IoT 服務稱為 Azure IoT Hub。 現在您已擁有 Azure 訂閱,您可以註冊一個 IoT 服務。Microsoft 的 IoT 服務稱為 Azure IoT Hub。
![Azure IoT Hub 標誌](../../../../../translated_images/zh-MO/azure-iot-hub-logo.28a19de76d0a1932464d858f7558712bcdace3e5ec69c434d482ed7ce41c3a26.png) ![Azure IoT Hub 標誌](../../../../../translated_images/zh-MO/azure-iot-hub-logo.28a19de76d0a1932.webp)
以下影片提供了 Azure IoT Hub 的簡短概述: 以下影片提供了 Azure IoT Hub 的簡短概述:

@ -1,6 +1,6 @@
# 將您的應用程式邏輯遷移到雲端 # 將您的應用程式邏輯遷移到雲端
![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-9.dfe99c8e891f48e179724520da9f5794392cf9a625079281ccdcbf09bd85e1b6.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-9.dfe99c8e891f48e1.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -28,7 +28,7 @@
無伺服器,或稱無伺服器運算,是指建立小型程式碼塊,這些程式碼會在雲端中根據不同類型的事件執行。當事件發生時,您的程式碼會被執行,並接收有關該事件的數據。這些事件可以來自多種來源,包括網頁請求、放入佇列的訊息、資料庫中數據的變更,或 IoT 裝置發送到 IoT 服務的訊息。 無伺服器,或稱無伺服器運算,是指建立小型程式碼塊,這些程式碼會在雲端中根據不同類型的事件執行。當事件發生時,您的程式碼會被執行,並接收有關該事件的數據。這些事件可以來自多種來源,包括網頁請求、放入佇列的訊息、資料庫中數據的變更,或 IoT 裝置發送到 IoT 服務的訊息。
![事件從 IoT 服務發送到無伺服器服務,並由多個同時執行的函數處理](../../../../../translated_images/zh-MO/iot-messages-to-serverless.0194da1cc0732bb7d0f823aed3fce54735c6b1ad3bf36089804d8aaefc0a774f.png) ![事件從 IoT 服務發送到無伺服器服務,並由多個同時執行的函數處理](../../../../../translated_images/zh-MO/iot-messages-to-serverless.0194da1cc0732bb7.webp)
> 💁 如果您之前使用過資料庫觸發器,可以將其視為類似的概念,即程式碼因事件(如插入一行)而觸發。 > 💁 如果您之前使用過資料庫觸發器,可以將其視為類似的概念,即程式碼因事件(如插入一行)而觸發。
@ -54,7 +54,7 @@
Microsoft 的無伺服器運算服務稱為 Azure Functions。 Microsoft 的無伺服器運算服務稱為 Azure Functions。
![Azure Functions 標誌](../../../../../translated_images/zh-MO/azure-functions-logo.1cfc8e3204c9c44aaf80fcf406fc8544d80d7f00f8d3e8ed6fed764563e17564.png) ![Azure Functions 標誌](../../../../../translated_images/zh-MO/azure-functions-logo.1cfc8e3204c9c44a.webp)
以下的短影片提供了 Azure Functions 的概覽: 以下的短影片提供了 Azure Functions 的概覽:

@ -1,6 +1,6 @@
# 保護您的植物安全 # 保護您的植物安全
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-10.829c86b80b9403bb770929ee553a1d293afe50dc23121aaf9be144673ae012cc.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-10.829c86b80b9403bb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -52,11 +52,11 @@
當設備連接到物聯網服務時,它會使用一個 ID 來識別自己。問題是這個 ID 可以被複製——駭客可以設置一個惡意設備,使用與真實設備相同的 ID,但發送虛假數據。 當設備連接到物聯網服務時,它會使用一個 ID 來識別自己。問題是這個 ID 可以被複製——駭客可以設置一個惡意設備,使用與真實設備相同的 ID,但發送虛假數據。
![真實設備和惡意設備可能使用相同的 ID 發送遙測數據](../../../../../translated_images/zh-MO/iot-device-and-hacked-device-connecting.e0671675df74d6d99eb1dedb5a670e606f698efa6202b1ad4c8ae548db299cc6.png) ![真實設備和惡意設備可能使用相同的 ID 發送遙測數據](../../../../../translated_images/zh-MO/iot-device-and-hacked-device-connecting.e0671675df74d6d9.webp)
解決方法是將發送的數據轉換為一種加密格式,使用設備和雲端都知道的某種值來加密數據。這個過程稱為*加密*,用於加密數據的值稱為*加密密鑰*。 解決方法是將發送的數據轉換為一種加密格式,使用設備和雲端都知道的某種值來加密數據。這個過程稱為*加密*,用於加密數據的值稱為*加密密鑰*。
![如果使用加密,只有加密的消息會被接受,其他消息會被拒絕](../../../../../translated_images/zh-MO/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f979e46f2849b573564eeb4a4dc5b52f669f62745397492fb.png) ![如果使用加密,只有加密的消息會被接受,其他消息會被拒絕](../../../../../translated_images/zh-MO/iot-device-and-hacked-device-connecting-encryption.5941aff601fc978f.webp)
雲端服務可以使用一個過程稱為*解密*將數據轉換回可讀格式,使用相同的加密密鑰或一個*解密密鑰*。如果加密的消息無法通過密鑰解密,則表明設備已被駭客入侵,消息會被拒絕。 雲端服務可以使用一個過程稱為*解密*將數據轉換回可讀格式,使用相同的加密密鑰或一個*解密密鑰*。如果加密的消息無法通過密鑰解密,則表明設備已被駭客入侵,消息會被拒絕。

@ -1,6 +1,6 @@
# 位置追蹤 # 位置追蹤
![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-11.9fddbac4b664c6d50ab7ac9bb32f1fc3f945f03760e72f7f43938073762fb017.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-11.9fddbac4b664c6d5.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -62,13 +62,13 @@
> 💁 沒有人真正知道為什麼圓被分為 360 度的最初原因。[維基百科上的角度(度)頁面](https://wikipedia.org/wiki/Degree_(angle))介紹了一些可能的原因。 > 💁 沒有人真正知道為什麼圓被分為 360 度的最初原因。[維基百科上的角度(度)頁面](https://wikipedia.org/wiki/Degree_(angle))介紹了一些可能的原因。
![緯線從北極的 90°,到赤道的 0°,再到南極的 -90°](../../../../../translated_images/zh-MO/latitude-lines.11d8d91dfb2014a57437272d7db7fd6607243098e8685f06e0c5f1ec984cb7eb.png) ![緯線從北極的 90°,到赤道的 0°,再到南極的 -90°](../../../../../translated_images/zh-MO/latitude-lines.11d8d91dfb2014a5.webp)
緯度是通過圍繞地球並與赤道平行的線來測量的,將北半球和南半球各分為 90°。赤道是 0°,北極是 90°,也稱為北緯 90°,南極是 -90°,或南緯 90°。 緯度是通過圍繞地球並與赤道平行的線來測量的,將北半球和南半球各分為 90°。赤道是 0°,北極是 90°,也稱為北緯 90°,南極是 -90°,或南緯 90°。
經度是測量東西方向的度數。經度的 0° 起點稱為*本初子午線*,於 1884 年被定義為一條從北極到南極穿過[英國格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)的線。 經度是測量東西方向的度數。經度的 0° 起點稱為*本初子午線*,於 1884 年被定義為一條從北極到南極穿過[英國格林威治皇家天文台](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich)的線。
![經線從本初子午線的 0°,到西經 -180°,再到東經 180°](../../../../../translated_images/zh-MO/longitude-meridians.ab4ef1c91c064586b0185a3c8d39e585903696c6a7d28c098a93a629cddb5d20.png) ![經線從本初子午線的 0°,到西經 -180°,再到東經 180°](../../../../../translated_images/zh-MO/longitude-meridians.ab4ef1c91c064586.webp)
> 🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。 > 🎓 子午線是一條從北極到南極的假想直線,形成一個半圓。
@ -99,7 +99,7 @@
* 緯度為 47.6423109(赤道以北 47.6423109 度) * 緯度為 47.6423109(赤道以北 47.6423109 度)
* 經度為 -122.1390293(本初子午線以西 122.1390293 度)。 * 經度為 -122.1390293(本初子午線以西 122.1390293 度)。
![微軟園區位於 47.6423109,-122.117198](../../../../../translated_images/zh-MO/microsoft-gps-location-world.a321d481b010f6adfcca139b2ba0adc53b79f58a540495b8e2ce7f779ea64bfe.png) ![微軟園區位於 47.6423109,-122.117198](../../../../../translated_images/zh-MO/microsoft-gps-location-world.a321d481b010f6ad.webp)
## 全球定位系統(GPS) ## 全球定位系統(GPS)
@ -111,7 +111,7 @@ GPS 系統的工作原理是多顆衛星發送信號,信號中包含每顆衛
> 💁 GPS 感測器需要天線來檢測無線電波。內建 GPS 的卡車和汽車通常將天線安裝在擋風玻璃或車頂,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保 GPS 系統或手機內建的天線能夠清楚地看到天空,例如安裝在擋風玻璃上。 > 💁 GPS 感測器需要天線來檢測無線電波。內建 GPS 的卡車和汽車通常將天線安裝在擋風玻璃或車頂,以獲得良好的信號。如果您使用的是單獨的 GPS 系統,例如智能手機或物聯網設備,則需要確保 GPS 系統或手機內建的天線能夠清楚地看到天空,例如安裝在擋風玻璃上。
![通過知道感測器與多顆衛星的距離,可以計算出位置](../../../../../translated_images/zh-MO/gps-satellites.04acf1148fe25fbf1586bc2e8ba698e8d79b79a50c36824b38417dd13372b90f.png) ![通過知道感測器與多顆衛星的距離,可以計算出位置](../../../../../translated_images/zh-MO/gps-satellites.04acf1148fe25fbf.webp)
GPS 衛星繞地球運行,並非固定在感測器上方,因此位置數據包括海拔高度(相對於海平面)以及緯度和經度。 GPS 衛星繞地球運行,並非固定在感測器上方,因此位置數據包括海拔高度(相對於海平面)以及緯度和經度。

@ -18,13 +18,13 @@ Grove GPS 感測器可以連接到 Raspberry Pi。
連接 GPS 感測器。 連接 GPS 感測器。
![Grove GPS 感測器](../../../../../translated_images/zh-MO/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.png) ![Grove GPS 感測器](../../../../../translated_images/zh-MO/grove-gps-sensor.247943bf69b03f0d.webp)
1. 將 Grove 電纜的一端插入 GPS 感測器上的插槽。它只能以一種方式插入。 1. 將 Grove 電纜的一端插入 GPS 感測器上的插槽。它只能以一種方式插入。
1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到安裝在 Pi 上的 Grove Base Hat 上標有 **UART** 的 UART 插槽。該插槽位於中間排,靠近 SD 卡插槽的一側,與 USB 埠和乙太網插槽相對的一端。 1. 在 Raspberry Pi 關機的情況下,將 Grove 電纜的另一端連接到安裝在 Pi 上的 Grove Base Hat 上標有 **UART** 的 UART 插槽。該插槽位於中間排,靠近 SD 卡插槽的一側,與 USB 埠和乙太網插槽相對的一端。
![Grove GPS 感測器連接到 UART 插槽](../../../../../translated_images/zh-MO/pi-gps-sensor.1f99ee2b2f6528915047ec78967bd362e0e4ee0ed594368a3837b9cf9cdaca64.png) ![Grove GPS 感測器連接到 UART 插槽](../../../../../translated_images/zh-MO/pi-gps-sensor.1f99ee2b2f652891.webp)
1. 將 GPS 感測器放置在附加天線可以看到天空的位置——理想情況下靠近窗戶或在戶外。天線周圍沒有障礙物時,信號會更清晰。 1. 將 GPS 感測器放置在附加天線可以看到天空的位置——理想情況下靠近窗戶或在戶外。天線周圍沒有障礙物時,信號會更清晰。

@ -38,11 +38,11 @@
1. 點擊 **Add** 按鈕,在端口 `/dev/ttyAMA0` 上創建 GPS 傳感器。 1. 點擊 **Add** 按鈕,在端口 `/dev/ttyAMA0` 上創建 GPS 傳感器。
![GPS 傳感器設置](../../../../../translated_images/zh-MO/counterfit-create-gps-sensor.6385dc9357d85ad1d47b4abb2525e7651fd498917d25eefc5a72feab09eedc70.png) ![GPS 傳感器設置](../../../../../translated_images/zh-MO/counterfit-create-gps-sensor.6385dc9357d85ad1.webp)
GPS 傳感器將被創建並顯示在傳感器列表中。 GPS 傳感器將被創建並顯示在傳感器列表中。
![已創建的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor.3fbb15af0a5367566f2f11324ef5a6f30861cdf2b497071a5e002b7aa473550e.png) ![已創建的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor.3fbb15af0a536756.webp)
## 編程 GPS 傳感器 ## 編程 GPS 傳感器
@ -102,17 +102,17 @@
* 將 **Source** 設置為 `Lat/Lon`,並設置明確的緯度、經度以及用於獲取 GPS 定位的衛星數量。此值僅會發送一次,因此勾選 **Repeat** 框以使數據每秒重複發送。 * 將 **Source** 設置為 `Lat/Lon`,並設置明確的緯度、經度以及用於獲取 GPS 定位的衛星數量。此值僅會發送一次,因此勾選 **Repeat** 框以使數據每秒重複發送。
![選擇緯度和經度的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-latlon.008c867d75464fbe7f84107cc57040df565ac07cb57d2f21db37d087d470197d.png) ![選擇緯度和經度的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-latlon.008c867d75464fbe.webp)
* 將 **Source** 設置為 `NMEA`,並在文本框中添加一些 NMEA 語句。所有這些值都會被發送,每次新的 GGA(位置修正)語句可讀取前會有 1 秒的延遲。 * 將 **Source** 設置為 `NMEA`,並在文本框中添加一些 NMEA 語句。所有這些值都會被發送,每次新的 GGA(位置修正)語句可讀取前會有 1 秒的延遲。
![設置 NMEA 語句的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-nmea.c62eea442171e17e19528b051b104cfcecdc9cd18db7bc72920f29821ae63f73.png) ![設置 NMEA 語句的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-nmea.c62eea442171e17e.webp)
您可以使用像 [nmeagen.org](https://www.nmeagen.org) 這樣的工具通過在地圖上繪製來生成這些語句。這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。 您可以使用像 [nmeagen.org](https://www.nmeagen.org) 這樣的工具通過在地圖上繪製來生成這些語句。這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。
* 將 **Source** 設置為 GPX 文件,並上傳包含軌跡位置的 GPX 文件。您可以從一些流行的地圖和徒步網站(如 [AllTrails](https://www.alltrails.com/))下載 GPX 文件。這些文件包含多個 GPS 位置作為軌跡,GPS 傳感器將以 1 秒間隔返回每個新位置。 * 將 **Source** 設置為 GPX 文件,並上傳包含軌跡位置的 GPX 文件。您可以從一些流行的地圖和徒步網站(如 [AllTrails](https://www.alltrails.com/))下載 GPX 文件。這些文件包含多個 GPS 位置作為軌跡,GPS 傳感器將以 1 秒間隔返回每個新位置。
![設置 GPX 文件的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-gpxfile.8310b063ce8a425ccc8ebeec8306aeac5e8e55207f007d52c6e1194432a70cd9.png) ![設置 GPX 文件的 GPS 傳感器](../../../../../translated_images/zh-MO/counterfit-gps-sensor-gpxfile.8310b063ce8a425c.webp)
這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。 這些值僅會發送一次,因此勾選 **Repeat** 框以使數據在全部發送後每秒重複一次。

@ -18,7 +18,7 @@ Grove GPS 感測器可以連接到 Wio Terminal。
連接 GPS 感測器。 連接 GPS 感測器。
![Grove GPS 感測器](../../../../../translated_images/zh-MO/grove-gps-sensor.247943bf69b03f0d1820ef6ed10c587f9b650e8db55b936851c92412180bd3e2.png) ![Grove GPS 感測器](../../../../../translated_images/zh-MO/grove-gps-sensor.247943bf69b03f0d.webp)
1. 將 Grove 線纜的一端插入 GPS 感測器上的插槽。它只能以一種方式插入。 1. 將 Grove 線纜的一端插入 GPS 感測器上的插槽。它只能以一種方式插入。

@ -1,6 +1,6 @@
# 儲存位置數據 # 儲存位置數據
![本課的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-12.ca7f53039712a3ec14ad6474d8445361c84adab643edc53fa6269b77895606bb.jpg) ![本課的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-12.ca7f53039712a3ec.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -75,7 +75,7 @@ NoSQL 資料庫之所以被稱為 NoSQL,是因為它們沒有 SQL 資料庫的
> 💁 儘管名稱如此,一些 NoSQL 資料庫允許你使用 SQL 查詢數據。 > 💁 儘管名稱如此,一些 NoSQL 資料庫允許你使用 SQL 查詢數據。
![NoSQL 資料庫中的文件夾和文件](../../../../../translated_images/zh-MO/noqsl-database.62d24ccf5b73f60d35c245a8533f1c7147c0928e955b82cb290b2e184bb434df.png) ![NoSQL 資料庫中的文件夾和文件](../../../../../translated_images/zh-MO/noqsl-database.62d24ccf5b73f60d.webp)
NoSQL 資料庫沒有預定義的模式來限制數據的儲存方式,你可以插入任何非結構化數據,通常使用 JSON 文件。這些文件可以組織成文件夾,類似於電腦上的檔案。每個文件可以與其他文件具有不同的欄位——例如,如果你正在儲存農場車輛的 IoT 數據,有些可能有加速度計和速度數據欄位,其他可能有拖車內部溫度的欄位。如果你要添加一種新型卡車,例如內建秤來追蹤運輸的貨物重量,那麼你的 IoT 設備可以添加這個新欄位,並且可以在不更改資料庫的情況下儲存。 NoSQL 資料庫沒有預定義的模式來限制數據的儲存方式,你可以插入任何非結構化數據,通常使用 JSON 文件。這些文件可以組織成文件夾,類似於電腦上的檔案。每個文件可以與其他文件具有不同的欄位——例如,如果你正在儲存農場車輛的 IoT 數據,有些可能有加速度計和速度數據欄位,其他可能有拖車內部溫度的欄位。如果你要添加一種新型卡車,例如內建秤來追蹤運輸的貨物重量,那麼你的 IoT 設備可以添加這個新欄位,並且可以在不更改資料庫的情況下儲存。
@ -89,7 +89,7 @@ NoSQL 資料庫沒有預定義的模式來限制數據的儲存方式,你可
在上一課中,你從連接到 IoT 設備的 GPS 感測器捕捉了 GPS 數據。若要將這些 IoT 數據儲存在雲端,你需要將其發送到 IoT 服務。你將再次使用 Azure IoT Hub,這是你在上一個專案中使用的相同 IoT 雲服務。 在上一課中,你從連接到 IoT 設備的 GPS 感測器捕捉了 GPS 數據。若要將這些 IoT 數據儲存在雲端,你需要將其發送到 IoT 服務。你將再次使用 Azure IoT Hub,這是你在上一個專案中使用的相同 IoT 雲服務。
![從 IoT 設備向 IoT Hub 發送 GPS 遙測數據](../../../../../translated_images/zh-MO/gps-telemetry-iot-hub.8115335d51cd2c1285d20e9d1b18cf685e59a8e093e7797291ef173445af6f3d.png) ![從 IoT 設備向 IoT Hub 發送 GPS 遙測數據](../../../../../translated_images/zh-MO/gps-telemetry-iot-hub.8115335d51cd2c12.webp)
### 任務 - 將 GPS 數據發送到 IoT Hub ### 任務 - 將 GPS 數據發送到 IoT Hub
@ -171,7 +171,7 @@ message = Message(json.dumps(message_json))
一旦數據流入你的 IoT Hub,你可以編寫一些無伺服器程式碼來監聽發佈到 Event-Hub 相容端點的事件。這是溫路徑——這些數據將被儲存,並在下一課中用於行程報告。 一旦數據流入你的 IoT Hub,你可以編寫一些無伺服器程式碼來監聽發佈到 Event-Hub 相容端點的事件。這是溫路徑——這些數據將被儲存,並在下一課中用於行程報告。
![從 IoT 設備向 IoT Hub 發送 GPS 遙測數據,然後通過事件中心觸發器發送到 Azure Functions](../../../../../translated_images/zh-MO/gps-telemetry-iot-hub-functions.24d3fa5592455e9f4e2fe73856b40c3915a292b90263c31d652acfd976cfedd8.png) ![從 IoT 設備向 IoT Hub 發送 GPS 遙測數據,然後通過事件中心觸發器發送到 Azure Functions](../../../../../translated_images/zh-MO/gps-telemetry-iot-hub-functions.24d3fa5592455e9f.webp)
### 任務 - 使用無伺服器程式碼處理 GPS 事件 ### 任務 - 使用無伺服器程式碼處理 GPS 事件
@ -193,7 +193,7 @@ message = Message(json.dumps(message_json))
## Azure 儲存帳戶 ## Azure 儲存帳戶
![Azure 儲存服務標誌](../../../../../translated_images/zh-MO/azure-storage-logo.605c0f602c640d482a80f1b35a2629a32d595711b7ab1d7ceea843250615ff32.png) ![Azure 儲存服務標誌](../../../../../translated_images/zh-MO/azure-storage-logo.605c0f602c640d48.webp)
Azure 儲存帳戶是一種通用的儲存服務,可以以多種方式儲存資料。你可以將資料儲存為 Blob、佇列、表格或檔案,並且可以同時使用這些方式。 Azure 儲存帳戶是一種通用的儲存服務,可以以多種方式儲存資料。你可以將資料儲存為 Blob、佇列、表格或檔案,並且可以同時使用這些方式。

@ -1,6 +1,6 @@
# 視覺化位置數據 # 視覺化位置數據
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-13.a259db1485021be7d7c72e90842fbe0ab977529e8684c179b5fb1ea75e92b3ef.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-13.a259db1485021be7.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -64,11 +64,11 @@
對於人類來說,理解這些數據可能很困難。這是一堵沒有意義的數字牆。作為視覺化這些數據的第一步,可以將其繪製成折線圖: 對於人類來說,理解這些數據可能很困難。這是一堵沒有意義的數字牆。作為視覺化這些數據的第一步,可以將其繪製成折線圖:
![上述數據的折線圖](../../../../../translated_images/zh-MO/chart-soil-moisture.fd6d9d0cdc0b5f75e78038ecb8945dfc84b38851359de99d84b16e3336d6d7c2.png) ![上述數據的折線圖](../../../../../translated_images/zh-MO/chart-soil-moisture.fd6d9d0cdc0b5f75.webp)
這可以進一步改進,添加一條線來指示自動灌溉系統在土壤濕度讀數達到 450 時啟動的時間: 這可以進一步改進,添加一條線來指示自動灌溉系統在土壤濕度讀數達到 450 時啟動的時間:
![土壤濕度折線圖,顯示 450 的一條線](../../../../../translated_images/zh-MO/chart-soil-moisture-relay.fbb391236d34a64d0abf1df396e9197e0a24df14150620b9cc820a64a55c9326.png) ![土壤濕度折線圖,顯示 450 的一條線](../../../../../translated_images/zh-MO/chart-soil-moisture-relay.fbb391236d34a64d.webp)
這張圖表不僅快速顯示了土壤濕度水平,還顯示了灌溉系統啟動的點。 這張圖表不僅快速顯示了土壤濕度水平,還顯示了灌溉系統啟動的點。
@ -84,7 +84,7 @@
使用地圖是一項有趣的練習,有許多選擇,例如 Bing Maps、Leaflet、Open Street Maps 和 Google Maps。在本課程中,您將了解 [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) 以及如何使用它們顯示您的 GPS 數據。 使用地圖是一項有趣的練習,有許多選擇,例如 Bing Maps、Leaflet、Open Street Maps 和 Google Maps。在本課程中,您將了解 [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) 以及如何使用它們顯示您的 GPS 數據。
![Azure Maps 標誌](../../../../../translated_images/zh-MO/azure-maps-logo.35d01dcfbd81fe6140e94257aaa1538f785a58c91576d14e0ebe7a2f6c694b99.png) ![Azure Maps 標誌](../../../../../translated_images/zh-MO/azure-maps-logo.35d01dcfbd81fe61.webp)
Azure Maps 是“一組地理空間服務和 SDK,使用最新的地圖數據為網頁和移動應用提供地理背景。”開發者可以使用工具創建美觀的互動地圖,這些地圖可以提供推薦的交通路線、交通事故信息、室內導航、搜索功能、海拔信息、天氣服務等。 Azure Maps 是“一組地理空間服務和 SDK,使用最新的地圖數據為網頁和移動應用提供地理背景。”開發者可以使用工具創建美觀的互動地圖,這些地圖可以提供推薦的交通路線、交通事故信息、室內導航、搜索功能、海拔信息、天氣服務等。
@ -185,7 +185,7 @@ Azure Maps 是“一組地理空間服務和 SDK,使用最新的地圖數據
如果您在網頁瀏覽器中打開 `index.html` 文件,您應該會看到一張地圖加載並聚焦在西雅圖地區。 如果您在網頁瀏覽器中打開 `index.html` 文件,您應該會看到一張地圖加載並聚焦在西雅圖地區。
![顯示西雅圖(美國華盛頓州的一個城市)的地圖](../../../../../translated_images/zh-MO/map-image.8fb2c53eb23ef39c1c0a4410a5282e879b3b452b707eb066ff04c5488d3d72b7.png) ![顯示西雅圖(美國華盛頓州的一個城市)的地圖](../../../../../translated_images/zh-MO/map-image.8fb2c53eb23ef39c.webp)
✅ 嘗試調整縮放和中心參數以更改地圖顯示。您可以添加與數據的緯度和經度相對應的不同坐標來重新定位地圖。 ✅ 嘗試調整縮放和中心參數以更改地圖顯示。您可以添加與數據的緯度和經度相對應的不同坐標來重新定位地圖。
@ -319,7 +319,7 @@ Azure Maps 是“一組地理空間服務和 SDK,使用最新的地圖數據
1. 在瀏覽器中加載 HTML 頁面。它將加載地圖,然後從儲存中加載所有 GPS 數據並將其繪製在地圖上。 1. 在瀏覽器中加載 HTML 頁面。它將加載地圖,然後從儲存中加載所有 GPS 數據並將其繪製在地圖上。
![西雅圖附近的聖愛德華州立公園地圖,顯示公園邊緣路徑上的圓形](../../../../../translated_images/zh-MO/map-path.896832e72dc696ffe20650e4051027d4855442d955f93fdbb80bb417ca8a406f.png) ![西雅圖附近的聖愛德華州立公園地圖,顯示公園邊緣路徑上的圓形](../../../../../translated_images/zh-MO/map-path.896832e72dc696ff.webp)
> 💁 你可以在 [code](../../../../../3-transport/lessons/3-visualize-location-data/code) 資料夾中找到此代碼。 > 💁 你可以在 [code](../../../../../3-transport/lessons/3-visualize-location-data/code) 資料夾中找到此代碼。

@ -1,6 +1,6 @@
# 地理圍欄 # 地理圍欄
![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-14.63980c5150ae3c153e770fb71d044c1845dce79248d86bed9fc525adf3ede73c.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-14.63980c5150ae3c15.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -35,7 +35,7 @@
地理圍欄是一個針對現實地理區域的虛擬邊界。地理圍欄可以是以點和半徑定義的圓形(例如建築物周圍 100 米的圓形),也可以是覆蓋某個區域的多邊形,例如學校區域、城市邊界或大學或辦公園區。 地理圍欄是一個針對現實地理區域的虛擬邊界。地理圍欄可以是以點和半徑定義的圓形(例如建築物周圍 100 米的圓形),也可以是覆蓋某個區域的多邊形,例如學校區域、城市邊界或大學或辦公園區。
![一些地理圍欄的例子,顯示 Microsoft 公司商店周圍的圓形地理圍欄,以及 Microsoft 西園區周圍的多邊形地理圍欄](../../../../../translated_images/zh-MO/geofence-examples.172fbc534665769f6e1a1ddcf75e3b25183cd10354c80cc603ba44b635390e1a.png) ![一些地理圍欄的例子,顯示 Microsoft 公司商店周圍的圓形地理圍欄,以及 Microsoft 西園區周圍的多邊形地理圍欄](../../../../../translated_images/zh-MO/geofence-examples.172fbc534665769f.webp)
> 💁 您可能已經在不知不覺中使用過地理圍欄。如果您曾使用 iOS 提醒應用或 Google Keep 根據位置設置提醒,那麼您就使用過地理圍欄。這些應用會根據提供的位置設置地理圍欄,並在您的手機進入地理圍欄時提醒您。 > 💁 您可能已經在不知不覺中使用過地理圍欄。如果您曾使用 iOS 提醒應用或 Google Keep 根據位置設置提醒,那麼您就使用過地理圍欄。這些應用會根據提供的位置設置地理圍欄,並在您的手機進入地理圍欄時提醒您。
@ -212,7 +212,7 @@ Azure Maps(您在上一課中用來可視化 GPS 數據的服務)允許您
例如,假設 GPS 讀數顯示車輛沿著一條最終與地理圍欄相鄰的道路行駛。如果單個 GPS 值不準確,將車輛定位在地理圍欄內,儘管沒有車輛通行的入口,那麼可以忽略該值。 例如,假設 GPS 讀數顯示車輛沿著一條最終與地理圍欄相鄰的道路行駛。如果單個 GPS 值不準確,將車輛定位在地理圍欄內,儘管沒有車輛通行的入口,那麼可以忽略該值。
![一條 GPS 路徑顯示車輛沿 520 公路經過 Microsoft 校園,GPS 讀數沿著道路分佈,除了有一個讀數在校園內,位於地理圍欄內](../../../../../translated_images/zh-MO/geofence-crossing-inaccurate-gps.6a3ed911202ad9cabb66d3964888cec03a42c61d5b8f536ad5bdc99716b370f5.png) ![一條 GPS 路徑顯示車輛沿 520 公路經過 Microsoft 校園,GPS 讀數沿著道路分佈,除了有一個讀數在校園內,位於地理圍欄內](../../../../../translated_images/zh-MO/geofence-crossing-inaccurate-gps.6a3ed911202ad9ca.webp)
在上圖中,微軟園區的一部分被設置了一個地理圍欄。紅線顯示了一輛卡車沿著520公路行駛,圓圈表示GPS讀數。大多數讀數是準確的,並且位於520公路上,但有一個不準確的讀數顯示在地理圍欄內。這個讀數顯然是不可能正確的——卡車不可能突然從520公路轉入園區,然後再回到520公路上。檢查地理圍欄的程式碼需要在執行地理圍欄測試結果之前,考慮之前的讀數。 在上圖中,微軟園區的一部分被設置了一個地理圍欄。紅線顯示了一輛卡車沿著520公路行駛,圓圈表示GPS讀數。大多數讀數是準確的,並且位於520公路上,但有一個不準確的讀數顯示在地理圍欄內。這個讀數顯然是不可能正確的——卡車不可能突然從520公路轉入園區,然後再回到520公路上。檢查地理圍欄的程式碼需要在執行地理圍欄測試結果之前,考慮之前的讀數。
✅ 你需要檢查哪些額外的數據來判斷GPS讀數是否可以被認為是正確的? ✅ 你需要檢查哪些額外的數據來判斷GPS讀數是否可以被認為是正確的?
@ -284,7 +284,7 @@ Azure Maps(您在上一課中用來可視化 GPS 數據的服務)允許您
答案是它無法知道!因此,你可以定義多個單獨的連接來讀取事件,每個連接可以管理未讀消息的重播。這些被稱為*消費者組*。當你連接到端點時,可以指定要連接的消費者組。應用程式的每個組件將連接到不同的消費者組。 答案是它無法知道!因此,你可以定義多個單獨的連接來讀取事件,每個連接可以管理未讀消息的重播。這些被稱為*消費者組*。當你連接到端點時,可以指定要連接的消費者組。應用程式的每個組件將連接到不同的消費者組。
![一個IoT Hub有三個消費者組,將相同的消息分發到三個不同的Functions應用程式](../../../../../translated_images/zh-MO/consumer-groups.a3262e26fc27ba2092863678ad57af15c7223416e388a23f330c058cf4358630.png) ![一個IoT Hub有三個消費者組,將相同的消息分發到三個不同的Functions應用程式](../../../../../translated_images/zh-MO/consumer-groups.a3262e26fc27ba20.webp)
理論上,每個消費者組最多可以連接5個應用程式,並且它們都會在消息到達時接收消息。最佳實踐是每個消費者組僅由一個應用程式訪問,以避免重複處理消息,並確保在重新啟動時正確處理所有排隊的消息。例如,如果你在本地啟動了Functions應用程式,同時在雲端運行,它們都會處理消息,導致存儲帳戶中存儲的Blob重複。 理論上,每個消費者組最多可以連接5個應用程式,並且它們都會在消息到達時接收消息。最佳實踐是每個消費者組僅由一個應用程式訪問,以避免重複處理消息,並確保在重新啟動時正確處理所有排隊的消息。例如,如果你在本地啟動了Functions應用程式,同時在雲端運行,它們都會處理消息,導致存儲帳戶中存儲的Blob重複。

@ -1,6 +1,6 @@
# 訓練水果品質檢測器 # 訓練水果品質檢測器
![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-15.843d21afdc6fb2bba70cd9db7b7d2f91598859fafda2078b0bdc44954194b6c0.jpg) ![本課程的手繪筆記概覽](../../../../../translated_images/zh-MO/lesson-15.843d21afdc6fb2bb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -38,7 +38,7 @@
自動化收穫的興起將農產品的分類從田間轉移到了工廠。食品會通過長長的傳送帶,人工團隊會挑選出不符合質量標準的產品。雖然機械化收穫降低了成本,但手動分類食品仍然需要一定的開支。 自動化收穫的興起將農產品的分類從田間轉移到了工廠。食品會通過長長的傳送帶,人工團隊會挑選出不符合質量標準的產品。雖然機械化收穫降低了成本,但手動分類食品仍然需要一定的開支。
![如果檢測到紅色番茄,它會繼續前進。如果檢測到綠色番茄,槓桿會將其彈入廢料箱](../../../../../translated_images/zh-MO/optical-tomato-sorting.61aa134bdda4e5b1bfb16a212c1e35a6ef0c426cbb8b1c975f79d7bfbf48d068.png) ![如果檢測到紅色番茄,它會繼續前進。如果檢測到綠色番茄,槓桿會將其彈入廢料箱](../../../../../translated_images/zh-MO/optical-tomato-sorting.61aa134bdda4e5b1.webp)
下一代技術是使用機器進行分類,這些機器可以內置於收穫機中,也可以用於加工廠。第一代這類機器使用光學傳感器檢測顏色,通過控制執行器將綠色番茄推入廢料箱,而紅色番茄則繼續沿著傳送帶網絡前進。 下一代技術是使用機器進行分類,這些機器可以內置於收穫機中,也可以用於加工廠。第一代這類機器使用光學傳感器檢測顏色,通過控制執行器將綠色番茄推入廢料箱,而紅色番茄則繼續沿著傳送帶網絡前進。
@ -62,7 +62,7 @@
> 🎓 ML 模型的結果稱為 *預測* > 🎓 ML 模型的結果稱為 *預測*
![兩根香蕉,一根成熟的預測為 99.7% 成熟,0.3% 未成熟;另一根未成熟的預測為 1.4% 成熟,98.6% 未成熟](../../../../../translated_images/zh-MO/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50ece4e4589e724b142da0681f35470fe3db3f7d51240f69c85.png) ![兩根香蕉,一根成熟的預測為 99.7% 成熟,0.3% 未成熟;另一根未成熟的預測為 1.4% 成熟,98.6% 未成熟](../../../../../translated_images/zh-MO/bananas-ripe-vs-unripe-predictions.8d0e2034014aa50e.webp)
ML 模型不會給出二元答案,而是提供概率。例如,模型可能會給出一張香蕉圖片,預測 `成熟` 的概率為 99.7%,`未成熟` 的概率為 0.3%。您的代碼會選擇最可能的預測,並判斷該香蕉是成熟的。 ML 模型不會給出二元答案,而是提供概率。例如,模型可能會給出一張香蕉圖片,預測 `成熟` 的概率為 99.7%,`未成熟` 的概率為 0.3%。您的代碼會選擇最可能的預測,並判斷該香蕉是成熟的。
@ -90,7 +90,7 @@ ML 模型不會給出二元答案,而是提供概率。例如,模型可能
Custom Vision 是一種基於雲的工具,用於訓練圖像分類器。它允許您僅使用少量圖片來訓練分類器。您可以通過 Web 入口、Web API 或 SDK 上傳圖片,並為每張圖片添加 *標籤*,以標識該圖片的分類。然後,您可以訓練模型並測試其性能。一旦對模型感到滿意,您可以發布模型的版本,通過 Web API 或 SDK 訪問它。 Custom Vision 是一種基於雲的工具,用於訓練圖像分類器。它允許您僅使用少量圖片來訓練分類器。您可以通過 Web 入口、Web API 或 SDK 上傳圖片,並為每張圖片添加 *標籤*,以標識該圖片的分類。然後,您可以訓練模型並測試其性能。一旦對模型感到滿意,您可以發布模型的版本,通過 Web API 或 SDK 訪問它。
![Azure Custom Vision 標誌](../../../../../translated_images/zh-MO/custom-vision-logo.d3d4e7c8a87ec9daf825e72e210576c3cbf60312577be7a139e22dd97ab7f1e6.png) ![Azure Custom Vision 標誌](../../../../../translated_images/zh-MO/custom-vision-logo.d3d4e7c8a87ec9da.webp)
> 💁 您可以使用每個分類僅 5 張圖片來訓練 Custom Vision 模型,但圖片越多效果越好。至少 30 張圖片可以獲得更好的結果。 > 💁 您可以使用每個分類僅 5 張圖片來訓練 Custom Vision 模型,但圖片越多效果越好。至少 30 張圖片可以獲得更好的結果。
@ -146,7 +146,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具(稱為 Cognitive Serv
創建項目時,請確保使用您之前創建的 `fruit-quality-detector-training` 資源。選擇 *分類* 項目類型、*多分類* 分類類型,並選擇 *食品* 領域。 創建項目時,請確保使用您之前創建的 `fruit-quality-detector-training` 資源。選擇 *分類* 項目類型、*多分類* 分類類型,並選擇 *食品* 領域。
![Custom Vision 項目的設置,名稱設置為 fruit-quality-detector,無描述,資源設置為 fruit-quality-detector-training,項目類型設置為分類,分類類型設置為多分類,領域設置為食品](../../../../../translated_images/zh-MO/custom-vision-create-project.cf46325b92d8b131089f6647cf5e07b664cb77850e106d66e3c057b6b69756c6.png) ![Custom Vision 項目的設置,名稱設置為 fruit-quality-detector,無描述,資源設置為 fruit-quality-detector-training,項目類型設置為分類,分類類型設置為多分類,領域設置為食品](../../../../../translated_images/zh-MO/custom-vision-create-project.cf46325b92d8b131.webp)
✅ 花些時間探索您的圖像分類器的 Custom Vision UI。 ✅ 花些時間探索您的圖像分類器的 Custom Vision UI。
@ -164,7 +164,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具(稱為 Cognitive Serv
* 使用2根成熟的香蕉,從不同角度拍攝每根香蕉的幾張照片,至少拍攝7張(5張用於訓練,2張用於測試),但最好更多。 * 使用2根成熟的香蕉,從不同角度拍攝每根香蕉的幾張照片,至少拍攝7張(5張用於訓練,2張用於測試),但最好更多。
![2根不同香蕉的照片](../../../../../translated_images/zh-MO/banana-training-images.530eb203346d73bc23b8b990fb4609470bf4ff7c942ccc13d4cfffeed9be1ad4.png) ![2根不同香蕉的照片](../../../../../translated_images/zh-MO/banana-training-images.530eb203346d73bc.webp)
* 使用2根未成熟的香蕉重複相同的過程。 * 使用2根未成熟的香蕉重複相同的過程。
@ -174,7 +174,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具(稱為 Cognitive Serv
1. 按照[Microsoft Docs上的分類器快速入門中上傳和標記影像的部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images)上傳您的訓練影像。將成熟的水果標記為`ripe`,未成熟的水果標記為`unripe`。 1. 按照[Microsoft Docs上的分類器快速入門中上傳和標記影像的部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images)上傳您的訓練影像。將成熟的水果標記為`ripe`,未成熟的水果標記為`unripe`。
![上傳成熟和未成熟香蕉照片的對話框](../../../../../translated_images/zh-MO/image-upload-bananas.0751639f3815e0ec42bdbc6254d1e4357a185834d1ae10c9948a0e7d6d336695.png) ![上傳成熟和未成熟香蕉照片的對話框](../../../../../translated_images/zh-MO/image-upload-bananas.0751639f3815e0ec.webp)
1. 按照[Microsoft Docs上的分類器快速入門中訓練分類器的部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier)訓練影像分類器。 1. 按照[Microsoft Docs上的分類器快速入門中訓練分類器的部分](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier)訓練影像分類器。
@ -192,7 +192,7 @@ Custom Vision 是 Microsoft 提供的一系列 AI 工具(稱為 Cognitive Serv
1. 按照[Microsoft Docs上的測試模型文檔](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model)測試您的影像分類器。使用您之前創建的測試影像,而不是任何用於訓練的影像。 1. 按照[Microsoft Docs上的測試模型文檔](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model)測試您的影像分類器。使用您之前創建的測試影像,而不是任何用於訓練的影像。
![一根未成熟香蕉被預測為未成熟,概率為98.9%,成熟概率為1.1%](../../../../../translated_images/zh-MO/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64886422438850ea14f0be6ac918c217ea3b255c685abfabe7.png) ![一根未成熟香蕉被預測為未成熟,概率為98.9%,成熟概率為1.1%](../../../../../translated_images/zh-MO/banana-unripe-quick-test-prediction.dae9b5e1c4ef7c64.webp)
1. 嘗試使用您所有的測試影像並觀察概率。 1. 嘗試使用您所有的測試影像並觀察概率。

@ -1,6 +1,6 @@
# 從物聯網設備檢查水果品質 # 從物聯網設備檢查水果品質
![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-16.215daf18b00631fbdfd64c6fc2dc6044dff5d544288825d8076f9fb83d964c23.jpg) ![本課程的手繪筆記概述](../../../../../translated_images/zh-MO/lesson-16.215daf18b00631fb.webp)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。 > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
@ -26,7 +26,7 @@
相機感測器,顧名思義,是可以連接到物聯網設備的相機。它們可以拍攝靜態影像或捕捉串流視頻。有些會返回原始影像數據,其他則會將影像數據壓縮成如 JPEG 或 PNG 的影像文件。通常,與物聯網設備配合使用的相機比你習慣的相機要小得多,解析度也較低,但你也可以獲得解析度高的相機,媲美高端手機。你可以選擇各種可互換鏡頭、多相機設置、紅外熱成像相機或紫外線相機。 相機感測器,顧名思義,是可以連接到物聯網設備的相機。它們可以拍攝靜態影像或捕捉串流視頻。有些會返回原始影像數據,其他則會將影像數據壓縮成如 JPEG 或 PNG 的影像文件。通常,與物聯網設備配合使用的相機比你習慣的相機要小得多,解析度也較低,但你也可以獲得解析度高的相機,媲美高端手機。你可以選擇各種可互換鏡頭、多相機設置、紅外熱成像相機或紫外線相機。
![場景中的光線通過鏡頭並聚焦在 CMOS 感測器上](../../../../../translated_images/zh-MO/cmos-sensor.75f9cd74decb137149a4c9ea825251a4549497d67c0ae2776159e6102bb53aa9.png) ![場景中的光線通過鏡頭並聚焦在 CMOS 感測器上](../../../../../translated_images/zh-MO/cmos-sensor.75f9cd74decb1371.webp)
大多數相機感測器使用影像感測器,其中每個像素都是一個光電二極管。鏡頭將影像聚焦到影像感測器上,數千或數百萬個光電二極管檢測落在每個二極管上的光線,並將其記錄為像素數據。 大多數相機感測器使用影像感測器,其中每個像素都是一個光電二極管。鏡頭將影像聚焦到影像感測器上,數千或數百萬個光電二極管檢測落在每個二極管上的光線,並將其記錄為像素數據。
@ -74,7 +74,7 @@
1. 為該迭代選擇 **Publish** 按鈕。 1. 為該迭代選擇 **Publish** 按鈕。
![發布按鈕](../../../../../translated_images/zh-MO/custom-vision-publish-button.b7174e1977b0c33b8b72d4e5b1326c779e0af196f3849d09985ee2d7d5493a39.png) ![發布按鈕](../../../../../translated_images/zh-MO/custom-vision-publish-button.b7174e1977b0c33b.webp)
1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `fruit-quality-detector-prediction` 資源。名稱保持為 `Iteration2`,然後選擇 **Publish** 按鈕。 1. 在 *Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `fruit-quality-detector-prediction` 資源。名稱保持為 `Iteration2`,然後選擇 **Publish** 按鈕。
@ -88,7 +88,7 @@
同時複製 *Prediction-Key* 值。這是一個安全密鑰,當你調用模型時必須傳遞。只有傳遞此密鑰的應用可以使用模型,其他應用將被拒絕。 同時複製 *Prediction-Key* 值。這是一個安全密鑰,當你調用模型時必須傳遞。只有傳遞此密鑰的應用可以使用模型,其他應用將被拒絕。
![預測 API 對話框顯示 URL 和密鑰](../../../../../translated_images/zh-MO/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.png) ![預測 API 對話框顯示 URL 和密鑰](../../../../../translated_images/zh-MO/custom-vision-prediction-key-endpoint.30c569ffd0338864.webp)
✅ 當新迭代發布時,它會有不同的名稱。你認為如何更改物聯網設備使用的迭代? ✅ 當新迭代發布時,它會有不同的名稱。你認為如何更改物聯網設備使用的迭代?
@ -109,7 +109,7 @@
要獲得影像分類器的最佳結果,你需要使用與預測影像盡可能相似的影像來訓練模型。例如,如果你使用手機相機捕捉影像進行訓練,影像的質量、清晰度和顏色會與連接到物聯網設備的相機不同。 要獲得影像分類器的最佳結果,你需要使用與預測影像盡可能相似的影像來訓練模型。例如,如果你使用手機相機捕捉影像進行訓練,影像的質量、清晰度和顏色會與連接到物聯網設備的相機不同。
![兩張香蕉圖片,一張是物聯網設備拍攝的低解析度影像,光線較差;另一張是手機拍攝的高解析度影像,光線良好](../../../../../translated_images/zh-MO/banana-picture-compare.174df164dc326a42cf7fb051a7497e6113c620e91552d92ca914220305d47d9a.png) ![兩張香蕉圖片,一張是物聯網設備拍攝的低解析度影像,光線較差;另一張是手機拍攝的高解析度影像,光線良好](../../../../../translated_images/zh-MO/banana-picture-compare.174df164dc326a42.webp)
在上圖中,左邊的香蕉圖片是使用 Raspberry Pi 相機拍攝的,右邊的圖片是使用 iPhone 在相同位置拍攝的同一香蕉。可以明顯看到質量差異——iPhone 的圖片更清晰,顏色更亮,對比度更高。 在上圖中,左邊的香蕉圖片是使用 Raspberry Pi 相機拍攝的,右邊的圖片是使用 iPhone 在相同位置拍攝的同一香蕉。可以明顯看到質量差異——iPhone 的圖片更清晰,顏色更亮,對比度更高。

@ -16,7 +16,7 @@ Raspberry Pi 需要一個相機。
### 任務 - 連接相機 ### 任務 - 連接相機
![Raspberry Pi 相機](../../../../../translated_images/zh-MO/pi-camera-module.4278753c31bd6e757aa2b858be97d72049f71616278cefe4fb5abb485b40a078.png) ![Raspberry Pi 相機](../../../../../translated_images/zh-MO/pi-camera-module.4278753c31bd6e75.webp)
1. 關閉 Raspberry Pi 的電源。 1. 關閉 Raspberry Pi 的電源。
@ -24,17 +24,17 @@ Raspberry Pi 需要一個相機。
您可以在 [Raspberry Pi 相機模組入門文檔](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) 中找到一個動畫,展示如何打開夾子並插入排線。 您可以在 [Raspberry Pi 相機模組入門文檔](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) 中找到一個動畫,展示如何打開夾子並插入排線。
![扁平排線插入相機模組](../../../../../translated_images/zh-MO/pi-camera-ribbon-cable.0bf82acd251611c21ac616f082849413e2b322a261d0e4f8fec344248083b07e.png) ![扁平排線插入相機模組](../../../../../translated_images/zh-MO/pi-camera-ribbon-cable.0bf82acd251611c2.webp)
1. 從 Raspberry Pi 上取下 Grove Base Hat。 1. 從 Raspberry Pi 上取下 Grove Base Hat。
1. 將扁平排線穿過 Grove Base Hat 上的相機槽。確保排線的藍色面朝向標有 **A0**、**A1** 等的類比端口。 1. 將扁平排線穿過 Grove Base Hat 上的相機槽。確保排線的藍色面朝向標有 **A0**、**A1** 等的類比端口。
![扁平排線穿過 Grove Base Hat](../../../../../translated_images/zh-MO/grove-base-hat-ribbon-cable.501fed202fcf73b11b2b68f6d246189f7d15d3e4423c572ddee79d77b4632b47.png) ![扁平排線穿過 Grove Base Hat](../../../../../translated_images/zh-MO/grove-base-hat-ribbon-cable.501fed202fcf73b1.webp)
1. 將扁平排線插入 Raspberry Pi 上的相機端口。同樣,拉起黑色塑料夾,插入排線,然後將夾子推回原位。排線的藍色面應朝向 USB 和以太網端口。 1. 將扁平排線插入 Raspberry Pi 上的相機端口。同樣,拉起黑色塑料夾,插入排線,然後將夾子推回原位。排線的藍色面應朝向 USB 和以太網端口。
![扁平排線連接到 Raspberry Pi 的相機插座](../../../../../translated_images/zh-MO/pi-camera-socket-ribbon-cable.a18309920b11800911082ed7aa6fb28e6d9be3a022e4079ff990016cae3fca10.png) ![扁平排線連接到 Raspberry Pi 的相機插座](../../../../../translated_images/zh-MO/pi-camera-socket-ribbon-cable.a18309920b118009.webp)
1. 重新安裝 Grove Base Hat。 1. 重新安裝 Grove Base Hat。
@ -101,7 +101,7 @@ Raspberry Pi 需要一個相機。
`camera.rotation = 0` 行設置影像的旋轉角度。扁平排線從相機底部進入,但如果您的相機為了更方便地對準要分類的物品而旋轉了,則可以將此行更改為相應的旋轉角度。 `camera.rotation = 0` 行設置影像的旋轉角度。扁平排線從相機底部進入,但如果您的相機為了更方便地對準要分類的物品而旋轉了,則可以將此行更改為相應的旋轉角度。
![相機懸掛在飲料罐上方](../../../../../translated_images/zh-MO/pi-camera-upside-down.5376961ba31459883362124152ad6b823d5ac5fc14e85f317e22903bd681c2b6.png) ![相機懸掛在飲料罐上方](../../../../../translated_images/zh-MO/pi-camera-upside-down.5376961ba3145988.webp)
例如,如果您將扁平排線懸掛在相機上方,則將旋轉角度設置為 180: 例如,如果您將扁平排線懸掛在相機上方,則將旋轉角度設置為 180:

@ -84,7 +84,7 @@ Custom Vision 服務提供了一個 Python SDK,可用於分類圖片。
你將能看到拍攝的圖片,以及這些值在 Custom Vision 的 **Predictions** 標籤中顯示。 你將能看到拍攝的圖片,以及這些值在 Custom Vision 的 **Predictions** 標籤中顯示。
![一根香蕉在 Custom Vision 中被預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-MO/custom-vision-banana-prediction.30cdff4e1d72db5d9a0be0193790a47c2b387da034e12dc1314dd57ca2131b59.png) ![一根香蕉在 Custom Vision 中被預測為成熟的概率為 56.8%,未成熟的概率為 43.1%](../../../../../translated_images/zh-MO/custom-vision-banana-prediction.30cdff4e1d72db5d.webp)
> 💁 你可以在 [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) 或 [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) 資料夾中找到這段程式碼。 > 💁 你可以在 [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) 或 [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) 資料夾中找到這段程式碼。

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save