Averiguar el protocolo de transmisión en un timbre inalámbrico barato

Debido al aburrimiento, probé un poco de ingeniería inversa de un simple timbre inalámbrico barato que usa un transmisor y receptor de 433.92MHz a través de la modulación OOK. Envía varias veces la misma información. En el lado del transmisor hay un chip AD1614AT (que parece ser este ) . En el lado del receptor hay un chip CMT2210LC (este ) .

Grabé datos en el pin DOUT en el lado del receptor, se parece a lo siguiente:

Pin DOUT del receptor

No estoy muy familiarizado con dicho protocolo de codificación (?), así que necesito ayuda de personas más experimentadas aquí.

Los datos del registro se ven así (asumiendo que 200us es nuestro "período de reloj"):

1110 1000 1000 1000 1000 1000 1110 1110 1000 1110 1110 1000 1110 1000 1110 1000 1000 1110 1000 1000 1110 1000 1000 1000 1000

También he notado que el impulso corto toma alrededor de 200 us y el largo alrededor de 600 us. Parece que los datos están codificados como un par de estados largos y cortos, por ejemplo, 600us H + 200us L -> binario "1". Si hacemos tal decodificación obtenemos los siguientes datos:

10000 01101 10101 00100 10000

o si decodificamos datos de otra manera tenemos:

01111 10010 01010 11011 01111

He agrupado los datos en 5 "bits" porque tenemos 25 bits en total. A partir de ese momento estoy perdido. ¿Conocen este método de codificación/descodificación? Vi algo similar (impulsos largos/cortos) hace algún tiempo en un viejo control remoto IR pero no sé nada más. Revisé la hoja de datos del transmisor y en la descripción del registro ODS_TIMING (página 42) encontré la siguiente descripción del "serializador":

ODS_GROUP_WIDTH[2:0]: controla el ancho del grupo de símbolos, de 2 a 8 símbolos. Establézcalo en 4 para transmitir 5 grupos de símbolos obtenidos de la codificación 4/5. O establezca en 7 para enviar 8 grupos de símbolos obtenidos de la codificación Manchester de 4 bits.

Con codificación 4/5 lo decodificaríamos a:

10000 01101 10101 00100 10000 -> ningún símbolo '10000' en la tabla :(

01111 10010 01010 11011 01111 -> 0x07 0x08 0x04 0x0D 0x07

No estoy seguro de si los datos tienen algún significado, pero sería bueno saber si los decodifiqué correctamente. Una cosa más que he encontrado mientras tanto es que hay una codificación similar (?) En los controles remotos, por ejemplo, el protocolo NEC1 (ráfaga para 562.5us, 562.5us espacio -> "0", etc.). Aquí tengo el mismo tiempo para un solo "símbolo".

Editar:

Como sugirió @ Mattman944, los símbolos de códigos de protocolo ("1" y "0") por pulsos largos y cortos. Después de cada pulso hay un cambio en el estado de la señal. Por lo tanto, el mensaje se vería así (suponga que el pulso largo es "1"):

10010101010110100110100110011001011001011001010101

50 bits, digamos que los primeros 2 bits son el encabezado, luego tenemos:

10 01010101 01101001 10100110 01100101 10010110 01010101 ->

HDR 0x55 0x69 0xA6 0x65 0x96 0x55 ->

encabezado de cuadro, marcador, val_1, val_2, ((val_2<<4 & 0xF0)| (~(val_2>>4)) & 0x0F), ~val_1, marcador

Que parece ser ese mensaje. Para asegurarme, necesitaría volcar el código del transmisor y desmontar su código, pero es demasiado para un dispositivo tan simple.

De todos modos, la nueva pregunta es: ¿cuál es el nombre de dicha codificación cuando los símbolos se codifican por la longitud de los pulsos (largo/corto) y después de cada pulso hay un cambio en el estado de la señal? Se parece a algunos códigos de barras, pero no sé cuál.

Para cualquier pista y ayuda gracias de antemano!

¿Por qué necesita una descripción del protocolo? Simplemente decodifique la transmisión como una coincidencia de patrón. Si tiene diferentes códigos de selección, decodifíquelos; eso debería dar una idea de la estructura del paquete.

Respuestas (1)

Sospecho que un pulso ancho es un estado lógico y un pulso estrecho es el otro, 25 bits. Podrían ser simplemente 25 bits de datos. O bien, un bit de inicio y 3 bytes. No veo la necesidad de complicarlo más.

Algunos de los bits son probablemente un número de serie, desea minimizar la posibilidad de que interfiera el timbre de su vecino. Algunos de los otros bits son una suma de verificación o CRC, no desea que cosas aleatorias activen su timbre.

A menos que tenga suerte y encuentre algo en línea, necesitará datos de varios dispositivos para tener la oportunidad de comprenderlo mejor.

Es posible que el transmisor y el receptor tengan un procedimiento de emparejamiento/reinicio, software o interruptores DIP en ambos. Si este es el caso, OP debería poder volver a emparejarse varias veces y obtener datos de "varios" dispositivos de esta manera.
No hay interruptores de emparejamiento en el interior, también puede comprar solo el transmisor o solo el receptor, por lo que si más personas en el vecindario tuvieran el mismo timbre, habría un problema. Este es uno de los timbres inalámbricos más baratos que había en mi mercado, así que no creo que hayan pasado demasiado tiempo preocupándose por los vecinos con el mismo timbre ;)
Mattman944: creo que puede tener razón en la longitud del símbolo de códigos de pulso. Después de cada símbolo hay un cambio. Por lo tanto 0001 -> 10 (o 01). Después de cambiar todos los pulsos largos a "1" y los cortos a "0", obtenemos 10010101010110100110100110011001011001011001010101, 50 bits. Entonces, si asumimos que los 2 primeros bits son bits de inicio, obtenemos 10 01010101 01101001 10100110 01100101 10010110 01010101 -> 0b10 0x55 0x69 0xA6 0x65 0x96 0x55. 0x55 parece principio y fin, luego 0x69 que parece "comando", luego 0xA665 como carga útil y 0x96 como negación de comando. ¿Qué piensa usted al respecto?