Doblar el panel de seguridad para el hogar según su voluntad

¿Tiene su casa un sistema de seguridad pero no se suscribe al servicio de vigilancia para operarlo? Saque a ese bebé de la pared y haga algo con él, o simplemente construya su propio sistema a su alrededor. Si tiene un panel de control DSC PC1500RK [CaitSith2] nos muestra cómo controlar fácilmente los botones, los LED y el zumbador. Si tiene otro modelo, este sigue siendo un buen punto para comenzar su propia ingeniería inversa.

Solo hay cuatro enlaces por hacer. [CaitSith2] usa Arduino para la demostración. Conectó el cable rojo al voltaje, el cable negro a tierra, el cable amarillo (reloj) al pin digital 3 y el cable verde (datos) al pin digital 2. Un ciclo de comunicación comienza con la elevación de la línea de datos, y luego reloj de ocho bits para capturar las pulsaciones de teclas. Luego se insertan 16 bits para configurar los LED y encender el zumbador. Esto se muestra en el video después de la pausa y se documenta en su código de muestra. Insertamos el boceto después de la pausa para guardarlo si el código de pegado falla en el futuro.

/*
	The code is to interface a DSC PC1500RK alarm keypad.
        It has 15 keys, 11 LEDs, and a Beeper that can be controlled.
        This code cycles through all the LEDs in a top-down fashion.
        The beeper is used to acknowledge that a key has been pressed.
        If the key was pressed successfully, its character is output on the serial line, at 115200 bps.

        Wiring is simple.  Red is Vcc, hooked to 5V
        Black is Gnd.
        Yellow is the Clock line. In this configuration, it is on Digital Pin 3.
        Green is Data, and is on Digital Pin 2.
*/

void setup() {
  //Pin 2 is Data, and is bidirectional.
  //Pin 3 is Clock, and is an output.
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  Serial.begin(115200);
}

int readdata(int control)
{

  int i,j=0,k=control;
  int bitcount=0;

  for(i=0;i<8;i++)
  {
    j<<=1;
    digitalWrite(2,HIGH);
    digitalWrite(3,LOW);
    delay(2);
    if(digitalRead(2)==HIGH)
      j|=1;
    digitalWrite(3,HIGH);
    delay(2);
  }
  for(i=0;i<16;i++)
  {
    if(k&0x8000)
      digitalWrite(2,HIGH);
    else
      digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    delay(2);
    digitalWrite(3,HIGH);
    delay(2);
    k<<=1; } j^=0xFF; switch(j&0x70) { case 0x10: case 0x20: case 0x40: switch(j&0x8F) { case 0x80: case 0x08: case 0x04: case 0x02: case 0x01: return j; default: return 0; } default: return 0; } return 0; } void printchar(char A, char B, char C, int D) { switch(D) { case 1: Serial.println(C); break; case 2: Serial.println(B); break; case 4: Serial.println(A); break; } } void loop() { int i; static unsigned int j=0x80; static int k=0,l; static int m=0; digitalWrite(13, HIGH); // set the LED on i=readdata(j | l); m++; if(m==4) { m=0; j>>=1;
    if(j==4)
      j=0x8000;
    if(j==0x0200)
      j=0x80;
  }

  if(k==0)
  {
    switch(i&0x8F)
    {
      case 0x80:
        printchar('F','E','P',(i&0x70)>>4);
        break;
      case 0x08:
        printchar('*','0','#',(i&0x70)>>4);
        break;
      case 0x04:
        printchar('7','8','9',(i&0x70)>>4);
        break;
      case 0x02:
        printchar('4','5','6',(i&0x70)>>4);
        break;
      case 0x01:
        printchar('1','2','3',(i&0x70)>>4);
        break;

    }
  }
  if((k!=i)&&(k==0))
    l=1;
  else
    l=0;
  k=i;

  delay(20);
}

