17 KiB
使用感應器和致動器與物理世界互動
手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看更大版本。
本課程是 Microsoft Reactor 的 Hello IoT 系列 的一部分。課程分為兩段影片進行教學——一段 1 小時的課程,以及一段 1 小時的辦公時間,深入探討課程內容並回答問題。
🎥 點擊上方圖片觀看影片
課前測驗
簡介
本課程介紹了 IoT 設備的兩個重要概念——感應器和致動器。您將親自操作這些設備,為您的 IoT 項目添加一個光感應器,然後添加一個由光線強度控制的 LED,實際上構建了一個夜燈。
在本課程中,我們將涵蓋:
什麼是感應器?
感應器是感知物理世界的硬件設備——它們測量周圍的一個或多個屬性,並將信息傳送到 IoT 設備。感應器涵蓋了大量設備,因為可以測量的事物非常多,從自然屬性(如空氣溫度)到物理交互(如運動)。
一些常見的感應器包括:
- 溫度感應器——這些感應器感知空氣溫度或它們所浸入物體的溫度。對於愛好者和開發者來說,這些感應器通常與氣壓和濕度結合在一個單一的感應器中。
- 按鈕——這些感應器感知何時被按下。
- 光感應器——這些感應器檢測光線強度,可以針對特定顏色、紫外線、紅外線或一般可見光。
- 相機——這些感應器通過拍攝照片或流式視頻感知世界的視覺表示。
- 加速度計——這些感應器感知多方向的運動。
- 麥克風——這些感應器感知聲音,可以是一般的聲音強度或方向性聲音。
✅ 做一些研究。您的手機有哪些感應器?
所有感應器都有一個共同點——它們將感知到的事物轉換為 IoT 設備可以解讀的電信號。如何解讀這些電信號取決於感應器以及用於與 IoT 設備通信的通信協議。
使用感應器
按照以下相關指南,為您的 IoT 設備添加感應器:
感應器類型
感應器分為模擬感應器和數字感應器。
模擬感應器
一些最基本的感應器是模擬感應器。這些感應器接收來自 IoT 設備的電壓,感應器元件調整該電壓,然後測量從感應器返回的電壓以獲得感應器值。
🎓 電壓是衡量電流從一個地方移動到另一個地方的推動力,例如從電池的正極到負極。例如,一個標準的 AA 電池是 1.5V(V 是伏特的符號),可以以 1.5V 的推動力從正極推動電流到負極。不同的電子硬件需要不同的電壓才能工作,例如,LED 可以在 2-3V 之間發光,但 100W 的燈絲燈泡需要 240V。您可以在 維基百科的電壓頁面 上了解更多關於電壓的知識。
一個例子是電位器。這是一個可以在兩個位置之間旋轉的旋鈕,感應器測量旋轉角度。
IoT 設備會向電位器發送一個電信號,電壓例如 5 伏特(5V)。當電位器被調整時,它會改變從另一端輸出的電壓。想像一下,您有一個標記為 0 到 11 的電位器,例如放大器上的音量旋鈕。當電位器處於完全關閉位置(0)時,輸出為 0V(0 伏特)。當它處於完全開啟位置(11)時,輸出為 5V(5 伏特)。
🎓 這是一個過度簡化的描述,您可以在 維基百科的電位器頁面 上了解更多關於電位器和可變電阻的知識。
感應器輸出的電壓隨後由 IoT 設備讀取,設備可以對其作出響應。根據感應器的不同,這個電壓可以是任意值,也可以映射到標準單位。例如,基於 熱敏電阻 的模擬溫度感應器會根據溫度改變其電阻。輸出電壓可以通過代碼中的計算轉換為開爾文溫度,並相應地轉換為 °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 的二進制入門課程 是一個很好的起點。
從編程的角度來看,所有這些通常由感應器附帶的庫處理,因此您不需要自己擔心這些轉換。對於 Grove 光感應器,您可以使用 Python 庫並調用 light
屬性,或者使用 Arduino 庫並調用 analogRead
來獲得 300 的值。
數字感應器
數字感應器與模擬感應器一樣,使用電壓變化來檢測周圍的世界。不同之處在於它們輸出數字信號,通過僅測量兩種狀態或使用內置 ADC 來完成。數字感應器越來越普遍,以避免需要在連接板或 IoT 設備本身使用 ADC。
最簡單的數字感應器是一個按鈕或開關。這是一個只有兩種狀態的感應器,開或關。
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。
發送數字數據使感應器變得更加複雜,可以發送更詳細的數據,甚至是加密數據以用於安全感應器。一個例子是相機。這是一個捕捉圖像並以包含該圖像的數字數據形式發送的感應器,通常以壓縮格式(如 JPEG)發送到 IoT 設備。它甚至可以通過捕捉圖像並逐幀發送完整圖像或壓縮視頻流來進行視頻流式傳輸。
什麼是致動器?
致動器與感應器相反——它們將來自 IoT 設備的電信號轉換為與物理世界的交互,例如發光、發聲或驅動馬達。
一些常見的致動器包括:
- LED——當打開時發出光
- 揚聲器——根據發送的信號發出聲音,從基本的蜂鳴器到可以播放音樂的音頻揚聲器
- 步進馬達——將信號轉換為一定量的旋轉,例如旋轉旋鈕 90°
- 繼電器——這些是可以通過電信號打開或關閉的開關。它們允許 IoT 設備的小電壓打開更大的電壓。
- 屏幕——這些是更複雜的致動器,顯示多段顯示器上的信息。屏幕從簡單的 LED 顯示器到高分辨率視頻顯示器不等。
✅ 做一些研究。您的手機有哪些致動器?
使用致動器
按照以下相關指南,為您的 IoT 設備添加致動器,並由感應器控制,以構建 IoT 夜燈。它將從光感應器收集光線強度,並使用 LED 作為致動器,在檢測到的光線強度過低時發出光。
致動器類型
像感應器一樣,致動器分為模擬致動器和數字致動器。
模擬致動器
模擬致動器接收模擬信號並將其轉換為某種交互,交互根據提供的電壓而改變。
一個例子是可調光燈,例如您家中的燈。提供給燈的電壓量決定了它的亮度。
就像感應器一樣,實際的物聯網裝置是基於數碼信號運作的,而不是模擬信號。這意味著,若要傳送模擬信號,物聯網裝置需要一個數碼轉模擬轉換器(DAC),這個轉換器可以直接內建於物聯網裝置中,或者安裝在連接板上。這樣可以將物聯網裝置的0和1轉換成致動器可以使用的模擬電壓。
✅ 如果物聯網裝置傳送的電壓高於致動器能承受的範圍,你認為會發生什麼事? ⛔️ 請勿嘗試測試這種情況。
脈衝寬度調變
另一種將物聯網裝置的數碼信號轉換為模擬信號的方法是脈衝寬度調變(PWM)。這種方法涉及傳送大量短暫的數碼脈衝,模擬出類似模擬信號的效果。
例如,你可以使用PWM來控制馬達的速度。
假設你正在使用5V電源控制一個馬達。你向馬達傳送一個短脈衝,將電壓切換到高電平(5V)持續0.02秒。在這段時間內,馬達可以旋轉1/10圈,或36°。然後信號暫停0.02秒,傳送低電平信號(0V)。每個開啟和關閉的循環持續0.04秒,然後重複。
這意味著在一秒內,你有25個持續0.02秒的5V脈衝,每個脈衝之後是0.02秒的0V暫停。每個脈衝使馬達旋轉1/10圈,這意味著馬達每秒完成2.5圈旋轉。你使用數碼信號使馬達以每秒2.5圈或每分鐘150轉(RPM)的速度旋轉(RPM是一種非標準的旋轉速度測量單位)。
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%占空比。占空比是信號處於開啟狀態的時間百分比與關閉狀態的時間百分比的比較。
你可以通過改變脈衝的大小來調整馬達的速度。例如,對於同一個馬達,你可以保持循環時間為0.04秒,但將開啟脈衝縮短一半至0.01秒,關閉脈衝延長至0.03秒。每秒的脈衝數量(25個)保持不變,但每個開啟脈衝的長度減半。一個減半的脈衝只會使馬達旋轉1/20圈,而每秒25個脈衝將完成1.25圈旋轉,即75 RPM。通過改變數碼信號的脈衝速度,你將模擬馬達的速度減半。
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的脈衝寬度調變頁面上閱讀更多關於脈衝寬度調變的內容。
數碼致動器
數碼致動器與數碼感應器類似,要麼只有兩種狀態(由高電壓或低電壓控制),要麼內建DAC,可以將數碼信號轉換為模擬信號。
一個簡單的數碼致動器是LED。當裝置傳送數碼信號1時,會傳送高電壓以點亮LED。當傳送數碼信號0時,電壓降至0V,LED熄滅。
✅ 你能想到其他簡單的兩狀態致動器嗎?一個例子是電磁閥,它是一種電磁鐵,可以被激活來執行例如移動門閂以鎖定/解鎖門的操作。
更高級的數碼致動器,例如屏幕,需要以特定格式傳送數碼數據。這些致動器通常附帶庫文件,使得傳送正確的數據來控制它們變得更容易。
🚀 挑戰
上一課的挑戰是列出你家中、學校或工作場所中的所有物聯網裝置,並判斷它們是基於微控制器還是單板電腦,或者是兩者的混合。
對於你列出的每個裝置,它們連接了哪些感應器和致動器?這些裝置連接的每個感應器和致動器的用途是什麼?
課後測驗
回顧與自學
- 在ThingLearn上閱讀有關電力和電路的內容。
- 在Seeed Studios溫度感應器指南上閱讀有關不同類型溫度感應器的內容。
- 在Wikipedia的LED頁面上閱讀有關LED的內容。
作業
免責聲明:
本文件已使用人工智能翻譯服務 Co-op Translator 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為具權威性的來源。對於重要信息,建議使用專業人工翻譯。我們對因使用此翻譯而引起的任何誤解或錯誤解釋概不負責。