Несколько камер на Raspberry Pi: адаптеры, мультиплексоры и проекты
Стандартные платы Raspberry Pi (не Compute Module) рассчитаны на одну камеру MIPI, но у Arducam есть решения для подключения нескольких.
Адаптер для нескольких камер Raspberry Pi
Первую ревизию адаптера с поддержкой мультиплексирования камер Pi V1.3 на 5 Мп Arducam выпустила в 2015 году, а в 2018 году — новый адаптер с поддержкой камер на 8 Мп.
Сейчас с ним можно использовать даже новые модули камеры Raspberry Pi HQ на сенсоре IMX477.
Проекты с несколькими камерами на Raspberry Pi
За эти годы пользователи собрали на этом адаптере множество проектов с несколькими камерами на Raspberry Pi. Шесть из них описаны в статье ниже.

6 интересных применений нескольких камер на Raspberry Pi: от морских глубин до космоса
Raspberry Pi — мощный одноплатный компьютер, на котором удобно проверять идеи на прототипе. Чтобы Raspberry Pi стал достаточно „умным“ для наших задач, ему нужно воспринимать окружающий мир. Какое из чувств сильнее всего влияет на нашу повседневную жизнь? Пожалуй, зрение.
Решения Arducam Camarray для нескольких камер
В 2019 году Arducam сделала следующий шаг — добилась синхронной работы нескольких подключённых камер. Так появилась серия Camarray. Новое решение объединяет и масштабирует видео с нескольких камер так, чтобы оно выглядело как изображение одной камеры с тем разрешением и соотношением сторон, которые ожидает штатный драйвер. Другой вариант — обойти ограничения штатного драйвера и полностью выводить все видеопотоки через драйвер V4L2 от Arducam.
Решения Arducam для нескольких камер на Raspberry Pi стали надёжнее, универсальнее и полнее, поэтому продукт 2015 года выполнил свою задачу и уступил место преемникам, о которых рассказано в двух статьях ниже.
Рекомендуем прочитать

Camarray — новое решение Arducam для нескольких камер на встраиваемых системах и периферийных устройствах
Arducam — по её собственным данным, одна из первых компаний, занявшихся решениями с несколькими камерами для популярных встраиваемых систем, — выпустила новое решение для нескольких камер под названием Camarray. Оно позволяет подключить и синхронизировать до 4 модулей камер MIPI на Raspberry Pi, Jetson Nano, Jetson Xavier NX и других платформах.

Плата-адаптер Arducam V2.1 для нескольких 8-мегапиксельных камер Raspberry Pi на IMX219
Старая плата-адаптер для нескольких камер не работает с 8-мегапиксельной камерой Raspberry Pi на сенсоре IMX219 из-за особенностей драйвера камеры. Поэтому Arducam разработала обновлённую плату-адаптер V2.1 для камер Pi на 5 и 8 Мп.
Архив: статья 2015 года
Модуль-адаптер для нескольких камер позволяет подключить к одному разъёму камеры CSI на плате Raspberry Pi больше одной камеры. К каждой плате-адаптеру подключается до 4 камер, а платы можно ставить в стек до 4 штук — то есть до 16 камер на одну плату Raspberry Pi.
Учтите, что этот адаптер — новый продукт. Из-за целостности сигнала в кабеле и закрытых библиотек видеоядра Raspberry Pi возможны проблемы со стабильностью и ограничения, поэтому используйте его на свой риск.
Применение:
- Камеры интернета вещей (IoT)
- Камеры для роботов
- Камеры для наблюдения за дикой природой
- 3D-сканеры
Особенности:
- До 4 камер Raspberry Pi на одной плате-адаптере
- Платы ставятся в стек, каскад — до 4 плат
- Для мультиплексирования нужно 3 GPIO на одну плату-адаптер, 5 GPIO на две платы и 9 GPIO на четыре
- Все разъёмы камер — FFC (гибкий плоский шлейф)
- DIP-переключатели для простой настройки стека
- Поддержка Raspberry Pi A/B/B+ и Pi 2

Для настройки стека служат DIP-переключатели. Если используется одна плата-адаптер, переключатели 1 и 5 должны быть в положении ON. Если плат две, на нижней плате в положение ON переводятся переключатели 1 и 5, на верхней — 2 и 6. Если плат три или четыре, каждый уровень настраивается, как показано в таблице 1.
Назначение выводов
Для правильной работы одновременно должна быть включена только одна камера. Если плата-адаптер одна, для включения камеры A подайте высокий уровень на вывод 12 и низкий — на выводы 11 и 7. Как включить камеры B, C и D, смотрите в таблице 2. Чтобы отключить все камеры на плате-адаптере, переведите сигналы Enable 1 и Enable 2 в высокий уровень. Не допускайте одновременной подачи низкого уровня на Enable 1 и Enable 2.
При подключении более двух плат-адаптеров одновременно можно включить только одну камеру: включите нужную камеру на одной плате и отключите все камеры на остальных.
Таблица 2. Выбор камеры (X — значение не важно)
| Камера | Selection | Enable 1 | Enable 2 |
|---|---|---|---|
| A | 0 | 0 | 1 |
| B | 1 | 0 | 1 |
| C | 0 | 1 | 0 |
| D | 1 | 1 | 0 |
| Нет камеры | X | 1 | 1 |
| Ошибка | X | 0 | 0 |
Перед началом работы установите зависимость python-rpi.gpio — выполните в терминале команду:
sudo apt-get install python-rpi.gpio
Затем для быстрой проверки запустите следующий код:
import RPi.GPIO as gp
import os
gp.setwarnings(False)
gp.setmode(gp.BOARD)
gp.setup(7, gp.OUT)
gp.setup(11, gp.OUT)
gp.setup(12, gp.OUT)
gp.setup(15, gp.OUT)
gp.setup(16, gp.OUT)
gp.setup(21, gp.OUT)
gp.setup(22, gp.OUT)
gp.output(11, True)
gp.output(12, True)
gp.output(15, True)
gp.output(16, True)
gp.output(21, True)
gp.output(22, True)
def main():
gp.output(7, False)
gp.output(11, False)
gp.output(12, True)
capture(1)
gp.output(7, True)
gp.output(11, False)
gp.output(12, True)
capture(2)
gp.output(7, False)
gp.output(11, True)
gp.output(12, False)
capture(3)
gp.output(7, True)
gp.output(11, True)
gp.output(12, False)
capture(4)
def capture(cam):
cmd = "raspistill -o capture_%d.jpg" % cam
os.system(cmd)
if __name__ == "__main__":
main()
gp.output(7, False)
gp.output(11, False)
gp.output(12, True)
Камеры работают как обычно, поэтому для съёмки фото и видео по-прежнему подходят команды raspistill и raspivid. Управляя GPIO по таблицам 1 и 2, можно переключаться между камерами и снимать с каждой из них.






