miércoles, 27 de enero de 2021

Descubre la GY-HC550E 4KHDR

Este artículo queda resumido en un vídeo que he realizado en un intento de dinamizar un poco más el blog.

En el vídeo presento de forma generalizada la cámara JVC GY-HC550E, una cámara de altas prestaciones a precio asequible.

Aprovecho para anunciar la intención (quien me lee, ya sabe que mi tiempo es limitado) de en breve poder hacer entrega de vídeos de formación para el uso y el funcionamiento de la GY-HC550E, menú por menú que haré en varios capítulos. Si estáis interesados solo tenéis que suscribiros al blog.

La razón ... el convencimiento de que estamos ante una cámara o una nueva generación de cámaras GY-HC muy avanzadas y extremadamente versátiles para trabajar en cualquier proyecto, con muchas herramientas que pueden reducir costes por necesitar menos elementos adyacentes tanto en producción, como en TV 

Lamentablemente y hablo con pleno conocimiento de causa, hay muchos usuarios que son excelentes profesionales de imagen pero las nuevas tecnologías por una razón u otra no las usan, y eso en ocasiones va en detrimento de su rendimiento, aprovechamiento de los equipos y su calidad laboral.

La intención de los próximos vídeos es hacer que quien tenga una cámara GY-HC550E conozca a fondo el equipo y sepa extraerle el máximo rendimiento.

Como siempre gracias por leer este blog.

Video: https://youtu.be/pc86R_cC3gA





domingo, 3 de enero de 2021

Controla la cámara PTZ KY-PZ100 de JVC por IR con librerías de Arduino.

 Arduino se ha convertido en un gran aliado para escuelas ,universidades, y profesionales. Con este pequeño dispositivo se pueden desarrollar ideas tecnológicamente avanzadas y a medida, con unos costes muy bajos.

KY-PZ100BEBC con grafismo integrado.

La cámara robotizada  PTZ (Pan Til/Zoom) de JVC,  KY-PZ100 tiene una excelente calidad de imagen, puede grabar con formato 1920x1080 50p Quick Time  hasta 50Mb en tarjeta SD y acceder a sus archivos vía IP, Es una cámara que trabaja en entornos profesionales de TV, eventos e instalaciones ya que permite un control muy preciso de movimiento y es totalmente silenciosa, además, su zoom óptico de x30 y la capacidad de hacer streaming y publicar directamente en Facebook Life o YouTube elevan esta cámara a un nivel ideal para cualquier proyecto.

La cámara KY-PZ100 permite ser controlada por control serie compatible con Visca , también por conexión IP donde las APIS son abiertas y se pueden descargar desde la pagina web de JVC, y finalmente también dispone de control vía IR, y es ahí donde va dirigido este articulo.


La cámara se puede controlar u operar de forma paralela por sus diferentes vías de control, es decir puede estar conectada a la red IP, ser controlada por web y hacer streaming al mismo tiempo que puede recibir y ejecutar las órdenes que recibe vía IR.

El control IR da la posibilidad a centros educativos a realizan sus proyectos de control de la cámara aprovechando sus excelentes cualidades sin riesgo a que se puedan producir averías por estar conectadas, ya sea de la cámara o de la red informática, puesto que el control que se propone en este articulo es vía IR, es decir, sin contacto y 100% seguro.

Por otro lado en entornos profesionales puede facilitar el control en instalaciones donde se necesiten sensores domóticos o inmóticos sencillos o donde no se pueda hacer una instalación cableada o por Wifi y los emisores IR por su sencillez cobren protagonismo.

Yo soy un gran ignorante sobre la programación pero afortunadamente existe mucha información en la red que me ha permitido llegar hacer este articulo y crear como ejemplo una RadioTV con una sola cámara a nivel experimental ya que la cámara permite congelar la imagen mientras cambia de posición para no ver los movimientos.

El control IR permite instalar la cámara y realizar en control a distancia sin contacto físico o cables, esto podría llevar a desarrollar el seguimiento de una persona con sensor infrarrojo , o el movimiento desde varias posiciones con simples interruptores o dependiendo de sensores, tal y como se ha aplicado en este proyecto de RadioTV.

