室内监控项目之红外传感器模块
时间:2022-08-11 11:00:00
红外传感器模块的室内监控项目
知识积累:
- 红外传感器是一种由红外物理性质测量的传感器。红外线也被称为红外光,它具有反射、折射、散射、干扰、吸收等性质。它是一种看不见的光,其光谱位于可见光中的红色以外,因此被称为红外光。
- 常见的红外传感器可分为热传感器和光子传感器。热传感器的主要类型有:热敏传感器类型、热电偶类型、高莱气动类型和热释放电类型。根据光子传感器的工作原理,一般可分为内外光电传感器,后者可分为光电导传感器、光生伏特传感器和光磁电传感器。
- 我采用的是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)
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()