Blackmagicdesign Installation And Operation Manual
Specifications and Main Features
Frequently Asked Questions
User Manual
Installation and Operation Manual
Blackmagic
3G-SDI
Arduino Shield
November 2017
English,
中文,한국어,Русский
日本語, Français, Deutsch, Español,
and
Italiano.
1Getting Started
Languages
To go directly to your preferred language, simply click on the hyperlinks listed in the
contents below.
English3
日本語
30
Français56
Deutsch84
Español112
中文
한국어
Русский
140
168
196
Italiano218
English
Welcome
Thank you for purchasing your new Blackmagic 3G-SDI Arduino Shield.
We are always interested in new technologies and are excited by all the creative ways our SDI
products can be used. With your 3G-SDI Arduino Shield, you can now integrate the Arduino into
your SDI workflow to get more control options with your Blackmagic Design equipment.
For example, ATEM switchers can control Blackmagic URSA Mini and Blackmagic Studio
Cameras via data packets embedded in the SDI signal. If you are not running an ATEM switcher,
but you would still like the ability to control your Blackmagic cameras, you can build custom
control solutions with your 3G-SDI Arduino Shield. The shield gives you the SDI platform to
build upon, so you can loop the program return feed from your switcher, through the shield, and
into the program input on your Blackmagic Cameras.
Writing the code to send the commands to the camera is easy and all the supported
commands are included in this manual.
You can control the cameras using a computer, or you can add buttons, knobs and
joysticks to your shield and build dynamic hardware controllers for adjusting features
such as lens focus and zoom, aperture settings, pedestal and white balance control, the
camera’s powerful built in color corrector, and much more. Building your own custom
controller is useful for production, but it’s also a lot of fun!
We are excited by this technology and would love to hear about any SDI controllers you
have built for your 3G-SDI Arduino Shield!
This instruction manual contains all the information you need to start using your
Blackmagic 3G-SDI Arduino Shield. Please check the support page on our website at
www.blackmagicdesign.com for the latest version of this manual and for updates to your
shield’s internal software. Keeping your software up to date will ensure you get all the
latest features! When downloading software, please register with your information so we
can keep you updated when new software is released. We are continually working on
new features and improvements, so we would love to hear from you!
Grant Petty
CEO Blackmagic Design
Contents
Blackmagic 3G-SDI Arduino Shield
Getting Started 5
Attaching and Soldering Headers 5
Mounting to the Arduino Board 6
Plugging in Power 6
Connecting to SDI Equipment 7
Software Installation 8
Installing Internal Software 8
Installing Arduino Library Files 9
Blackmagic Arduino Shield Setup 10
2
C Address 10
I
Video Format 10
Programming Arduino Sketches 11
Testing your Blackmagic Shield andLibrary Installation 11
LED Indicators 13
Attaching Shield Components 14
Communicating with yourArduinoShield 14
High Level Overview 14
2
C Interface 14
I
Serial Interface 15
Example Usage 15
Studio Camera Control Protocol 15
Blackmagic Video Device Embedded Control Protocol 17
Example Protocol Packets 23
Developer Information 24
Help 28
Warranty 29
Getting Started
6 PIN
8 PIN
Attaching and Soldering Headers
Your Blackmagic 3G-SDI Arduino Shield is supplied with 4 stackable headers, including two
8pin headers, a 10 pin, and a 6 pin header. Headers are bridging connectors used to mount
your shield to the Arduino board, and because they are stackable you can attach other shields
on top with additional components, such as control buttons, knobs and joysticks. The header
layout supports mounting to Arduino boards with an R3 footprint, such as the Arduino UNO.
To attach the headers to your shield:
1 Insert the pins of each header through the corresponding pin holes on each side of
your Blackmagic Arduino shield. Refer to the illustration below for the header layout
arrangement.
0 - Serial RX
1 - Serial T X
(I2C) SDA
(I2C) SCL
A5 (I2C) SCL
A4 (I2C) SDA
NOTE When connecting to the shield, communication is via I2C or
2
Serial. We recommend I
C as this enables the serial monitor to be used
and makes all other pins available. Select the communication mode
when defining the BMDSDIControl object in the sketch. Refer to the
‘Communicating with your Arduino Shield’ section for more information.
2 Solder the base of each header pin to the underside of your shield. Make sure
the solder on each pin creates a firm join with the pin hole, but does not touch
thesolderon nearby pins.
5Getting Started
TIP To help make sure all pins on your shield are aligned with the
female header pin slots on the Arduino board, it’s helpful to solder just
one pin on each header first. Now place the shield onto the Arduino
board to check the pin alignment. If any headers need adjusting, you
can then warm the solder joint on the corresponding header and
improve its alignment. This is a much easier method than soldering all
the joints first and then trying to make adjustments.
Mounting to the Arduino Board
Now that your headers are soldered to your shield, you can mount the 3G-SDI shield to your
Arduino board.
Carefully holding each side of the shield, align the header pins with your Arduino board’s
headers and gently push the pins into the header slots. Be careful not to bend any of the pins
while mounting the shield.
With all pins plugged in, the connection between the Blackmagic
shield and the Arduino board should be firm and stable.
Plugging in Power
To power your Blackmagic 3G-SDI Arduino Shield, simply plug in a 12V power adapter into the
12V power input on your Blackmagic shield.
NOTE Plugging power into the Arduino board will not provide sufficient
power to the Blackmagic shield, however, powering the Blackmagic
shield will provide power to the Arduino as well, so make sure power is
connected to your Blackmagic shield only.
6Getting Started
Connecting to SDI Equipment
With power supplied, you can now plug your Blackmagic Arduino shield into your
SDIequipment. For example, to plug into a switcher and a Blackmagic URSA Mini:
1 Plug the program output from your switcher to the Blackmagic Arduino shield’s
SDI input.
2 Plug your Blackmagic Arduino shield’s SDI output into the ‘program’ SDI input marked
PGM on your Blackmagic URSA Mini.
A connection diagram is provided below.
SDI IN
SDI OUT
Switcher
SDI ‘PGM’ Input
Blackmagic 3G-SDI Arduino Shield
Blackmagic URSA Mini
That’s all there is to getting started!
Now that your shield is mounted to the Arduino board, powered, and connected to your SDI
equipment, you can install the internal software and library files, program the Arduino software
and begin using the shield to control your equipment.
Continue reading the manual for information on how to install the shield’s internal software, and
where to install the Arduino library files so the shield can communicate with your Arduino.
TIP You can also use your Blackmagic 3G-SDI Arduino Shield to control other
Blackmagic Design products, such as Blackmagic MultiView 16. For example,
when your shield is connected to input 16, you can display a tally border on the
multi view.
7Getting Started
Software Installation
NOTE Before installing the Blackmagic 3G-SDI Arduino Shield setup utility,
download the latest Arduino IDE software from www.arduino.cc and install it on
your computer.
After installing the Arduino software, you can now install your Arduino shield’s
internal software.
Installing Internal Software
Blackmagic Arduino Shield Setup is used to update your shield’s internal software. The internal
software communicates with the Arduino board, and controls the board using Arduino library
files. These library files are installed with the setup software and all you need to do is copy the
folder containing the files and paste it into your Arduino application folder. You can find
information about the library files and how to install them in the next section of this manual.
We recommend downloading the latest Blackmagic 3G-SDI Arduino Shield software and
updating your shield so you can benefit from new features and improvements. The latest
version can be downloaded from the Blackmagic Design support center at
www.blackmagicdesign.com/support
To install the internal software using Mac OS X:
1 Download and unzip the Blackmagic 3G-SDI Arduino Shield software.
2 Open the resulting disk image and launch the Blackmagic Arduino Shield installer.
Follow the on screen instructions.
3 After installing the latest version of Blackmagic Arduino Shield installer, power your
Blackmagic shield and connect it to your computer via a USB cable.
4 Now launch the setup utility and follow any onscreen prompt to update your shield’s
internal software. If no prompt appears, the internal software is up to date and there is
nothing further you need to do.
To install the internal software using WIndows:
1 Download and unzip the Blackmagic 3G-SDI Arduino Shield software.
2 You should see a Blackmagic Arduino Shield folder containing this manual and the
Blackmagic Arduino Shield installer. Double-click the installer and follow the onscreen
prompts to complete the installation.
3 After installing the latest version of the Blackmagic Arduino Shield installer, power your
Blackmagic shield and connect it to your computer via a USB cable.
4 Now launch the setup utility and follow any onscreen prompt to update your shield’s
internal software. If no prompt appears, the internal software is up to date and there is
nothing further you need to do.
8Software Installation
Installing Arduino Library Files
The programs written to control your Arduino are called sketches and your Blackmagic 3G-SDI
Arduino Shield uses Arduino library files that help make writing sketches easier. After installing
your shield’s setup software, the library files are installed into a folder named ‘Library’. All you
need to do now is copy the folder containing the library files and paste it into your Arduino
libraries folder.
NOTE The Arduino IDE software needs to be closed when installinglibraries.
To install the library files on Mac OS X:
1 Open ‘Blackmagic Arduino Shield’ in your ‘applications’ folder.
2 Open the ‘Library’ folder and right click/copy the folder named: BMDSDIControl.
3 Now go to your computer’s ‘documents’ folder and open the Arduino folder.
4 You will see a sub-folder named ‘libraries’. Paste the BMDSDIControl folder into the
‘libraries’ folder.
To install the library files on Windows:
1 Open the Programs/Blackmagic Arduino Shield folder.
2 You will now see a subfolder named ‘Library’. Open this folder and then right click/copy
the folder named: BMDSDIControl.
3 Now go to your computer’s ‘documents’ folder and open the Arduino folder.
4 You will see a sub-folder named ‘libraries’. Paste the BMDSDIControl folder into the
‘libraries’ folder.
That’s all you need to do to install the Blackmagic Design library files on your computer. When
running the Arduino software, you will now also have Blackmagic Design example sketches to
choose from.
Simply go to the ‘file’ drop down menu in the Arduino software menu bar, and select ‘examples’.
Now select BMDSDIControl and you will see a list of example sketches you can use.
With the library files stored in the correct folder, your shield can now use them to communicate
with the Arduino board. All you need to do is program the Arduino IDE software. Refer to the
‘Programming Arduino Sketches’ section for more information.
NOTE If an updated library file with examples is released in the future, you will
need to delete the old BMDSDIControl folder and replace it with the new folder
using the method described above.
9Installing Arduino Library Files
Blackmagic Arduino Shield Setup
The Blackmagic Arduino Shield Setup software lets you change
settings on your shield such as the I2C address and video output format.
With Blackmagic Arduino Shield Setup installed on your computer, you can now change settings
2
for your shield, such as the ‘I
communicate with it, and the ‘video format’, which sets the output format for your shield.
C address’, which identifies your shield so the Arduino board can
I2C Address
In very rare cases, there is a potential for another shield mounted to your Blackmagic shield to
2
share the same I
occurs, you can change your shield’s default address setting.
The default address for your shield is 0x6E, however, you can choose from a range of
addresses between 0x08 and 0x77.
To change the address for your shield:
1 Launch Blackmagic Arduino Shield Setup and click on your shield’s ‘settings’ icon.
2 In the ‘set address to:’ edit box, type the address you wish to use.
3 Click ‘save’.
C address as your shield’s default address which will create a conflict. If this
Video Format
The default output format is selected in the setup utility for when no input is connected. When
an input is detected, the output will follow the same format as the input. If this input is removed
the output will revert to the default output format selected in the utility. You can change the
video format by clicking in the ‘default output format’ drop down menu and selecting the
format you want.
10Blackmagic Arduino Shield Setup
You can choose from the following video output formats:
The programs, or sketches, written into the Arduino software are very easy to write! Sketches
are written using common ‘C’ programming language. When programming your sketches using
commands from the Studio Camera Control Protocol, the shield embeds these commands into
the SDI output which lets you control your Blackmagic URSA Mini or Blackmagic Studio Cameras.
All supported commands are included in the Studio Camera Control Protocol section of this
manual so you can take the commands from the protocol and use them in your sketch.
Testing your Blackmagic Shield
andLibrary Installation
After everything is connected as described in the ‘Getting Started’ section and you have
installed the setup software and library files, you’ll want to check that your shield is
communicating with the Arduino board and that everything is working as it should.
A fast way is to open and run the supplied tally blink example sketch.
To do this:
1 Launch the Arduino IDE software.
2 Go to the ‘tools’ menu and select the Arduino board and Port number.
3 From the ‘File’ menu, select ‘Examples/BMDSDIControl’ and choose the sketch
named‘TallyBlink’.
4 Upload the sketch to your board.
11Testing your Blackmagic Shield and Library Installation
The Tally Blink example sketch is a fast and easy way to test your
2
Arduinoshield. Raw data can be sent to your shield via I
C using commands
from the Studio Camera Protocol document, but we have also provided
customlibraries to make programming sketches much easier.
NOTE Make sure your Blackmagic Camera’s tally number is set to 1.
You should now see the tally light on your Blackmagic Studio Camera blink once every second.
If you see the tally light blinking you can be sure your Blackmagic shield is communicating with
the Arduino and everything is working properly.
If the tally light is not blinking, check that your Blackmagic camera’s tally number is set to 1.
If you need further assistance, please visit the Blackmagic Design support center at
www.blackmagicdesign.com/support. Refer to the help section of this manual for more
information on the different ways you can get help setting up your shield.
12Testing your Blackmagic Shield and Library Installation
LED Indicators
10 PIN
8 PIN
8 PIN
Your Blackmagic 3G-SDI Arduino Shield has six indicator LEDs that confirm activity on your
2
shield such as power, UART, I
camera control overrides are enabled.
LED 1 - System Active
Illuminates when power is connected to the shield.
LED 2 - Control Overrides Enabled
Illuminates if you have enabled camera control in your Arduino sketch.
LED 3 - Tally Overrides Enabled
Illuminates if you have enabled tally in your Arduino sketch.
2
LED 5 - I
Illuminates when communication is detected between your shield and the Arduino
using the I
C Parser Busy
2
C protocol.
C and SPI communication, plus indicators to show when tally and
LED 1
LED 2
LED 3
LED 4
LED 5
LED 6
LED 6 - Serial Parser Busy
Illuminates when UART communication is detected.
When your Blackmagic shield is booting, the power indicator will remain off and LEDs 3, 4 and 5
will indicate the following activity.
LED 3 - Application image loading
LED 4 - EEPROM initializing
LED 5 - Memory check in progress
After a successful boot, the power LED will turn on and all LEDs will resume their standard
functions during operation.
In the rare case of a boot failure, all LEDs except for the failed activity will flash rapidly so you
can identify the cause of the failure.
13Testing your Blackmagic Shield and Library Installation
Attaching Shield Components
If you want to build your own hardware controller, you can create a new shield with buttons,
knobs and a joystick for more tactile, hands on control. Simply mount the custom shield to your
Blackmagic 3G-SDI Arduino Shield by plugging it into your shield’s header slots. There is no
limit to the types of controllers you can build. You can even replace the circuitry in an old CCU
with your own custom Arduino solution for an industry standard camera control unit.
You can create your own hardware controller and
plug it into your Blackmagic3G-SDI Arduino Shield for
more interactive and refined control.
Communicating with yourArduinoShield
You can communicate with your Arduino Shield via I2C or Serial. We recommend I2C because of
2
the low pin count and it frees up the serial monitor. This also allows you to use more I
with the shield.
High Level Overview
The library provides two core objects, BMD_SDITallyControlandBMD_SDICameraControl,
which can be used to interface with the shield’s tally and camera control functionalities. Either
or both of these objects can be created in your sketch to issue camera control commands, or
read and write tally data respectively. These objects exist in several variants, one for each of
2
the physicalI
I2C Interface
To use theI2Cinterface to the shield:
// NOTE: Must match address set in the setup utility software
const int shieldAddress = 0x6E;
BMD _ SDICameraControl _ I2C sdiCameraControl(shieldAddress);
BMD _ SDITallyControl _ I2C sdiTallyControl(shieldAddress);
C or Serialcommunication busses the shield supports.
C devices
14Communicating with your Arduino Shield
Serial Interface
To use theSerialinterface to the shield:
BMD _ SDICameraControl _ Serial sdiCameraControl;
BMD _ SDITallyControl _ Serial sdiTallyControl;
Note that the library will configure the Arduino serial interface at the required 38400 baud rate.
If you wish to print debug messages to the Serial Monitor when using this interface, change the
Serial Monitor baud rate to match. If the Serial Monitor is used, some binary data will be visible
as the IDE will be unable to distinguish between user messages and shield commands.
Example Usage
Once created in a sketch, these objects will allow you to issue commands to the shield over
selected bus by calling functions on the created object or objects. A minimal sketch that uses
2
the library via the I
// NOTE: Must match address set in the setup utility software
const int shieldAddress = 0x6E;
BMD _ SDICameraControl _ I2C sdiCameraControl(shieldAddress);
BMD _ SDITallyControl _ I2C sdiTallyControl(shieldAddress);
void setup() {
// Must be called before the objects can be used
sdiCameraControl.begin();
sdiTallyControl.begin();
// Turn on camera control overrides in the shield
sdiCameraControl.setOverride(true);
C bus is shown below.
// Turn on tally overrides in the shield
sdiTallyControl.setOverride(true);
}
void loop() {
// Unused
}
The list of functions that may be called on the created objects are listed further on in this
document. Note that before use, you must call the‘begin’function on each object before
issuing any other commands.
Some example sketches demonstrating this library are included in the Arduino
IDE’sFile->Examples->BMDSDIControl menu.
Studio Camera Control Protocol
This section contains the Studio Camera Control Protocol from the Blackmagic Studio Camera
manual. You can use the commands in this protocol to control your Blackmagic URSA Mini or
Blackmagic Studio Camera via your Arduino shield.
The Blackmagic Studio Camera Protocol shows that each camera parameter is arranged in
groups, such as:
15Studio Camera Control Protocol
Group IDGroup
0Lens
1Video
2Audio
3Output
4Display
5Tally
6Reference
7Configuration
8Color Correction
The group ID is then used in the Arduino sketch to determine what parameter to change.
The function: sdiCameraControl.writeXXXX, is named based on what parameter you wish to
change, and the suffix used depends on what group is being controlled.
For example sdiCameraControl.writeFixed16 is used for focus, aperture, zoom, audio, display,
tally and color correction when changing absolute values.
The complete syntax for this command is as follows:
sdiCameraControl.writeFixed16 (
Camera num ber,
Gr o u p,
Parameter being controlled,
Operation,
Value
);
The operation type specifies what action to perform on the specified parameter
0 = assign value. The supplied Value is assigned to the specified parameter.
1 = offset value. Each value specifies signed offsets of the same type to be added to the current
parameter Value.
1 = camera number 1
8 = Color Correction group
0 = Lift Adjust
0 = assign value
liftAdjust = setting the value for the RGB and luma levels
As described in the protocol section, liftAdjust is a 4 element array for RED[0], GREEN[1],
BLUE[2] and LUMA[3]. The complete array is sent with this command.
The sketch examples included with the library files contain descriptive comments to explain
their operation.
16Studio Camera Control Protocol
Blackmagic Video Device Embedded Control Protocol
Version 1.1
You can use the Video Device Embedded Control Protocol to control Blackmagic URSA Mini
and Blackmagic Studio Cameras using your Arduino shield and construct devices that integrate
with our products. Here at Blackmagic Design, our approach is to open up our protocols and we
eagerly look forward to seeing what you come up with!
Overview
This document describes an extensible protocol for sending a uni-directional stream of small
control messages embedded in the non-active picture region of a digital video stream.
The video stream containing the protocol stream may be broadcast to a number of devices.
Device addressing is used to allow the sender to specify which device each message is
directed to.
Assumptions
Alignment and padding constraints are explicitly described in the protocol document. Bit fields
are packed from LSB first. Message groups, individual messages and command headers are
defined as, and can be assumed to be, 32 bit aligned.
Blanking Encoding
A message group is encoded into a SMPTE 291M packet with DID/SDID x51/x53 in the active
region of VANC line 16.
Message Grouping
Up to 32 messages may be concatenated and transmitted in one blanking packet up to a
maximum of 255 bytes payload. Under most circumstances, this should allow all messages to
be sent with a maximum of one frame latency.
If the transmitting device queues more bytes of message packets than can be sent in a single
frame, it should use heuristics to determine which packets to prioritise and send immediately.
Lower priority messages can be delayed to later frames, or dropped entirely as appropriate.
Abstract Message Packet Format
Every message packet consists of a three byte header followed by an optional variable length
data block. The maximum packet size is 64 bytes.
Destination device (uint8) Device addresses are represented as an 8 bit unsigned integer. Individual
devices are numbered 0 through 254 with the value 255 reserved to
indicate a broadcast message to all devices.
Command length (uint8)The command length is an 8 bit unsigned integer which specifies the length
of the included command data. The length does NOT include the length of
the header or any trailing padding bytes.
Command id (uint8)The command id is an 8 bit unsigned integer which indicates the message
type being sent. Receiving devices should ignore any commands that they
do not understand. Commands 0 through 127 are reserved for commands
that apply to multiple types of devices. Commands 128 through 255 are
device specific.
Reserved (uint8)This byte is reserved for alignment and expansion purposes. It should be
set to zero.
Command data (uint8)The command data may contain between 0 and 60 bytes of data.
Theformat of the data section is defined by the command itself.
17Studio Camera Control Protocol
Padding (uint8)Messages must be padded up to a 32 bit boundary with 0x0 bytes.
Anypadding bytes are NOT included in the command length.
Receiving devices should use the destination device address and/or the command identifier to
determine which messages to process. The receiver should use the command length to skip
irrelevant or unknown commands and should be careful to skip the implicit padding as well.
Defined Commands
Command 0: change configuration
Category (uint8)The category number specifies one of up to 256 configuration categories
available on the device.
Parameter (uint8) The parameter number specifies one of 256 potential configuration
parameters available on the device. Parameters 0 through 127 are
devicespecific parameters. Parameters 128 though 255 are reserved for
parameters that apply to multiple types of devices.
Data type (uint8) The data type specifies the type of the remaining data. The packet length is
used to determine the number of elements in the message. Each message
must contain an integral number of data elements.
Currently defined values are:
0: void / boolean
A void value is represented as a boolean array of length zero.
The data field is a 8 bit value with 0 meaning false and all other values
meaning true.
1: signed byte
Data elements are signed bytes
2: signed 16 bit integer
Data elements are signed 16 bit values
3: signed 32 bit integer
Data elements are signed 32 bit values
4: signed 64 bit integer
Data elements are signed 64 bit values
5: UTF-8 string
Data elements represent a UTF-8 string with no terminating character.
Data types 6 through 127 are reserved.
128: signed 5.11 fixed point
Data elements are signed 16 bit integers representing a real number with
5bits for the integer component and 11 bits for the fractional component.
The fixed point representation is equal to the real value multiplied by 2^11.
The representable range is from -16.0 to 15.9995 (15 + 2047/2048).
Data types 129 through 255 are available for device specific purposes.
Operation type (uint8)The operation type specifies what action to perform on the specified
parameter. Currently defined values are:
18Studio Camera Control Protocol
0: assign value
The supplied values are assigned to the specified parameter. Each element
will be clamped according to its valid range.
A void parameter may only be “assigned” an empty list of boolean type.
This operation will trigger the action associated with that parameter.
A boolean value may be assigned the value zero for false, and any other
value for true.
1: offset / toggle value
Each value specifies signed offsets of the same type to be added to the
current parameter values.The resulting parameter value will be clamped
according to their valid range.
It is not valid to apply an offset to a void value.
Applying any offset other than zero to a boolean value will invert that value.
Operation types 2 through 127 are reserved.
Operation types 128 through 255 are available for device specific purposes.
Data (void)The data field is 0 or more bytes as determined by the data type and
number of elements.
The category, parameter, data type and operation type partition a 24 bit operation space.
GroupIDParameterTyp eIndexMinMaxInterpretation
Lens0
.0Focusfixed16–0.01.00.0=near, 1.0=far
Instantaneous
.1
autofocus
.2Aperture (f-stop)fixed16–-1.016.0
Aperture
.3
(normalised)
.4Aperture (ordinal)int16–0n
Instantaneous
.5
auto aperture
Optical image
.6
stabilisation
Set absolute
.7
zoom (mm)
void–––
fixed16–0.01.00.0=smallest, 1.0=largest
void–––
boolean–––
int16–0max
trigger instantaneous
autofocus
Aperture Value
(where fnumber =
sqrt(2^AV))
Steps through available
aperture values from
minimum (0) to
maximum (n)
trigger instantaneous
auto aperture
true=enabled,
false=disabled
Move to specified focal
length in mm, from
minimum (0) to
maximum (max)
Set absolute
.8
zoom (normalised)
fixed16–0.01.0
Move to specified
normalised focal length:
0.0=wide, 1.0=tele
19Studio Camera Control Protocol
GroupIDParameterTyp eIndexMinMaxInterpretation
Start/stop zooming at
Video1
Set continuous
.9
zoom (speed)
fixed16–-1.0+1.0
specified rate: -1.0=zoom
wider fast, 0.0=stop,
+1.0=zoom tele fast
[0] =
frame rate
[1] = M-rate––0=regular, 1=M-rate
[2] =
.0Video modeint8
.1Sensor Gainint8–1161x, 2x, 4x, 8x, 16x gain
Manual
.2
White Balance
.3Reserved–––Reserved
.4Reserved –––Reserved
.5Exposure (us)int32–142000 time in us
.6Exposure (ordinal) int16–0n
int16–32007500Colour temperature in K
dimensions
[3] =
interlaced
[4] =
colour space
––24, 25, 30, 50, 60
0=NTSC, 1=PAL, 2=720,
––
––
––0=YUV
3=1080, 4=2k, 5=2k
DCI, 6=UHD
0=progressive,
1=interlaced
Steps through available
exposure values from
minimum (0) to
maximum (n)
Audio2
Dynamic
.7
Range Mode
Video
.8
sharpening level
.0Mic levelfixed16–0.01.0
Headphone
.1
level
Headphone
.2
program mix
.3Speaker levelfixed16–0.01.0
.4Input typeint8–02
int8 enum–010 = film, 1 = video
int8 enum –03
fixed16–0.01.0
fixed16–0.01.0
0=Off, 1=Low,
2=Medium, 3=High
0.0=minimum,
1.0=maximum
0.0=minimum,
1.0=maximum
0.0=minimum,
1.0=maximum
0.0=minimum,
1.0=maximum
0=internal mic, 1=line
level input, 2=low mic
level input, 3=high mic
level input
20Studio Camera Control Protocol
GroupIDParameterTyp eIndexMinMaxInterpretation
Output3
Display4
[0] ch00.01.0
.5Input levelsfixed16
[1] ch10.01.0
Phantom
.6
power
.0Overlays
.0Brightnessfixed160.01.0
.1Overlays
boolean–––
–––0x1 = display status
–––0x2 = display guides
uint16 bit
field
–––
int16 bit
field
––
0.0=minimum,
1.0=maximum
0.0=minimum,
1.0=maximum
true = powered, false =
not powered
Some cameras
don’t allow
separate control of
guides and
status overlays.
0.0=minimum,
1.0=maximum
0x4 = zebra
0x8 = peaking
Tally5
.2Zebra levelfixed160.01.0
.3Peaking levelfixed160.01.0
Colour bars
.4
display
time (seconds)
.0Tally brightnessfixed160.01.0
Tally front
.1
brightness
Tally rear
.2
brightness
int8030
fixed160.01.0
fixed160.01.0
0.0=minimum,
1.0=maximum
0.0=minimum,
1.0=maximum
0=disable bars,
1-30=enable
bars with timeout (s)
Sets the tally front and
tally rear brightness to
the same level.
0.0=minimum,
1.0=maximum
Sets the tally front
brightness. 0.0=minimum,
1.0=maximum
Sets the tally rear
brightness. 0.0=minimum,
1.0=maximum
Tally rear brightness
cannot be turned off
21Studio Camera Control Protocol
GroupIDParameterTyp eIndexMinMaxInterpretation
Reference6
Configuration7
Colour
Correction
.0Sourceint8 enum01
.1Offsetint32––+/- offset in pixels
[0] time––BCD - HHMMSSFF
.0Real Time Clockint32
[1] date––BCD - YYYYMMDD
.1Reserved ––––Reserved
8
[0] red-2.02.0default 0.0
[1] green-2.02.0default 0.0
.0Lift Adjustfixed16
[2] blue-2.02.0default 0.0
[3] luma-2.02.0default 0.0
[0] red-4.04.0default 0.0
[1] green-4.04.0default 0.0
.1Gamma Adjustfixed16
[2] blue-4.04.0default 0.0
0=internal, 1=program,
2=external
[3] luma-4.04.0default 0.0
[0] red0.016.0default 1.0
.2Gain Adjustfixed16
.3Offset Adjustfixed16
.4Contrast Adjustfixed16
.5Luma mixfixed16–0.01.0default 1.0
.6Colour Adjustfixed16
Correction
.7
Reset Default
void–––reset to defaults
[1] green0.016.0default 1.0
[2] blue0.016.0default 1.0
[3] luma0.016.0default 1.0
[0] red-8.08.0default 0.0
[1] green-8.08.0default 0.0
[2] blue-8.08.0default 0.0
[3] luma-8.08.0default 0.0
[0] pivot0.01.0default 0.5
[1] adj0.02.0default 1.0
[0] hue-1.01.0default 0.0
[1] sat0.02.0default 1.0
22Studio Camera Control Protocol
Example Protocol Packets
Operation
trigger
instantaneous auto
focus on camera 4
turn on OIS on
all cameras
set exposure to
10 ms on camera 4
(10 ms = 10000 us
= 0x00002710)
add 15% to
zebra level
(15 % = 0.15 f
= 0x0133 fp)
Packet
Length
0123456789101112131415
headercommanddata
destination
length
command
reserved
category
parameter
844000100
1225550006001000
12480015300x10 0x27 0x00 0x00
1246004212810x33 0x0100
type
Byte
operation
select
1080p 23.98 mode
on all cameras
subtract 0.3 from
gamma adjust for
green & blue
(-0.3 ~= 0xfd9a fp)
all operations
combined
162559001010241300000
1641200811281000x9a 0xfd 0x9a 0xfd00
440001002555000600
1000480015300x10 0x27 0x00 0x00
76
46004212810x33 0x0100255900
101024130000041200
81128100
0x9a
0xfd
0x9a
0xfd00
23Studio Camera Control Protocol
Developer Information
This section of the manual provides all the details you will need if you want to write custom
libraries and develop your own hardware for your Blackmagic 3G-SDI Arduino Shield.
Physical Encoding - I2C
The shield operates at the following I2C speeds:
1. Standard mode (100 kbit/s)
2. Full speed (400 kbit/s)
2
The default 7-bit shield I
Shield Pin | Function
--------------------- |---------------------------- A4 | Serial Data (SDA)
A5 | Serial Clock (SCL)
The maximum payload (shown as **VAL** in the examples above) read/write length (following the internal
register address) in a single transaction is 255 bytes.
C slave address is 0x6E.
Physical Encoding - UART
The shield operates with a UART baud rate of 115200, 8-N-1 format.
Shield Pin | Function
--------------------- |---------------------------- IO1 | Serial Transmit (TX)
IO0 | Serial Receive (RX)
The maximum payload (shown as **VAL** in the examples above) read/write length (specified in the
**LENGTH** field) in a single transaction is 255 bytes.
Register Address Map
The shield has the following user address register map:
**Override Output:** When 1, the input SDI signal (if present) is discarded and the
shield generates its own SDI signal on the SDI output connector.
When 0, the input signal is passed through to the output if
present, or the shield generates its own SDI signal if not.
**Reset Tally:** When 1, the last received incoming tally data is immediately
copied over to the override tally data register. Automatically
cleared by hardware.
**Override Tally:** When 1, tally data is overridden with the user supplied data.
When 0, input tally data is passed through to the output
unmodified.
**Override Control:** When 1, control data is overridden with the user supplied data.
When 0, input control data is passed through to the output
unmodified.
25Developer Information
Register: OCARM (Output Control
Arm)
[ RESERVED ] [ ARM ]
7 1 0
**Reserved:** Always zero.
**Arm:** When 1, the outgoing control is data armed and will be sent in
the next video frame. Automatically cleared once the control has
been sent.
Register: OCLENGTH (Output Control
Length)
[ LENGTH ]
7 0
**Length:** Length in bytes of the data to send in OCDATA.
Register: OCDATA (Output Control
Payload Data)
[ CONTROL DATA ]
255*8-1 0
**Control Data:** Control data that should be embedded into a future video frame.
Register: ICARM (Incoming Control
Arm)
[ RESERVED ] [ ARM ]
7 1 0
**Reserved:** Always zero.
**Arm:** When 1, incoming control data is armed and will be received in
the next video frame. Automatically cleared once a control
packet has been read.
Register: ICLENGTH (Incoming
Control Length)
[ LENGTH ]
7 0
**Length:** Length in bytes of the data in _ICDATA_. Automatically set when
a new packet has been cached.
Register: ICDATA (Incoming Control Payload Data)
[ CONTROL DATA ]
255*8-1 0
**Control Data:** Last control data extracted from a video frame since _ICARM.
ARM_ was reset.
Register: OTARM (Output Tally Arm)
[ RESERVED ] [ ARM ]
7 1 0
**Reserved:** Always zero.
**Arm:** When 1, the outgoing tally data is armed and will be continuously
from the next video frame until new data is set. Automatically
cleared once the tally has been sent in at least one frame.
Register: OTLENGTH (Output Tally
Length)
[ LENGTH ]
7 0
**Length:** Length in bytes of the data to send in OTDATA.
26Developer Information
Register: OTDATA (Output Tally Data)
[ TA LLY DATA ]
255*8-1 0
**Tally Data:** Tally data that should be embedded into a future video frame
(one byte per camera). Bit zero indicates a Program tally, while bit
one indicates a Preview tally.
Register: ITARM (Input Tally Arm)
[ RESERVED ] [ ARM ]
7 1 0
**Reserved:** Always zero.
**Arm:** When 1, tally data armed and will be received in the next video
frame. Automatically cleared once the tally has been read.
Register: ITLENGTH (Input Tally
Length)
[ LENGTH ]
7 0
**Length:** Length in bytes of the data in _ITDATA_. Automatically set when
a new packet has been cached.
Register: ITDATA (Input Tally Data)
[ TA LLY DATA ]
255*8-1 0
**Tally Data:** Last tally data extracted from a video frame since _ITARM.ARM_
was reset (one byte per camera). Bit zero indicates a Program
tally, while bit one indicates a Preview tally.
27Developer Information
Help
Getting Help
Your Blackmagic 3G-SDI Arduino Shield is a developers tool designed for you to develop
independently based on your custom requirements.
For the most up to date information about your shield, visit the Blackmagic Design online
support pages and check the latest support material.
Blackmagic Design Online Support Pages
The latest manual, software and support notes can be found at the Blackmagic Design support
center at www.blackmagicdesign.com/support.
Arduino Development Forum
If you have programming questions, you can get help from Arduino development forums on the
Internet. There is a whole community of Arduino developers and many good quality forums
where you can ask software questions, or even find a willing engineer to hire to implement your
solution for you!
Blackmagic Design Forum
The Blackmagic Design forum on our website is a helpful resource you can visit for more
information and creative ideas. This can also be a faster way of getting help as there may
already be answers you can find from other experienced users and Blackmagic Design staff
which will keep you moving forward. You can visit the forum at
https://forum.blackmagicdesign.com
Checking the Software Version Currently Installed
To check which version of Blackmagic Arduino Shield Setup software is installed on your
computer, open the About Blackmagic Arduino Shield Setup window.
On Mac OS X, open Blackmagic Arduino Shield Setup from the Applications folder.
Select About Blackmagic Arduino Shield Setup from the application menu to reveal
theversion number.
On Windows 7, open Blackmagic Arduino Shield Setup from your Start menu.
Clickonthe Help menu and select About Blackmagic Arduino Shield Setup to reveal
the version number.
On Windows 8, open Blackmagic Arduino Shield Setup from the Blackmagic Arduino
Shield Setup tile on your Start page. Click on the Help menu and select About
Blackmagic Arduino Shield Setup to reveal the version number.
How to Get the Latest Software Updates
After checking the version of Blackmagic Arduino Shield Setup software installed on your
computer, please visit the Blackmagic Design support center at www.blackmagicdesign.com/
support to check for the latest updates. While it is usually a good idea to run the latest updates,
it is wise to avoid updating any software if you are in the middle of an important project.
28Help
Warranty
12 Month Limited Warranty
Blackmagic Design warrants that the Blackmagic 3G-SDI Arduino Shield product will be free
from defects in materials and workmanship for a period of 12 months from the date of purchase.
If a product proves to be defective during this warranty period, Blackmagic Design, at its option,
either will repair the defective product without charge for parts and labor, or will provide a
replacement in exchange for the defective product.
In order to obtain service under this warranty, you the Customer, must notify Blackmagic Design
of the defect before the expiration of the warranty period and make suitable arrangements for
the performance of service. The Customer shall be responsible for packaging and shipping the
defective product to a designated service center nominated by Blackmagic Design, with
shipping charges pre paid. Customer shall be responsible for paying all shipping changes,
insurance, duties, taxes, and any other charges for products returned to us for any reason.
This warranty shall not apply to any defect, failure or damage caused by improper use or
improper or inadequate maintenance and care. Blackmagic Design shall not be obligated to
furnish service under this warranty: a) to repair damage resulting from attempts by personnel
other than Blackmagic Design representatives to install, repair or service the product, b) to
repair damage resulting from improper use or connection to incompatible equipment, c) to
repair any damage or malfunction caused by the use of non Blackmagic Design parts or
supplies, or d) to service a product that has been modified or integrated with other products
when the effect of such a modification or integration increases the time or difficulty of servicing
the product. THIS WARRANTY IS GIVEN BY BLACKMAGIC DESIGN IN LIEU OF ANY OTHER
WARRANTIES, EXPRESS OR IMPLIED. BLACKMAGIC DESIGN AND ITS VENDORS DISCLAIM
ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
PURPOSE. BLACKMAGIC DESIGN’S RESPONSIBILITY TO REPAIR OR REPLACE DEFECTIVE
PRODUCTS IS THE WHOLE AND EXCLUSIVE REMEDY PROVIDED TO THE CUSTOMER FOR
ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES IRRESPECTIVE OF
WHETHER BLACKMAGIC DESIGN OR THE VENDOR HAS ADVANCE NOTICE OF THE
POSSIBILITY OF SUCH DAMAGES. BLACKMAGIC DESIGN IS NOT LIABLE FOR ANY ILLEGAL
USE OF EQUIPMENT BY CUSTOMER. BLACKMAGIC IS NOT LIABLE FOR ANY DAMAGES
RESULTING FROM USE OF THIS PRODUCT. USER OPERATES THIS PRODUCT AT OWN RISK.