前言

人体和有生动物每时每刻身体都会想外部辐射红外,这些红外波长在9.6微米的样子。这些辐射出来的红外线可以被人体红外感应模块HC-SR501检测到并变成电信号然后就可以被树莓派处理,结合PYTHON程序的逻辑判断就可以产生不同的控制效果。比如可以用树莓派配合HC-SR501来检查是否有人进入房间,如果有人进入房间就可以录像。又或者通过HC-SR501检测到有人回家后就自动开启电视或热水器并延时30分钟等等应用场景。

树莓派 读取 红外遥控信号python 树莓派红外测体温_树莓派hc sr501 c语言

红外感应模块HC-SR501参数

传感器采用PCB板封装,有三个针脚引出,其中两端的是用来供电的正极和负极而中间的则是电平信号输出。感应的灵敏度可以通过PCB板上的电位器来进行条件一般在7米左右的感应距离,最大是10米。

工作电压:3~5V

静态电流:50μA

硬件接口:数字信号输出

工作温度:0℃~+70℃

电平输出:4V

无信号输出:0.4V

感应角度:110度

感应距离:7米

外形尺寸:28x36mm

红外感应模块HC-SR501连接到树莓派GPIO

首先将HC-SR501红外模块的负极(下方)连接到一个9K欧姆的电阻上,在将电阻的另一端连接到树莓派的第6借口GND地线负极。

其次将HC-SR501红外模块的正极(上方)的针脚直接连接到树莓派的GPIO的第2号针脚也就是5V的正极上。

最后就是连接HC-SR501红外模块的信号输出针脚了,这里我们是将信号输出连接到GPIO1上面,也就是树莓派的12号针脚。

完成上面的连接后,基本上树莓派和HC-SR501红外模块连接就完成了。可以开始加电启动进入LINUX系统中进行PYTHON编程调用红外模块了。

树莓派 读取 红外遥控信号python 树莓派红外测体温_树莓派hc sr501 c语言_02

红外测试PYTHON代码

红外感应测试程序代码

#!/bin/env python
# -*- coding:utf-8 -*-
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO_PIR = 11 //定义GPIO接口
print "PIR Module Test (CTRL-C to exit)"
GPIO.setup(GPIO_PIR,GPIO.IN) #设置GPIO模式为输入模式
Current_State = 0
Previous_State = 0

try:

print "Waiting for PIR to settle ..."
while GPIO.input(GPIO_PIR)==1://设置GPIO为1
Current_State = 0
print "开始准备..."//此处可以终止测试
while True ://测试对象状态
Current_State = GPIO.input(GPIO_PIR)
if Current_State==1 and Previous_State==0:
print "测试有红外对象 "
Previous_State=1
elif Current_State==0 and Previous_State==1:
#重新进入准备状态
print "继续准备中... "
Previous_State=0
time.sleep(0.01)//等待10毫秒
except KeyboardInterrupt:
print "退出"
GPIO.cleanup()//重置GPIO接口

总结

通过HC-SR501这个红外线采集设备虽然能够很好的采集到人体红外信号并触发树莓派的动作,但是碰到一些小的动物或者是人站的比较远的地方感应就没有那么灵敏了。而且在感应人体的时候反映时间有点点滞后,这个不知道是HC-SR501模块的反应滞后还是树莓派的PYTHON程序代码原因。但总体来说HC-SR501还是能满足大部分的人体红外感应需求。