/*
if(Serial.available()) {
    int inByte = Serial.read();
    if(inByte == 'H')
    {
        digitalWrite(2,HIGH);
        digitalWrite(3,LOW);
        delay(3);
    }
    else
    {
       digitalWrite(2,LOW);
        digitalWrite(3,LOW);
        delay(3);
    }
    if(digitalRead(2)==LOW)
          Serial.println("LOW");
        else
          Serial.println("HIGH");
   digitalWrite(3,HIGH);
        delay(3);
  }
  */

  • Rogan Dawes dice:

    Es muy probable que haya un controlador central que tenga todos los sensores conectados en algún lugar. Esta es realmente la caja que necesitas mirar. El panel es simplemente una interfaz para el controlador central. Algunas configuraciones pueden tener múltiples paneles, pero el cerebro está en el controlador central.

    • THAERY dice:

      PUEDO CONFIRMAR ESTE (TRABAJO PARA UNA EMPRESA DE ALARMAS) POR LO GENERAL ESTÁ EN UNA CAJA BLOQUEADA

      • THAERY dice:

        no tenía la intención de mecanografiar sombreros,

  • Mental2k dice:

    Estimado señor, Gran proyecto, pero ¿realmente necesita toda la fuente en la página de revisión? Jajaja.

  • techb dice:

    Me gusta la idea de publicar código aquí en HAD. Sé que al acecho en los archivos, algunos enlaces están rotos. ¿Quizás agregar una nueva sección para fragmentos o algo en el foro o en el blog principal?

    Nuevamente temáticamente: esto es bastante inteligente, podría ver que se reutiliza para la automatización del hogar. Cuando salgo de la ciudad o me voy por un tiempo, uso un sensor de movimiento PIR y una cámara web para enviar imágenes por correo electrónico cuando se detecta movimiento.

  • HackTheGibson dice:

    No tuve el control para cambiar todo en mi alarma, pero podría simplemente cambiar el número de llamada en lugar de verificar. Entonces, si mi casa me llama mientras estoy fuera, sé que sonó la alarma y llamo a la policía y ahorro $ 200 al año.

    • RoyBoy dice:

      ¿Cómo cambió el número de teléfono de la alarma? Quiero hacer esto porque no tenemos control.

  • RandomMan dice:

    Me miré a mí mismo para hacer algo similar. Quizás “mejorarlo”.

  • Willis75 dice:

    Cuando llega el momento de configurar los sistemas DSC y el código de instalación predeterminado que aparece en los manuales de instalación no funciona, a menudo un número conveniente es 6321. Esto es más común si el sistema tiene un cierto logotipo azul y blanco agregado a todos los elementos. .

  • CaitSith2 dice:

    Actualicé el código con algo aún más receptivo, y ahora controlado por la serie, dentro y fuera.

    Los comandos de entrada por serie, son
    1-6 – Controla las zonas LED de 1-6
    R – LED listo
    A – Armita LED
    M – memoria LED
    B – LED de derivación
    T – Problema de LED.
    s – Bip durante 2 ciclos de teclado.
    S – Bip durante 16 ciclos de teclado. (Todos los comandos s / S posteriores son acumulativos).

    Salida, es lo que dice en el teclado, 123456789 * 0 # FEP.

    También en otra nota, también tengo la caja de control principal para ese sistema de alarma, y ​​confirmé que todavía funciona. Una ventaja para comenzar, todavía tenía su código de instalación predeterminado de fábrica de 1500 y el código maestro predeterminado de fábrica de 1234, sin otros códigos programados. Tengo la intención de cambiar esos códigos si decido instalar esto en el futuro. Por supuesto, también se preparará un discurso, para que sepa si hay una entrada. 🙂

    Siempre ame cuando se tiran cosas electrónicas. Así es como conseguí esto.

  • CaitSith2 dice:

    Se actualizó el código nuevamente. La velocidad máxima que puede leer el teclado es ~ 30 veces por segundo, que es lo suficientemente rápida para el uso diario.

    Quizás podría usar esto en algún tipo de proyecto ahora que sé cómo funciona. 🙂

    • mh dice:

      ¿Dónde está este nuevo código? No me importaría mirar.

  • CalcProgrammer1 dice:

    Esto está muy bien. Acabo de comprar una casa y me gustaría ingresar a algún tipo de sistema de seguridad, pero preferiría algo bajo mi control en lugar de control (ahorrar dinero). Pensé que sería bueno usar Raspberry Pi como una unidad básica para leer sensores y monitorear salidas mientras se conecta el sistema a Internet (enviando correos electrónicos / mensajes de mensajería instantánea para el rendimiento del sistema, permitiendo el armado / desarmado remoto a través de un inicio de sesión seguro y posiblemente en casa automatización con algunas unidades de luz / salida X10).

  • cara dice:

    Bah, simplemente conéctese al puerto serie DSC en el circuito base de la alarma y haga lo que quiera fácilmente con el protocolo serie bien documentado.

    Un buen truco, pero ¿por qué no buscó simplemente la aplicación que está disponible y olió sus lanzamientos o usó la documentación de DSC?

  • Carl dice:

    De acuerdo, tengo una vieja alarma Simon 3 que necesito hackear para recibir mensajes sms. Nunca iría tan profundo, pero es bueno ver a alguien atreverse a ir por ese camino.

  • Ingeniero de TM dice:

    Me encanta revivir estos viejos paneles de alarma. Conozco a muchas personas que las tienen y no les importa reemplazarlas, pero quieren funciones y conectividad adicionales. Durante los últimos meses, he estado diseñando una interfaz simple para registrar activaciones de alarmas en un servidor web y enviar notificaciones por correo electrónico y mensajes de texto. El dispositivo no tiene muchas campanas y silbidos en este momento, pero da más atención que dejar un sistema completamente sin control. Tiene cierto potencial comercial, pero decidí empezar a publicar el proyecto bajo una licencia de código abierto. Creé una página de “bricolaje” y publiqué el diseño del circuito, el código fuente del firmware y el código fuente útil personalizado en http://www.phantomlink.com/diy.aspx. Publicaré más detalles sobre la implementación del panel si el tiempo lo permite.

    • Julian dice:

      No puedo encontrar la fuente. ¿Podrías enviar el enlace correcto? ¡Gracias!

  • Leif dice:

    Uno de ellos fue en nuestra antigua casa. Nadie conocía la contraseña, así que compré un nuevo circuito base en eBay. Era barato, no costaba mucho. Luego lo programé para llamar primero a mi teléfono celular y llamar al teléfono fijo de mi suegro si no respondía en lugar de a una compañía de alarmas. Por supuesto, no podría descifrar los datos de oído para saber qué sensor está explotando, pero ¿a quién le importa? Si la casa llama cuando necesita estar vacía, llame a la policía.

    Siempre quise descartar ese circuito base y simplemente crear el mío propio con un Arduino, Pic o algo similar. Simplemente nunca parecía tener tiempo y ya no tenemos esa casa …

  • Por si acaso dice:

    Me gustaría ver formas de onda de datos y reloj anotadas.
    ¿Tiene un sitio web?

  • sharpk60 dice:

    ¡Muy genial! Re-implementé un panel de control DSC similar usando JeeNode. Me concentré más en la ingeniería inversa de los sensores, pero tal vez ahora también pueda conectar el teclado. Los detalles de mi trabajo son aquí y allá.

    • CaitSith2 dice:

      Su primer enlace aquí no está vinculado a nada.

      • sharpk60 dice:

        No estoy seguro de por qué esa conexión no funcionó. De todos modos aquí está el primer enlace:

        http://sharpk60.blogspot.com/2012/07/reverse-engineering-my-home-security.html

  • aburrido dice:

    Compré uno de estos teclados después de leer este artículo. Puse el código en mi arduino, conecté el teclado correctamente, le di poder … pero todo lo que puedo hacer es tararear / emitir un sonido fuerte y continuo. ¿Alguien tiene alguna sugerencia?

    • sharpk60 dice:

      Matt: Probé este código con mi PC1500RK y funcionó sin cambios de código. Puede ser que el protocolo de comunicación sea demasiado rápido, por lo que podría intentar aumentar algunos valores de retardo en el código. También noté que los LED del teclado están un poco borrosos, por lo que podría intentar usar una fuente de alimentación más alta (¿tal vez 9 voltios?). No he probado estas sugerencias, por lo que no estoy seguro de si funcionarán.

  • Marcos dice:

    ¿Cómo cambia eso para un sistema aFBII con 12 zonas?

  • aburrido dice:

    Hmm, no tengo idea de lo que pude haber hecho mal entonces. Tengo una conexión como las instrucciones enseñadas. Todo el teclado después de insertar el arduino zumba y los cueros se iluminan. Incluso apliqué un adaptador eléctrico directamente al teclado pensando que el arduino 5v no tiene suficiente energía para el teclado. Incluso con el adaptador de corriente, simplemente se quedó allí y zumbó con los cueros detrás de los números iluminados. Simplemente no puedo entenderlo. Lo compré nuevo en eBay y realmente quería que esto funcionara.

    • MichaelC dice:

      Los teclados fijos necesitan 12vdc para funcionar correctamente, este podría ser tu problema. Hago instalación y reparación de alarmas y realmente disfruto de este hilo.

  • Paul dice:

    Control gratuito del panel DSC con Arduino barato en línea: http://dsc.juliano.com.br

  • mrwildbob dice:

    ¿Hubo alguna actualización sobre este proyecto? Mirando la interfaz de mi panel Ademco Vista 20p.

  • turnerdaniel770 dice:

    Me gusta esta idea Gracias por compartir estas ideas con nosotros.

  • Doug dice:

    Usé este código como punto de partida para copiar el teclado y controlar el panel de alarma real. Además de copiar el teclado para controlar el panel, también hay un terminal PGM en el panel, que puede verificar para determinar si se activó la alarma, qué zonas se activaron, etc. Creé una biblioteca Arduino para almacenarlo. simple y el código disponible en github: https://github.com/dougkpowers/pc1550-interface

  • Miguel dice:

    ¿Es posible piratear el teclado para controlar una cerradura de solenoide para una puerta oculta?

  • Robbin dice:

    Utilizo un teclado texecom r8 (https://www.grax.co.uk/Upload/SiteImages/XL/b945b594-4bee-4a42-8c04-dc5baa2f49af.jpg) ¿Hay alguna forma de trabajar con este también? usas un boceto

  • Robbin dice:

    Estoy usando un sistema de alarma texecom r8, con un teclado led (https://www.grax.co.uk/Upload/SiteImages/XL/b945b594-4bee-4a42-8c04-dc5baa2f49af.jpg). ¿Es posible utilizar su boceto en este teclado? ¿Y qué necesito modificar?

  • juez dice:

    hola mientras compilo obtengo este error (estado de salida 1
    identificación no calificada esperada antes de “si”) gracias

Marco Navarro
Marco Navarro

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *