一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

經過本系列博客的前幾篇文章,咱們已經掌握了樹莓派應用開發的基本方法。不少時候,樹莓派能夠作什麼更多的取決於咱們的創造力。本篇博客,咱們將經過實踐來學習在樹莓派開發中經常使用的兩個開關元件:傾斜傳感器與震動傳感器。python

傾斜傳感器和震動傳感器都是一種開關元件,其能夠經過外界的物理變化來改變狀態。在生活中的不少報警系統中都有應用。試想一下,若是咱們使用到的某個設備須要避免傾斜和震動,就可使用這兩種傳感器作報警電路。markdown

1、傳感器工做原理

本次實驗自己的邏輯代碼沒有什麼難度,所須要使用到的知識都是以前有涉及過的。在開始編寫代碼和進行實驗以前,咱們先來了解下傾斜傳感器與震動傳感器的工做原理。ide

1.傾斜傳感器

傾斜傳感器又稱爲傾斜開關,其能夠對元件相對與重力方向的傾角作出感應。早期的傾斜傳感器多采用貢傾斜傳感器,其管體內部使用汞做爲導電介質,當有傾斜發生時,金屬汞會流動到管體末端,從而接通電路。汞傾斜傳感器的優勢是耐用壽命長,但其對環境有害,目前已經不多使用。函數

當下比較流行的是球形傾斜傳感器,這種傳感器設計簡單,管體內放入金屬球,當發生傾斜時,金屬球滾動接通電路。本次實驗,咱們採用SW520D型號的傾斜傳感器,以下圖所示:學習

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

其頭部的管體就是傾斜開關,其搭載的功能板子分解以下:編碼

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

此傳感器有3個引腳,其中VCC須要接3.3-5V的電壓,中間引腳接地,DO引腳是信號輸出引腳,咱們經過其進行傾斜感應。如上圖所示,此傳感器自帶電源和開關兩個LED燈,接通電源後,電源LED燈發光,當傳感器觸發傾斜時,開關LED燈發光。對於DO引腳,當開關LED發光時,其輸出低電平,表示開關打開,當開關LED燈不亮時,其輸出高電平,表示開關斷開。用其咱們能夠很方便的實現傾斜斷電保護功能。如上圖中,此傳感器還提供了一個靈敏度的電位調節單元,其工做原理電路圖以下所示:設計

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

2.震動傳感器

震動傳感器與傾斜傳感器的工做原理基本一致,不一樣的地方只在於開關的觸發方式,震動傳感器感應外界的震動從而觸發電路的導通。經常使用的震動開關有滾珠式和彈簧式兩種,以彈簧式爲例,當發生震動時,彈簧與電極接觸,從而導通電路,本次實驗咱們使用的震動傳感器以下圖所示:3d

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

能夠看到,其搭載的功能板與上面介紹的傾斜傳感器徹底一致,這裏咱們就再也不贅述。code

2、開始試驗

1.動手連線

對於本次實驗,咱們將傾斜傳感器與震動傳感器做爲模擬警告開關來使用,當設備發生震動或傾斜時,經過輸出Log信息來作提示。首先咱們先確認要使用到的GPIO引腳,對於電源和負極直接鏈接便可,咱們暫定使用BCM編號爲GPIO5和GPIO6的兩個引腳,其對應的物理引腳分別爲29和31。物理29引腳咱們接震動傳感器的信號引腳,物理31引腳咱們接傾斜傳感器的信號引腳。筆者這裏使用擴展板連線以下圖所示。若是不使用擴展板,直接鏈接物理引腳便可。blog

一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐一塊兒玩轉樹莓派(6)——傾斜傳感器與震動傳感器實踐

舒適提示:能夠經過線的顏色參考示意圖中的連線。

2.編寫代碼

咱們使用GPIO引腳的INPUT功能來監聽傳感器的狀態,示例代碼以下:

#coding:utf-8

# 導入GPIO控制薄塊
import RPi.GPIO as GPIO
# 設置使用的引腳編碼模式
GPIO.setmode(GPIO.BOARD)
# 定義震動開關引腳 BCM5
swi_shake = 29
# 定義傾斜開關引腳 BCM6
swi_slop = 31

# 進行開關引腳的初始化,設置爲輸入引腳,且默認爲高電平
GPIO.setup(swi_shake, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(swi_slop, GPIO.IN, pull_up_down=GPIO.PUD_UP)

# 定義狀態變化的回調函數
def switch_shake(channel):
    # 低電平爲開關打開狀態
    if not GPIO.input(channel):
        print("注意,發生了震動!")

def switch_slop(channel):
    # 低電平爲開關打開狀態
    if not GPIO.input(channel):
        print("注意,發生了傾斜!")  

# 添加輸入引腳電平變化的回調函數
GPIO.add_event_detect(swi_shake, GPIO.FALLING, callback=switch_shake, bouncetime=200)
GPIO.add_event_detect(swi_slop, GPIO.FALLING, callback=switch_slop, bouncetime=200)

while True:
    pass

上面的代碼比較簡單,運行上面代碼,經過觸發傳感器的震動與傾斜,能夠觀察程序的打印輸出信息,同時傳感器上的開關指示燈也能夠提示傳感器的接通狀態。

3、休息一下

本次實驗很是簡單,可是咱們能夠發揮創造力,經過這兩個傳感器作出一些有意思的東西,盡情想象吧!

專一技術,懂的熱愛,願意分享,作個朋友

QQ:316045346

相關文章
相關標籤/搜索