Cameras for Raspberry Pi

  1. Home
  2. Docs
  3. Cameras for Raspberry Pi
  4. Synchronized Stereo Camera HAT
  5. Camarray – Arducam 12MP Synchronized Stereo Camera Bundle Kit

Camarray – Arducam 12MP Synchronized Stereo Camera Bundle Kit

Table Of Contents

Introduction

​This Arducam 12MP Synchronized Stereo Camera Bundle Kit is capable of running two 12MP IMX477 Camera Modules simultaneously through a single MIPI CSI-2 camera slot connection on Raspberry Pi. It consists of two 12MP High-Quality IMX477 camera modules and an Arducam stereo camera HAT. The stereo camera HAT is enabled by ArduChip to disguise the dual-camera connection as a single camera to be accepted by the single-board computers. You can use this bundle to build your stereo camera system for depth-related vision applications or upgrade your IMX219 stereo setup.

What is Camarray

Camarray is a series of embedded stereo cameras and multiple camera solutions from Arducam. Upgraded from Arducam Sync Stereo Camera HAT, the Camarry can disguise up to 4 synched camera modules as a single camera slot connection to embedded systems like the Raspberry Pi, Jetson nano, and Xavier NX. With Arducam Camarray, your camera connectivities are no longer limited to the camera connectors on the motherboard or the carrier board. Along with Arducam-provided camera drivers, more flexibility can be added to your multi-camera applications.

NOTE

1.The Camarray HAT does not support digital pan in half resolution combine and programmable pan speed control.
2.The Camarray HAT is not a crop and a half (halving the horizontal resolution of each camera and halving the field of view) but a compressed half (halving the horizontal resolution of each camera but leaving the field of view unchanged), so it does not need to support scan mode.

IMPORTANT NOTE ON THE IMX477 MIPI LANES

Our IMX477 camera module support 4-lane in hardware, but the 4-lane camera driver requires extra customization. Here is why:
 1.Standard Raspberry Pi and Jetson Nano/Xavier NX can’t physically support a 4-lane connection (both of them only have 2-lane CSI connectors). Only the Raspberry Pi Compute Module and some 3rd party Jetson Carrier Boards come with 4-lane hardware support. Therefore, it’s not a general need.
2.Extra works, specifically camera drivers, are required for a 4-lane connection other than the 4-lane physical connector. And the drivers are limited by the performances of the platform itself. For example, 4-lane can’t unlock 4k video on Raspberry Pi because the VideoCore does not currently support it. Jetson Nano is also to some extent limited because of the encoding capabilities. You need to make sure you really need it.

Common Specs

Image sensor

Sensor ModelIMX477
Shutter TypeRolling Shutter
Active Pixels4056×3040
Resolution12.3MP*2
Image Sensor FormatType 1/2.3″
Pixel Size1.55μm×1.55μm
Color Filter Array650nm
IMX477 Block Diagram
IMX477 Block Diagram

Lens Assembly

Lens MountCS LensM12
InterchangeabilityYESYES
F/NO1.22.8
Focus TypeManual FocusManual Focus
Focusing Range20cm to infinity (when focused to infinity)5cm to infinity (when focused to infinity)
Focal Length6 mm3.9mm
Field of View(FoV)65° Horizontal75° Horizontal
IR SensitivityVisible lightVisible light
cs lens 65H 1

Board

Camera Board Size38×38 mm
HAT Size65×56 mm
UC 517 DIM

OV9281 Camera Board Mechanical Drawing

UC 512.Rev .C DIM 01

HAT Mechanical Drawing

Pin No.Pin NameTypeDescription
13V3Power3.3V power supply
2FSINInputFrame Sync Input
3STBOutputLED Strobe Output
4GNDGroundGround
53V3Power3.3V power supply
6SDAI/OSCCB serial interface data I/O
7SCLInputSCCB serial interface clock input
8GNDGroundGround

Connector & Cable

