干簧管传感器又被称为磁簧开关。顾名思义,其功能是可以感知周围的磁场从而改变开关的状态。本次实验,我们使用的干簧管传感器模块如下图所示:
可以看到,此模块的核心是一个磁簧开关,附带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()
在树莓派上运行上面代码,当使用磁体靠近干簧管时,即可通过打印信息看到开关状态,同样也可以通过信号指示灯的明暗来获知磁簧开关的状态。如下图所示: