# 與感測器和致動器互動,探索物理世界 ![本課程的手繪筆記概述](../../../../../translated_images/lesson-3.cc3b7b4cd646de598698cce043c0393fd62ef42bac2eaf60e61272cd844250f4.tw.jpg) > 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大的版本。 本課程是 [Microsoft Reactor](https://developer.microsoft.com/reactor/?WT.mc_id=academic-17441-jabenn) 的 [Hello IoT 系列](https://youtube.com/playlist?list=PLmsFUfdnGr3xRts0TIwyaHyQuHaNQcb6-) 的一部分。課程分為兩段影片進行教學:一段為 1 小時的課程,另一段為 1 小時的辦公時間,深入探討課程內容並回答問題。 [![課程 3:與感測器和致動器互動,探索物理世界](https://img.youtube.com/vi/Lqalu1v6aF4/0.jpg)](https://youtu.be/Lqalu1v6aF4) [![課程 3:與感測器和致動器互動,探索物理世界 - 辦公時間](https://img.youtube.com/vi/qR3ekcMlLWA/0.jpg)](https://youtu.be/qR3ekcMlLWA) > 🎥 點擊上方圖片觀看影片 ## 課前測驗 [課前測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/5) ## 簡介 本課程介紹 IoT 裝置的兩個重要概念——感測器和致動器。您將親自操作這些元件,為您的 IoT 專案添加光感測器,並根據光線強度控制 LED,實際上建造一個夜燈。 在本課程中,我們將涵蓋: * [什麼是感測器?](../../../../../1-getting-started/lessons/3-sensors-and-actuators) * [使用感測器](../../../../../1-getting-started/lessons/3-sensors-and-actuators) * [感測器類型](../../../../../1-getting-started/lessons/3-sensors-and-actuators) * [什麼是致動器?](../../../../../1-getting-started/lessons/3-sensors-and-actuators) * [使用致動器](../../../../../1-getting-started/lessons/3-sensors-and-actuators) * [致動器類型](../../../../../1-getting-started/lessons/3-sensors-and-actuators) ## 什麼是感測器? 感測器是能夠感知物理世界的硬體裝置——它們測量周圍的一個或多個屬性,並將信息傳送到 IoT 裝置。感測器的種類繁多,因為可以測量的事物非常多樣化,從自然屬性(如空氣溫度)到物理交互(如運動)。 一些常見的感測器包括: * 溫度感測器 - 這些感測器感知空氣溫度或它們所浸入物體的溫度。對於愛好者和開發者來說,這些感測器通常與氣壓和濕度感測器結合在一起。 * 按鈕 - 感知按下的狀態。 * 光感測器 - 檢測光線強度,可以是特定顏色、紫外線、紅外線或一般可見光。 * 相機 - 通過拍攝照片或串流視頻來感知世界的視覺表示。 * 加速度計 - 感知多方向的運動。 * 麥克風 - 感知聲音,可以是一般的聲音強度或方向性聲音。 ✅ 做些研究。您的手機有哪些感測器? 所有感測器都有一個共同點——它們將感知到的事物轉換為可由 IoT 裝置解讀的電信號。如何解讀這些電信號取決於感測器本身以及與 IoT 裝置通信所使用的協議。 ## 使用感測器 按照以下相關指南,將感測器添加到您的 IoT 裝置: * [Arduino - Wio Terminal](wio-terminal-sensor.md) * [單板電腦 - Raspberry Pi](pi-sensor.md) * [單板電腦 - 虛擬裝置](virtual-device-sensor.md) ## 感測器類型 感測器分為類比和數位兩種。 ### 類比感測器 一些最基本的感測器是類比感測器。這些感測器接收來自 IoT 裝置的電壓,感測器元件調整該電壓,然後返回的電壓被測量以獲得感測器值。 > 🎓 電壓是衡量電流從一個地方移動到另一個地方的推動力。例如,標準 AA 電池的電壓為 1.5V(V 是伏特的符號),可以以 1.5V 的推力從正極移動到負極。不同的電子硬體需要不同的電壓才能工作,例如 LED 可以在 2-3V 的電壓下發光,但 100W 的燈絲燈泡需要 240V。您可以在 [維基百科的電壓頁面](https://wikipedia.org/wiki/Voltage) 上了解更多關於電壓的知識。 一個例子是電位器。這是一個可以在兩個位置之間旋轉的旋鈕,感測器測量旋轉的角度。 ![一個電位器設置在中間位置,接收 5 伏特並返回 3.8 伏特](../../../../../translated_images/potentiometer.35a348b9ce22f6ec1199ad37d68692d04185456ccbc2541a454bb6698be9f19c.tw.png) IoT 裝置會向電位器發送一個電信號,電壓例如 5 伏特(5V)。當調整電位器時,它會改變另一端輸出的電壓。假設您有一個標有 0 到 [11](https://wikipedia.org/wiki/Up_to_eleven) 的電位器,例如放大器上的音量旋鈕。當電位器處於完全關閉位置(0)時,輸出為 0V(0 伏特)。當它處於完全開啟位置(11)時,輸出為 5V(5 伏特)。 > 🎓 這是一個簡化的說明,您可以在 [維基百科的電位器頁面](https://wikipedia.org/wiki/Potentiometer) 上了解更多關於電位器和可變電阻的知識。 感測器輸出的電壓會被 IoT 裝置讀取,裝置可以根據該電壓做出反應。根據感測器的不同,這個電壓可以是任意值,也可以映射到標準單位。例如,基於 [熱敏電阻](https://wikipedia.org/wiki/Thermistor) 的類比溫度感測器會根據溫度改變其電阻。輸出電壓可以通過程式碼中的計算轉換為開氏溫度,並相應地轉換為 °C 或 °F。 ✅ 您認為如果感測器返回的電壓高於發送的電壓(例如來自外部電源)會發生什麼?⛔️ 請勿嘗試測試。 #### 類比到數位轉換 IoT 裝置是數位化的——它們無法處理類比值,只能處理 0 和 1。這意味著類比感測器的值需要在處理之前轉換為數位信號。許多 IoT 裝置具有類比到數位轉換器(ADCs),用於將類比輸入轉換為其值的數位表示。感測器也可以通過連接板與 ADC 一起工作。例如,在使用 Raspberry Pi 的 Seeed Grove 生態系統中,類比感測器連接到 Pi 上的特定端口,這些端口位於連接到 Pi 的 GPIO 引腳的 '帽子' 上,該帽子具有 ADC,可以將電壓轉換為數位信號,然後通過 Pi 的 GPIO 引腳發送。 假設您有一個類比光感測器連接到使用 3.3V 的 IoT 裝置,並返回 1V 的值。這個 1V 在數位世界中沒有意義,因此需要進行轉換。電壓將根據裝置和感測器的比例轉換為類比值。例如,Seeed Grove 光感測器輸出值範圍為 0 到 1,023。對於這個在 3.3V 下運行的感測器,1V 的輸出將是一個值 300。IoT 裝置無法處理 300 作為類比值,因此該值將被轉換為 `0000000100101100`,即 Grove '帽子' 的 300 的二進制表示。然後由 IoT 裝置處理。 ✅ 如果您不懂二進制,請做一些研究,了解數字如何用 0 和 1 表示。[BBC Bitesize 的二進制入門課程](https://www.bbc.co.uk/bitesize/guides/zwsbwmn/revision/1) 是一個很好的起點。 從程式設計的角度來看,這些通常由感測器附帶的庫處理,因此您不需要自己擔心這些轉換。對於 Grove 光感測器,您可以使用 Python 庫並調用 `light` 屬性,或者使用 Arduino 庫並調用 `analogRead` 來獲得值 300。 ### 數位感測器 數位感測器與類比感測器一樣,通過電壓變化感知周圍的世界。不同之處在於它們輸出數位信號,或者僅測量兩種狀態,或者使用內建的 ADC。數位感測器越來越普遍,以避免需要在連接板或 IoT 裝置上使用 ADC。 最簡單的數位感測器是按鈕或開關。這是一個只有兩種狀態的感測器,開或關。 ![一個按鈕接收 5 伏特。未按下時返回 0 伏特,按下時返回 5 伏特](../../../../../translated_images/button.eadb560b77ac45e56f523d9d8876e40444f63b419e33eb820082d461fa79490b.tw.png) IoT 裝置上的引腳(例如 GPIO 引腳)可以直接測量此信號作為 0 或 1。如果發送的電壓與返回的電壓相同,讀取的值為 1,否則讀取的值為 0。無需轉換信號,它只能是 1 或 0。 > 💁 電壓永遠不會完全精確,尤其是感測器中的元件會有一些電阻,因此通常會有容差。例如,Raspberry Pi 的 GPIO 引腳工作在 3.3V,並將返回信號高於 1.8V 讀取為 1,低於 1.8V 讀取為 0。 * 3.3V 進入按鈕。按鈕未按下,因此輸出 0V,值為 0 * 3.3V 進入按鈕。按鈕按下,因此輸出 3.3V,值為 1 更高級的數位感測器會讀取類比值,然後使用內建的 ADC 將其轉換為數位信號。例如,數位溫度感測器仍然會像類比感測器一樣使用熱電偶,並且仍然會測量由熱電偶在當前溫度下的電阻變化引起的電壓變化。它不會返回類比值,而是依賴於裝置或連接板進行轉換,而是由感測器內建的 ADC 進行轉換,並以一系列 0 和 1 的形式將其發送到 IoT 裝置。這些 0 和 1 的發送方式與按鈕的數位信號相同,其中 1 表示全電壓,0 表示 0V。 ![一個數位溫度感測器將類比讀數轉換為二進制數據,其中 0 表示 0 伏特,1 表示 5 伏特,然後將其發送到 IoT 裝置](../../../../../translated_images/temperature-as-digital.85004491b977bae1129707df107c0b19fe6fc6374210e9027e04acb34a640c78.tw.png) 發送數位數據使感測器能夠變得更加複雜,並發送更詳細的數據,甚至是加密數據以用於安全感測器。一個例子是相機。這是一個感測器,捕捉圖像並以包含該圖像的數位數據形式發送,通常以壓縮格式(如 JPEG)發送到 IoT 裝置。它甚至可以通過捕捉圖像並逐幀發送完整圖像或壓縮視頻流來進行視頻串流。 ## 什麼是致動器? 致動器與感測器相反——它們將來自 IoT 裝置的電信號轉換為與物理世界的交互,例如發光、發聲或驅動馬達。 一些常見的致動器包括: * LED - 打開時發光 * 喇叭 - 根據發送的信號發聲,從基本的蜂鳴器到可以播放音樂的音響喇叭 * 步進馬達 - 將信號轉換為一定量的旋轉,例如旋轉旋鈕 90° * 繼電器 - 這些是可以通過電信號打開或關閉的開關。它們允許 IoT 裝置的小電壓打開更大的電壓。 * 屏幕 - 這些是更複雜的致動器,能夠在多段顯示器上顯示信息。屏幕的種類從簡單的 LED 顯示器到高解析度視頻顯示器。 ✅ 做些研究。您的手機有哪些致動器? ## 使用致動器 按照以下相關指南,將致動器添加到您的 IoT 裝置,並由感測器控制,構建一個 IoT 夜燈。它將從光感測器收集光線強度,並使用 LED 作為致動器,在檢測到光線強度過低時發光。 ![任務的流程圖,顯示光線強度的讀取和檢查,以及 LED 的控制](../../../../../translated_images/assignment-1-flow.7552a51acb1a5ec858dca6e855cdbb44206434006df8ba3799a25afcdab1665d.tw.png) * [Arduino - Wio Terminal](wio-terminal-actuator.md) * [單板電腦 - Raspberry Pi](pi-actuator.md) * [單板電腦 - 虛擬裝置](virtual-device-actuator.md) ## 致動器類型 與感測器類似,致動器分為類比和數位兩種。 ### 類比致動器 類比致動器接收類比信號並將其轉換為某種交互,交互根據提供的電壓而改變。 一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了燈的亮度。 ![在低電壓下光線變暗,在高電壓下變亮](../../../../../translated_images/dimmable-light.9ceffeb195dec1a849da718b2d71b32c35171ff7dfea9c07bbf82646a67acf6b.tw.png) 就像感測器一樣,實際的物聯網設備使用的是數位信號,而不是類比信號。這意味著,為了傳送類比信號,物聯網設備需要一個數位轉類比轉換器(DAC),這個轉換器可以直接內建在物聯網設備中,也可以在連接板上。它會將物聯網設備的0和1轉換為致動器可以使用的類比電壓。 ✅ 如果物聯網設備傳送的電壓高於致動器能承受的範圍,會發生什麼事? ⛔️ 請勿嘗試測試。 #### 脈衝寬度調變 另一種將物聯網設備的數位信號轉換為類比信號的方法是脈衝寬度調變(PWM)。這種方法涉及傳送大量短暫的數位脈衝,這些脈衝的效果就像是類比信號。 例如,你可以使用PWM來控制馬達的速度。 假設你正在用5V電源控制一個馬達。你向馬達傳送一個短脈衝,將電壓切換到高電平(5V)持續0.02秒。在這段時間內,馬達可以旋轉1/10圈,或36°。然後信號暫停0.02秒,傳送低電平信號(0V)。每次開啟和關閉的循環持續0.04秒,然後重複。 ![以150 RPM進行脈衝寬度調變的馬達旋轉](../../../../../translated_images/pwm-motor-150rpm.83347ac04ca38482bd120939b133803963c9c15ca9d8d484712a4bd92820f6a4.tw.png) 這意味著在一秒內,你有25個持續0.02秒的5V脈衝來驅動馬達,每個脈衝之後是0.02秒的0V暫停,馬達不旋轉。每個脈衝使馬達旋轉1/10圈,這意味著馬達每秒完成2.5圈。你使用數位信號使馬達以每秒2.5圈或每分鐘150轉([每分鐘轉速](https://wikipedia.org/wiki/Revolutions_per_minute),一種非標準的旋轉速度測量單位)旋轉。 ```output 25 pulses per second x 0.1 rotations per pulse = 2.5 rotations per second 2.5 rotations per second x 60 seconds in a minute = 150rpm ``` > 🎓 當PWM信號開啟一半時間,關閉一半時間時,稱為[50%占空比](https://wikipedia.org/wiki/Duty_cycle)。占空比是信號處於開啟狀態的時間與關閉狀態時間的百分比。 ![以75 RPM進行脈衝寬度調變的馬達旋轉](../../../../../translated_images/pwm-motor-75rpm.a5e4c939934b6e14fd9e98e4f2c9539d723da2b18f490eae0948dd044d18ff7e.tw.png) 你可以通過改變脈衝的大小來改變馬達的速度。例如,對於同一個馬達,你可以保持相同的循環時間0.04秒,將開啟脈衝減半為0.01秒,關閉脈衝增加到0.03秒。每秒的脈衝數量(25)保持不變,但每個開啟脈衝的長度減半。半長度的脈衝只會使馬達旋轉1/20圈,而每秒25個脈衝將完成1.25圈或75 RPM。通過改變數位信號的脈衝速度,你將類比馬達的速度減半。 ```output 25 pulses per second x 0.05 rotations per pulse = 1.25 rotations per second 1.25 rotations per second x 60 seconds in a minute = 75rpm ``` ✅ 你會如何保持馬達旋轉的平穩性,特別是在低速時?你會使用少量長脈衝和長暫停,還是大量非常短的脈衝和非常短的暫停? > 💁 一些感測器也使用PWM將類比信號轉換為數位信號。 > 🎓 你可以在[Wikipedia的脈衝寬度調變頁面](https://wikipedia.org/wiki/Pulse-width_modulation)上閱讀更多關於脈衝寬度調變的內容。 ### 數位致動器 數位致動器與數位感測器類似,要麼有兩種狀態,由高電壓或低電壓控制,要麼內建DAC,可以將數位信號轉換為類比信號。 一個簡單的數位致動器是LED。當設備傳送數位信號1時,會傳送高電壓點亮LED。當傳送數位信號0時,電壓降至0V,LED熄滅。 ![LED在0伏時熄滅,在5伏時點亮](../../../../../translated_images/led.ec6d94f66676a174ad06d9fa9ea49c2ee89beb18b312d5c6476467c66375b07f.tw.png) ✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門閂以鎖定/解鎖門的操作。 更高級的數位致動器,例如螢幕,需要以特定格式傳送數位數據。它們通常附帶庫,這些庫使得傳送正確的數據來控制它們變得更容易。 --- ## 🚀 挑戰 在前兩課的挑戰中,列出你家中、學校或工作場所中的所有物聯網設備,並判斷它們是基於微控制器還是單板電腦,或者是兩者的混合。 對於你列出的每個設備,它們連接了哪些感測器和致動器?這些設備連接的每個感測器和致動器的用途是什麼? ## 課後測驗 [課後測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/6) ## 複習與自學 * 在 [ThingLearn](http://thinglearn.jenlooper.com/curriculum/) 上閱讀有關電力和電路的內容。 * 在 [Seeed Studios 溫度感測器指南](https://www.seeedstudio.com/blog/2019/10/14/temperature-sensors-for-arduino-projects/) 上閱讀不同類型的溫度感測器。 * 在 [Wikipedia LED 頁面](https://wikipedia.org/wiki/Light-emitting_diode) 上閱讀有關LED的內容。 ## 作業 [研究感測器和致動器](assignment.md) **免責聲明**: 本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。應以原文文件作為權威來源。對於關鍵資訊,建議尋求專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或誤讀概不負責。