前引
最近由于一些原因,一个人在外面租房住,老是担心会有人进到出租屋里面来(被害妄想症吧 (~ ̄▽ ̄)~),也刚好有些小模块可以实现对访客监控的功能,就做了这个
环境
- 树莓派4B
- 人体红外传感器HC-RC501
- SCI摄像头(感光芯片OV5647)
- 树莓派操作系统 aarch64
摄像头安装
- 连接摄像头
系统启用摄像头
运行命令
sudo spari-config
进入选择界面,Interface Options
->Legacy Camera
-><Yes>
,设置完后会重启设备,这时候还无法正常使用摄像头配置系统
编辑
/boot/config.txt
文件# 编辑/boot/config.txt sudo vim /boot/config.txt # 添加dtoverlay # 将其修改为自己芯片对于的值,添加在文件最后 # ov5647是我自己摄像头的感光芯片号,根据个人情况进行修改 gpu_mem=128 dtoverlay=ov5647
配置好后重启系统
输入命令
libcamera-hello
如果没有报错,说明配置成功
python包安装
由于64位版本的系统中已经无法使用raspistill
来调用摄像头,Python包PiCamera也已经无法使用,所以之前32位的代码在这里已经无法使用;但好在已经推出了PiCamera2,可以在64位中使用。
pip3 install numpy --upgrade
pip3 install picamera2
关于PiCamera2的更多相关内容可以看下面链接
{% link picamera2,github,https://github.com/raspberrypi/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,代码不规范或者错误的地方欢迎批评指正🤞