Line 66: |
Line 66: |
| [[File:ADP-MV1-MV-MIPI-X 07.jpg|center|thumb|800x800px|ADP-MV1 power supply]] | | [[File:ADP-MV1-MV-MIPI-X 07.jpg|center|thumb|800x800px|ADP-MV1 power supply]] |
| <br /> | | <br /> |
− | | + | ===== 树莓派5 ===== |
| + | 二者使用15P转22P的FFC同面线连接,注意接触面安装方向。 |
| + | {| class="wikitable" |
| + | !TOP |
| + | !BOTTOM |
| + | |- |
| + | |[[File:ADP-MV1 to RPI5.jpg|center|thumb|600x600px|ADP-MV1 to RPI5]] |
| + | |[[File:ADP-MV1 to RPI5 2.jpg|alt=|center|thumb|600x600px|ADP-MV1 to RPI5_2]] |
| + | |}<br /> |
| ===== 树莓派Model B和Model B+ ===== | | ===== 树莓派Model B和Model B+ ===== |
| 二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。 | | 二者使用1mm间距*15P的FFC异面线连接,注意接触面安装方向。 |
Line 78: |
Line 86: |
| | | |
| ==== RAW系列摄像头连接到树莓派 ==== | | ==== RAW系列摄像头连接到树莓派 ==== |
| + | |
| + | ===== 树莓派5 ===== |
| + | RAW-MIPI-SC132M使用15to22pin同面FFC线,其他RAW系列相机使用22pin异面FFC线。 |
| + | [[File:RAW CAM to RPI5.jpg|center|thumb|800x800px|RAW CAM to RPI5]] |
| + | <br /> |
| | | |
| ===== 树莓派Model B和Model B+ ===== | | ===== 树莓派Model B和Model B+ ===== |
Line 97: |
Line 110: |
| | | |
| 建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。 | | 建议启用树莓派系统的ssh服务及samba服务,这里不再赘述树莓派系统如何开启ssh和samba服务。 |
− | === Legacy模式和V4L2模式介绍 === | + | === V4L2模式和Legacy模式介绍 === |
− | 这两个模式的区别,树莓派官网有详细的[https://www.raspberrypi.com/documentation/accessories/camera.html#libcamera-and-the-legacy-raspicam-camera-stack 介绍]。树莓派网站上提到的libcamera-stack模式与我们所说的V4L2模式架构上一致。
| + | 在最新的树莓派bookworm系统中,已经去掉了对Legacy模式的支持。建议客户使用V4L2模式。 |
| + | |
| + | ==== libcamera以及V4L2模式 ==== |
| + | 现在piOS已全面切换为libcamera-stack模式。 |
| + | |
| + | libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了'''V4L2模式''',而不是使用libcamera-stack。 |
| + | |
| + | 与libcamera-stack相同,我们的'''V4L2模式''',也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。 |
| | | |
| ==== Legacy模式 ==== | | ==== Legacy模式 ==== |
Line 115: |
Line 135: |
| | | |
| 由于两种工作模式不能共存,因此使用V4L2模式时需要关闭Legacy模式。 | | 由于两种工作模式不能共存,因此使用V4L2模式时需要关闭Legacy模式。 |
− |
| |
− | ==== libcamera以及V4L2模式 ====
| |
− | 现在piOS已全面切换为libcamera-stack模式。
| |
− |
| |
− | libcamera-stack本质上以实现isp功能为核心,这点是MV系列相机不需要的。因此,我们采用了'''V4L2模式''',而不是使用libcamera-stack。
| |
− |
| |
− | 与libcamera-stack相同,我们的'''V4L2模式''',也实现了linux驱动层标准的V4L2驱动。基于此驱动,应用层可以直接开发程序获取图像并进行进一步处理。
| |
| | | |
| === 配置命令行全局变量 === | | === 配置命令行全局变量 === |
Line 208: |
Line 221: |
| | | |
| <code>chmod +x *</code> | | <code>chmod +x *</code> |
| + | |
| + | * 对于树莓派5 |
| + | |
| + | <code>sudo ./install_driver_rpi5.sh veye_mvcam</code> |
| + | |
| + | 会在/boot/config.txt中安装CAM1和CAM0两个dtvoerlay。 |
| + | |
| + | * 其他树莓派 |
| | | |
| <code>sudo ./install_driver.sh veye_mvcam</code> | | <code>sudo ./install_driver.sh veye_mvcam</code> |
Line 230: |
Line 251: |
| | | |
| 并且/dev/video0 节点存在,证明摄像头状态正常。 | | 并且/dev/video0 节点存在,证明摄像头状态正常。 |
| + | |
| + | ==== 树莓派5的配置 ==== |
| + | 在树莓派5上,驱动程序现在使用media control API,我们必须先正确设置media graph。这包括正确设置media pad的格式并正确链接它们。 |
| + | |
| + | 我们提供了一系列脚本实现这个功能,保存在rpi5_scripts目录。 |
| + | |
| + | * ./find_entity.sh |
| + | |
| + | <code>$ ./find_entity.sh</code> |
| + | |
| + | <code>Found mvcam @ i2c-4 entity on /dev/media3</code> |
| + | |
| + | <code>Plese get frame from /dev/video0 and use /dev/v4l-subdev2 for camera setting.</code> |
| + | |
| + | <code>Found mvcam @ i2c-6 entity on /dev/media0</code> |
| + | |
| + | <code>Plese get frame from /dev/video8 and use /dev/v4l-subdev5 for camera setting.</code> |
| + | |
| + | 树莓派5重启之后,相机的media node,video node可能发生变化,因此,建议执行后续操作前执行<code>./find_entity.sh</code>以明确设备节点。 |
| + | |
| + | 上述提示信息中,可以看到系统插入了两个相机,以及每个相机的对应的设备节点。 |
| + | |
| + | <code>i2c-4</code>对应板子上的CAM1插口,<code>i2c-6</code>对应板子上的CAM0插口。 |
| + | |
| + | * media_setting_rpi5.sh |
| + | |
| + | <code>./media_setting_rpi5.sh</code> |
| + | |
| + | <code>Usage: ./media_setting_rpi5.sh veyecam2m/csimx307/cssc132/mvcam -fmt [UYVY/RAW8/RAW10/RAW12] -w [width] -h [height]</code> |
| + | |
| + | <code>This shell script is designed to detect the connection of a camera on Raspberry Pi 5.</code> |
| + | |
| + | <code> It utilizes media-ctl and v4l2-ctl commands to configure the linking relationships and data formats of the media pad.</code> |
| + | |
| + | <code> Once completed, you can directly use /dev/video0 or /dev/video8 to obtain image data</code> |
| + | |
| + | 在进行后续操作前,必须执行此脚本以完成参数的配置。 |
| + | |
| + | 举例来说,对于RAW-MIPI-AR0234M: |
| + | |
| + | <code>./media_setting_rpi5.sh mvcam -fmt RAW8 -w 1920 -h 1200</code> |
| + | |
| ====v4l2-ctl 应用范例==== | | ====v4l2-ctl 应用范例==== |
| =====安装v4l2-utils===== | | =====安装v4l2-utils===== |
Line 266: |
Line 329: |
| <small><code> Size: Discrete 3088x2064</code></small> | | <small><code> Size: Discrete 3088x2064</code></small> |
| | | |
− | <small><code> [5]: 'UYVY' (UYVY 4:2:2)</code></small>
| + | 注:对于树莓派5,实际支持的图像格式取决于相机能力,而不是此处的列表。 |
− | | |
− | <small><code> Size: Discrete 3088x2064</code></small>
| |
− | | |
− | 需要特别说明的是,MV系列相机提供的UYVY模式仅作调试使用,且图像宽度不能超过2880。
| |
| | | |
| ====== 列出驱动中实现的相机的可配置参数 ====== | | ====== 列出驱动中实现的相机的可配置参数 ====== |
Line 297: |
Line 356: |
| <code>v4l2-ctl --get-ctrl [ctrl_type]</code> | | <code>v4l2-ctl --get-ctrl [ctrl_type]</code> |
| | | |
− | 以上所有功能,均可使用[[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]实现。
| + | |
| + | 注:对于树莓派5,本节的所有使用v4l2-ctl配置参数的命令需要增加 -d参数来指明配置参数使用的subdev。 |
| + | |
| + | 比如执行./media_setting_rpi5.sh或者./find_entity.sh的时候提示使用/dev/v4l-subdev2进行参数配置。 |
| + | |
| + | 则<code>v4l2-ctl -L</code>需要变更为<code>v4l2-ctl -L -d /dev/v4l-subdev2</code>。 |
| + | |
| + | |
| + | 注:以上所有功能,均可使用[[Mv mipi i2c.sh user guide|mv_mipi_i2c.sh]]实现。 |
| | | |
| 需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明: | | 需要指出的是,以上参数在开始取图的状态均不可修改。下面进行逐个说明: |
Line 332: |
Line 399: |
| | | |
| 设置roi后,最大帧率会自动调整。 | | 设置roi后,最大帧率会自动调整。 |
| + | |
| + | 注:此方法不适用于树莓派5。 |
| | | |
| * 方法2,使用自定义roi_x,roi_y配合<code>--set-fmt-video</code> | | * 方法2,使用自定义roi_x,roi_y配合<code>--set-fmt-video</code> |
Line 343: |
Line 412: |
| | | |
| ===== 设置ROI ===== | | ===== 设置ROI ===== |
− | <code>v4l2-ctl --set-selection=target=crop,top=0,left=0,width=$WIDTH,height=$HEIGHT</code> | + | <code>v4l2-ctl --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_y=0</code> |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT</code> |
| | | |
| ===== 设置帧率 ===== | | ===== 设置帧率 ===== |
Line 349: |
Line 422: |
| | | |
| ===== 可使用如下命令进行帧率统计 ===== | | ===== 可使用如下命令进行帧率统计 ===== |
− | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> | + | <code>v4l2-ctl -d /dev/video0 --set-fmt-video=width=$WIDTH,height=$HEIGHT,pixelformat=GREY --stream-mmap --stream-count=-1 --stream-to=/dev/null</code> |
| | | |
| ===== 保存图片到文件 ===== | | ===== 保存图片到文件 ===== |
Line 459: |
Line 532: |
| | | |
| ===== 实时预览 ===== | | ===== 实时预览 ===== |
| + | 在树莓派5上,vlc进行播放现在有问题,不能使用。 |
| | | |
| ====== 使用vlc播放图像 ====== | | ====== 使用vlc播放图像 ====== |
Line 528: |
Line 602: |
| | | |
| <code>python ./v4l2dev_2_opencv_show_grey.py --width 640 --height 480 --fps 30</code> | | <code>python ./v4l2dev_2_opencv_show_grey.py --width 640 --height 480 --fps 30</code> |
| + | |
| + | 对于树莓派5,需要增加一个<code>--ctldev /dev/v4l-subdev*</code>参数用于指明配置参数的subdev。 |
| | | |
| ==== 触发模式 ==== | | ==== 触发模式 ==== |
Line 533: |
Line 609: |
| | | |
| ===== 设置ROI和帧率 ===== | | ===== 设置ROI和帧率 ===== |
− | <code>v4l2-ctl --set-selection=target=crop,top=0,left=0,width=$WIDTH,height=$HEIGHT</code> | + | <code>v4l2-ctl --set-ctrl roi_x=0</code> |
| + | |
| + | <code>v4l2-ctl --set-ctrl roi_y=0</code> |
| + | |
| + | <code>v4l2-ctl --set-fmt-video=width=$WIDTH,height=$HEIGHT</code> |
| | | |
| <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> | | <code>v4l2-ctl --set-ctrl frame_rate=$FPS</code> |
Line 569: |
Line 649: |
| | | |
| ====== 进行硬触发操作 ====== | | ====== 进行硬触发操作 ====== |
| + | 在其他的shell终端,可以多次执行下面命令进行多次触发。 |
| + | |
| <code>python gpio_trigger.py</code> | | <code>python gpio_trigger.py</code> |
| | | |
Line 775: |
Line 857: |
| === shell脚本进行参数配置 === | | === shell脚本进行参数配置 === |
| 我们提供了shell脚本来配置参数。 | | 我们提供了shell脚本来配置参数。 |
| + | |
| + | https://github.com/veyeimaging/raspberrypi_v4l2/tree/main/mv_tools_rpi |
| | | |
| [[mv_mipi_i2c.sh user guide]] | | [[mv_mipi_i2c.sh user guide]] |
Line 788: |
Line 872: |
| | | |
| === 本文修改记录 === | | === 本文修改记录 === |
| + | |
| + | * 2024-01-01 |
| + | |
| + | 增加对树莓派5的相关说明。 |
| | | |
| *2023-08-16 | | *2023-08-16 |