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

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

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

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

jf_zGNBEhbi ? 來(lái)源:趣無(wú)盡 ? 2023-08-17 10:08 ? 次閱讀

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

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

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

將 Pico 連接到樹(shù)莓派或其他運(yùn)行 Thonny MicroPython IDE 的計(jì)算機(jī)。

HC-SR501 PIR 傳感器

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

被動(dòng)式紅外傳感器被設(shè)計(jì)用來(lái)檢測(cè)運(yùn)動(dòng),特別是人和其他生物的運(yùn)動(dòng)。它的工作原理有點(diǎn)像照相機(jī),但它不是捕捉可見(jiàn)光,而是尋找以紅外輻射的形式從活體發(fā)出的熱量。它被稱為被動(dòng)紅外傳感器,而不是主動(dòng)紅外傳感器,因?yàn)榫拖裣鄼C(jī)傳感器一樣,它自己不發(fā)出任何紅外信號(hào)。

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

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

然而,一個(gè)簡(jiǎn)單的 PIR 傳感器對(duì)于低安全級(jí)別的地方就足夠了。

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

你還會(huì)看到三個(gè)公排針,和 Pico 底部的排針一模一樣。但是,你不能直接將它們插入面包板,因?yàn)槊姘迳系慕M件會(huì)礙事。取三根公對(duì)母杜邦線,將母線端插入 HC-SR501 的針腳上。接下來(lái),拿起公的一端,把它們連接到面包板和 Pico 上。在將傳感器連接到 Pico 上時(shí),需要確認(rèn)傳感器的文檔。不同公司生產(chǎn)的 HC-SR501 傳感器,它們引腳的順序會(huì)略有不同。

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

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

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

警報(bào)器代碼

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

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

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

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

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

最后,設(shè)置中斷本身:

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

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

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

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

真正的防盜警報(bào)器有燈和警報(bào)器來(lái)醒周圍的人有問(wèn)題了,下面我們就來(lái)添加它們。如圖所示添加 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)

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

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

祝賀你,這應(yīng)該足以嚇入侵者了!

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

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)

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

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

擴(kuò)展警報(bào)器

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

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

在設(shè)置第一個(gè)傳感器的地方添加一行新代碼:

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

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

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

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

點(diǎn)擊 Run 按鈕,并在第一個(gè) PIR 傳感器上揮一揮你的手,你會(huì)看到警報(bào)信息,LED 閃光,蜂鳴器的聲音和之前一樣。等他們完成,然后在第二個(gè) PIR 傳感器上揮揮手,你會(huì)看到你的防盜警報(bào)以完全相同的方式響應(yīng)。

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

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

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)

就像在系列教程「反應(yīng)游戲」項(xiàng)目中,這段代碼讓中斷報(bào)告它被哪個(gè)引腳觸發(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)在學(xué)會(huì)如何構(gòu)建一個(gè)模塊化的防盜報(bào)警器來(lái)覆蓋你需要的所有監(jiān)測(cè)區(qū)域了!

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

    關(guān)注

    48

    文章

    7396

    瀏覽量

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

    關(guān)注

    2542

    文章

    50279

    瀏覽量

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

    關(guān)注

    146

    文章

    16804

    瀏覽量

    349389
  • 報(bào)警器
    +關(guān)注

    關(guān)注

    12

    文章

    918

    瀏覽量

    108671
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1684

    瀏覽量

    105399

原文標(biāo)題:竊賊報(bào)警器:在樹(shù)莓派 Pico 上使用 PIR 傳感器

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    樹(shù)莓DIY:無(wú)線感應(yīng)報(bào)警器

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

    基于樹(shù)莓pico的FM接收

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

    樹(shù)莓傳感器教程

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

    樹(shù)莓傳感器教程資料下載

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

    PIR傳感器怎樣與樹(shù)莓連接

    無(wú)源紅外傳感器,通常稱為PIR傳感器(也稱為紅外運(yùn)動(dòng)傳感器和熱釋電傳感器),是基本檢測(cè)紅外輻射
    的頭像 發(fā)表于 07-29 10:58 ?7947次閱讀

    PicoBoy帶有Wii遙控樹(shù)莓Pico

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

    距離檢測(cè)報(bào)警使用樹(shù)莓Pico

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

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

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

    使用PIR傳感器的防盜報(bào)警器

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

    基于PIR傳感器的安全報(bào)警系統(tǒng)電路設(shè)計(jì)

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

    如何利用樹(shù)莓和氣體傳感器保護(hù)廚房呢?

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

    樹(shù)莓 Pico內(nèi)置溫度傳感器的應(yīng)用

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

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

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

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

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