经过本系列博客的前几篇文章,咱们已经掌握了树莓派应用开发的基本方法。不少时候,树莓派能够作什么更多的取决于咱们的创造力。本篇博客,咱们将经过实践来学习在树莓派开发中经常使用的两个开关元件:倾斜传感器与震动传感器。python
倾斜传感器和震动传感器都是一种开关元件,其能够经过外界的物理变化来改变状态。在生活中的不少报警系统中都有应用。试想一下,若是咱们使用到的某个设备须要避免倾斜和震动,就可使用这两种传感器作报警电路。markdown
本次实验自己的逻辑代码没有什么难度,所须要使用到的知识都是以前有涉及过的。在开始编写代码和进行实验以前,咱们先来了解下倾斜传感器与震动传感器的工做原理。ide
倾斜传感器又称为倾斜开关,其能够对元件相对与重力方向的倾角作出感应。早期的倾斜传感器多采用贡倾斜传感器,其管体内部使用汞做为导电介质,当有倾斜发生时,金属汞会流动到管体末端,从而接通电路。汞倾斜传感器的优势是耐用寿命长,但其对环境有害,目前已经不多使用。函数
当下比较流行的是球形倾斜传感器,这种传感器设计简单,管体内放入金属球,当发生倾斜时,金属球滚动接通电路。本次实验,咱们采用SW520D型号的倾斜传感器,以下图所示:学习
其头部的管体就是倾斜开关,其搭载的功能板子分解以下:编码
此传感器有3个引脚,其中VCC须要接3.3-5V的电压,中间引脚接地,DO引脚是信号输出引脚,咱们经过其进行倾斜感应。如上图所示,此传感器自带电源和开关两个LED灯,接通电源后,电源LED灯发光,当传感器触发倾斜时,开关LED灯发光。对于DO引脚,当开关LED发光时,其输出低电平,表示开关打开,当开关LED灯不亮时,其输出高电平,表示开关断开。用其咱们能够很方便的实现倾斜断电保护功能。如上图中,此传感器还提供了一个灵敏度的电位调节单元,其工做原理电路图以下所示:设计
震动传感器与倾斜传感器的工做原理基本一致,不一样的地方只在于开关的触发方式,震动传感器感应外界的震动从而触发电路的导通。经常使用的震动开关有滚珠式和弹簧式两种,以弹簧式为例,当发生震动时,弹簧与电极接触,从而导通电路,本次实验咱们使用的震动传感器以下图所示:3d
能够看到,其搭载的功能板与上面介绍的倾斜传感器彻底一致,这里咱们就再也不赘述。code
对于本次实验,咱们将倾斜传感器与震动传感器做为模拟警告开关来使用,当设备发生震动或倾斜时,经过输出Log信息来作提示。首先咱们先确认要使用到的GPIO引脚,对于电源和负极直接链接便可,咱们暂定使用BCM编号为GPIO5和GPIO6的两个引脚,其对应的物理引脚分别为29和31。物理29引脚咱们接震动传感器的信号引脚,物理31引脚咱们接倾斜传感器的信号引脚。笔者这里使用扩展板连线以下图所示。若是不使用扩展板,直接链接物理引脚便可。blog
舒适提示:能够经过线的颜色参考示意图中的连线。
咱们使用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