Set completo, sensores KY-037. El 1 esta integrado  en la estación base el 2, 3 y 4 cableados

Los data-gramas IR los he extraído leyendo la información directamente del Remoto con diferentes códigos disponibles para Arduino. 

Aquí dejo mi humilde colaboración al mundo Arduino, con este código y lo que creo es mucho más importante los data-gramas de control IR para usarlo con la librerías y existentes de Arduino.

El código básicamente utiliza las memorias de posición de la cámara ya memorizadas bien con el control IR , vía web o con control físico como el RM-LP100.

El código propuesto es básico y lee cuatro sensores de audio del 1 al 4 si se detecta uno de ellos de  forma independiente va su posición correspondiente de 1- 4 que normalmente son un primer plano del interlocutor. En el caso de que los detectores 2 y 3 se activen de forma simultanea entrará la posición 5 con un plano medio y si alguna otra combinación de dos sensores se activan simultáneamente se envía el código para la posición 6 que será un gran angular.. es evidente de que este es un ejemplo moldeable a la necesidad de cualquier necesidad.

Bueno espero que sea útil sobre todo a centros de formación y universidades para su uso como Radio TV o desarrollo e investigación en nuevos proyectos.

El Código.

/*     Este código es para usarlo con una cámara PTZ de JVC modelo KY-PZ100 en cualquiera de sus versiones y una placa de arduino Mega 2560.

   En caso de ser Arduino el IR debe asignarse y conectarse al pin3

   Con este código simplemente se envía la orden de posición a la cámara 1-6 via IR que es una de sus vías de control.

   La propuesta es hacer una TV Radio con una simple cámara y con 4 sensores de audio (pos1-4) siendo la 5 y 6 utilizadas cuando existe la detección de más de uno de los sensores.

   Hay que tener en cuanta que los cambios deben de disponer de un tiempo mínimo para que el espectador no se vuelva loco con los cambios de cámara , aquí se utiliza el mínimo recomendado.

   En cámara se debe activar la función de memoria de imagen antes de cambio de esa forma se evita la visualización de los movimientos.

   La cámara puede publicar directamente a You tube , Facebook etc la transmision se debe activar vía Menú, consola de control RM-LP100 o Web control

   Para el envió de los codigos IR se utiliza la librería "IRremote.h"  

   

   IRremote: IRsendDemo - demonstrates sending IR codes with IRsend

   An IR LED must be connected to Arduino PWM Pin3 Mega pin 9.

   Version 0.1 July, 2009

   Copyright 2009 Ken Shirriff

   http://arcfn.com


  Para el LCD se han utilizado

  #include <Wire.h>

  #include <LiquidCrystal_I2C.h>

  LiquidCrystal_I2C lcd (0x27, 16, 2);

*/


#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#include <IRremote.h>


#define Cam1        0xC305

#define Cam2        0xC385

#define Cam3        0xC345

#define Pos1        0xC360

#define Pos2        0xC3E0

#define Pos3        0xC310

#define Pos4        0xC390

#define Pos5        0xC350

#define Pos6        0xC3D0


// Define sensor pin

const int AudSensor1 = 5;

const int AudSensor2 = 6;

const int AudSensor3 = 7;

const int AudSensor4 = 8;

const int Ledout     = 4;



// Define a variable for the button state


IRsend irsend;

LiquidCrystal_I2C lcd(0x27, 16, 2); // si no te sale con esta direccion  puedes usar (0x3f,16,2) || (0x27,16,2)  ||(0x20,16,2)


void setup()

{

  Wire.begin();

  lcd.begin(16, 2);

  lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");


  //lcd.noBacklight();


  Serial.begin(9600);


  // Set Switch pin as Input

  pinMode(AudSensor1, INPUT);

  pinMode(AudSensor2, INPUT);

  pinMode(AudSensor3, INPUT);

  pinMode(AudSensor4, INPUT);

  pinMode(Ledout, OUTPUT);


}


