您的位置:首页 > 运维架构

室内监控项目之红外传感器模块

2019-03-15 18:37 141 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_39521967/article/details/88573345

                                            室内监控项目之红外传感器模块

知识积累:

  • 红外线传感器是用红外线的物理性质来进行测量的传感器。红外线又称红外光,它具有反射、折射、散射、干涉、吸收等性质。它是一种不可见光,其光谱位于可见光中红色以外,所以称红外线。
  • 常见红外传感器可分为热传感器和光子传感器。热传感器主要类型有:热敏传感器型,热电偶型,高莱气动型和热释放电型四种。按照光子传感器的工作原理,一般可分为内光电和外光电传感器两种,后者又分为光电导传感器、光生伏特传感器和光磁电传感器等三种。
  • 我采用的是HC-SR501 人体感应模块。人进入其感应范围输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。(有两种触发方式,可跳线选择  <1>不可重复触发方式:感应输出高电平后,延时时间一结束,输出则自动从高电平变为低电平。<2>可重复触发方式:感应输出高电平后,在延时时间段内如果有人在其感应范围内活动,则输出一直保持高电平,直到人离开后才延时将高电平转为低电平,感应模块检测到人的每一次活动,则自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)

  • CPU针脚常指的是硬件芯片向外提供的接口方式,由于采用的是针式接口,所以称为针脚。CPU针脚即一种接口类型,CPU需要通过某个接口与主板连接的才能进行工作,经过这么多年的发展,采用的接口方式有引脚式、卡式、触点式、针脚式等。而使用最普遍的CPU的接口是针脚式接口,对应到主板上就有相应的插槽类型。
  • GND是电线接地端的简写。代表地线或0线。这个地并不是真正意义上的地,是出于应用而假设的一个地,对于电源来说,它就是一个电源的负极。
  • VCC:电源(Volt Current Condenser);电源电压(双极器件);电源电压(74系列数字电路);声控载波(Voice Controlled Carrier);火线。

对照下表(图表为网上下载),将红外传感器连接到树莓派上。(目前有BOARD 编号系统、BCM 编号两种方式可以通过 RPi.GPIO 对 Raspberry Pi 上的 IO 针脚进行编号。)

  • 引脚,又叫管脚,英文叫Pin。就是从集成电路(芯片)内部电路引出与外围电路的接线,所有的引脚就构成了这块芯片的接口。  GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口
  •  在嵌入式系统中,经常需要控制许多结构简单的外部设备或者电路,这些设备有的需要通过CPU控制,有的需要CPU提供输入信号。并且,许多设备或电路只要求有开/关两种状体就够了,比如LED的亮与灭。对这些设备的控制,使用传统的串口或者并口就显得比较复杂,所以,在嵌入式微处理器上通常提供了一种“通用可编程I/O端口”,也就是GPIO。
  •  一个GPIO端口至少需要两个寄存器,一个做控制用的“通用IO端口控制寄存器”,还有一个是存放数据的“通用I/O端口数据寄存器”。数据寄存器的每一位是和GPIO的硬件引脚对应的,而数据的传递方向是通过控制寄存器设置的,通过控制寄存器可以设置每一位引脚的数据流向。(GPIO相关的寄存器有,IOPIN、IOSET、IOCLR、IODIR四个寄存器。)

代码(python)

[code]import time
import signal #学过linux信号基础可能会好理解一些,可以看我的Linux信号介绍
import RPi.GPIO as GPIO #导入RPi.GPIO 模块

INFR_PIN=16#根据自己的连接方式而定

def sig_proc(signum, frame):
print("Catch stop signal and program exit now...")
exit()

signal.signal(signal.SIGINT, sig_proc) #当键盘按下CTRL+C从shell中发出信号,信号被传递给shell中前台运行的进程,对应该信号的默认操作是中断 (INTERRUPT) 该进程。
signal.signal(signal.SIGTERM, sig_proc)# 终止进程 软件终止信号

def init():
GPIO.setwarnings(False) #禁用该警告消息(可能 Raspberry Pi 的 GPIO 上同时有多个脚本/循环。因此,如果 RPi.GPIO 检测到某个针脚被设置为其它用途而非默认的状态(默认为输入),在尝试配置某脚本时得到警告消息。)
GPIO.setmode(GPIO.BOARD) #指定所使用的编号方式为BOARD
GPIO.setup(INFR_PIN, GPIO.IN) #配置输入的通道,与人体感应模块的交互不需要输出的通道
pass #pass 是空语句,是为了保持程序结构的完整性。

def detct():
while True:
if GPIO.input(INFR_PIN) == True: #如果读取GPIO针脚的值为1,表示有人进来了
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+"  Someone is closing!"
else:
print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+"  No one nearby!"
time.sleep(1)
init()
detct()
GPIO.cleanup()

 

 

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: