Cameras for Raspberry Pi

  1. Home
  2. Docs
  3. Cameras for Raspberry Pi
  4. PTZ Camera
  5. 12MP PTZ Camera

12MP PTZ Camera

0. Introduction

The Arducam IMX477 12MP PTZ camera mainly consists of the following two systems:

  • An Arducam IMX477 12MP Camera Module
  • A driver-board-based PTZ controlling system for Pan-tilt servos and Lens motors (Zoom and Autofocus)

It comes in two models with different package items. The following table shows their differences.

Camera w/ Zoom LensPTZ Control SystemPan-Tilt ServosServo Mounting Platform
B016712MPIncludedIncludedPrepare your ownPrepare your own
Arducam 12MP PTZ Camera Variations

This instruction is mainly about operating the pan-tilt-zoom on the Raspberry Pi. If you want to use it with the Jetson Nano, refer to the last chapter.

We recommend you to go through this quick start carefully. If you encounter any issues while using this product, contact us or post in our forum.

1. Hardware Assembly

1.1 Connect the camera module to RPi with Ribbon Cable

The camera module connects to the RPi with a ribbon cable.

  • To connect to the standard RPi, such as Pi 4, use the included 15pin-22pin white ribbon cable.
  • To connect to Pi Zero and Compute Module, use the included 22 pin-22pin cable on your own.

The ribbon cable establishes a connection to the RPi and camera module with the help of metal contacts.

  • The ribbon cable comes with metal contacts on both ends, but different sides.
  • The camera module comes with metal contacts on the camera connector, beside the lens mount
  • The RPi also comes with metal contacts on its CSI camera connector, beside the HDMI connector
white camera ribbon cable contacts
Contacts on the white ribbon cable
camera ribbon cable contacts
Contacts on the gold ribbon cable
metal contacts camera connector 2
Contacts on the Pi’s camera connector
camera connector contacts
Contacts on the cam module’s connector

Therefore, to ensure we are connecting the components in the correct way, just make sure the metal contacts of the ribbon cable are touching those of the camera module and the RPi on both ends.

1.1.1 Cable connection to the camera module

image 1

We have already done it for you. You don’t need to connect.

1.1.2 Cable connection to the Raspberry Pi

connect camera
Source: Raspberry Pi Projects
  1. Locate the camera port (CSI). It’s between the HDMI and audio port of the Raspberry Pi board.
  2. Gently pull up on the edges of the connector’s plastic clip and avoid pulling it off.
  3. Insert the ribbon cable. Make sure the metal contacts are facing the HDMI connectors. Do not bend the flex cable, and make sure it’s firmly inserted.
  4. Push the plastic clip down. Do it while holding the flex cable still, until the connector’s clip is back in place.

1.2 Connect the servo motors

Connect the 3-pin plug of the servo motors to the two sockets of the driver controller board.

  • The left socket is for the pan servo, and the right socket is for the tilt servo.
  • Note the color of the 3-pin plug. It’s brown, red and yellow from left to right.

You can refer to Picture 1.2.

ptz camera servo connection
Picture 1.2: Servo plug connection

1.3 Connect the driver controller board jumpers

The jumpers of the driver controller board can be separated into 3 pairs, and they are mainly for two purposes: I2C control signals and power supplies.

  1. The 1st pair connects to external power, with Pin#1 being Servo VCC and Pin#2 GND.
  2. The 2nd pair connects to the RPi’s GPIO pins for power, with Pin#3 being 5V and Pin#4 GND.
  3. The 3rd pair also connects to the RPI’s GPIO pins for I2C, with Pin#5 being SCL and Pin#6 SDA.

You can refer to Picture 1.3.

11 3
Picture 1.3 : Driver controller board jumpers connection

Please note that In this illustrator, the different colors of the jumper wires are just to make it easier to distinguish them from each other. The order of those colors varies from item to item, so it may not match the one you’ve received. Therefore, instead of its color, you should rely on the position of the wire to correctly connect the jumpers.

1.4 Overview of all the hardware connections

After you finish the hardware assemble process, refer to Picture 1.4 to review the connections you’ve made.

10 3
Picture 1.4: Connection Overview

2. Using the Arducam PTZ Camera Example

Arducam offers example codes for pan, tilt, zoom, and auto-focus the camera module. You can also modify the example code to better suit your applications.

2.1 Prerequisites

Install python-OpenCV

  • In your Terminal, type the following command then hit Enter:
python3 -m pip install opencv-python
sudo apt-get install libatlas-base-dev
python3 -m pip install -U numpy

2.2 Download and run the examples

  • In your Terminal, type the following command then hit Enter to download the library:
git clone
  • Install libcamera:
cd PTZ-Camera-Controller
python3 -m pip install ./libcamera-1.0.2-cp39-cp39-linux_armv7l.whl
  • Add camera:
Edit the configuration file: sudo nano /boot/config.txt
Find the line: camera_auto_detect=1, update it to:camera_auto_detect=0
imx477 camera added: dtoverlay=imx477
Save and reboot
  • Enable i2c on the Raspberry Pi
cd PTZ-Camera-Controller
sudo chmod +x
./ Press Y to reboot
  • Run the
cd PTZ-Camera-Controller
Arducam Controller.png
  • Run the
cd PTZ-Camera-Controller
Focuser AutoFocus.png

Here are some tips for using the demo example:

  1. After you run the focuser example, you will see instructions in the terminal. Read through the instructions for how to operate with the keys.
  2. Press R to reset the lens before pressing Enter to start autofocus.
Was this article helpful to you? Yes 3 No