Publicaciones etiquetadas ‘pelco d’

Cómo controlar una cámara con Arduino

Se me plantea un problema a la hora de instalar una cámara. Necesito que mediante control remoto gire horizontalmente para que enfoque a otro punto. Dispongo de un grabador al que se conecta la cámara cctv que almacena las imágenes. Por suerte los DVR (grabador) disponen de una salida para controlar el PTZ (Pan Tilt Zoom) de las cámaras. Estos tienen acceso remoto por http y por apps en Android e IOS que incluyen además del visionado de las imágenes, el control del PTZ.

Con estos datos investigo acerca de estos puertos y descubro que son puertos serie RS485.

Afortunadamente encuentro un módulo para Arduino que me decodifica ese puerto.

Analizo las lecturas y el protocolo de comunicación, en este caso selecciono el PELCO D, uno de los más comunes.

Ya lo tenemos liado, pedido a Amazon que esto parece que se puede hacer.

Objetivo:

Controlar un motor en el eje x para que gire una cámara. El sistema tiene que controlarse con un grabador DVR.

Tecnologías a utilizar:

  • Transmisión serie rs485
  • Pelco D
  • Arduino
  • Controladora de motores paso a paso.

Materiales:

Pelco D

Antes de entrar en detalle, necesito saber un poco acerca del PELCO D.

Pelco D consiste en la transmisión de 7 bytes en hexadecimal.

Byte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6
SyncCamera AddressCommand 1Command 2Data 1Data 2Checksum

Prestando atención al Byte 1, que selecciona el canal, es decir, la cámara que queremos controlar, y al Byte 3 que contiene la información para los movimientos según la siguiente tabla:

 Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Command 1SenseReservedReservedAuto / Manual ScanCamera on / offIris CloseIris OpenFocus Near
Command 2Focus FarZoom wideZoom TeleTilt DownTilt UpPan LeftPan RightFixed to 0

Por ejemplo:

Si el byte 3 es 00000010 (2 en decimal) Gira horizontalmente (pan) a la derecha.

Si el byte 3 es 00000100 (8 en decimal) Gira horizontalmente (pan) a la izquierda.

Pues tema resuelto. Dejo la demás información para si alguien necesita hacer más funciones.

Puente H – L298N

El L298N es un controlador de motores al cual podemos conectar 2 motores DC o un motor paso a paso de 2 bobinados.

Se alimenta a 12V, al igual que nuestro sistema de vigilancia, y además tiene una salida de 5V para alimentar nuestro Arduino.

Para activar nuestro motor DC que conectaremos a la salida 1 – 2, debemos actuar sobre las entradas IN 1 e IN 2.

Al dejar las dos en LOW el motor se para.

Si ponemos IN1 en HIGH e IN2 en LOW el motor gira a la Izquierda.

En el caso de invertir los estados de IN1 e IN2, el motor invierte el sentido.

Además, dispone de otros pines con los cuales podemos regular la velocidad de giro del motor, los cuales yo dejo puenteados porque no me hace falta. Se trata de los pines ENA y ENB.

Max RS485.

Modulo que usamos para leer las tramas serie que envía el controlador PELCO D de nuestro grabador DVR. En el código he añadido mensajes serie, asique podemos abrir la consola serie de Arduino para comprobar los datos recibidos del DVR cuando mandamos las ordenes.

Así quedaría nuestro código con el cual conseguimos que funcione nuestro proyecto.

 

Esquema de conexiones:

L298N:

  • IN1 – D7
  • IN2-D8
  • 12V – FUENTE 12V
  • GND – GND FUENTE 12V Y GND ARDUINO
  • 5V – salida 5v para Arduino a Vin

MAX RS485:

  • DI – TX1
  • DE- D2
  • RE – D2
  • RO – RX0
  • VCC- 5V ARDUINO
  • GND – GND ARDUINO
  • A – + DVR
  • B – – DVR
Esquema de conexión de arduino para controlar camara

Esquema de conexión de RS485, Arduino y L298N

En este caso uso las señales del PTZ emitidas por el grabador DVR para mover el motor DC, pero se me ocurren otras aplicaciones como activar relés para abrir puertas o encender luces, eso ya a gusto del consumidor.

 

Muchas gracias por leer el artículo, si te ha gustado deja un comentario, si no pues también.

Salu010 (010 = 2 = dos para los de letras)