树莓派课程小项目人体感应传感器实现:当检测到人体后,oled显 示somebody,四盏L ED灯闪烁,蜂鸣器同时发出声音
时间: 2024-10-23 07:02:47 浏览: 30
树莓派课程中的人体感应传感器项目通常会涉及以下几个步骤:
1. **硬件准备**:
- **树莓派(Raspberry Pi)**:作为项目的控制中心。
- **红外人体感应模块(PIR sensor)**:用于侦测人体热源。
- **OLED显示屏**:显示文字“somebody”。
- **LED灯**:四颗,连接到树莓派的GPIO端口,用于闪烁提示。
- **蜂鸣器**:通过GPIO连接发声。
2. **软件安装**:
- 安装必要的Python库,如RPi.GPIO(用于操作GPIO)、picamera(如果需要实时视频流)和 wiringpi(OLED和LED驱动)。
3. **代码编写**:
- 使用Python编写程序,首先初始化所有设备:
```python
import RPi.GPIO as GPIO
from PIL import Image, ImageDraw
import time
# 初始化GPIO和设备
GPIO.setmode(GPIO.BCM)
PIR_PIN = 4
OLED_WIDTH = 128
OLED_HEIGHT = 64
LED_PINS = [7, 8, 9, 10]
buzzer_PIN = 11
```
- **人体感应部分**:设置PIR传感器,当检测到人体时触发事件。
```python
def detect_person(channel):
print("Somebody detected!")
GPIO.output(LED_PINS, GPIO.HIGH) # 开启LED灯
GPIO.buzzer(buzzer_PIN, 1000) # 蜂鸣器响铃
time.sleep(0.5) # 灯闪后延迟
GPIO.output(LED_PINS, GPIO.LOW) # 关闭LED灯
```
- **OLED显示部分**:使用wiringpi或适当库更新OLED显示内容。
```python
def update_oled():
display.show(Image.fromarray(oled_data)) # 显示"somebody"
```
- **主循环和中断处理**:
```python
GPIO.add_event_detect(PIR_PIN, GPIO.RISING, callback=detect_person)
while True:
update_oled()
time.sleep(1) # 每秒刷新一次OLED
```
4. **注意事项**:
- 在实验开始前,请确保安全地接地,并按照树莓派的最佳实践设置GPIO。
- 如果有多个用户,可能会导致误报,可以考虑添加延时或计数器功能优化。
阅读全文