使用感測器和致動器與物理世界互動
手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。
本課程是 Hello IoT 系列 的一部分,由 Microsoft Reactor 教授。課程分為兩個視頻 - 一個小時的課程和一個小時的辦公時間,深入探討課程的部分內容並回答問題。
🎥 點擊上方圖片觀看視頻
課前測驗
介紹
本課程介紹了物聯網設備的兩個重要概念 - 感測器和致動器。你還將親自操作它們,將光感測器添加到你的物聯網項目中,然後添加一個由光線水平控制的 LED,有效地構建一個夜燈。
在本課程中,我們將涵蓋:
什麼是感測器?
感測器是感知物理世界的硬體設備 - 它們測量周圍的一個或多個屬性,並將信息傳送到物聯網設備。感測器涵蓋了大量設備,因為有很多東西可以測量,從自然屬性如空氣溫度到物理交互如運動。
一些常見的感測器包括:
- 溫度感測器 - 這些感測器感知空氣溫度或它們所浸入的物體的溫度。對於愛好者和開發者來說,這些感測器通常與氣壓和濕度感測器結合在一起。
- 按鈕 - 這些感測器感知它們何時被按下。
- 光感測器 - 這些感測器檢測光線水平,可以是特定顏色、紫外線、紅外線或一般可見光。
- 攝像頭 - 這些感測器通過拍攝照片或流式視頻來感知世界的視覺表示。
- 加速度計 - 這些感測器感知多個方向的運動。
- 麥克風 - 這些感測器感知聲音,可以是一般的聲音水平或定向聲音。
✅ 做一些研究。你的手機有哪些感測器?
所有感測器都有一個共同點 - 它們將所感知的東西轉換為物聯網設備可以解釋的電信號。如何解釋這個電信號取決於感測器以及用於與物聯網設備通信的通信協議。
使用感測器
按照下面的相關指南將感測器添加到你的物聯網設備中:
感測器類型
感測器可以是模擬的或數字的。
模擬感測器
一些最基本的感測器是模擬感測器。這些感測器從物聯網設備接收電壓,感測器組件調整這個電壓,並測量從感測器返回的電壓以獲得感測器值。
🎓 電壓是衡量電力從一個地方移動到另一個地方的推動力的度量,例如從電池的正極到負極。例如,一個標準的 AA 電池是 1.5V(V 是伏特的符號),可以以 1.5V 的推動力從正極推動電力到負極。不同的電氣硬體需要不同的電壓才能工作,例如,LED 可以在 2-3V 之間點亮,但 100W 的燈絲燈泡需要 240V。你可以在 維基百科的電壓頁面 上閱讀更多關於電壓的內容。
一個例子是電位計。這是一個可以在兩個位置之間旋轉的旋鈕,感測器測量旋轉。
物聯網設備將以某個電壓(例如 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。
最簡單的數字感測器是一個按鈕或開關。這是一個有兩個狀態的感測器,開或關。