HDMI to CSI Adapter
|
| |||||||||||||||||
| |||||||||||||||||
产品介绍
这是一款将 HDMI 信号转为 CSI 信号的树莓派扩展模块,HDMI 输入最高支持 1080p 30fps.向下兼容。用法和树莓派标准 CSI 摄像头一致,适用于支持 HDMI 接口的相机,兼容树莓派全系列主板.
产品参数
- 主芯片: TC358743XBG
- 输入信号
- 视频:HDMI1.4, RGB888,最高支持 1080p@30
- 音频:HDMI音频
- 输出信号:
- 视频:2 lanes MIPI CSI-2
- 音频:I2S音频输出,音频流格式LPCM
- 操作系统:Raspberry Pi OS
- 工作电压:3.3V
- 工作温度: -30° ~ 70°C
硬件连接
- 视频:
将转接头的FPC排线插入到CSI接口。 如果是Pi 2B、3B、3B+ CSI口位于网口和HDMI接口之间,如果是Pi 4B的话,CSI口位于HDMI 1接口和音频接口之间,如果是Pi zero的话,CSI口位于供电口一侧. 注意排线银色面(金属面)要朝向HDMI接口。将排线插槽的黑色扣子拨开,插入排线。排线需要齐插入插槽,注意避免排线弯折的同时要插紧,然后扣紧黑色扣子。
- 音频:
连接音频,需要用户自己另外准备排线,并做焊接。将HDMI to CSI一侧预留的焊口接到树莓派的I2S引脚上,连接关系如下图。
| HDMI to CSI | Raspberry Pi |
|---|---|
| WFS | (PIN35)GPIO19 |
| SCK | (PIN12)GPIO18 |
| SD | (PIN38)GPIO20 |
| GND | GND |
软件配置
注意,HDMI to CSI 摄像头不支持libcamera驱动。
- 修改config.txt文件
sudo nano /boot/config.txt
- 将以下语句加入文件最后
dtoverlay=tc358743 dtoverlay=tc358743-audio
- 保存文件
- 修改 cmdline.txt文件
sudo nano /boot/cmdline.txt
将以下内容加入文件第一行末尾
cma=96M
- 下载并安装驱动程序
cd wget https://www.waveshare.net/w/upload/8/89/TC358743-Driver.zip unzip TC358743-Driver.zip cd ~/TC358743-Driver sudo sh set_edid.sh
- 重新成功后重启系统
sudo reboot
视频测试
- 使用yavta采集视频
- 将设备都接好
- 进入程序目录并运行
cd ~/TC358743-Driver/yavta/yavta/ sudo make clean make ./yavta --capture=1000 -n 3 --encode-to=file.h264 -f UYVY -m -T /dev/video0
程序会采集1000帧图像,并保存为file.h264文件
- 使用gstreamer采集视频
- 安装gstreamer工具
sudo apt install gstreamer1.0-tools -y
- 采集视频:
gst-launch-1.0 -vvv v4l2src ! "video/x-raw,framerate=30/1,format=UYVY" ! v4l2h264enc extra-controls="controls,h264_profile=4,h264_level=13,video_bitrate=256000;" ! "video/x-h264,profile=high, level=(string)4.2" ! h264parse ! queue ! matroskamux name=mux ! filesink location=file.mkv
拓展屏幕到树莓派
若使用该功能,需删除dtoverlay=tc358743和dtoverlay=tc358743-audio的配置,只做以下配置,目前只支持720p
- 修改 cmdline.txt文件
sudo nano /boot/cmdline.txt
将以下内容加入文件第一行末尾
cma=96M
保存
- 然后进行以下操作打开legacy camera
sudo raspi-config
选择Interface Options -> Legacy Camera -> Yes,退出重启。
- 开机终端运行
raspivid -t 0
音频测试
- 运行arecord -l指令检查, 正常会识别到tc358743设备,比如
**** List of CAPTURE Hardware Devices **** card 2: tc358743 [tc358743], device 0: bcm2835-i2s-dir-hifi dir-hifi-0 [bcm2835-i2s-dir-hifi dir-hifi-0] Subdevices: 1/1 Subdevice #0: subdevice #0
注:其中card 2是代表声卡的编号,在后续采集音频中会使用到。
- 采集音频并保存为wav文件
arecord -D hw:2 -d 25 -f cd test1.wav
注:其中hw:2 是设置声卡设备,需要和实际的声卡编号,否则无法正常采集音频信息
Raspberry Pi 5采集视频
注意:由于系统版本限制,目前采集存在掉帧问题
硬件连接
将 HDMI to CSI 模块的 FPC 排线 插入树莓派 5 的 CSI Camera 1接口,插线时,请金属触点朝向网口接口方向插入,HDMI接口需要接入连接HDMI的设备才能正常采集。
另外HDMI输出的设备需要支持相对应的分辨率才能正常使用。
操作步骤
- 开机打开终端输入指令编辑配置文件
sudo nano /boot/firmware/config.txt
- 在文件的文末添加下面内容按下ctrl^y回车保存:
dtoverlay=tc358743
- 下载EDID文件并解压:
wget https://www.waveshare.net/w/upload/4/43/Hdmi_to_csi_driver.zip unzip Hdmi_to_csi_driver.zip
- 重启系统
sudo reboot
- 使用下方指令采集视频:
cd hdmi_to_csi_driver/ v4l2-ctl --list-devices
注意:上面输出的信息中”rp1-cfe“部分的设备节点为”/dev/media0”,如遇到不同编号时,需要做对应修改。
- 下面以 1280x720p60 为例进行配置(目前支持720P60和1080P30)
v4l2-ctl -d /dev/v4l-subdev2 --set-edid=file=720p60edid v4l2-ctl -d /dev/v4l-subdev2 --set-dv-bt-timings query
- 配置接口
media-ctl -d /dev/media0 –r media-ctl -d /dev/media0 -l ''\''csi2'\'':4 -> '\''rp1-cfe-csi2_ch0'\'':0 [1]' media-ctl -d /dev/media0 -V ''\''csi2'\'':0 [fmt:RGB888_1X24/1280x720 field:none colorspace:srgb]' media-ctl -d /dev/media0 -V ''\''csi2'\'':4 [fmt:RGB888_1X24/1280x720 field:none colorspace:srgb]' v4l2-ctl -v width=1280,height=720,pixelformat=RGB3
- 以上步骤操作正常的话,现在可以采集HDMI的视频了。先用下面命令测试是否正常
v4l2-ctl --stream-mmap=3 --stream-count=1000 --stream-to=/dev/null
- 采集视频到文件
v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1280,height=720,pixelformat='RGB3' --stream-mmap=4 --stream-skip=3 --stream-count=2 --stream-to=hc1xx.rgb --stream-poll
- 用自带的工具 ffplay 播放生成的文件
ffplay -f rawvideo -video_size 1280x720 -pixel_format bgr24 hc1xx.rgb
