Page 1 of 3

Arduino Shield Thread

PostPosted: Thu May 19, 2016 1:14 am
by Jared Mooney
What are some possibilities you can think of for the new arduino shield model?

Here's one I want to explore. I want to see if I can build a wireless "AirPaint" system for the URSA Mini Studio Camera. Since camera control happens over the SDI port, but theoretically needs to transmit less data if PGM return is not supplied, I'm curious if I can build a TX and RX using the new Arduino Shield and a 3rd party Arduino RF Module to send color correction data wirelessly to a camera.

Thoughts?

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 7:39 pm
by Evan Daum
Does the shield need a valid SDI input signal for the control data to "ride" on in order to work? I guess you could loop the camera back in to itself if so. Seems like it should be possible.

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 10:00 pm
by Hersh Burston
The Arduino shield doesn't need an SDI input. By default the black output is set to 1080i59.94 but this can be changed using the supplied setup utility.

The camera control information is sent in the ancillary data of the SDI stream so to make your project wireless you could use an HD transmitter to send the SDI stream to the remote camera.

I assume you are planning to use two Arduino units - one with the shield at the camera end and the second to send the commands via the RF module. This should work and is a great idea.

For your information we are hoping to start shipping the shields within the next four weeks.


Regards,

Hersh Burston
Senior Product Manager
Blackmagic Design

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 10:07 pm
by JohnBengston
Hersh Burston wrote:For your information we are hoping to start shipping the shields within the next four weeks


Great News!! :)

Hersh Burston wrote:I assume you are planning to use two Arduino units - one with the shield at the camera end and the second to send the commands via the RF module. This should work and is a great idea.


Implies they can be used in Send and/or Receive Mode. = Even Better News!! :D

Thanks.

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 10:43 pm
by Hersh Burston
The shield can only be used in send mode.



Regards,

Hersh Burston
Senior Product Manager
Blackmagic Design

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 11:18 pm
by Evan Daum
So, the shield cannot receive commands FROM the ATEM via the SDI shield? Only send commands to a Camera or other device that responds to the SDI commands?

Re: Arduino Shield Thread

PostPosted: Thu May 19, 2016 11:22 pm
by JohnBengston
That is what he is saying, and hence the end of any idea of using a Arduino or PI to convert commands sent from the ATEM intended for BMD Cameras, to control other sorts of camera.

This device is only useful for controlling BMD cameras without an ATEM. That's a very valid use-case, albeit somewhat limited in comparison to the potential.

It would be interesting to know if this is a function of the hardware/firmware or just because they haven't written the receive library code yet. Although I'm certain we won't get that answered.....

That statement has somewhat of the "The URSA Mini doesn't support Interlace" about it. Of Course that was followed 4-5 months later, by a reversal.

As ever with BMD, it's a wait and see.

Re: Arduino Shield Thread

PostPosted: Sat May 21, 2016 6:47 am
by Colin Bradburne
It's a real shame the shield won't extract data from the SDI (like from the ATEM). With that in mind does anyone know how to extract Camera Control data from the ATEM SDI output on an Arduino?

Re: Arduino Shield Thread

PostPosted: Sun May 22, 2016 8:47 pm
by Jared Mooney
Hersh Burston wrote:The Arduino shield doesn't need an SDI input. By default the black output is set to 1080i59.94 but this can be changed using the supplied setup utility.

The camera control information is sent in the ancillary data of the SDI stream so to make your project wireless you could use an HD transmitter to send the SDI stream to the remote camera.

I assume you are planning to use two Arduino units - one with the shield at the camera end and the second to send the commands via the RF module. This should work and is a great idea.

For your information we are hoping to start shipping the shields within the next four weeks.


Regards,

Hersh Burston
Senior Product Manager
Blackmagic Design


This is great news. Any hardware guys wanna work on this idea with me?

Or Blackmagic could always beat us to market with a $1000/per camera package. Wireless DaVinci color and Iris control?

<Dares Grant Petty to do it.>

Re: Arduino Shield Thread

PostPosted: Tue May 24, 2016 12:27 am
by Baz
Working on it as we speak...... :?

Re: Arduino Shield Thread

PostPosted: Wed Jul 27, 2016 3:40 am
by Jared Mooney
Baz wrote:Working on it as we speak...... :?


Any progress? I just got mine this week, but I have to find somebody with an Ursa mini and a servo lens to test with.

Re: Arduino Shield Thread

PostPosted: Wed Aug 17, 2016 11:00 am
by Bjørn Thorup
Hi all

