0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在樹莓派Pico上使用PIR傳感器構(gòu)建竊賊報警器

jf_zGNBEhbi ? 來源:趣無盡 ? 2023-08-17 10:08 ? 次閱讀

微控制器MCU)在現(xiàn)實世界的另一個用途是在報警系統(tǒng)中。從早上叫你起床的鬧鐘到火災警報、防盜警報,甚至是核電站出現(xiàn)問題時發(fā)出的警報,微控制器幫助保護我們所有人的安全。

本篇將帶你構(gòu)建自己的防盜報警器,實現(xiàn)一個特殊的運動傳感器,不斷掃描任何人進入房間的事件。無論你是在保護銀行金庫,還是只是想防止兄弟姐妹們出現(xiàn)在你的房間里,防盜報警器肯定會派上用場。

這個項目需要用到:
樹莓派 Pico
面包板
任何顏色的 LED
一個 330Ω 電阻
有源蜂鳴器
一個或多個 HC-SR501 被動紅外(PIR)傳感器
若干公對公、公對母杜邦線
microUSB 數(shù)據(jù)線

將 Pico 連接到樹莓派或其他運行 Thonny MicroPython IDE 的計算機。

HC-SR501 PIR 傳感器

在前面的系列教程中,你已經(jīng)使用了按鈕開關(guān)形式的簡單輸入組件。這一次,你將使用被稱為被動紅外傳感器(PIR)的傳感器。有數(shù)百種不同的 PIR 傳感器可用,HC-SR501 低成本、高性能,并與 Pico 完美適配。

被動式紅外傳感器被設計用來檢測運動,特別是人和其他生物的運動。它的工作原理有點像照相機,但它不是捕捉可見光,而是尋找以紅外輻射的形式從活體發(fā)出的熱量。它被稱為被動紅外傳感器,而不是主動紅外傳感器,因為就像相機傳感器一樣,它自己不發(fā)出任何紅外信號

實際的傳感器被埋在一個塑料鏡頭下,通常形狀像半個球。鏡頭在技術(shù)上并不是傳感器工作所必需的,但可以供更寬的視野(FOV),如果沒有透鏡,PIR 傳感器只能看到傳感器正前方一個非常窄的角度的運動。這種鏡頭可以從更寬的角度吸收紅外線,這意味著一個 PIR 傳感器就可以觀察到房間里大部分的移動情況。

在商業(yè)防盜報警系統(tǒng)中,PIR 傳感器只是使用的傳感器之一。其它的傳感器還包括:能告知窗 戶何時被打碎的碎玻璃傳感器、能監(jiān)測門是開著還是關(guān)著的磁傳感器、能捕捉竊賊腳步聲的聲音傳感器以及能告知門鎖是否被撬開的振動傳感器。

然而,一個簡單的 PIR 傳感器對于低安全級別的地方就足夠了。

現(xiàn)在拿起你的 HC-SR501 傳感器看一看。首先要注意的是,它有自己的電路板。除了傳感器和鏡頭,還有其他幾個組件:驅(qū)動傳感器的黑色芯片、一些電容和微小的貼片電阻。你也可以看到幾個電位器,你可以用螺絲刀擰動它們,來調(diào)整傳感器的靈敏度,以及當觸發(fā)時它保持激活的時間。

你還會看到三個公排針,和 Pico 底部的排針一模一樣。但是,你不能直接將它們插入面包板,因為面包板上的組件會礙事。取三根公對母杜邦線,將母線端插入 HC-SR501 的針腳上。接下來,拿起公的一端,把它們連接到面包板和 Pico 上。在將傳感器連接到 Pico 上時,需要確認傳感器的文檔。不同公司生產(chǎn)的 HC-SR501 傳感器,它們引腳的順序會略有不同。

這里的傳感器,引腳順序為 GND 在底部,信號或觸發(fā)引腳在中間,電源引腳在右邊。

cdfa5bd0-3ca2-11ee-ac96-dac502259ad0.jpg