Connector InterfaceMIPI CSI-2 15-pin 2-lane
Ribbon Cable Length150mm (22-pin), 80mm(22-pin), 73mm(15-22pin)
Pin #NameDescription
1GNDGround
2CAM_D0_NMIPI Data Lane 0 Negative
3CAM_D0_PMIPI Data Lane 0 Positive
4GNDGround
5CAM_D1_NMIPI Data Lane 1 Negative
6CAM_D1_PMIPI Data Lane 1 Positive
7GNDGround
8CAM_CK_NMIPI Clock Lane Negative
9CAM_CK_PMIPI Clock Lane Positive
10GNDGround
11CAM_D2_NMIPI Data Lane 2 Negative
12CAM_D2_PMIPI Data Lane 2 Positive
13GNDGround
14CAM_D3_NMIPI Data Lane 3 Negative
15CAM_D3_PMIPI Data Lane 3 Positive
16GNDGround
17CAM_IO0Power Enable
18CAM_IO1LED Indicator
19GNDGround
20SCLI2C SCL
21SDASCCB serial Interface data IO
22VCC3.3V Power Supply

Driver Performance

Video FormatGERY(8-bit)/Y10P(10-bit)
Output Interface2-lane MIPI serial output
Output Formats8/10-bit RAW
Frame Rates[email protected]×1522(with official Raspberry Pi driver), [email protected]*2×3040(with Audcam MIPI Camera driver)

Quick Start Guide

Hardware Setup​​

B0265R 02 1
B0265R 01

Check the Driver​​

There are 3 drivers for Raspberry Pi:

  • Official driver
  • Arducam MIPI camera driver
  • Arducam V4L2 driver

The MIPI camera driver does not conflict with the official driver. The V4L2 driver conflicts with the official driver. Arducam 12MP Synchronized Stereo Camera uses the official driver or MIPI camera driver. If you want to use the official commands like raspistill and raspivid, you need to check if the V4L2 driver is installed first, if so, uninstall it.

1.Type the following command:

sudo nano /boot/config.txt

2.Press【PageDown】several times or scroll your mouse wheel down to check if there is “dtoverlay=arducam”.

dtoverlayarducam”

1)If you see “dtoverlay=arducam”, modify it as “#dtoverlay=arducam” to uninstall the V4L2 driver. Press 【Ctrl+X】, 【Y】,【Enter】to save the change and exit. Finally, type the following command to reboot.

sudo reboot

2)If you don’t see “dtoverlay=arducam”, it means you haven’t installed the V4L2 driver. Please follow the below steps to continue.

3)If you see “#dtoverlay=arducam”, it means that Arducam’s V4L2 driver has been installed before, but it is uninstalled. Please follow the below steps to continue.

Check the Camera

1.Go to the main menu and open the Raspberry Pi Configuration tool.

check camera1

2.Select the Interfaces tab and ensure that the camera is enabled:

check camera2

3.Reboot your Pi

4.Check whether the camera is detected

vcgencmd get_camera
whether the camera is detected
  • detected=1 means the camera is detected. (The camera is OV5647, IMX219, or IMX477.)
  • detected=0 means the camera is not detected. You might have to check the ribbon connection correctly, then reboot the Raspberry Pi.

First Use with Official Driver

You can refer to the page for instructions. Or refer to this page for the official commands.

1. Preview the camera feed in real time

Execute the official native command raspistill

raspistill -t 0

Press 【Ctrl】+【C】 to exit the preview.

raspistill和raspivid1

Execute the official native command raspivid

raspivid -t 0
raspistill和raspivid2

It can be zoomed into the display.

raspistill -t 0 -p 800,100,1024,768
raspivid -t 0 -p 800,100,1024,768

800,100 indicates the starting position of the window (top left corner).
1024,768 indicates the size of the image after scaling.

scaling

2. Save an image

Take a picture after a two-second (time in milliseconds) delay and save it as image.jpg.

raspistill -t 2000 -o image.jpg
pi doc
imx477 pic dual

Take a custom sized photo

raspistill -t 2000 -o image.jpg -w 1920 -h 1080
Take a custom sized photo imx477 dual

3. Save a video

Record 10 seconds (time in milliseconds) of h264 video and save it as video.h264.

raspivid -t 10000 -o video.h264 
save a video imx477 dual command
pi doc imx477 dual

Double click “video.h264” file, it will call the VLC media player to play.

video imx477 dual

4. Advanced controls

The stereo camera HAT support channel selection and digital pan. It requires to write onboard ArduChip registers through the I2C bus on Raspberry Pi. So the user needs to active the I2C bus first(please refer to chapter 5.1 or the following methods).

