前引

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

环境

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

摄像头安装

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

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

  3. 配置系统

    编辑/boot/config.txt文件

    # 编辑/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位中使用。

pip3 install numpy --upgrade
pip3 install picamera2

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

详细代码

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

import RPi.GPIO as GPIO  ##引入GPIO模块
import time
from picamera2 import Picamera2, Preview

def photograph():
    picam2 = Picamera2()

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

    now = time.strftime("%Y%m%d%H%M%S",time.localtime(time.time()))
    file_name="/Disk/MyCloud/Safe/"+now+".jpg"
    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('.log','a',encoding='utf-8');
            now = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(time.time()))
        except:
            str=now+'/t相机调用失败'
            f.write(str)
        finally:
            str=now+"/t有人来访"
            f.write(str)
            f.close()
    time.sleep(2)

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

最后修改:2024 年 05 月 12 日
如果觉得我的文章对你有用,请随意赞赏