Всех приветствую! Сегодня вернемся к теме Raspberry Pi, а если точнее, то осуществим подключение камеры и, соответственно, получение с нее данных. Иначе зачем подключать ) Пойдем снова по привычной схеме, максимально структурированно и систематизированно - для начала разберем теоретически-физическую часть, а затем займемся программными аспектами и практическими примерами. Плюс ко всему, по взаимодействию Raspberry Pi с камерой я планирую сделать несколько статей, так что следите за обновлениями 👍
Итак, на данный момент в продаже присутствуют два типа официальных модулей камер для Raspberry:
- Raspberry Pi Camera Module 2 на базе 8-мегапиксельного сенсора IMX219
- Raspberry Pi High Quality Camera уже на базе Sony IMX477
Визуально все это богатство выглядит следующим образом, Camera Module 2:
HQ Camera:
Давайте кратко рассмотрим некоторые сравнительные характеристики:
Camera Module v2 | High Quality Camera | |
---|---|---|
Video modes | 1080p30, 720p60, 640x480p60/90 | 1080p30, 720p60, 640x480p60/90 |
Sensor | Sony IMX219 | Sony IMX477 |
Sensor resolution | 3280x2464 pixels | 4056x3040 pixels |
Sensor image area | 3.68x2.76 mm | 6.287x4.712 mm |
Focal length | 3.04 mm | Depends on lens |
Horizontal field of view | 62.2 degrees | Depends on lens |
Vertical field of view | 48.8 degrees | Depends on lens |
Focal ratio (F-Stop) | 2 | Depends on lens |
Забегая вперед, могу сказать, что с модулем HQ Camera у меня была недавно задача, где требовалось получить 1080p50 (1920*1080, fps 50), это было успешно достигнуто с сопутствующим разгоном Raspberry. Но об этом мы подробно поговорим в одной из следующих частей.
Первый из упомянутых девайсов довольно давно пришел на смену модулю на базе OmniVision OV5647, а для экспериментов будем использовать High Quality Camera, по той простой причине, что эти модули у меня сейчас есть под рукой, и можно организовать пару-тройку примеров для практической части. С точки зрения этого самого практического использования существенной и принципиальной разницы нет, поэтому если вы являетесь счастливым обладателем Camera Module 2, то это не проблема.
Из сводной таблицы чуть выше можно сделать вывод, что некоторые характеристики зависят то используемого объектива (в дальнейшем местами может быть использован сленг «линза»), который приобретается обычно отдельно. В частности у меня сейчас есть такой вариант:
И здесь сразу же есть один нюанс, о котором редко где можно встретить упоминание, но который периодически приводит к проблемам. К счастью, проблемы эти не является критичными.
Стандарты крепления объективов C-Mount и CS-Mount.
High Quality Camera поддерживает два стандарта крепления линз: C-Mount и CS-Mount, для этого модуль укомплектован специальным адаптером:
Нюанс заключается в том, что эти два крепления имеют одинаковые параметры резьбы, разным же является расстояние до опорной плоскости ПЗС-матрицы. Разница эта составляет 5 мм, что и нивелируется адаптером:
Что мы имеем в сухом остатке? А то, что из-за одинаковой резьбы ничто не мешает прикрутить CS-Mount объектив через адаптер для C-Mount (либо наоборот, C-Mount линзу без адаптера), в результате чего настроить фокус становится невозможно. И по наблюдениям во многих случаях ответ на вопрос “почему не фокусируется камера на Raspberry Pi” кроется в том, что установлено переходное кольцо, которое в данном случае не требуется (либо не установлено, хотя необходимо). И, что бесспорно хорошо, проблема данная решается довольно просто и быстро.
Двигаемся дальше, логичным шагом будет рассмотреть некоторые варианты объективов и их сравнительные характеристики, только сухие факты:
16 mm Telephoto Lens | 25 mm Telephoto Lens | 35 mm Telephoto Lens | 8-50 mm Zoom Lens | 6 mm Wide Angle Lens | |
---|---|---|---|---|---|
Connector | C-mount | C-mount | C-mount | C-mount | CS-mount |
Weight, g | 133.7 | 82 | 78 | 148 | 53 |
Size | 1" | 2/3" | 1" | 1/2.3" | 1/2" |
F/No | F1.4-16 | F1.4-16 | F1.7-16 | F1.4 | F1.2 |
BFL | 17.53mm | 17.53mm | 17.53mm | 17.53mm | 7.53mm |
TTL | 67.53mm | - | - | - | - |
Dimension, mm | 39.00x50.00 | 34.00x34.00 | 35.00x34.00 | 40.00x68.30 | 30.00x34.00 |
Собственно, теперь самое время перейти непосредственно к подключению камеры к Raspberry Pi. Да, кстати, я в повседневной жизни использую Raspberry Pi 4 Model B 8 Gb, поэтому и сегодня задействую именно ее. Но опять же, ключевых отличий это не привнесет, все остается актуальным и для других версий плат.
Подключение камеры к Raspberry Pi 4 Model B.
Подключение производится довольно просто - через шлейф, который чаще всего (по крайней мере я не сталкивался с иным) идет в комплекте с модулем камеры. Единственная сложность может заключаться в том, что на плате присутствуют два разъема – CSI (Camera Serial Interface) и DSI (Display Serial Interface). Очевидно, что в контексте подключения камеры к Raspberry Pi, нас интересует первый вариант, поэтому будьте внимательны, не перепутайте, хорошего это не сулит. По итогу имеем следующее:
Но (!) и здесь не без некоторых дополнительных нюансов. Стандартный шлейф не подходит для Raspberry Pi Zero, поэтому в случае использования этой модели, придется озадачиться покупкой нужного, выглядит он так:
Давайте рассмотрим принципиальную схему, в частности часть, относящуюся к разъему CSI. Для модуля камеры:
И для самой платы, в моем случае это Raspberry Pi 4 B:
Здесь налицо один неутешительный вывод. Как видите, используются только 2 пары линий CSI, что ограничивает пропускную способность интерфейса. Таким образом, насколько бы качественное изображение не мог выдавать сенсор, есть все шансы упереться банально в ограничение канала для передачи этих данных. К счастью, есть вариант приобрести модифицированный модуль камеры, в котором подключение осуществлено иначе. В этом случае, найдя еще и подходящую плату, можно раскрыть возможности сенсора в полной мере. Но не буду сейчас в это углубляться, иначе статья получится чрезмерно раздутой, если есть вопросы – добро пожаловать в комментарии )
Все, теперь можно спокойно перейти к следующему разделу, а именно к физической части настройки камеры.
Настройка модуля камеры High Quality Camera.
Эта самая настройка может быть разбита на вполне конкретные этапы, которые будут схожи для разных типов креплений объективов. Тем не менее рассмотрим подробно оба варианта, и начнем с CS-mount.
- Адаптер в данном случае нам не нужен, поэтому коммутацию частей выполняем следующим образом:
- Заднее кольцо регулировки фокуса должно быть закручено полностью и до упора (за редкими исключениями, которыми можно пренебречь). Для дополнительной фиксации затягиваем винт, чтобы при дальнейшей настройке эта часть уже не смещалась:
- Настройка диафрагмы заключается в повороте отмеченного на схеме кольца при статичных остальных частях. Крутим по часовой стрелке - закрываем диафрагму - уменьшается яркость. Крутим по часовой - открываем диафрагму - увеличиваем яркость. Соответственно, направляем камеру на интересующий объект, смотрим полученное с камеры изображение, регулируем положение кольца в случае необходимости:
- Финальный этап - настройка фокуса. Фиксируем отмеченную часть, крутим два внешних кольца, регулируем фокусировку:
На этом физический процесс настройки камеры для Raspberry Pi завершен, пробежимся по этим же этапам, но для C-mount линзы.
- Устанавливаем адаптер:
- Устанавливаем объектив:
- Фиксируем:
- Настройка диафрагмы:
- Настройка фокуса:
- Успех 👍
Как вы уже заметили, для осуществления описанных процессов, необходимо видеть изображение с камеры, к этому этапу, наконец, и переходим. Причем сегодняшнюю статью я решил сконцентрировать на процессах подключения и настройки, поэтому в завершение рассмотрим, как обеспечить включение поддержки камеры в операционной системе. А уже именно получению от камеры результата в виде изображения/видео будет целиком и полностью посвящена вторая часть цикла статей. Итак, переходим к завершению сегодняшней статьи…
Активация/включение камеры на Raspberry Pi 4 B.
В общем-то это будет краткое описание, поскольку в актуальных на текущий момент официальных образах Raspberry Pi OS поддержка камеры уже включена по умолчанию. То есть установив голую систему с официального сайта, можно сразу же проверить работоспособность камеры командой:
libcamera-hello
В результате в течение 5-ти секунд будет отображаться превьюшка с изображением с камеры:
Различным командам, как я уже упомянул, будет посвящена вторая часть, поэтому здесь ограничимся только libcamera-hello
для диагностики успешного подключения. Хотя для настройки фокуса и диафрагмы 5-ти секунд будет явно мало, поэтому добавим:
libcamera-hello -t 0
Окно preview теперь не будет закрыто по истечению временного интервала, так что можно спокойно настроить параметры изображения. В более старых версиях Raspberry Pi OS активация камеры производилась, как и многое другое, при помощи raspi-config
:
sudo raspi-config
Далее в разделе “Interface options” можно было найти интересующий нас пункт. Сейчас же здесь можно перейти на старый стек:
Это тоже в деталях обсудим в следующей части. Кроме того, аналогичные конфигурационные махинации можно произвести и при помощи Raspberry Pi Configuration. Там также все визуально понятно и наглядно, поэтому разбирать отдельно не будем, в случае возникновения трудностей пишите в комментарии, либо на форум, либо в нашу группу.
Но и на этом еще не все, я, например, зачастую использую не Raspberry Pi OS, а Ubuntu. В данном случае для включения камеры редактируем файл /boot/config.txt любым удобным способом, как вариант через gedit:
sudo gedit /boot/config.txt
В конце файла добавляем:
start_x=1
Сохраняем изменения и перезапускаем систему. Результатом будет активация камеры, которая теперь доступна для любых манипуляций и действий. Вот на этом на сегодня и заканчиваем, не пропустите последующие части, которых как я предполагаю будет три или четыре, там посмотрим. Всех благодарю за внимание!
Добрый день! А подойдёт ли эта камера для raspberry pi 5й версии?
Добрый день! Только добрался до ПК... Насколько я помню, должна подойти.
Спасибо!
Но лучше перепроверить на всякий ) У меня 5-й сейчас нет на руках...
А планируете брать? Я не специалист, с одноплатниками не работал, хотел брать 4ю, но вот смотрю на 5ю пристально.
Да сейчас под нее задач вроде как нет, если какой проект появится, то думаю надо будет брать, либо аналоги какие-нибудь посмотреть.
Хотя вообще вот с оф. сайта:
Так что должно все функционировать.
Понял, спасибо!