文章大纲

大纲中为系统配置软件镜像源部分中文章链接错误,正确链接为Debian11 更换软件源

目录

  • 硬件连接
  • 系统安装与配置
    • 安装
    • 配置
  • python 环境安装与配置
  • 软件组网

硬件连接

CSI摄像头与树莓派4B的连线

Overview_CSI
Flat_cable&&CSICamera
Flat_cable&&RPi4B

接入树莓派4B:将排线的金属面背面朝向有线网口位置,插入主板CSI接口,切记不能接入DSI接口。

树莓派4B与4GLTE的连接

Overview_4G

接入4GLTE:将4G模块板上预留在螺柱上的螺丝拧下->将螺丝孔位与树莓派4B的螺丝孔位对齐->并将4G模块板上预留的螺丝穿过孔位拧在螺柱上

系统の安装与配置

安装

  1. 系统的选择
    根据官方文档,在最新版本的Raspberry Pi OS(Debian版本为12+)中树莓派文档—>摄像头软件

    1. Unicam:Raspberry Pi SoC 都有两个摄像头接口,支持 CSI-2 D-PHY 1.1 或 Compact Camera Port 2 (CCP2) 信号源。该接口的代号为 Unicam。第一个 Unicam 实例支持两个 CSI-2 数据通道,第二个支持四个。每个通道的运行速度可达 1Gbit/s(DDR,因此最大链接频率为 500MHz)。
    2. 软件接口:V4L2 软件接口是与 Unicam 外围设备通信的唯一途径。以前还有固件和 MMAL 原始摄像头组件接口,但现在已不再支持。

      注意:Unicam 的 V4L2 接口仅在使用 libcamera 时可用(而Raspberry Pi OS Bookworm 将摄像头捕捉应用程序从 libcamera-* 更名为 rpicam-。符号链接允许用户暂时使用旧名称。尽快采用新的应用程序名称。 Bookworm之前的 Raspberry Pi OS 版本仍使用 libcamera- 名称)

    • 所以我们要选择Debian版本11的RPiOS。
  2. 如何刷写系统到TF卡
    步骤分为3步:

    1. 下载系统镜像和树莓派官方的刷写工具
      打开浏览器,输入raspios_arm64_Debian11下载镜像,输入raspios_imager_latest下载官方的刷写工具。
    2. 将系统写入到TF卡
      打开官方的刷写工具,在第一面选择好我们树莓派的型号,下一步选择镜像,我们下滑到最底下选择Others Image,选择我们下载的镜像,然后选择TF卡,最后点击写入。
    3. 将TF卡插入树莓派,开机
      将TF卡插入树莓派,开机,进入系统,此时需要插上外接显示器、外设来进行一个初始化的设置

配置

  1. 启用SSH、SPI、I2C、Legacy Camera支持

    1. 安装raspi-config,在终端中执行sudo apt install -y raspi-config
    2. 安装完成之后执行sudo raspi-config进入后输入用户名
    3. 接着选择第三个接口配置raspi-config-3.png
    4. 然后选择第1、2、4、5个,配置摄像头,SSH,SPI,I2C,选择开启即可;开启完成后,需要关闭树莓派,连接摄像头并重新开机raspi-config-3.png
  2. 为系统配置软件镜像源

1
2
3
4
5
6
7
8
9
10
11
sudo nano /etc/apt/source.list
#将原配置中的软件源用#注释掉或者直接删除
#复制以下内容进去Ctrl+X 按Y保存
deb https://mirrors.tencent.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye main non-free contrib
deb https://mirrors.tencent.com/debian-security/ bullseye-security main
deb-src https://mirrors.tencent.com/debian-security/ bullseye-security main
deb https://mirrors.tencent.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.tencent.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.tencent.com/debian/ bullseye-backports main non-free contrib

在终端中执行sudo apt update更新软件源
3. 安装必备软件包
在终端中执行以下代码安装我们必备的软件包

1
apt install build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev curl wget unzip git sudo openssh-server -y

