Быстрый старт: поворотная камера PTZ для Raspberry Pi
Подключение оборудования

Настройка ПО
Поддерживаемые платформы и ОС
| Поддерживаемые платформы и ОС | |||
|---|---|---|---|
| Платформа | Bookworm (rpicam) | Bullseye (libcamera/rpicam) | Buster (raspistill) |
| Raspberry Pi 5 | √ | ||
| Raspberry Pi 4B / 3B+ / 3A+ / Zero / Zero 2 W | √ | √ | |
| Raspberry Pi CM3 / CM3+ / CM4 / CM5 (нужна дополнительная плата-адаптер) | √ | √ |
Настройка device tree
Комплект PTZ с камерой OV5647
Настройка комплекта поворотной камеры PTZ с OV5647 для разных ОС и платформ описана в разделе «Настройка ПО — OV5647».
Комплект PTZ с камерой IMX219
Настройка комплекта поворотной камеры PTZ с IMX219 для разных ОС и платформ описана в разделе «Настройка ПО — IMX219».
Комплект PTZ с камерой IMX477
Настройка комплекта поворотной камеры PTZ с IMX477 для разных ОС и платформ описана в разделе «Настройка ПО — IMX477».
Комплекты PTZ на Raspberry Pi 5 (Bookworm)
| Платформа | ОС | Поддерживаемые сенсоры |
|---|---|---|
| Raspberry Pi 5 | Bookworm | OV5647 |
| Raspberry Pi 5 | Bookworm | IMX219 |
| Raspberry Pi 5 | Bookworm | IMX477 |
Комплекты PTZ с OV5647 и IMX219
Комплекты PTZ с OV5647 и IMX219 работают на Raspberry Pi 5 так же, как на Raspberry Pi 4, но в Bookworm на Raspberry Pi 5 нужно настроить device tree. Остальные шаги — как в разделе «Комплекты PTZ в Bullseye» ниже.
Комплект PTZ с IMX477
Установите зависимости
sudo apt update
sudo apt install -y libatlas-base-dev python3-opencv python3-picamera2
sudo apt install python3-numpy
Скачайте исходный код
git clone https://github.com/ArduCAM/PTZ-Camera-Controller.git
Включите модуль камеры
sudo nano /boot/firmware/config.txt
#Find the line: camera_auto_detect=1, update it to:
camera_auto_detect=0
#Find the line: [all], add the following item under it:
dtoverlay=imx477
#Save and reboot.
Если комплект подключён к порту cam0 на Raspberry Pi 5, внесите такие изменения:
sudo nano /boot/firmware/config.txt
#Find the line: camera_auto_detect=1, update it to:
camera_auto_detect=0
#Find the line: [all], add the following item under it:
dtoverlay=imx477,cam0
#Save and reboot.
Включите I2C
1. Выполните команду sudo raspi-config.
2. Выберите пункт Interface Options и нажмите Enter.

3. Выберите I2C и нажмите Enter.

4. Выберите YES и нажмите Enter для подтверждения.

5. Выйдите из raspi-config и перезагрузите Raspberry Pi, чтобы изменения вступили в силу.
Запустите FocuserExample.py
cd PTZ-Camera-Controller/B016712MP
python3 FocuserExample.py
После запуска программы сначала нажмите клавишу T и подождите около 8 секунд: режим сменится с «Fix» на «Adjust». В режиме «Adjust» зумом, фокусом, ИК-фильтром и другими функциями можно управлять с клавиатуры.

Подробнее — в документации проекта на GitHub.
Комплекты PTZ в Bullseye
Шаг 1. Установите OpenCV
sudo apt-get install python3-opencv
Шаг 2. Скачайте исходный код
git clone https://github.com/ArduCAM/PTZ-Camera-Controller.git
Шаг 3. Включите I2C
1. Выполните команду sudo raspi-config.
2. Выберите пункт Interface Options и нажмите Enter.

3. Выберите I2C и нажмите Enter.

4. Выберите YES и нажмите Enter для подтверждения.

5. Выйдите из raspi-config и перезагрузите Raspberry Pi, чтобы изменения вступили в силу.
Шаг 4. Включите драйвер камеры
Настройте драйвер по разделу для вашей камеры: «Камеры Raspberry Pi — настройка device tree».
Шаг 5. Запустите пример
Камеры OV5647 и IMX219
cd PTZ-Camera-Controller
python3 FocuserExample.py
Камера IMX477
cd PTZ-Camera-Controller/B016712MP
python3 FocuserExample.py

Подробнее — в документации проекта на GitHub.
Камеры PTZ в Ubuntu
Шаг 1. Установите зависимости
sudo apt-get update && sudo apt-get upgrade
sudo apt install -y cmake
sudo apt install libyaml-dev
sudo apt install libpng-dev
sudo apt install -y libcamera-dev libepoxy-dev libjpeg-dev libtiff5-dev
sudo apt install -y python3-pip git
sudo pip3 install jinja2
sudo apt install -y libboost-dev
sudo apt install -y libgnutls28-dev openssl libtiff5-dev
sudo apt install -y qtbase5-dev libqt5core5a libqt5gui5 libqt5widgets5
sudo apt install -y meson
sudo pip3 install pyyaml ply
sudo pip3 install --upgrade meson
sudo apt install -y libglib2.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y cmake libboost-program-options-dev libdrm-dev libexif-dev
sudo apt-get install python-opencv
sudo apt-get install python3-smbus
Шаг 2. Соберите libcamera
git clone git://linuxtv.org/libcamera.git
cd libcamera
meson build --buildtype=release -Dpipelines=raspberrypi -Dipas=raspberrypi -Dv4l2=true -Dgstreamer=enabled -Dtest=false -Dlc-compliance=disabled -Dcam=disabled -Dqcam=enabled -Ddocumentation=disabled -Dpycamera=enabled
ninja -C build # use -j 2 on Raspberry Pi 3 or earlier devices
sudo ninja -C build install
#Adding dynamic link libraries to __int_py will not copy successfully
sudo cp -r ~/libcamera/build/src/py/libcamera/ /usr/local/lib/python3.10/dist-packages/
sudo rm /usr/local/lib/python3.10/dist-packages/libcamera/__init__.py
sudo bash -c 'cat /home/#your account name#/libcamera/build/src/py/libcamera/__init__.py >> /usr/local/lib/python3.10/dist-packages/libcamera/__init__.py'
Шаг 3. Соберите libcamera-apps
git clone https://github.com/raspberrypi/libcamera-apps.git
cd libcamera-apps
mkdir build
cd build
cmake .. -DENABLE_DRM=1 -DENABLE_X11=1 -DENABLE_QT=1 -DENABLE_OPENCV=0 -DENABLE_TFLITE=0
make -j4 # use -j1 on Raspberry Pi 3 or earlier devices
sudo make install
sudo ldconfig # this is only necessary on the first build
Шаг 4. Соберите python-kms++
git clone https://github.com/tomba/kmsxx.git
cd kmsxx
git submodule update --init
meson build
sudo ninja -C build install
sudo cp -r ~/kmsxx/build/py/pykms/ /usr/local/lib/python3.10/dist-packages/
sudo ldconfig
Шаг 5. Установите Picamera2
sudo apt install -y python3-pyqt5 python3-prctl libatlas-base-dev ffmpeg python3-pip
pip3 install numpy --upgrade
pip3 install picamera2
Шаг 6. Измените файл конфигурации
sudo vi /boot/firmware/config.txt
Найдите строку camera_auto_detect и замените её на camera_auto_detect=0.
В конец файла добавьте строку dtoverlay= с названием сенсора.
Например:
dtoverlay=imx477
Шаг 7. Разрешите доступ к /dev/dma_heap в Ubuntu
# add rule in /etc/udev/rules.d/raspberrypi.rules and add rule
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
# Add user to video group Then reboot
sudo usermod -a -G video $USER
Шаг 8. Запустите проект
git clone https://github.com/ArduCAM/PTZ-Camera-Controller.git
cd PTZ-Camera-Controller
sudo python3 FocuserExample.py