傳感器的信號引腳連接到 Pico 的 GP28 引腳。GND 和 VCC 分別連接 Pico 的 GND 和 5V 引腳。

警報器代碼

ce172f12-3ca2-11ee-ac96-dac502259ad0.jpg

對 Pico 進行編程才能識別傳感器。這和讀取按鈕的操作類似。幾乎可以使用相同的代碼:

import machine
sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)

就像上一篇教程中做的反應游戲一樣,防盜報警器的輸入應該作為一個中斷,停止程序正在做的任何事情,并在傳感器被觸發(fā)時做出反應。和前面一樣,首先定義一個回調(diào)函數(shù)來處理中斷:

def pir_handler(pin):
print("ALARM! Motion detected!")

最后,設置中斷本身:

sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)

單擊 Run 按鈕,并將程序保存到 Pico 中,命名為 Burglar_Alarm.py。

在 PIR 傳感器前面揮一揮你的手,你會看到一條消息出現(xiàn)在 Shell 區(qū)域,確認傳感器檢測到了手的移動。如果你一直揮動你的手,信息將持續(xù)輸出,但是在每條消息之間有一個延遲,
這種延遲和內(nèi)置在 HC-SR501 上的電位器設置相關(guān)。你可以插入一個螺絲刀,把它朝一個 方向轉(zhuǎn)動來減少延遲,朝另一個方向轉(zhuǎn)動來增加延遲。請參考傳感器的文檔,以確定哪個電位器是控制延遲的。

組裝輸入和輸出之后的代碼

真正的防盜警報器有燈和警報器來醒周圍的人有問題了,下面我們就來添加它們。如圖所示添加 LED 和有源蜂鳴器。其中,LED 正極與 Pico 的 GP15 引腳相連,蜂鳴器的正極與 Pico 的 GP14 相連。GND 均與 Pico 的 GND 引腳相連。

ce30ecd6-3ca2-11ee-ac96-dac502259ad0.jpg

加入 LED 和蜂鳴器之后的完整代碼如下:

import machine
import utime


sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN)
led = machine.Pin(15, machine.Pin.OUT)
buzzer = machine.Pin(14, machine.Pin.OUT)


def pir_handler(pin):
print("ALARM! Motion detected!")
for i in range(50):
  led.toggle()
  buzzer.toggle()
  utime.sleep_ms(100)


sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)


while True:
  led.toggle()
  utime.sleep(5)

點擊 Run 按鈕,然后在 PIR 傳感器前再次揮舞你的手,這時不僅會有消息提示出現(xiàn)在 Shell 區(qū)域,LED 將開始快速閃爍 50 次并伴隨著警報器嗶聲(間隔 100 毫秒)。

為了讓防盜報警器更具震懾力,它在沒有察覺到任何動靜的情況下也會緩慢閃爍(每 5 秒一次),以此 警告潛在的入侵者,你的房間已經(jīng)被人監(jiān)視了。

祝賀你,這應該足以嚇入侵者了!

如果你使用的是無源蜂鳴器,嘗試這個版本的程序代替:

import machine
import utime


sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN) led = machine.Pin(15, machine.Pin.OUT)
buzzer = machine.Pin(14, machine.Pin.OUT)


def pir_handler(pin):
  print("ALARM! Motion detected!")
  for i in range(50):
    led.toggle()
    for j in range(25):
      buzzer.toggle()
      utime.sleep_ms(3)


sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)


while True:
  led.toggle()
  utime.sleep(5)

在蜂鳴器的使用上,上面的代碼是通過快速切換蜂鳴器引腳的電壓來模擬有源蜂鳴器振蕩器的效果。

嘗試將延遲時間從 3 毫秒改為 4 毫秒,你會發(fā)現(xiàn)蜂鳴器的聲音音調(diào)更低。改變延遲會改變蜂鳴器振蕩的頻率:延遲越長,蜂鳴器振蕩的頻率就越低,聲音的音調(diào)就越低;延遲越短,它的振動頻率 就越高,聲音的音調(diào)也就越高。

擴展警報器

添加多個 HC-SR501 傳感器可以覆蓋更多區(qū)域。我們以兩個為例,將新增的傳感器信號腳連接到 Pico 上的 GP22 引腳,如圖所示。

ce40fdf6-3ca2-11ee-ac96-dac502259ad0.jpg

在設置第一個傳感器的地方添加一行新代碼:

sensor_pir2 = machine.Pin(22, machine.Pin.IN, machine.Pin.PULL_DOWN)

然后創(chuàng)建一個新的中斷,同樣在第一個中斷的下面:

 
sensor_pir2.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)

請記住,一個處理程序可以有多個中斷,因此不需要更改終端處理程序的部分。

點擊 Run 按鈕,并在第一個 PIR 傳感器上揮一揮你的手,你會看到警報信息,LED 閃光,蜂鳴器的聲音和之前一樣。等他們完成,然后在第二個 PIR 傳感器上揮揮手,你會看到你的防盜警報以完全相同的方式響應。

為了使鬧鐘變得非常智能,你可以根據(jù)哪個引腳負責中斷來自定義消息,它的工作方式與你之前編寫的雙人反應游戲中完全相同。

回到你的中斷處理程序并修改它:

def pir_handler(pin):
if pin is sensor_pir:
print("ALARM! Motion detected in bedroom!")
elif pin is sensor_pir2:
print("ALARM! Motion detected in living room!")
for i in range(50):
led.toggle()
buzzer.toggle()
utime.sleep_ms(100)

就像在系列教程「反應游戲」項目中,這段代碼讓中斷報告它被哪個引腳觸發(fā)。最終完整的代碼如下:

import machine
import utime


sensor_pir = machine.Pin(28, machine.Pin.IN, machine.Pin.PULL_DOWN) sensor_pir2 = machine.Pin(22, machine.Pin.IN, machine.Pin.PULL_DOWN) led = machine.Pin(15, machine.Pin.OUT)
buzzer = machine.Pin(14, machine.Pin.OUT)


def pir_handler(pin):
  if pin is sensor_pir:
    print("ALARM! Motion detected in bedroom!")
  elif pin is sensor_pir2:
    print("ALARM! Motion detected in living room!")
    for i in range(50):
    led.toggle()
    buzzer.toggle()
    utime.sleep_ms(100)


sensor_pir.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler) sensor_pir2.irq(trigger=machine.Pin.IRQ_RISING, handler=pir_handler)


while True:
  led.toggle()
  utime.sleep(5)

祝賀你!你現(xiàn)在學會如何構(gòu)建一個模塊化的防盜報警器來覆蓋你需要的所有監(jiān)測區(qū)域了!

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7454

    瀏覽量

    150855
  • 傳感器
    +關(guān)注

    關(guān)注

    2545

    文章

    50445

    瀏覽量

    751067
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    16885

    瀏覽量

    349922
  • 報警器
    +關(guān)注

    關(guān)注

    12

    文章

    919

    瀏覽量

    108692
  • 樹莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1688

    瀏覽量

    105456

原文標題:竊賊報警器:在樹莓派 Pico 上使用 PIR 傳感器

文章出處:【微信號:趣無盡,微信公眾號:趣無盡】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    使用樹莓Pico的RP2040微控制內(nèi)置溫度傳感器

    樹莓 Pico 的 RP2040 微控制內(nèi)置了溫度傳感器,它可以通過第四個模擬數(shù)字轉(zhuǎn)換通道
    的頭像 發(fā)表于 09-11 10:14 ?1829次閱讀

    樹莓DIY:無線感應報警器

    通過把LCD1602,蜂鳴器和單路徑循跡傳感器模塊都接入到樹莓的GPIO引腳上面,用單路徑循跡傳感器檢測物體的距離或顏色。當物體距離過近時,此時路徑
    發(fā)表于 05-23 08:00

    基于樹莓pico的FM接收

    描述Pico 收音機是一個簡單的基于樹莓 pico 的 FM 接收,它使用 rda5807m 調(diào)諧到 FM 頻道??梢酝ㄟ^
    發(fā)表于 07-08 07:56

    樹莓傳感器教程

    樹莓傳感器教程
    發(fā)表于 10-07 07:13

    樹莓傳感器教程資料下載

    樹莓傳感器
    發(fā)表于 05-07 15:20 ?32次下載

    PIR傳感器怎樣與樹莓連接

    無源紅外傳感器,通常稱為PIR傳感器(也稱為紅外運動傳感器和熱釋電傳感器),是基本檢測紅外輻射
    的頭像 發(fā)表于 07-29 10:58 ?7972次閱讀

    PicoBoy帶有Wii遙控樹莓Pico

    電子發(fā)燒友網(wǎng)站提供《PicoBoy帶有Wii遙控樹莓Pico.zip》資料免費下載
    發(fā)表于 11-08 11:16 ?0次下載
    PicoBoy帶有Wii遙控<b class='flag-5'>器</b>的<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    距離檢測報警使用樹莓Pico

    電子發(fā)燒友網(wǎng)站提供《距離檢測報警使用樹莓Pico.zip》資料免費下載
    發(fā)表于 11-09 11:49 ?0次下載
    距離檢測<b class='flag-5'>報警</b>使用<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>

    使用PIR傳感器的車輛停車報警系統(tǒng)

    電子發(fā)燒友網(wǎng)站提供《使用PIR傳感器的車輛停車報警系統(tǒng).zip》資料免費下載
    發(fā)表于 11-21 11:48 ?0次下載
    使用<b class='flag-5'>PIR</b><b class='flag-5'>傳感器</b>的車輛停車<b class='flag-5'>報警</b>系統(tǒng)

    使用PIR傳感器的防盜報警器

    電子發(fā)燒友網(wǎng)站提供《使用PIR傳感器的防盜報警器.zip》資料免費下載
    發(fā)表于 02-06 09:25 ?3次下載
    使用<b class='flag-5'>PIR</b><b class='flag-5'>傳感器</b>的防盜<b class='flag-5'>報警器</b>

    基于PIR傳感器的安全報警系統(tǒng)電路設計

    本文中,工程師們列舉了一個更加簡單的安全報警系統(tǒng)單片機方案,既節(jié)省了功耗,又實現(xiàn)了低成本。PIR傳感器是無源紅外傳感器的縮寫,也是比較經(jīng)濟
    的頭像 發(fā)表于 07-11 09:47 ?1122次閱讀
    基于<b class='flag-5'>PIR</b><b class='flag-5'>傳感器</b>的安全<b class='flag-5'>報警</b>系統(tǒng)電路設計

    如何利用樹莓和氣體傳感器保護廚房呢?

    其實市面上有很多商業(yè)解決方案,喜歡自己動手的,可以用樹莓Pico和氣體傳感器做一個。
    發(fā)表于 08-16 09:24 ?295次閱讀

    樹莓 Pico內(nèi)置溫度傳感器的應用

    樹莓 Pico 的 RP2040 微控制內(nèi)置了溫度傳感器,它可以通過第四個模擬數(shù)字轉(zhuǎn)換通道
    發(fā)表于 09-11 10:14 ?735次閱讀

    樹莓Pico文件系統(tǒng)應用:數(shù)據(jù)記錄

    在前面的章節(jié)中,你一直使用樹莓 Pico 連接到樹莓或其他電腦。不過,與所有微控制
    的頭像 發(fā)表于 10-24 10:51 ?1218次閱讀
    <b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b>文件系統(tǒng)應用:數(shù)據(jù)記錄<b class='flag-5'>器</b>

    如何在樹莓Pico使用紅外線接收模塊?

    樹莓 Pico 使用紅外線接收模塊(HX1838 型),我們采用開源的 pico_ir 庫
    的頭像 發(fā)表于 11-30 09:08 ?2076次閱讀
    如何在<b class='flag-5'>樹莓</b><b class='flag-5'>派</b><b class='flag-5'>Pico</b><b class='flag-5'>上</b>使用紅外線接收模塊?