跳至主要内容

使用感測器和致動器與物理世界互動

本課程的手繪筆記概述

手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。

本課程是 Hello IoT 系列 的一部分,由 Microsoft Reactor 教授。課程分為兩個視頻 - 一個小時的課程和一個小時的辦公時間,深入探討課程的部分內容並回答問題。

課程 3:使用感測器和致動器與物理世界互動

課程 3:使用感測器和致動器與物理世界互動 - 辦公時間

🎥 點擊上方圖片觀看視頻

課前測驗

課前測驗

介紹

本課程介紹了物聯網設備的兩個重要概念 - 感測器和致動器。你還將親自操作它們,將光感測器添加到你的物聯網項目中,然後添加一個由光線水平控制的 LED,有效地構建一個夜燈。

在本課程中,我們將涵蓋:

什麼是感測器?

感測器是感知物理世界的硬體設備 - 它們測量周圍的一個或多個屬性,並將信息傳送到物聯網設備。感測器涵蓋了大量設備,因為有很多東西可以測量,從自然屬性如空氣溫度到物理交互如運動。

一些常見的感測器包括:

  • 溫度感測器 - 這些感測器感知空氣溫度或它們所浸入的物體的溫度。對於愛好者和開發者來說,這些感測器通常與氣壓和濕度感測器結合在一起。
  • 按鈕 - 這些感測器感知它們何時被按下。
  • 光感測器 - 這些感測器檢測光線水平,可以是特定顏色、紫外線、紅外線或一般可見光。
  • 攝像頭 - 這些感測器通過拍攝照片或流式視頻來感知世界的視覺表示。
  • 加速度計 - 這些感測器感知多個方向的運動。
  • 麥克風 - 這些感測器感知聲音,可以是一般的聲音水平或定向聲音。

✅ 做一些研究。你的手機有哪些感測器?

所有感測器都有一個共同點 - 它們將所感知的東西轉換為物聯網設備可以解釋的電信號。如何解釋這個電信號取決於感測器以及用於與物聯網設備通信的通信協議。

使用感測器

按照下面的相關指南將感測器添加到你的物聯網設備中:

感測器類型

感測器可以是模擬的或數字的。

模擬感測器

一些最基本的感測器是模擬感測器。這些感測器從物聯網設備接收電壓,感測器組件調整這個電壓,並測量從感測器返回的電壓以獲得感測器值。

🎓 電壓是衡量電力從一個地方移動到另一個地方的推動力的度量,例如從電池的正極到負極。例如,一個標準的 AA 電池是 1.5V(V 是伏特的符號),可以以 1.5V 的推動力從正極推動電力到負極。不同的電氣硬體需要不同的電壓才能工作,例如,LED 可以在 2-3V 之間點亮,但 100W 的燈絲燈泡需要 240V。你可以在 維基百科的電壓頁面 上閱讀更多關於電壓的內容。

一個例子是電位計。這是一個可以在兩個位置之間旋轉的旋鈕,感測器測量旋轉。

一個設置在中點的電位計,接收 5 伏特,返回 3.8 伏特

物聯網設備將以某個電壓(例如 5 伏特)向電位計發送電信號。隨著電位計的調整,它改變了從另一側輸出的電壓。想像一下你有一個標有 0 到 11 的電位計,例如放大器上的音量旋鈕。當電位計處於完全關閉位置(0)時,輸出為 0V(0 伏特)。當它處於完全開啟位置(11)時,輸出為 5V(5 伏特)。

🎓 這是一個過度簡化的說法,你可以在 維基百科的電位計頁面 上閱讀更多關於電位計和可變電阻器的內容。

從感測器輸出的電壓由物聯網設備讀取,設備可以對其做出反應。根據感測器的不同,這個電壓可以是任意值,也可以映射到標準單位。例如,基於 熱敏電阻 的模擬溫度感測器根據溫度改變其電阻。輸出電壓可以通過代碼中的計算轉換為開爾文溫度,並相應地轉換為 °C 或 °F。

✅ 你認為如果感測器返回的電壓高於發送的電壓會發生什麼(例如來自外部電源)?⛔️ 不要測試這個。

模擬到數字轉換