python环境の安装与配置

  1. pyenv
    在终端中输入wget -O- https://d.maimaioo.top/p/TXLighthouseCos/Blog_Downloads/pyenv-installer | bash并回车等待安装完成
    根据命令行的提示将以下内容添加到.bashrc文件的最末尾nano .bashrc并应用source .bashrc 方向键可以控制光标上下左右
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # Load pyenv automatically by appending
    # the following to
    # ~/.bash_profile if it exists, otherwise ~/.profile (for login shells)
    # and ~/.bashrc (for interactive shells) :

    export PYENV_ROOT="$HOME/.pyenv"
    [[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
    eval "$(pyenv init - bash)"

    # Restart your shell for the changes to take effect.

    # Load pyenv-virtualenv automatically by adding
    # the following to ~/.bashrc:

    eval "$(pyenv virtualenv-init -)"
  2. python 3.11.14 && pip
    1. 配置pyenv安装python的镜像源
      安装完pyenv后,我们需要配置pyenv的镜像源,以便于下载python的安装包,原理就是将~/.pyenv/plugins/python-build/share/python-build/3.11.14文件中的www.python.org/python替换为mirrors.tuna.tsinghua.edu.cn/python。附上修改好的文件,可以通过替换达到配置镜像源的效果。
      1
      2
      wget https://d.maimaioo.top/p/TXLighthouseCos/Blog_Downloads/3.11.14
      mv ~/3.11.14 .pyenv/plugins/python-build/share/python-build/
    2. 安装python 3.11.14
      在终点中输入pyenv install 3.11.14并回车等待安装完成
      这时有两个方向,这两个方向各有优缺点 在这里我使用pyenv global 3.11.14
      • 选择pyenv global 3.11.14
        • 优点:
          1. 全局默认设置:设置后在整个系统的所有位置都生效(除非被 local 覆盖)
          2. 简单方便:不需要为每个项目单独配置
          3. 后备版本:当没有 local 设置时,始终使用 global 版本
          4. 适用于个人开发环境:如果你主要使用特定版本的 Python
        • 缺点:
          1. 缺乏隔离性:所有项目默认使用相同版本
          2. 可能造成冲突:不同项目可能需要不同 Python 版本
          3. 不够灵活:无法为不同项目快速切换版本
      • 选择pyenv local 3.11.14
        • 优点:
          1. 项目级隔离:可以为每个项目设置独立的 Python 版本
          2. 版本一致性:确保项目团队使用相同的 Python 版本
            3.自动切换:进入项目目录时自动切换版本
          3. .python-version 文件:可将配置纳入版本控制
          4. 支持子目录:设置会应用到目录及其子目录
        • 缺点:
          1. 需要单独配置:每个项目都需要单独设置
          2. 可能忘记设置:新项目需要手动配置
          3. 版本文件冲突:如果有嵌套的 .python-version 文件,可能产生混淆
  3. 配置pip镜像源
    在终端中运行pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配置全局pip的镜像源为清华大学的镜像源。
  4. uv
    cd 进入项目文件夹后运行pyenv local 3.11.14将3.11.14设置为当前目录的python版本,我们运行pip install uv安装uv,安装完后可以运行pip list查看uv是否安装成功。

软件组网

Easytier

  1. 如何安装软件
    在Easytier官方文档中提供了一键脚本,我们只需要将以下命令复制进终端并执行,等待安装完成后就可进行下一步
    1
    wget -O /tmp/easytier.sh "https://raw.githubusercontent.com/EasyTier/EasyTier/main/script/install.sh" && sudo bash /tmp/easytier.sh install --gh-proxy https://ghfast.top/
  2. 修改默认配置文件
    要想修改Easytier的默认配置,我们首先需要将其服务暂停。以下是涉及的相关命令
    1
    2
    3
    4
    nano /opt/easytier/config/default.conf #编辑easytier@default服务的配置文件
    systemctl stop easytier@default # 停止easytier@default服务
    systemctl start easytier@default # 启动easytier@default服务
    systemctl status easytier@default # 查看easytier@default服务状态
  3. 检查是否建立peer邻居
    我们修改完Easytier的默认配置并重启其配置后,我们可以在终端中执行/opt/easytier/easytier-cli peer以查看目前建立的peer邻居情况

补充如何在树莓派上测试CSI摄像头

测试

我们将使用v4l2-ctl工具进行摄像头测试

1
2
3
4
5
6
7
8
9
10
11
12
# 安装v4l-utils包,其中包含v4l2-ctl工具
sudo apt update && sudo apt install v4l-utils ffmpeg -y
# 检查摄像头是否被系统识别
ls /dev/video*
# 列出所有可用的视频设备
v4l2-ctl --list-devices
# 查看摄像头支持的分辨率和格式
v4l2-ctl --list-formats-ext
# 查看摄像头详细信息
v4l2-ctl -d /dev/video0 --info
# 查看摄像头参数设置
v4l2-ctl -d /dev/video0 --all

物理上连接好摄像头(USB Or 排线)后,我们可以通过v4l2-ctl --list-devices来查看摄像头是否被系统识别

  • 一般来说通过排线与树莓派连接的摄像头,会被识别为/dev/video0,通过USB连接的摄像头,会被识别为/dev/video1或/dev/video_(_上为任意正整数)
    以我手上的树莓派为例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
rpi4b@8-303-raspberrypi:~ $ v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
/dev/video10
......
/dev/media3

bcm2835-isp (platform:bcm2835-isp):
/dev/video13
......
/dev/media0
/dev/media1

mmal service 16.1 (platform:bcm2835-v4l2-0):
/dev/video0

rpivid (platform:rpivid):
/dev/video19
/dev/media2
  1. CSI摄像头设备:
1
2
mmal service 16.1 (platform:bcm2835-v4l2-0):
/dev/video0

这就是你的CSI摄像头的主设备节点。树莓派上的CSI摄像头通常通过/dev/video0访问。
2. 其他设备说明:

  • bcm2835-isp:这是树莓派的图像信号处理器(ISP),用于摄像头图像处理
  • bcm2835-codec-decode:视频编解码器(硬件解码)
  • rpivid:树莓派4的视频编码/解码硬件(H.265/H.264)
  1. 补充USB摄像头设备:
1
2
3
4
USB Camera3: USB Camera3 (usb-0000:01:00.0-2):
/dev/video1
/dev/video2
/dev/media4
  • USB Camera3 (USB摄像头) 功能:通过USB接口连接的外部摄像头,设备路径显示连接到PCIe USB控制器(usb-0000:01:00.0-2),通常video1是主视频流,video2可能是元数据或第二个流(如深度摄像头),media4管理USB摄像头的媒体流

我们可以通过

1
2
3
4
5
#--set-fmt-video=width= ,height= 设置画面的分辨率为640x480
#pixelformat= 设置视频编码格式
#可以通过v4l2-ctl -d /dev/video0 --list-formats-ext查看支持的编码格式
v4l2-ctl -d /dev/video0 --set-fmt-video=width=640,height=480,pixelformat=H264
ffplay /dev/video0

来实现摄像头画面的预览