您的位置:首页 > 产品设计 > UI/UE

Adafruit的樹莓派教程第十二課:感知運動

2016-02-14 19:46 330 查看
http://www.geekfan.net/11376/

本文由 極客范 - Boyd
Wang 翻譯自 Adafruit.com。歡迎加入極客翻譯小組,同我們一道翻譯與分享。轉載請參見文章末尾處的要求。


概覽

在這節課裡,你將學習到如何使用PIR人體熱式傳感器連接GPIO來激活門禁。





這節課,我們將把注意力放到感知運動和激活門禁開關上。我們會在第十三課構建這個安全感知系統,使用小派作為數字輸出來在偵測到運動時控制電力設備。


你需要的

要完成這節課講述的內容,你需要下面的東西。

PIR人體熱式傳感器(Adafruit
189號產品)





電磁門禁傳感器(Adafruit
375號產品)





樹莓派擴展板





小型面包板





一把跳線





最後,當然是小派啦





硬件部分

我們將會把兩個傳感器都連接到樹莓派上。兩個傳感器都不需要額外的部件。





PIR人體熱式傳感器是帶插座的引腳。一定要確保引腳插得是正確的,紅色的應該插在5V上,黑色接地,黃色的插在擴展板的18引腳上。





盡管PIR傳感器需要5V的電源供電,但它的輸出卻是對小派友好的3.3V,所以它可以直接連接到GPIO的上作為輸入。

門禁開關使用了一個叫做磁簧開關(reed switch)的東西。在一個玻璃管裡裝著兩個簧片相互連接,然後外面包裹著塑料。當一個磁性物體(另一個白色方塊)靠近這個磁簧開關的時候,兩個簧片接觸,然後開關關閉。因為這是個開關,所以正著接反著接都行。

我們會利用小派自身來在磁簧開關針腳上創建一個內部的上拉電阻,所以我們就不需要額外的上拉電阻了。


軟件部分

這個程序只是一個循環,在偵測到運動的時候打印一個消息,或者磁力從門上移除。

程序使用了Rpi.GPIO類庫。見第四課

12345678910111213141516import timeimport RPi.GPIO as ioio.setmode(io.BCM) pir_pin = 18door_pin = 23 io.setup(pir_pin, io.IN)         # activate inputio.setup(door_pin, io.IN, pull_up_down=io.PUD_UP)  # activate input with PullUp while True:    if io.input(pir_pin):        print("PIR ALARM!")    if io.input(door_pin):        print("DOOR ALARM!")    time.sleep(0.5)
程序裡把pir_pin置為一個普通的輸入針(a plain old input)。這是因為PIR傳感器有一個3.3V或0V的數字輸出。與之相比,door_pin是一個開關,不會產生電壓作為數字輸入。所以,這個輸入針使用了一個額外的參數(pull_up_down=io.PUD_UP)。這將激活一個內部的電阻使得輸入變高(上拉)除非有更強的電流(比如開關接地)來把它拉低。然後循環輪流讀取輸入然後打印一條響應的消息。記住門禁開關報警只會在磁力從傳感器附近移除時才會被激活。

配置與測試

有許多方式可以連接到你的樹莓派上。也許最簡單的方式是使用SSH(見第六課)並使用下面的命令打開一個編輯器:

1

nano
switches.py

..然後把代碼粘貼進去,按Ctrl+X保存。





在開始運行程序之前,把磁鐵靠近開關並且在PIR傳感器上蓋上一些東西。

然後使用下面的命令運行程序:

1

sudo
python
switches.py

..然後你可以看到終端有輸出了,當你移走磁鐵,或者把蓋在PIR傳感器上的東西拿開。

一個好的方式或許是把你的孩子放在PIR傳感器前面,看他們能堅持多久!(譯者:這主意簡直棒(sang)極(xin)了(bing)啊(kuang))

原文鏈接: Adafruit.com 翻譯: 極客范 - Boyd
Wang

譯文鏈接: http://www.geekfan.net/11376/

[ 轉載請保留原文出處、譯者和譯文鏈接。]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: