zero2W搭载树莓派HQ相机拍照

zero2W搭载树莓派HQ相机拍照功能实现

硬件

树莓派HQ相机 树莓派zero2W板

刷机

刷机参考教程:www.yisu.com/zixun/53725…

sd(tf)卡格式化
    软件SD Card Formatter

烧录系统
    软件: Win32DiskImager
    系统选择:Raspberry Pi OS (64-bit)-- Raspberry Pi OS Lite
    for Zero 2W
    2022.09之后的版本才增加picamera2库,建议安装最新版本。
(配置完成后拷贝制作完整镜像)

带有linux系统的sd卡还原:
    DiskGenius:清除保留扇区--清除扇区数据
    DiskGenius收费版本提供直接从linux的ext4文件系统到windows系统的文件拷贝。
(使用到的软件备份到nas上) 

20230822--增加备份系统镜像--避免重复安装后续软件
https://blog.csdn.net/sinat_16643223/article/details/108346538
创建空白镜像文件: raspi_backup.img 
取出环境配置好的树莓派存储卡
打开Win32DiskImager
选择对应的存储设备和刚刚创建的新镜像
read
完成后系统备份到新镜像中了, 后面可直接用该镜像重新安装刷机。

树莓派系统初始配置

第一次开机或sudo raspi-config
键盘配置
    Localisation Options--Keyboard--other--chinese--hanyu pinyin
时区配置
    Localisation Options--TimeZone--Asia--shanghai
开启ssh
    Interface Options--SSH
wifi配置
    在raspi-config中配置报错找不到接口。
    直接修改配置文件sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
    增加要连接的wlan
        network={
            ssid="wifi_name"
            psk="wifi_password"
        }
    配置完重启,检查ifconfig是否获取到ip
    rfkill list查看射频是否打开,有yes说明锁住了
    rfkill unblock all打开射频
    sudo ifconfig wlan0 up重新打开wifi或重启树莓派

无线热点配置
    手机开启无线热点,需要设计AP频段为2.4GHz, zero2W不能连接5GHz频段
    笔记本电脑设置热点
    设备管理器--找到对应的无线网卡--高级--属性--无线模式(Wireless Mode)--2.4GHz 802.11b/g
    不同网卡对应选项可能不同,主要尝试选择2.4GHz和802.11b/g协议标准。

串口配置
串口配置主要是为了后续方便通过串口进行调试。
    bullseyes系统没有wiringPi包,需要手动安装
    zero2W需要wiringPi2.60以上
    需要先安装git: sudo apt-get install git
    git clone https://github.com/WiringPi/WiringPi.git
    1. 显示tmp下的WiringPi包
    ls  
    1. 进入WiringPi的路径
    cd WiringPi/ 
    1. 执行安装指令
    ./build
    1. 查看是否安装成功
    gpio -v

    开启串口
    sudo raspi-config--Interface Options--Serial--Enable
    默认波特率115200
    串口连接8--10

相机驱动配置

bullseye不提供raspistill的支持,只提供libcamera。
检测摄像头
vcgencmd get_camera
    supported=0 detected=0, libcamera interfaces=0
    supported=1 detected=1 libcamera interfaces=0
    supported=1 detected=0 libcamera interfaces=1
sudo raspi-config中Interface Options--Legacy Camera--disable camera
修改sudo nano /boot/config.txt
1. 取消自动检测相机
camera_auto_detect=1    # 开机后会自动检测相机
camera_auto_detect=0    # 开机后不会自动检测
1. 对应实际相机型号
dtoverlay=imx477    # HQCamera
dtoverlay=imx296    # GSCamera
重启树莓派

libcamera库测试相机功能

参见libcamera官方文档
实时预览:libcamera-hello -t 0 --width 4056 --height 3040
                        预览时间        分辨率
单张拍照:
libcamera-jpeg -o test.jpg -t 2000 --width 640 --height 480
曝光控制
libcamera-jpeg -o test.jpg -t 2000 --shutter 20000 --gain 1.5

截止到20230207,官方已经针对libcamera提供了picamera2库,方便用户使用Python程序调用。
--更新, bullseyes系统2022年4月之后的版本才预安装了picamera2库, 之前的版本需要单独下载

python拍照程序

from picamera2 import Picamera2
import time

picam2 = Picamera2()  #新建相机实例
camera_config = picam2.create_preview_configuration() #生成相机预览配置文件
picam2.configure(camera_config) #使用该预览配置配置相机系统
picam2.start() #运行相机
time.sleep(2) #等待两秒钟
picam2.capture_file("test.jpg") #将图像保存到test.jpg

设置拍照程序开机自启动

开机程序自启动
raspi-config
ssh
相机
打开串口
(1)进入目录 /etc/profile
设置python程序自启动
(1)sudo nano /etc/profile
(2)添加命令
    sudo python3 cap.py & 
加&是后台加不阻塞运行
(3)检查程序运行情况
    ps -a 或 top查看程序进程号
    kill -9 pid 关闭指定进程号进程
(2)添加shell 命令 sudo python3 cap.py & 后台运行
关闭正在运行的开机自启程序
    ps -a 或 top查看程序进程号
    kill -9 pid 关闭进程

查看日志。

HQ相机最高分辨率

使能最高分辨率
HQ相机最高分辨率为4056*3040
在使用HQ相机拍照时,设置最高分辨率拍照会报错,Invalid resolution requested
参考解决办法链接
https://blog.csdn.net/zachary_hao/article/details/125761314

根据 camera guide和 config.txt说明"Note: you may need to increase gpu_mem in /boot/config.txt to achieve full resolution"
要将/boot/config.txt gpu_mem参数增加,raspberry pi 4B + 8GB默认gpu_mem = 128, 改成256, reboot。