Clone the GitHub repository from https://github.com/ArduCAM/MIPI_Camera.git and run the script ./enable_i2c_vc.sh, a reboot is required.

For more information about the ArduChip registers, please refer to chapter 7.

Before issuing any control command, you have to launch preview or video using raspistill or raspivid command first, then launch another terminal window to run the following commands.

4.1 Switch to CAM0, Single Mode

Run command i2cset -y 0 0x24 0x24 0x01 to switch from stereo mode to single mode CAM0 feed.

4.2 Switch to CAM1, Single Mode

Run command i2cset -y 0 0x24 0x24 0x02 to switch from stereo mode to single mode CAM1 feed.

4.3 Swtich back to Stereo Mode, Resized Full-Combine

Run command i2cset -y 0 0x24 0x24 0x00 to switch back to stereo mode.

First Use with MIPI Camera Driver

1.Download and Install the SDK

Download the SDK library:

git clone https://github.com/ArduCAM/MIPI_Camera.git
download sdk1
Downloading
download sdk2
Download completed (it usually takes a few minutes)

Enter the SDK directory:

cd MIPI_Camera/RPI/
Enter the SDK directory

Install SDK:

make install
install sdk

Enable I2C_0:

chmod +x enable_i2c_vc.sh
./enable_i2c_vc.sh
enable i2c

Press 【y】, 【Enter】 to reboot Pi.

2.Compile demo

Enter the directory:

cd MIPI_Camera/RPI/

Compile demo:

make clean && make
complie demo

1.It doesn’t matter if opencv reports an error

2.The demo program needs to be recompiled after modification.

3.Run demo (through the “arducamstill” command)

This is a comprehensive application, user can use it to preview, get images in a different format and fine tuning the image quality.

3.1 Get help

Execute the following command to get a description of the parameters of the arducamstill command.

Be sure to run it in the MIPI_Camera/RPI directory.

./arducamstill -?
get help imx477 dual
3.2 Preview the camera feed in real time

Check the supported modes.

./list_format

You can only run the modes listed in the results. For example, you can only run mode1 or mode2 here.

mode1 mode2 imx477 dual

Run mode0:

./arducamstill -t 0 -m 0
run mode0
run mode 0 pic dual

Run mode1:

./arducamstill -t 0 -m 1
run mode1
run mode1 pic dual

The default display is windowed and scaled. If you need to change the window size, you have to do it in the demo program.

Difference between mode0 and mode1

1.The resolution of mode0 is 4056×3040, the resolution of mode1 is 8112×3040.
2.The frame rate of mode0 is higher than that of mode1.
3.Stretch the image of mode0 horizontally by a factor of twice and it will look exactly like the image of mode1!

3.3 Save an image

#mode0

Take a picture after a two-second (time in milliseconds) delay and save it as image.jpg.

./arducamstill -t 5000 -m 0 -o image.jpg
save an image imx477 dual

NOTE

This demo’s exposure and gain functions are controlled via the keyboard arrow keys, so the demo will always wait for keyboard commands.

Press 【Ctrl】+【C】 to exit preview.

The image is saved in the directory /home/pi/MIPI_Camera/PRI.

save image1
save image2

#mode1

Take a picture after a two-second (time in milliseconds) delay and save it as image.jpg.

./arducamstill -t 5000 -m 1 -o image.jpg
save image mode2

What’s Next

Here are the things you can do after this quick start:

  • Check the Application Note for applications like using Arducam userland MIPI camera drivers.
  • Join the discussion in our forum.

FAQ

Would it be possible to have it with 20-28mm focal length lenses instead of the standard 6mm?

You can change the default standard 6mm CS lens with your own lens.

What’s the difference between the kit’s camera (B0265R) and the standard camera (B0240)?

The kit’s camera (B0265R) can only be used with the HAT. You can not directly connect the camera to your Pi. But you can directly connect the standard camera (B0240) to Pi.

Will it be possible (maybe in the future) to replace the 12Mpx HQ camera with a higher resolution one (eg the B0164 AR1820HS 18Mpx or other)?

We will consider the market demand, and for now, a higher resolution stereo camera can only be ordered on a customized basis.

Was this article helpful to you? Yes 4 No