树莓派实践系列2-人体红外感应传感器、声音传感器、红外避障传感器

时间:2024-03-14 18:22:14

简介

人体红外感应传感器、声音传感器、红外避障传感器是三个比较简单的传感器,之所以说其简单,是因为它们的功能为判断是否有人体靠近、是否有声音、是否有障碍物,功能明确、简单,均为被动式传感器,树莓派的仅仅通过读取GPIO接口的高低电平状态即可完成判断。
树莓派实践系列2-人体红外感应传感器、声音传感器、红外避障传感器

人体红外感应传感器

转自https://blog.csdn.net/sinat_33523805/article/details/78701878

简要说明

人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。
红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。

模块调节

1、 调节检测距离
2、 *时间:感应模块在每一次感应输出后(高电平变为低电平),可以紧跟着设置一个*时间,在此时间段内感应器不接收任何感应信号。此功能可以实现(感应输出时间和*时间)两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(默认*时间2.5S)

注:
1、调节距离电位器顺时针旋转,感应距离增大(约 7 米),反之,感应距离减小(约 3 米)。
2、调节延时电位器顺时针旋转,感应延时加长(约300S),反之,感应延时减短(约 0.5S)。
树莓派实践系列2-人体红外感应传感器、声音传感器、红外避障传感器

实战

与树莓派的连接
  1. vcc~2号接口,对应5V电源;
  2. GND~6号接口,接地;
  3. OUT~12号接口(BCM编码为18号GPIO接口),数据接口。
源码
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO

BODY_GPIO = 18
GPIO.setmode(GPIO.BCM)
GPIO.setup(BODY_GPIO, GPIO.IN)

def body_detect():
    signal = GPIO.input(BODY_GPIO)
    if signal == 1:
        print "DETECT BODY!"
    else:
        print "NO BODY!"

if __name__ == "__main__":
    count = 0
    while True:
        body_detect()
        time.sleep(6)
        count += 1
        if count == 20:
            break
    GPIO.cleanup()

声音传感器

转自 https://blog.csdn.net/zhang_z_qiang/article/details/51237026

简要说明

1.可以检测周围环境的声音强度 ,使用注意:此传感器只能识别声音的有无(根据震动原理)不能识别声音的大小或者特定频率的声音
2 .灵敏度可调(图中蓝色数字电位器调节)
3.工作电压3.3V-5V
4.输出形式数字开关量输出(0和1高低电平)

与树莓派的连接

  1. vcc~2号接口,对应5V电源;
  2. GND~6号接口,接地;
  3. OUT~12号接口(BCM编码为18号GPIO接口),数据接口。

源码

# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
class SoundDetect(object):
    def __init__(self):
        self.port = 18
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(self.port, GPIO.IN)

    def detect(self):
        while True:
            signal = GPIO.input(self.port)
            if signal == 1:
                print "detect sound"
            else:
                print "no sound"
            time.sleep(1)


if __name__ == "__main__":
    sound = SoundDetect()
    sound.detect()

红外避障传感器

转自 https://blog.csdn.net/xieyan0811/article/details/56011900

简要说明

红外避障传感器具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收。它常用于安装在小车上,判断前方是否有障碍物。可通过电位器设置阀值。正前方有障碍时绿灯亮起,OUT引脚为低电平,反之为高电平。其灵敏度可通过蓝色旋钮调节。

实战

与树莓派的连接
  1. vcc~2号接口,对应5V电源;
  2. GND~6号接口,接地;
  3. OUT~12号接口(BCM编码为18号GPIO接口),数据接口。
源码

根据该传感器的工作原理,我们只需监测相应GPIO接口为高/低电平即可。

import time
import RPi.GPIO as GPIO
class ObstacleDetect(object):
    def __init__(self):
        self.port = 18
        GPIO.setmode(GPIO.BCM)
        GPIO.setup(self.port, GPIO.IN)

    def detect(self):
        while True:
            signal = GPIO.input(self.port)
            if signal == 0:
                print "detect obstacle"
            else:
                print "no obstacle"
            time.sleep(1)


if __name__ == "__main__":
    obstacle = ObstacleDetect()
    obstacle.detect()

当没有物体靠近时,为检测到障碍物,当用手靠近传感器时,LED指示灯点亮,并且输出低电平,可以通过GPIO接口监测到。
树莓派实践系列2-人体红外感应传感器、声音传感器、红外避障传感器