前引

最近由于一些原因,一个人在外面租房住,老是担心会有人进到出租屋里面来(被害妄想症吧 (~ ̄▽ ̄)~),也刚好有些小模块可以实现对访客监控的功能,就做了这个

环境

  • 树莓派4B
  • 人体红外传感器HC-RC501
  • SCI摄像头(感光芯片OV5647)
  • 树莓派操作系统 aarch64

摄像头安装

  1. 连接摄像头
  2. 系统启用摄像头

    运行命令sudo spari-config进入选择界面,Interface Options->Legacy Camera-><Yes>,设置完后会重启设备,这时候还无法正常使用摄像头

  3. 配置系统

    编辑/boot/config.txt文件

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 编辑/boot/config.txt
    sudo vim /boot/config.txt

    # 添加dtoverlay
    # 将其修改为自己芯片对于的值,添加在文件最后
    # ov5647是我自己摄像头的感光芯片号,根据个人情况进行修改

    gpu_mem=128
    dtoverlay=ov5647

    配置好后重启系统

    输入命令libcamera-hello如果没有报错,说明配置成功

    image-20230709124304611

python包安装

由于64位版本的系统中已经无法使用raspistill来调用摄像头,Python包PiCamera也已经无法使用,所以之前32位的代码在这里已经无法使用;但好在已经推出了PiCamera2,可以在64位中使用。

1
2
pip3 install numpy --upgrade
pip3 install picamera2

关于PiCamera2的更多相关内容可以看下面链接

详细代码

人体红外模块的数据脚可以根据自己需求选择树莓派GPIO口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import RPi.GPIO as GPIO  ##引入GPIO模块
import time
from picamera2 import Picamera2, Preview

def photograph():
picam2 = Picamera2()

preview_config = picam2.create_preview_configuration(main={&quot;size&quot;: (800, 600)})
picam2.configure(preview_config)
picam2.start()

now = time.strftime(&quot;%Y%m%d%H%M%S&quot;,time.localtime(time.time()))
file_name=&quot;/Disk/MyCloud/Safe/&quot;+now+&quot;.jpg&quot;
time.sleep(2)
metadata = picam2.capture_file(file_name)
picam2.close()

HC_Pin = 18

GPIO.setmode(GPIO.BCM)
GPIO.setup(HC_Pin, GPIO.IN)

while True:
if(GPIO.input(HC_Pin)):
try:
photograph()
time.sleep(1)
f = open(&#039;.log&#039;,&#039;a&#039;,encoding=&#039;utf-8&#039;);
now = time.strftime(&quot;%Y-%m-%d %H:%M:%S&quot;,time.localtime(time.time()))
except:
str=now+&#039;/t相机调用失败&#039;
f.write(str)
finally:
str=now+&quot;/t有人来访&quot;
f.write(str)
f.close()
time.sleep(2)

不太会Python,代码不规范或者错误的地方欢迎批评指正🤞