一起玩转树莓派(6)——倾斜传感器与震动传感器实践

简介: 通过本系列博客的前几篇文章,我们已经掌握了树莓派应用开发的基本方法。很多时候,树莓派可以做什么更多的取决于我们的创造力。本篇博客,我们将通过实践来学习在树莓派开发中常用的两个开关元件:倾斜传感器与震动传感器。

一起玩转树莓派(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

目录
相关文章
|
13天前
|
传感器
光学雨量计红外雨量传感器在降水监测上具有许多优势和特点
光学雨量计红外雨量传感器在降水监测上具有许多优势和特点
光学雨量计红外雨量传感器在降水监测上具有许多优势和特点
|
13天前
|
传感器 安全
光学雨量计红外雨量传感器在降水监测上的优势与特点
光学雨量计红外雨量传感器在降水监测上的优势与特点
光学雨量计红外雨量传感器在降水监测上的优势与特点
|
8月前
|
传感器 算法 数据处理
红外雨量计(光学雨量传感器)在雨量场景的改造关键
红外雨量计是一种利用红外光谱技术测量雨滴大小和数量的仪器,它可以有效地测量降雨量、雨滴落速等雨量信息,是天气预报、气象灾害防御和水文学研究等领域中不可或缺的工具。但是,在实际应用中,红外雨量计也面临着一系列挑战,比如雨量场景复杂多变、仪器精度不高等问题,因此对红外雨量计进行改造是非常重要的。
红外雨量计(光学雨量传感器)在雨量场景的改造关键
|
9月前
|
传感器
红外雨量计(光学雨量传感器)安装注意要点
红外雨量计是一种用来测量降雨量的设备,它采用了先进的红外线技术,可以非常精确地测量降雨量,并可自动记录数据。在红外雨量计的安装过程中,需要注意以下要点:
红外雨量计(光学雨量传感器)安装注意要点
|
11月前
|
传感器
红外热成像仪测温传感器模块开发笔记
什么是红外成像伪彩编码 红外成像的最终目的是用图像来表现温度变化,并且可以通过颜色来区分出不同热量的物体轮廓和形状。那么,到底用什么颜色来表示什么温度呢?是否有什么标准规范呢?
|
传感器 存储
河北稳控科技多功能手持读数仪VH501TC混合信号采集仪快速测量传感器
便携式手持设备面板的设计与其他工业设备的主要区别在于具有便携性和可操作性。通过人机进行操作能够对手握区域、外部接口区域、显示和操作区域进行接触,同时,手持检测设备的外观设计还要能够与人体结构相契合,达到手持的舒适度等。如手持振弦VH501TC,在工程监测振弦传感器时就很方便快捷,连接上传感器,立即读取到数据,每个测点检测时就能快速及时处理。下面看看如何连接传感器的规则。
河北稳控科技多功能手持读数仪VH501TC混合信号采集仪快速测量传感器
|
数据采集 存储 传感器
便携式钻孔测斜仪数据采集仪测量原理
WIN5/612_X 多功能数据采集仪是专为岩土工程设计的监测型多功能数显精密仪器,附带多个扩展功能模块,实现测点全球定位、通用型模拟、数字传感器连接读数、存储、无人值守自动化监测、自动预警、无线监测等功能。
便携式钻孔测斜仪数据采集仪测量原理
红外温度计(测温仪)的原理是什么?
测温枪学名是“红外温度计”或“红外辐射温度计”。测温枪原理是被动吸收物体的红外辐射能量,获得物体的温度数值
红外温度计(测温仪)的原理是什么?
|
传感器 存储 编解码
光学雨量计红外雨量传感器的一些常见问题(1)
关于降雨总量寄存器 降雨总量寄存器内存储的是信号输出次数,每发生一次信号输出时自增 1 并永久存储。故此可在任意时刻通过数字接口读取获得总的输出次数,乘以输出分辨率即是以 mm 为单位的降雨总量,而无需时刻关注传感器的每次信号输出。默认参数时,输出分辨率寄存器 S_CNT 的值为 20000,表示分辨率 0.2mm,若读取降雨总量寄存器 R_TOTAL 的值为 100,则 100*0.2=20mm,即为降雨总量。
光学雨量计红外雨量传感器的一些常见问题(1)
|
传感器 存储 编解码
光学雨量计红外雨量传感器的一些常见问题(2)
关于输出百分比 输出百分比寄存器 OUT_PER 内存储的是当前已检测到的变化量与预设输出分辨率 S_CNT 的值之比的百分率表示,每次信号输出后此值自动归零,并根据实时检测到的降雨数据实时更新,当达到 100 时再次输出一次信号。可以通过数字接口读取 OUT_PER 寄存器,获得更加实时、高分辨率的降雨信息。
光学雨量计红外雨量传感器的一些常见问题(2)