Estoy tratando de averiguar qué tipo de modulación y codificación utiliza el control remoto de mi ventana, con el objetivo de implementar lo mismo en una Raspberry Pi para agregar un poco de automatización del hogar.
Un colega me ayudó a probar la señal con un USRP y me dio los archivos de datos. Los he examinado con Inspectrum .
Me temo que las muestras se han grabado centradas muy cerca de la frecuencia de la señal. Más tarde leí que esto podría no ser una buena idea, y creo que esto es lo que causa el ruido permanente que puedes ver en las imágenes. ¿Debo centrar el muestreo unos kHz más abajo en el futuro?
Una sola pulsación de la señal de "ventana abierta"
La velocidad de símbolos, o más bien lo que supuse que era la velocidad de símbolos, parece consistente a este nivel (alrededor de 42 baudios).
Esto muestra energía de frecuencia. El eje X es el tiempo, el eje Y es la frecuencia (banda base). Los colores se han ajustado para mostrar solo el poder interesante.
Detalle de uno de los "bloques"
Aquí, se muestra la última imagen, de abajo a abajo: frecuencia, IQ (rojo / azul) y fase. No sé qué representa la tabla de frecuencias aquí.
Zoom en la transición de escaso a denso
La "tasa de símbolos" no parece constante aquí.
No tengo idea de qué tipo de modulación, codificación, velocidad de bits o protocolo utiliza este control remoto, y en este momento mi única opción sería probar ciegamente todos los bloques demod en gnuradio.
Sería de gran ayuda si la respuesta pudiera incluir alguna guía sobre cómo demodular esta señal en gnuradio para extraer bits. Creo que puedo tomarlo desde allí.
El controlador es para una cubierta de ventana Velux, pero no he encontrado ninguna información en la web. En última instancia, necesito averiguar qué chip comprar para el Arduino / rPi.
Puedo decir que el chip tiene texto inscrito, pero no puedo leerlo, parece que está desgastado, pero no tengo una lupa ...: /
Datos sin procesar cargados en: https://www.dropbox.com/s/rh2k7ho68dvoxhd/data_mando3.dat?dl=0 . La frecuencia de muestreo es de 3MHz. El formato de datos es el valor predeterminado de GNU Radio Companion , que es IQ, cada componente expresado como flotante de 32 bits.
Actualizar
Después de un poco más de investigación, este parece ser el protocolo io-homecontrol . Parece que no se ha realizado ingeniería inversa, está cifrado y no hay información disponible. Es un protocolo de dos vías, por lo que necesitaré tomar muestras de conversaciones completas (las muestras actuales se toman solo con el control remoto disponible).
En teoría, este chip puede funcionar con este protocolo: http://www.analog.com/media/en/technical-documentation/data-sheets/ADF7022_2page.pdf
El consorcio no proporcionará especificaciones. Todavía estoy interesado en oler algunas conversaciones con GNURadio y ver si puedo trabajar con ellas. Dado esto, solo puedo recomendar contra io-homecontrol y los productos Velux.
¡Gracias!
fuente
Respuestas:
Ok, hice algunas señales forenses sobre la captura de datos y creo que la modulación es una forma de FSK.
La modulación FSK fue de +/- 20 KHz con una velocidad de datos de 38 KHz.
ACTUALIZACIÓN: El descubrimiento de OP de que esto es "io-homecontrol" y la hoja de datos de ADI que encontró confirmó que se trata de FSK con una desviación de 20KHz y una velocidad de datos de 38.4 Kbps. Además, este enlace proporciona más detalles sobre el formato de modulación:
https://cansecwest.com/slides/2015/From_Baseband_to_bitstream_Andy_Davis.pdf
Parece que en realidad puede ser Gaussian-FSK, con señalización de respuesta completa (BT = 1), lo que significa que la respuesta para cada bit se completa antes de que comience el siguiente bit. Esto se puede implementar fácilmente con un filtro gaussiano (ver filtro FIR gaussiano sin multiplicadores?) seguido de un suboficial. En este caso, cada bit de datos se representa como impulsos seguidos de ceros para toda la longitud del filtro y la salida del filtro conduce la palabra de control de frecuencia al NCO (un VCO digital). (Para la señalización de respuesta parcial que requiere un receptor más complicado y no lo que están haciendo aquí, los ceros son más cortos que la longitud del filtro, pero eso también funcionaría). La desviación de frecuencia se puede establecer con una ganancia de multiplicador constante entre la salida del filtro y la entrada de NCO. La elección de ir con FSK gaussiana frente a FSK simple es para una mejor contención espectral en la forma de onda transmitida (y es la razón de las transiciones redondeadas que vemos).
Incluiré las parcelas en caso de que alguien tenga más información:
Primero, una vista macro cerca del primer estallido, que ocurre alrededor de 0,93 segundos. Para obtener este gráfico, eliminé un desplazamiento de frecuencia correspondiente a 0.2688 radianes / muestra después de diezmarlo con 10 muestras, suponiendo que la frecuencia de muestreo original fuera de 3 MHz, esto corresponde a un desplazamiento de 12.834 KHz.
Este gráfico muestra la fase desenvuelta frente al tiempo (el eje vertical es radianes) y la magnitud correspondiente frente al tiempo. Supongo que cuando la magnitud es baja, estamos viendo el ruido, y la señal de interés se produce solo cuando la magnitud es mayor.
Acercándose a la primera parte de la ráfaga, el pulso comienza a aproximadamente 0.9265 segundos, y al comienzo de la ráfaga, la fase es "plana" durante aproximadamente 3 ms. Creo que corresponde a un transportista no modulado, en comparación con los detalles que vemos más adelante.
Después de los 3 ms de la porción de "fase plana", hay un patrón muy largo de lo que parece ser 1 0 1 0 1 0 con una velocidad de datos de 37.5 KS / s. La modulación va entre 0 y 180 grados, pero luego veremos rampas de fase claras que me harán sospechar de FSK en lugar de BPSK. (Si fuera MSK, hubiera esperado ver evidencia de rotaciones de 90 grados, pero la rotación mínima que encontré fue de 180 grados). Tenga en cuenta que al comienzo del patrón (suponiendo +180 = 1 y -180 = 0), vemos 1 1 0 1 0 1 0 1 ... que luego dura con el patrón 1 0 1 0 durante aproximadamente 90 ms antes de nuevo insertando un "1 1" cerca de la segunda marca de 1.02, y luego continuando nuevamente como 0 1 0 1 0 1 ... hasta la marca de 1.414 segundos. (aproximadamente 0.4 segundos de duración con un patrón 1 0 1 0). Tenga en cuenta la "joroba" en la trayectoria general;
A 1.414 segundos comienzan los datos reales. (El primero fue probablemente un patrón de sincronización / adquisición). Al observar primero una vista macro, vemos un patrón que en esta vista parece repetirse 3 veces antes de que termine la ráfaga.
Al acercarnos a la primera región, vemos constantes pendientes positivas y negativas indicativas de FSK. Al final de la ráfaga de datos, hay una larga duración de 1 durante 4 ms seguido de nuevo por el patrón 101010 durante aproximadamente 14 ms.
La siguiente ráfaga comienza alrededor de 1,51 segundos, poco después de que la primera vuelva a tener el mismo patrón de inicio de una portadora no modulada, seguido del patrón de modulación largo 101010. (Aunque ligeramente diferente en que el inicio fue 1 1 1 1 0 1 0 1 0 1 0 1 pero la duración del patrón 1010 antes de la modulación de datos fue de nuevo 14 ms)
fuente