树莓派使用红外感应传感器

本文介绍如何使用Raspberry Pi和被动式红外线(PIR)传感器进行运动检测。通过连接传感器到Raspberry Pi的GPIO端口,并使用Python代码,可以实时监测并响应环境中的运动变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个简单的被动式红外线传感器可以让你检测运动状态。这个传感器有三个引脚,可用于连接到Raspberry Pi的GPIO端。当该模块检测到运动状态时,其中一个引脚会输出高电压,输出电压大约为3.3V。如果持续检测到运动状态,那么该引脚的电压则保持该电压水平,直至检测不到运动状态时才会恢复为零。另两个引脚分别为5V和GND,连接好后代码如下:

import RPi.GPIO as GPIO
import time

 

# Use BCM GPIO references
# instead of physical pin numbers

GPIO.setmode(GPIO.BCM)

 

# Define GPIO to use on Pi
GPIO_PIR = 7

 

print "PIR Module Test (CTRL-C to exit)"

 

# Set pin as input
GPIO.setup(GPIO_PIR,GPIO.IN)      # Echo

 

Current_State  = 0
Previous_State = 0

 

try:

 

  print "Waiting for PIR to settle ..."

 

  # Loop until PIR output is 0
  while GPIO.input(GPIO_PIR)==1:
    Current_State  = 0   

 

  print "  Ready"     
    
  # Loop until users quits with CTRL-C
  while True :
   
    # Read PIR state
    Current_State = GPIO.input(GPIO_PIR)
   
    if Current_State==1 and Previous_State==0:
      # PIR is triggered
      print "  Motion detected!"
      # Record previous state
      Previous_State=1
    elif Current_State==0 and Previous_State==1:
      # PIR has returned to ready state
      print "  Ready"
      Previous_State=0
      
    # Wait for 10 milliseconds
    time.sleep(0.01)      
      
except KeyboardInterrupt:
  print "  Quit" 
  # Reset GPIO settings
  GPIO.cleanup()

### 树莓派5上使用红外传感器的方法 #### 设置硬件连接 对于树莓派5上的红外传感器应用,首先要完成的是硬件部分的接线工作。以常见的被动式红外传感器为例,这种类型的设备通常配备有三个引脚:电源(VCC),接地(GND)以及信号输出(DO)[^2]。具体来说: - VCC应接到树莓派的3.3V供电接口; - GND需与树莓派的地线相连; - DO作为数据输出口,则要接入指定的GPIO引脚以便读取检测结果。 针对特定型号如树莓派5,在进行上述操作前建议查阅官方文档确认具体的引脚定义和功能分配情况[^1]。 #### 编写Python程序初始化GPIO并监听事件 为了使能对红外传感器的数据采集能力,需要利用`RPi.GPIO`库来配置相应的GPIO引脚为输入模式,并编写一段简单的Python代码实现基本的功能逻辑: ```python import RPi.GPIO as GPIO import time Infrared = 18 # 定义使用的GPIO编号 def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(Infrared, GPIO.IN) try: setup() while True: if GPIO.input(Infrared): # 当接收到高电平时触发动作 print("Motion detected!") else: print("No motion.") time.sleep(0.5) except KeyboardInterrupt: pass finally: GPIO.cleanup() # 清理释放资源 ``` 此段代码实现了周期性的检查红外传感器的状态变化,并打印出是否有活动被侦测到的信息。 #### 处理异常状况下的响应机制 考虑到实际应用场景中的复杂性和不确定性因素的影响,应当加入必要的错误处理措施,比如捕获可能发生的中断请求(`KeyboardInterrupt`)或者其它未预见的情况,从而确保系统的稳定运行和服务连续性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值