If anybody should be interested we have just launched a Indiegogo campaign for a RCP unit which have integrated the Blackmagic 3G-SDI Arduino Shield. Have a look at http://igg.me/at/rcp to learn more

Re: Arduino Shield Thread

PostPosted: Wed Aug 17, 2016 2:48 pm
by videokadr
Is it possible to transfer RS422 Sony protocol for controlling camera the CCU by the RMB 150?
I think it should be use 2 sets of 2 arduino, together 4, it isnt?

Re: Arduino Shield Thread

PostPosted: Fri Aug 19, 2016 1:40 pm
by Jan Bednar
Colin Bradburne wrote:It's a real shame the shield won't extract data from the SDI (like from the ATEM). With that in mind does anyone know how to extract Camera Control data from the ATEM SDI output on an Arduino?


I dont know, but look here, guys from FieldCast are working on such kind of device and I think I saw it in Frankfurt http://fieldcast.eu/products/converters ... roller-one

Re: Arduino Shield Thread

PostPosted: Fri Aug 19, 2016 1:47 pm
by Peter Wood
Does the Arduino shield work with the MEGA 2560?
I can get it work with UNO but not the MEGA 2560.
Is there a different process for this board?

Re: Arduino Shield Thread

PostPosted: Sat Aug 20, 2016 12:07 am
by Baz
Peter Wood wrote:Does the Arduino shield work with the MEGA 2560?
I can get it work with UNO but not the MEGA 2560.
Is there a different process for this board?


You have to either use serial comms or re route the I2C pins.

Baz

Re: Arduino Shield Thread

PostPosted: Sun Aug 21, 2016 10:19 am
by Peter Wood
Hi Baz

Thanks got it. Lucky i wired it up using fly leads and not the header. So it was easy to reroute.

Cheers

Woody

Re: Arduino Shield Thread

PostPosted: Tue Aug 23, 2016 4:17 am
by waltervolpatto
so, in theory you can hide the camera in the wild, and have an Arduino connected to a servo and sensors, when an animal get in range the sensor start the recording and it can reposition the camera in the general direction and focus/zoom based on the sensor triggered?

Re: Arduino Shield Thread

PostPosted: Thu Aug 25, 2016 10:02 am
by Kasper Skaarhoj
For those interested, we have made a video online that reviews the shield:



We refer to code and other downloads in the video which are not yet online.

To answer one specific question in this thread: Yes, it is possible to read out incoming data on the shield although its undocumented how to do that.

Feature Suggestions for BMD

PostPosted: Thu Aug 25, 2016 10:27 am
by Kasper Skaarhoj
Hi BMD developers,

Great shield! Thanks!

Here are some feature suggestions:
- Make it possible to manipulate other VANC lines than 16 and different DID/SDIDs. I'm thinking a raw mode that could allow us to read/write such as time code into the signal.
- Let us read out from the shield what specific type of input signal we receive (if any): 1080p30, 720p50, etc.
- Release the FPGA source code and description of our to program it with new, community contributed firmware. I'm not aware how much is necessary for us to hack on it, but at least enough information for people with FPGA experience to be able to make alternative uses of the shield. This might also allow us to manipulate the actual SDI video data? Maybe not, I guess it depends on the hardware memory. Now, such a step would be really awesome.

Some bugs / suggestions of the bat:
- I2C only on pins A5+A4? Better to use the designated pins in opposite corner of shield.
- Don't include pull ups on the shield, if the shield is to regard as an IC with I2C support, that would not make sense.
- Input buffer seems to miss packets sometimes. This is not due to I2C speed because it happens also if you send just one packet every second.
- Library uses constructor parameter, this makes integration in other libraries a pain/impossible, so better is to use a constructor with no parameter and add a begin() function with parameter. This is arduino-best-practice. We will put a modified version of the library on GitHub soon.
- Don't use wire.begin() inside your library, this belongs in the main sketch normally. Also, wire.h should be included in main sketch in your sample code.
- I2C bus works on 5V devices but not 3V3 volt devices. For that you need such as a TCA9548A which is confirmed to do the trick. Other ways to convert I2C using MOSFETs does not work on this shield and even with the TCA9548A we couldn't make it work with such as a WiMos module. We tried really hard and couldn't see why, even when analysing the I2C bus with a scope.

Re: Arduino Shield Thread

PostPosted: Thu Sep 22, 2016 5:30 pm
by Beau Monaghan
Hello,

Does anyone know of a "quick start guide" to set this up? The video was great but I have some basic Arduino questions like when I load a sketch, how do I get that to load when the Arduino boots every time?

Thank You,

Re: Arduino Shield Thread

PostPosted: Thu Sep 22, 2016 6:54 pm
by Thomas Seewald
You transfer the sketch from programming gui to the ardouino during devellopment. The arduiono stores only one sketch, which will be started automaticly after boot / power on.

Re: Arduino Shield Thread

PostPosted: Thu Sep 22, 2016 7:01 pm
by Beau Monaghan
So if I open the sketch, hit the Upload button, I do not have to save it? It will always be there?

Re: Arduino Shield Thread

PostPosted: Fri Sep 23, 2016 7:34 am
by Thomas Seewald
Yes, after upload, the sketch is stored on arduino and runs after switching power on. The sketch stays on arduiono until a new sketch is uploaded or the arduiono is dammaged ;-)

Re: Arduino Shield Thread

PostPosted: Fri Sep 23, 2016 3:07 pm
by Beau Monaghan
Awesome. Thank you!!

Re: Arduino Shield Thread

PostPosted: Mon Oct 03, 2016 11:51 pm
by Earl R. Thurston
When using the Arduino shield with an URSA Mini, do the colour correction settings only affect SDI output or do they also alter recordings to the CFast cards as well? And, if recorded, to which video formats? (Probably not RAW, but wondering more about ProRes Film vs. Video dynamic range.)

Re: Arduino Shield Thread

PostPosted: Tue Jan 17, 2017 10:43 pm
by Roman Schoissengeier
Baz wrote:
Peter Wood wrote:Does the Arduino shield work with the MEGA 2560?
I can get it work with UNO but not the MEGA 2560.
Is there a different process for this board?


You have to either use serial comms or re route the I2C pins.

Baz



Hi Baz, could you tell which pins it needs to be re routed to? SCL for Pin A4 and SCA for Pin A5?
thx, Roman

Re: Arduino Shield Thread

PostPosted: Wed Jan 18, 2017 6:17 pm
by Gary Adams
Hello Earl. The CCU controls from ATEM or Shield will affect the in camera video recordings with the exception of raw for the expected settings.

Re: Arduino Shield Thread

PostPosted: Fri Jan 20, 2017 5:16 am
by Roman Schoissengeier
Hi All,
i figured it out by myself,
if you want to use the Arduino Mega (2560, rev.3) you need to connect:
A4 (on the BMD shield) to SDA on Arduino,
A5 (on the BMD shield) to SCL on Arduino.

i used the headers and soldered them onto the Shield,
used jumper wires to bridge the pins when using the Arduino Mega ( you are "loosing" pins A4 and A5...).

ArduinoMegaBMD.jpg
ArduinoMegaBMD.jpg (491.45 KiB) Viewed 34252 times


i'm new to the whole thing,
if this is not the correct approach, please correct me.

Re: Arduino Shield Thread

PostPosted: Tue Jan 31, 2017 4:47 am
by fixer
For those of you who have already been developing with the shield & api, can you save me some research and tell me if I can use 1x arduino & 1x shield to change settings on 8 micro studio cameras (as opposed to needing 8x arduinos & 8x shields)?

Re: Arduino Shield Thread

PostPosted: Tue Jan 31, 2017 1:13 pm
by Xtreemtec
That should not be a problem.. You can send up to 20 channels from the SDI shield.. You change the desired channel before sending the command and you can control them one by one..

Re: Arduino Shield Thread

PostPosted: Fri Feb 03, 2017 10:48 pm
by fixer
thanks! I just ordered a shield and have an Uno to start my coding

Re: Arduino Shield Thread

PostPosted: Thu Feb 09, 2017 2:47 pm
by Sven Meinhardt
fixer wrote:For those of you who have already been developing with the shield & api, can you save me some research and tell me if I can use 1x arduino & 1x shield to change settings on 8 micro studio cameras (as opposed to needing 8x arduinos & 8x shields)?


Hey ;)

That is no problem at all. I'm currently working with 9 Micro Studios at once and it works ;) Sometimes one camera has to be restarted to accept the Shield's input, but that could also be a problem of the whole setup ;) Apart from that, there are no problems and all cameras get their settings.


Have a nice day,

Sven

Re: Arduino Shield Thread

PostPosted: Thu Feb 09, 2017 5:19 pm
by Koen Deschepper
Hi,

Does someone how knows how to use the sdiTallyControl.getCameraTally function?

MY programing skills are not as should be ;)

Kind regards

Re: Arduino Shield Thread

PostPosted: Fri Feb 10, 2017 6:26 pm
by Koen Deschepper
Hi,
I have my "Tally extraction" working

Regards
Koen

Verstuurd vanaf mijn SM-G920F met Tapatalk

Re: Arduino Shield Thread

PostPosted: Mon Feb 13, 2017 5:33 pm
by Gary Adams
For anyone playing with the sdiTallyControl.getCameraTally call, make sure you put it in a loop and not simply call it once. Probably experienced people know that but it caught me as well.

Regards, Gary

Re: Arduino Shield Thread

PostPosted: Wed Feb 22, 2017 9:20 am
by Radosław Przybył
I am developing remote control for BM cameras based on BM SDI Shield. I can change 40 different parameters, but no luck with video mode. No matter what I send to camera, there is no change.
Are there any limitations for this function to work or documentation was changed?
I am sending 5 bytes to set up video mode. Even such simple code is not working:

Code: Select all
 int8_t paramTable[5];
  paramTable[0] = 3;  //50fps
  paramTable[1] = 0;  //regular
  paramTable[2] = 3;  //1080
  paramTable[3] = 1;  // interlaced
  paramTable[4] = 0;  //YUV
  sdiCameraControl.writeCommandInt8(
    1,         
    1,       
    0,       
    0,             
    paramTable
  ); 

Also tried 50 instead of 3...
Any help will be appreciated.

I am using BM Studio Camera as test target.

ps. Other functions that need to pass an array are working w/o problems.

Regards

Re: Arduino Shield Thread

PostPosted: Thu Feb 23, 2017 12:26 pm
by Radosław Przybył
And here is mine. Lunchbox SDI Remote prototype. It needs some minor software tweaks (video mode is not working) and professional case.


Re: Arduino Shield Thread

PostPosted: Fri Feb 24, 2017 8:47 am
by Roman Schoissengeier
has anyone figured out how to access the "tint" parameter.
( on the camera, next to whitebalance...)
i think this was introduced with one of the latest camera updates,
but i couldn't find the correct parameter mapping in the arduino controls...

thx, Roman

Re: Arduino Shield Thread

PostPosted: Fri Feb 24, 2017 9:07 am
by Radosław Przybył
It is probably calculated parameter - look how tint is defined in Adobe Camera RAW.Image

Re: Arduino Shield Thread

PostPosted: Fri Feb 24, 2017 9:59 am
by Radosław Przybył
Second thought - try to send something to parameters 3 or 4 on group 1. They are reserved in documentation Number 3 is in good relation to WB setting ;-)
Unfortunately I have only Studio cameras and they lack this new parameter.

Re: Arduino Shield Thread

PostPosted: Fri Feb 24, 2017 2:59 pm
by Radosław Przybył
Gain. What should I pass as a parameter to set gain function?
I am sending int8 and camera acts random. Gain jumps from 0 to +6 sometimes when 4 is sent, sometimes when it is 5 sometimes when it is 11. Then same sequence repeats on higher gain levels. In case of Studio Camera I have gain levels of 0, +6, +12, +18, but documentation states I should use values between 1 and 16. Could somebody hint me, how to handle it?

Re: Arduino Shield Thread

PostPosted: Sun Feb 26, 2017 12:44 am
by Radosław Przybył
Will answer myself. Proper values sent to gain function in case of Studio Camera are: 2 (1x), 4(2x), 8(4x) , 16 (16x(+2)).

Re: Arduino Shield Thread

PostPosted: Sun Feb 26, 2017 1:40 pm
by Xtreemtec
Yeah these are the steps that the software does have available also.. There are no more gain parameters at this moment.. While i would prefer a +3db stepping..

Re: Arduino Shield Thread

PostPosted: Wed Mar 01, 2017 8:34 pm
by Xtreemtec
Had a job last weekend were i had to have tally on my Fiber units from a Roland V800 mixer..

The mixer had potential free contact closure tally outputs.. Which means that when a Tally is made it is pulled low to ground. Potential free meand that it is not connected to any power source. So to detected it your input has to be high.

Be Aware!! I have put a small delay in the code to not flood the serial terminal while debugging.
The best is to delete this line or make the time smaller like 50 or so when you are finnished with debugging your inputs. This way the interface will run faster.


I thoughed i would share the code for others to help them with future projects!

I'm open to help with projects but i don't do request like:
"i need a full shading for my 3 ursa's, I have no clue what programming is so make it for me.." :roll: :lol:

Code: Select all
/*
  SDI Tally interface based
  Turns tally of the cameras on and off based on pins pulled low.
  This interface is programed for Potential free outputs on a video mixer.
  This means that if the tally output of the video mixer is active it will make a connection to ground.
  By configuring the inputs with pull-up they are active 5V high and when pulled low to GND it will send that ports tally to the SDI output.

  Written by Daniel Wittenaar for free use.
  Use code and arduino's with care!! I'm not responsable for any damage caused by using this code!!

  When you don't know how electronics work always ask advice from an expert!

  I have put a  delay(250);   in the code. This is for debugging purposes. When done with serial debugging remove or //  the delay to have a more responsive interface.   

  This example code is in the public domain.
  You may re-distribute and share this code. But you need to leave this info unchanged and included with the code.
*/

#include <BMDSDIControl.h>                                // need to include the library
#include <Wire.h>                                         // Included because i had error with the original BMD Lib saying Wire.h did not exist

int PGM1 = 2;
int PRV1 = 3;

int PGM2 = 4;
int PRV2 = 5;

int PGM3 = 6;
int PRV3 = 7;

int PGM4 = 8;
int PRV4 = 9;


BMD_SDITallyControl_I2C sdiTallyControl(0x6E);            // define the Tally object using I2C using the default shield address

// the setup function runs once when you press reset or power the board
void setup()
{
 Serial.begin(115200);
 
  sdiTallyControl.begin();                                 // initialize tally control
  sdiTallyControl.setOverride(true);                       // enable tally override

  pinMode(PGM1, INPUT_PULLUP);
  pinMode(PGM2, INPUT_PULLUP);
  pinMode(PGM3, INPUT_PULLUP);
  pinMode(PGM4, INPUT_PULLUP);
 
  pinMode(PRV1, INPUT_PULLUP);
  pinMode(PRV2, INPUT_PULLUP);
  pinMode(PRV3, INPUT_PULLUP);
  pinMode(PRV4, INPUT_PULLUP);

}

// the loop function runs over and over again forever
void loop()
{               
  if(digitalRead(PGM1) == LOW){ Serial.println("PGM1"); }
  if(digitalRead(PGM2) == LOW){ Serial.println("PGM2"); }
  if(digitalRead(PGM3) == LOW){ Serial.println("PGM3"); }
  if(digitalRead(PGM4) == LOW){ Serial.println("PGM4"); }

  if(digitalRead(PRV1) == LOW){ Serial.println("PRV1"); }
  if(digitalRead(PRV2) == LOW){ Serial.println("PRV2"); }
  if(digitalRead(PRV3) == LOW){ Serial.println("PRV3"); }
  if(digitalRead(PRV4) == LOW){ Serial.println("PRV4"); }
  Serial.println();                                               // Print New Line
 
  // Use this delay only when you use the Serial Terminal for debug!!
  delay(250);                                             
 
 
  // turn tally ON    // Camera Number   // Program Tally    // Preview Tally
  sdiTallyControl.setCameraTally( 1, ( !digitalRead(PGM1)) , ( !digitalRead(PRV1)) );
  sdiTallyControl.setCameraTally( 2, ( !digitalRead(PGM2)) , ( !digitalRead(PRV2)) );
  sdiTallyControl.setCameraTally( 3, ( !digitalRead(PGM3)) , ( !digitalRead(PRV3)) );

}

Re: Arduino Shield Thread

PostPosted: Thu Mar 02, 2017 1:45 pm
by uli peters
Really stupid that the shield does not allow reading / extracting of camera control data and tally from SDI input. That would allow flexible and small tally and remote control solutions for any kind of situation.

Re: Arduino Shield Thread

PostPosted: Thu Mar 02, 2017 2:20 pm
by Xtreemtec
It is possible.. But then you need to code a bit more and they didn't descripe it in their manual. ;)

Re: Arduino Shield Thread

PostPosted: Thu Mar 02, 2017 2:43 pm
by Koen Deschepper
uli peters wrote:Really stupid that the shield does not allow reading / extracting of camera control data and tally from SDI input. That would allow flexible and small tally and remote control solutions for any kind of situation.

Hi,
I have working code to read the tally.
I will send a PM when I'me at home.

Kind regards
Koen


Verstuurd vanaf mijn SM-G920F met Tapatalk

Re: Arduino Shield Thread

PostPosted: Thu Mar 02, 2017 2:43 pm
by Gary Adams
There is documented support for getting tally from the incoming SDI.

Regards, Gary

Re: Arduino Shield Thread

PostPosted: Thu Mar 02, 2017 3:38 pm
by Xtreemtec
Well it is all in the Libraries.. But most Arduino users don't look at libraries..

For tally there is the Function:
int SDITallyControl::read(byte data[], int dataLength)

For shading info there is the Function:
int SDICameraControl::read(byte data[], int dataLength)

It is possible but you need some expierence with programming. :idea: