mBlock & Arduino(14)使用人體動作感應器

小小云提示:教程作者caterpillar是來自臺灣的programmer(kinda),所以在一些專有名詞的使用上會和我們這邊使用的不太一樣啦,不過作者也有標注出英文名稱,大家自行轉換喲(?????????)

被動式紅外線感應器(Passive Infrared Sensor, PIR)也經常被稱為 PIR 動作感應器(PIR Motion Sensor),是一種可偵測紅外線的感測器,生活中許多物品都會發出紅外線,而 PIR 主要是偵測人體發出的紅外線變化,來判斷是否有人體移動發生。

相對于被動式紅外線感應器的是主動式紅外線感應器,像是洗手臺的感應式水龍頭,就裝有主動式紅外線感應器,感應器會主動發射紅外線,如果有物體接近遮擋,紅外線會反射,依此判斷是否要供水。

認識 PIR 模組

PIR 模組外觀上可以看到一個白色半球體透鏡,你可以打開它,里頭可看到 PIR 主要用來感測微量訊號的熱電感應器(Pyroelectricity Sensor):

上圖中,你可以看到熱電感應器下方有兩個可焊接的腳位(在 VCC 腳位上方),兩個腳位間的電阻值必須夠大,PIR 才會作動,你可以接上光敏電阻,當光線越暗,光敏電阻的電阻值就會越大,因此可讓 PIR 在黑暗的環境中才作動。

在 PIR 的底部,可以看到 VCC、OUT 與 GND 三個腳位:

我手邊的這個 PIR 模組為 DSN-FIR800,感測到紅外線變化時,OUT 會輸出 3.3V 的電壓,并持續一段延遲時間后,再回到 0V 電壓。

延遲時間可以透過下圖 Tx 可變電阻(使用一字或十字起子)來調整,下圖中 Sx 可變電阻,則可用來調整敏感度,對可變電阻順時針轉動 Tx,延遲時間加長(零點幾秒到幾十分鐘),順時針轉動 Sx,可感應的距離增加(約 3 公尺到 7 公尺)。

DSN-FIR800 預設是可重復觸發(在上圖中左下標示為 H 與 L 的地方調整,連接中間與 H 表示可重復觸發),也就是當感測到紅外線變化而 OUT 輸出 3.3V 電壓,在延遲時間內若持續感測到紅外線變化,那么就會持續保持 3.3V 電壓,直到不再感測到紅外線變化后一段延遲時間,才將電壓降為 0V,這通常用于判斷,人體是否有持續動作(或太久沒動靜)的場合。

有些廠商制作的模組,可以使用 Jumper 在可重復與不可重復觸發之間做調整,會比較方便,不可重復觸發,是當感測到紅外線變化而 OUT 輸出 3.3V 電壓,無論延遲時間內有無感測到紅外線變化,時間一到就會先降為 0V 電壓。

連接 PIR 后,需要有一段幾十秒的暖機時間,在這段時間內紅外線變化的輸出會是不穩定的狀態。

感應人體動作來點亮 LED

如果想使用 mBlock 與 Arduino 來取得 PIR 的感應資料,并點亮 LED,可以如下連接電路,其中紅線要實際上對應至你的感應器 VCC 腳位,黑線對應至 GND 腳位:

程式很簡單,就是根據 OUT 腳位的電位,決定要不要讓 LED 點亮:

程式執行后,用手試著在 PIR 前晃動一下,就會看到 LED 點亮,實際上,你可能是在感應到人體移動之后,作些額外的程式動作,而不單只是點亮 LED,因為如果單純只是要點亮 LED(或者是搭配繼電器點亮燈炮),并不需要程式,只要如下連接電路也可以:

如果你手邊有光敏電阻,想要測試一下黑暗環境才使得 PIR 作動,那可以如下作暫時性的連接:

這么一來,只有在拿布蓋住光敏電阻的情況下,PIR 才會作動,此時用手試著在 PIR 前晃動,LED 才會點亮。

感謝CodeData用戶:caterpillar的貢獻 著作權歸作者所有

整理:寧波家電物聯網云平臺,中科極動云

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容