简介
人体红外感应传感器、声音传感器、红外避障传感器是三个比较简单的传感器,之所以说其简单,是因为它们的功能为判断是否有人体靠近、是否有声音、是否有障碍物,功能明确、简单,均为被动式传感器,树莓派的仅仅通过读取GPIO接口的高低电平状态即可完成判断。
人体红外感应传感器
转自https://blog.csdn.net/sinat_33523805/article/details/78701878
简要说明
人体都有恒定的体温,一般在37度,所以会发出特定波长10UM左右的红外线,被动式红外探头就是靠探测人体发射的10UM左右的红外线而进行工作的。人体发射的10UM左右的红外线通过菲泥尔滤光片增强后聚集到红外感应源上。
红外感应源通常采用热释电元件,这种元件在接收到人体红外辐射温度发生变化时就会失去电荷平衡,向外释放电荷,后续电路经检测处理后就能产生报警信号。
模块调节
1、 调节检测距离
2、 *时间:感应模块在每一次感应输出后(高电平变为低电平),可以紧跟着设置一个*时间,在此时间段内感应器不接收任何感应信号。此功能可以实现(感应输出时间和*时间)两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(默认*时间2.5S)
注:
1、调节距离电位器顺时针旋转,感应距离增大(约 7 米),反之,感应距离减小(约 3 米)。
2、调节延时电位器顺时针旋转,感应延时加长(约300S),反之,感应延时减短(约 0.5S)。
实战
与树莓派的连接
- vcc~2号接口,对应5V电源;
- GND~6号接口,接地;
- 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高低电平)
与树莓派的连接
- vcc~2号接口,对应5V电源;
- GND~6号接口,接地;
- 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引脚为低电平,反之为高电平。其灵敏度可通过蓝色旋钮调节。
实战
与树莓派的连接
- vcc~2号接口,对应5V电源;
- GND~6号接口,接地;
- 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接口监测到。