一起玩轉樹莓派(15)——幹簧管傳感器
幹簧管傳感器又被稱爲磁簧開關。顧名思義,其功能是可以感知周圍的磁場從而改變開關的狀態。本次實驗,我們使用的幹簧管傳感器模塊如下圖所示:
可以看到,此模塊的核心是一個磁簧開關,附帶LED指示燈與靈敏度調節電阻。磁簧開關的工作原理非常簡單,兩片金屬薄片密封於一個玻璃管內,金屬片間有非常細的一個縫隙,常態下,兩金屬片不連通,電路斷開,當有磁場靠近玻璃管時,外加的磁場會使兩金屬片端點附近產生不同的磁極,從而吸引閉合,電路接通。玻璃管內通常會充滿惰性氣體或者抽成真空狀態,使得幹簧管性能和耐用度可以最大程度的提高。
本實驗所使用的幹簧管模塊電路原理如下圖所示:
此模塊包含兩個LED提示燈,當接通電源時,電源提示LED燈亮,當磁簧開關閉合時,輸出提示LED燈亮。
在本實驗中測試幹簧管模塊的開關功能,還需要準備一個磁石。幹簧管模塊與樹莓派連線如下:
幹簧管模塊 | 樹莓派 |
---|---|
VCC | 3.3V電源 |
GND | GND |
DO | GPIO17(BCM編碼) |
本實驗代碼本身非常簡單,如下:
#coding:utf-8
import RPi.GPIO as GPIO
reed = 11
def trigger(channel):
print('當前開關狀態:%s'%('關' if GPIO.input(reed) else '開'))
def setup():
GPIO.setmode(GPIO.BOARD)
# 當開關未閉合時,信號引腳將輸出高電平,默認設置上拉電阻
GPIO.setup(reed, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.add_event_detect(reed, GPIO.BOTH, callback=trigger, bouncetime=200)
def destroy():
GPIO.cleanup()
if __name__ == '__main__':
setup()
try:
while True:
pass
# 主動退出時 清除資源
except KeyboardInterrupt:
destroy()
在樹莓派上運行上面代碼,當使用磁體靠近幹簧管時,即可通過打印信息看到開關狀態,同樣也可以通過信號指示燈的明暗來獲知磁簧開關的狀態。如下圖所示:
專注技術,懂的熱愛,願意分享,做個朋友
QQ:316045346