物聯網設備是數字的 - 它們不能處理模擬值,只能處理 0 和 1。這意味著模擬感測器值需要在處理之前轉換為數字信號。許多物聯網設備都有模擬到數字轉換器(ADC),將模擬輸入轉換為其值的數字表示。感測器也可以通過連接板與 ADC 一起工作。例如,在 Seeed Grove 生態系統中,使用樹莓派,模擬感測器連接到樹莓派上的特定端口,這些端口連接到樹莓派的 GPIO 引腳,這個連接板上有一個 ADC,將電壓轉換為可以從樹莓派的 GPIO 引腳發送的數字信號。

想像一下你有一個連接到物聯網設備的模擬光感測器,該設備使用 3.3V 並返回 1V。這個 1V 在數字世界中沒有意義,因此需要轉換。電壓將根據設備和感測器使用的比例轉換為模擬值。一個例子是 Seeed Grove 光感測器,它輸出 0 到 1,023 的值。對於這個在 3.3V 下運行的感測器,1V 輸出將是一個值 300。物聯網設備不能處理 300 作為模擬值,因此這個值將由 Grove 連接板轉換為 0000000100101100,即 300 的二進制表示。然後這將由物聯網設備處理。

✅ 如果你不知道二進制,請做一些小研究,了解數字如何由 0 和 1 表示。BBC Bitesize 的二進制入門課程 是一個很好的起點。

從編碼的角度來看,所有這些通常由隨感測器附帶的庫處理,因此你不需要自己擔心這個轉換。對於 Grove 光感測器,你可以使用 Python 庫並調用 light 屬性,或者使用 Arduino 庫並調用 analogRead 來獲取 300 的值。

數字感測器

數字感測器,像模擬感測器一樣,使用電壓變化來檢測周圍的世界。不同之處在於它們輸出數字信號,通過僅測量兩個狀態或使用內置的 ADC。數字感測器越來越普遍,以避免需要在連接板或物聯網設備本身上使用 ADC。

最簡單的數字感測器是一個按鈕或開關。這是一個有兩個狀態的感測器,開或關。

一個按鈕接收 5 ��伏特。當未按下時返回 0 伏特,按下時返回 5 伏特

物聯網設備上的引腳,如 GPIO 引腳,可以直接測量這個信號為 0 或 1。如果發送的電壓與返回的電壓相同,讀取的值為 1,否則讀取的值為 0。無需轉換信號,它只能是 1 或 0。

💁 電壓從來不是精確的,特別是感測器中的組件會有一些電阻,因此通常有一個容差。例如,樹莓派上的 GPIO 引腳工作在 3.3V,並將返回信號高於 1.8V 讀取為 1,低於 1.8V 讀取為 0。

  • 3.3V 進入按鈕。按鈕關閉,因此輸出 0V,值為 0
  • 3.3V 進入按鈕。按鈕開啟,因此輸出 3.3V,值為 1

更先進的數字感測器讀取模擬值,然後使用內置的 ADC 將其轉換為數字信號。例如,數字溫度感測器仍然使用熱電偶,與模擬感測器相同,並且仍然測量由當前溫度下熱電偶的電阻引起的電壓變化。它不會返回模擬值,而是依賴於設備或連接板將其轉換為數字信號,內置的 ADC 將轉換值並以 0 和 1 的形式發送到物聯網設備。這些 0 和 1 以與按鈕的數字信號相同的方式發送,1 為全電壓,0 為 0V。

一個數字溫度感測器將模擬讀數轉換為二進制數據,0 為 0 伏特,1 為 5 伏特,然後發送到物聯網設備

發送數字數據允許感測器變得更加複雜,並發送更詳細的數據,甚至是加密數據以用於安全感測器。一個例子是攝像頭。這是一個捕捉圖像並將其作為包含該圖像的數字數據發送的感測器,通常以 JPEG 等壓縮格式發送到物聯網設備。它甚至可以通過捕捉圖像並逐幀發送完整圖像或壓縮視頻流來流式傳輸視頻。

什麼是致動器?

致動器與感測器相反 - 它們將物聯網設備的電信號轉換為與物理世界的交互,例如發光或發聲,或移動馬達。

一些常見的致動器包括:

  • LED - 這些致動器在打開時發光
  • 揚聲器 - 這些致動器根據發送給它們的信號發出聲音,從基本的蜂鳴器到可以播放音樂的音頻揚聲器
  • 步進馬達 - 這些致動器將信號轉換為一定量的旋轉,例如旋轉旋鈕 90°
  • 繼電器 - 這些致動器是可以通過電信號打開或關閉的開關。它們允許物聯網設備的小電壓打開更大的電壓。
  • 屏幕 - 這些是更複雜的致動器,顯示多段顯示器上的信息。屏幕從簡單的 LED 顯示器到高分辨率視頻顯示器不等。

✅ 做一些研究。你的手機有哪些致動器?

使用致動器

按照下面的相關指南將致動器添加到你的物聯網設備中,由感測器控制,構建一個物聯網夜燈。它將從光感測器收集光線水平,並使用 LED 形式的致動器在檢測到的光線水平過低時發光。

作業流程圖,顯示讀取和檢查光線水平,並控制 LED

致動器類型

像感測器一樣,致動器可以是模擬的或數字的。

模擬致動器

模擬致動器接收模擬信號並將其轉換為某種交互,交互根據提供的電壓變化。

一個例子是可調光燈,例如你家中的燈。提供給燈的電壓量決定了它的亮度。

低電壓下的調光燈和高電壓下的更亮燈

像感測器一樣,實際的物聯網設備處理的是數字信號,而不是模擬信號。這意味著要發送模擬信號,物聯網設備需要一個數字到模擬轉換器(DAC),無論是在物聯網設備上直接,還是在連接板上。這將把物聯網設備的 0 和 1 轉換為致動器可以使用的模擬電壓。

✅ 你認為如果物聯網設備發送的電壓高於致動器可以處理的電壓會發生什麼? ⛔️ 不要測試這個。

脈衝寬度調製

另一個將物聯網設備的數字信號轉換為模擬信號的選項是脈衝寬度調製(PWM)。這涉及發送大量短數字脈衝,這些脈衝就像模擬信號一樣。

例如,你可以使用 PWM 控制馬達的速度。

想像一下你正在控制一個 5V 電源的馬達。你向馬達發送一個短脈衝,將電壓切換到高(5V)兩百分之一秒(0.02s)。在這段時間內,你的馬達可以旋轉十分之一圈,或 36°。然後信號暫停兩百分之一秒(0.02s),發送低信號(0V)。每個開關的週期持續 0.04s。然後週期重複。

以 150 RPM 旋轉馬達的脈衝寬度調製

這意味著在一秒鐘內,你有 25 個 0.02 秒的 5V 脈衝來旋轉馬達,每個脈衝之後是 0.02 秒的 0V 暫停,不旋轉馬達。每個脈衝使馬達旋轉十分之一圈,這意味著馬達每秒完成 2.5 圈旋轉。你已經使用數字信號以每秒 2.5 圈的速度旋轉馬達,或每分鐘 150 (一種非標準的旋轉速度測量單位)。

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% 占空比。占空比是指信號處於開啟狀態與關閉狀態的時間百分比。

以 75 RPM 旋轉馬達的脈衝寬度調製

你可以通過改變脈衝的大小來改變馬達的速度。例如,對於相同的馬達,你可以保持相同的週期時間 0.04 秒,將開啟脈衝減半至 0.01 秒,並將關閉脈衝增加到 0.03 秒。你每秒有相同數量的脈衝(25),但每個開啟脈衝的長度減半。半長度的脈衝只會使馬達轉動二十分之一圈,每秒 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 將模擬信號轉換為數字信號。

🎓 你可以在維基百科的脈衝寬度調製頁面上閱讀更多關於脈衝寬度調製的內容。

數字致動器

像數字感測器一樣,數字致動器要麼有兩個由高或低電壓控制的狀態,要麼內置了 DAC,因此可以將數字信號轉換為模擬信號。

一個簡單的數字致動器是 LED。當設備發送數字信號 1 時,會發送高電壓以點亮 LED。當發送數字信號 0 時,電壓降至 0V,LED 熄滅。

LED 在 0 伏特時熄滅,在 5V 時點亮

✅ 你能想到其他簡單的兩態致動器嗎?一個例子是電磁閥,它是一個可以激活的電磁鐵,用於執行諸如移動門閂以鎖定/解鎖門之類的操作。

更高級的數字致動器,如屏幕,需要以特定格式發送數字數據。它們通常附帶庫,使得發送正確的數據來控制它們變得更容易。


🚀 挑戰

前兩課的挑戰是列出你家中、學校或工作場所中盡可能多的物聯網設備,並決定它們是基於微控制器還是單板計算機,甚至是兩者的混合。

對於你列出的每個設備,它們連接了哪些感測器和致動器?這些設備連接的每個感測器和致動器的用途是什麼?

課後測驗

課後測驗

複習與自學

作業

研究感測器和致動器