void loop() {

  lcd.display();

  // Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

  if ((digitalRead(AudSensor2)&& digitalRead(AudSensor3) == HIGH))

    { lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 2+3.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 5.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos5, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos5, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos5, 16, 0);

    delay(2000);lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

     }

      // Si el sensor en pin5 y pin6 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

     else if ((digitalRead(AudSensor1)&& digitalRead(AudSensor2) == HIGH))

    {

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 1+2 .");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 6.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(2000);lcd.clear();

    lcd.backlight();

    lcd.setCursor(3, 0);

    lcd.print("** MACO ** ");

    lcd.setCursor(0, 1);

    lcd.print("JVC PTZ Audio Ctl");

     }

    // Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

     else if ((digitalRead(AudSensor2)&& digitalRead(AudSensor4) == HIGH))

    {

     lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 2+4.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 6.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(2000);lcd.clear();

    lcd.backlight();

    lcd.setCursor(3, 0);

    lcd.print("** MACO ** ");

    lcd.setCursor(0, 1);

    lcd.print("JVC PTZ Audio Ctl");

     }

      // Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

     else if ((digitalRead(AudSensor3)&& digitalRead(AudSensor1) == HIGH))

    {

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 3+1.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 6.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(2000);lcd.clear();

    lcd.backlight();

    lcd.setCursor(3, 0);

    lcd.print("** MACO ** ");

    lcd.setCursor(0, 1);

    lcd.print("JVC PTZ Audio Ctl");

     }

      // Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

     else if ((digitalRead(AudSensor3)&& digitalRead(AudSensor4) == HIGH))

    { lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 3+4.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 6.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(2000);lcd.clear();

    lcd.backlight();

    lcd.setCursor(3, 0);

    lcd.print("** MACO ** ");

    lcd.setCursor(0, 1);

    lcd.print("JVC PTZ Audio Ctl");

     }

      // Si el sensor en pin5 y pin7 da alto escribe en serial monitor y envia 1er 2 do código IR por pin 9 PMW para posicion 5.

     else if ((digitalRead(AudSensor1)&& digitalRead(AudSensor4) == HIGH))

    { lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 1+4.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 6.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos6, 16, 0);

    delay(2000);lcd.clear();

    lcd.backlight();

    lcd.setCursor(3, 0);

    lcd.print("** MACO ** ");

    lcd.setCursor(0, 1);

    lcd.print("JVC PTZ Audio Ctl");

     }

  else if (digitalRead(AudSensor1)== HIGH)

  {

  // Si el sensor en pin5 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.

  Serial.print("Enviando código Cámara 1, Posición 1 sen1 ");

    Serial.print("\n");

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 1.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 1.");

    //irsend forma parte de la libreia IR cam y posicion esta definido al inicio.

    irsend.sendJVC(Pos1, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos1, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos1, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos1, 16, 0);

    delay(5000);lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

 }

 // Si el sensor en pin6 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.

  else if (digitalRead(AudSensor2) == HIGH){

  Serial.print("Enviando código Cámara 1, Posición 2 sen2");

    Serial.print("\n");

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 2.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 2.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos2, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos2, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos2, 16, 0);

    delay(5000);

    lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

   }// Si el sensor en pin7 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.

  else if (digitalRead(AudSensor3) == HIGH)

  {

    Serial.print("Enviando código Cámara 1, Posición 3 sen3 ");

    Serial.print("\n");

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 3.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 3.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos3, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos3, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos3, 16, 0);

    delay(5000);

    lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

  }

  // Si el sensor en pin7 da alto escribe en serial monitor, enciende el led y envia 1er 2 do código IR por pin 9 PMW.

  else if (digitalRead(AudSensor4) == HIGH)

  {

    Serial.print("Enviando código Cámara 1, Posición 4 sen4 ");

    Serial.print("\n");

    lcd.clear();

    lcd.setCursor(0, 0);

    lcd.print("Sensor 4.");

    lcd.setCursor(0, 1);

    lcd.print("Posicion 4.");

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos4, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos4, 16, 0);

    delay(50);

    irsend.sendJVC(Cam1, 16, 0);

    delay(50);

    irsend.sendJVC(Pos4, 16, 0);

    delay(5000);

    lcd.clear();

  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

  }

  else

  {


  lcd.backlight();

  lcd.setCursor(3, 0);

  lcd.print("** MACO ** ");

  lcd.setCursor(0, 1);

  lcd.print("JVC PTZ Audio Ctl");

  }

}