一起玩轉樹莓派(6)——傾斜感測器與震動感測器實踐

語言: CN / TW / HK

一起玩轉樹莓派(6)——傾斜感測器與震動感測器實踐

通過本系列部落格的前幾篇文章,我們已經掌握了樹莓派應用開發的基本方法。很多時候,樹莓派可以做什麼更多的取決於我們的創造力。本篇部落格,我們將通過實踐來學習在樹莓派開發中常用的兩個開關元件:傾斜感測器與震動感測器。

傾斜感測器和震動感測器都是一種開關元件,其可以通過外界的物理變化來改變狀態。在生活中的很多報警系統中都有應用。試想一下,如果我們使用到的某個裝置需要避免傾斜和震動,就可以使用這兩種感測器做報警電路。

一、感測器工作原理

本次實驗本身的邏輯程式碼沒有什麼難度,所需要使用到的知識都是之前有涉及過的。在開始編寫程式碼和進行實驗之前,我們先來了解下傾斜感測器與震動感測器的工作原理。

1.傾斜感測器

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

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

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

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

2.震動感測器

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

可以看到,其搭載的功能板與上面介紹的傾斜感測器完全一致,這裡我們就不再贅述。

二、開始試驗

1.動手連線

對於本次實驗,我們將傾斜感測器與震動感測器作為模擬警告開關來使用,當裝置發生震動或傾斜時,通過輸出Log資訊來做提示。首先我們先確認要使用到的GPIO引腳,對於電源和負極直接連線即可,我們暫定使用BCM編號為GPIO5和GPIO6的兩個引腳,其對應的物理引腳分別為29和31。物理29引腳我們接震動感測器的訊號引腳,物理31引腳我們接傾斜感測器的訊號引腳。筆者這裡使用擴充套件板連線如下圖所示。如果不使用擴充套件板,直接連線物理引腳即可。

溫馨提示:可以通過線的顏色參考示意圖中的連線。

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

上面的程式碼比較簡單,執行上面程式碼,通過觸發感測器的震動與傾斜,可以觀察程式的列印輸出資訊,同時感測器上的開關指示燈也可以提示感測器的接通狀態。

三、休息一下

本次實驗非常簡單,但是我們可以發揮創造力,通過這兩個感測器做出一些有意思的東西,盡情想象吧!

專注技術,懂的熱愛,願意分享,做個朋友

QQ:316045346

分享到: