Sony Visca communication problem.

Hi guys,

First of al im a newbie when it comes to arduino, since my problem already kept my busy for the past 4 days im starting to learn the basics of the code i need. The problem though is that somehow the camera doesnt respond and i dont know if its a code thing or a hardware problem.

So at the moment im really stuck and hope you want to assist me in what ther can be wrong.

First of al the components i use:

-Sony FCB-EV 7500 camera
-TWIGA HDMI interface board (Also tried RX/TX direct on camera)
-Arduino UNO (also tried the Mini Pro 5V and Mega)
-Sparkfun voltage converter 5v to 3.3v (Camera communication level)

The TWIGA board in this case has the RX and TX cable and should transmit to the camera.
I tried the code i added below and the response i get from the serial monitor seems ok to me, but offcourse i can be wrong.

This is how i connected the arduino UNO (5 Volt)

DC Voltage regulator 5V → Arduino UNO 5V
DC Regulator Ground 5V → Arduino GND
RC Receiver (Futaba) CH6 → Pin 3 PWM Arduino (Zoom in and out)
Pin 8 TWIGA RxD → 3.3V Rx0 Converter → 5V Rx1 Converter → TX1 Arduino
Pin 7 TWIGA TxD → 3.3V Tx1 Converter → 5V Tx0 Converter → RX0 Arduino
Pin9 Gnd TWIGA → LV Side GND Converter → HV Side GND Converter → GND Digital PWM Side

I also tried a mega board with the serial1 so i could use TX1 and RX1 but same problem.

The last thing that seems to work is that if i open serial monitor and i used the code below it al seems to work according to the serial monitor. But the camera does nothing.

Somehow i think but offcourse i can be wrong its not the code but something i do wrong in the hardware part?

This is the code i used for the Mega (Serial1)

byte address_command[4]= {0x88, 0x30, 0x01, 0xFF};
byte if_clear[5]= {0x88, 0x01, 0x00, 0x01, 0xFF};
byte zoom_tele[6]= {0x81, 0x01, 0x04, 0x07, 0x02, 0xFF};   
byte zoom_wide[6]= {0x81, 0x01, 0x04, 0x07, 0x03, 0xFF};  
byte zoom_teleVar[6]= {0x81, 0x01, 0x04, 0x07, 0x25, 0xFF};  //Zoom In: 81 01 04 07 2x FF , where x is speed- 0(low)-7(hi);
byte zoom_wideVar[6]= {0x81, 0x01, 0x04, 0x07, 0x35, 0xFF};  //Zoom Out: 81 01 04 07 3x FF , where x is speed- 0(low)-7(hi);
byte zoom_stop[6]= {0x81, 0x01, 0x04, 0x07, 0x00, 0xFF};  //Stop all zooming
byte auto_focus[6]= {0x81, 0x01, 0x04, 0x38, 0x02, 0xFF}; //auto focus
byte commandCancel[3]= {0x81,0x21,0xFF};

const int delayTime= 250;   //Time between commands
const int zoom_out=3; //Zoom 
const int zoom_in=3; //Zoom 

void setup() {
  pinMode(zoom_in, INPUT);
  pinMode(zoom_out, INPUT);

  // initialize both serial ports:
//Send Address command
  for (int i=0; i<4; i++){
  delay(500);  //delay to allow camera time for next command
  //Send IF_clear command
  for (int i=0; i<5; i++){
    delay(100);  //For USB testing-- NOT FOR ACTUAL CONTROLLER

void loop() {
  // read from port 1, send to port 0:
  if (Serial1.available()) {
    int inByte =;
  // read from port 0, send to port 1:
  if (Serial.available()) {
    int inByte =;
    //ZOOM IN
int zoom_inState=pulseIn(3, HIGH, 25000); 
if(zoom_inState>1550 )
    Serial.print("ZOOM IN");
    //Send zoom tele command
    for (int i=0; i<6; i++){
      Serial.print(zoom_teleVar[i]);   //for debugging
    //ZOOM OUT
 int zoom_outState=pulseIn(3, HIGH, 25000);
if(zoom_outState < 1400 ) 
    Serial.print("ZOOM OUT");
    //Cancel prev commands
    for (int i=0; i<6; i++){
      Serial.print(zoom_wideVar[i]);  //for debugging
  if(zoom_outState < 1500 && zoom_inState > 1400 ){
for (int i=0; i<6; i++){
    for (int i=0; i<6; i++){
      Serial.print(zoom_stop[i]);  //for debugging
void sendCommandCancel(){
  for (int i=0; i<3; i++){

I really hope someone can help me because i dont know what to do know.

Thank you.


Sparkfun voltage converter 5v to 3.3v

Please provide a link to the exact product you're using.

If you listed all connections, the 3V3 (LV on the voltage converter) is missing.

Do you have links to the documentation of that camera interface? Please provide as much information as you have.