Introducción

Los mandos a distancia por infrarrojos (IR) son dispositivos electrónicos que utilizan señales infrarrojas para comunicarse con otros dispositivos electrónicos, como televisores o aires acondicionados. El funcionamiento básico de un mando a distancia por infrarrojos se basa en la emisión de señales infrarrojas desde el mando hacia un receptor infrarrojo en el dispositivo que se está controlando.

Estas señales contienen códigos específicos que son interpretados por el dispositivo receptor, provocando la ejecución de la acción correspondiente, como encender y apagar el dispositivo, cambiar de canal, o ajustar el volumen. Las señales infrarrojas generadas por el LED IR son moduladas, lo que significa que la intensidad de la luz se modifica de manera periódica de acuerdo con un patrón específico. Este patrón de modulación es único para cada botón o función en el mando.

Vamos a desmontar un mando a distancia y encontrar el LED IR. A continuación, lo conectaremos a un analizador lógico para obtener las señales que se envían. Finalmente replicaremos las señales obtenidas con un Flipper Zero.

Modulación de la señal infrarroja

La modulación de ancho de pulso (PWM, por sus siglas en inglés) es la técnica utilizada para controlar la intensidad luminosa de un LED infrarrojo. Se aplica para regular la cantidad de tiempo durante el cual el LED está encendido durante cada ciclo de modulación. Esta señal consiste en una serie de pulsos (altos y bajos) que se repiten a una frecuencia constante. La frecuencia de modulación (frequency, f), que suele estar en el rango de kilohercios (kHz), se refiere a la cantidad de veces que la señal PWM completa un ciclo (T) en un segundo.

El ciclo de trabajo (duty cycle), expresado como un porcentaje, determina la proporción de tiempo que la señal está en su estado alto (encendido) en comparación con su estado bajo (apagado) durante un ciclo completo. Un ciclo de trabajo del 33% significa que el LED está encendido la tercera parte del tiempo y apagado el resto. Cuando el ciclo de trabajo es alto, el LED está encendido durante más tiempo, y cuando es bajo, el LED está encendido durante menos tiempo. Esto permite controlar la intensidad luminosa percibida del LED infrarrojo.

En este diagrama de Cadence se observa un ejemplo de una señal PWM. Cuando se esté realizando la modulación, consideraremos que se está enviando un estado alto, en términos binarios, un 1. Al contrario, si no se está modulando una señal, consideraremos se está enviando un estado bajo, en términos binarios, un 0.

Conexión con el analizador lógico

Para obtener las señales que se envían al diodo LED necesitaremos capturarlas con un analizador lógico. Un analizador lógico es un instrumento de medición electrónico que captura y muestra señales digitales en un sistema, permitiendo la visualización y análisis detallado de patrones y secuencias de bits en el tiempo. En primer lugar, desmontaremos el mando y buscaremos el diodo LED, que suele encontrarse en la parte superior, ya que necesita tener visión directa con el receptor. En este caso se nos muestra su polaridad en la placa. En otros casos necesitaremos saber el polo de las dos patillas del LED para conectarlas al analizador lógico correctamente. Una de las formas es utilizar un voltímetro mientras pulsamos uno de los botones del mando, si medimos un voltaje positivo significará que estamos realizando una medición correcta, correspondiéndose el polo positivo del voltímetro con el polo positivo del diodo LED (ánodo), y el otro al polo negativo (cátodo). En caso contrario, en el que el voltímetro marque un voltaje negativo, nuestra suposición será incorrecta y tendremos que invertir los cables. Finalmente, conectaremos el polo positivo del LED a una de las entradas del analizador lógico, y el negativo al puerto marcado como GND.

Análisis de la señal

El análisis será realizado con la herramienta PulseView, en su versión NIGHTLY. En este caso capturaremos las señales con una frecuencia de refresco del analizador lógico de 1 MHz, y con una duración de 10 segundos, por lo que capturaremos 10 millones de muestras. Al pulsar en Run comenzará la captura, por lo que al pulsar el botón del mando, las muestras aparecerán en la pantalla. Si hacemos zoom observamos que la señal es la misma repetida (24 veces) mientras se pulsa el botón. Por lo que nos centraremos en una de ellas. En primer lugar hallaremos el ciclo de trabajo de la señal PWM, para ello añadiremos un decodificador pulsando el botón “Add protocol decoder” y seleccionaremos “Encoding > PWM”. Se añadirá el decodificador debajo de nuestra señal. Pulsaremos en PWM y seleccionaremos en “Data” nuestra línea de datos “D0”. Haciendo más zoom sobre la señal, encontraremos que el ciclo de trabajo de la señal es del 50%. A continuación buscaremos la frecuencia de la señal PWM añadiendo el decodificador “Clock/timing > Timing” estableciendo la opción “Data” a “D0” y la opción “Edges to check” a “rising”. para que compruebe el ciclo completo. Observando “Times” comprobamos que la frecuencia se comprende entre los 55 KHz y los 58 KHz. Las frecuencias comunes en infrarrojos son 38 KHz y 56 KHz, por lo que tomamos este último valor. Finalmente reducimos el zoom hasta observar la señal completa y calcularemos las duraciones de los estados alto y bajo, pulsando en el botón “Show Cursors”. El estado alto será positivo y el estado bajo negativo. Guardaremos la duración de los pulsos en microsegundos. En el primer caso es de 959 microsegundos. Este es el resultado final de las duraciones obtenidas para esta señal.

959 -947 643 -1262 326 -649 325 -956 326 -955 326 -956 325 -956 326 -955 326 -955 326
-956 325 -1570 325 -342 326 -956 326 -955 326 -1569 326 -649 325

Creación del archivo de la señal en el Flipper Zero

Para crear un archivo de mando de infrarrojos compatible con el Flipper Zero, observaremos su documentación. Rellenaremos los siguientes campos:

  • La cabecera del archivo con el “Filetype” con “IR signals file” y “Version” con 1.
  • A continuación cada botón que queramos añadir separados por el carácter “#”:
    • name: con el nombre del botón, en este caso “Power”.
    • type: tipo de la señal, en este caso “raw” al ser la señal en bruto.
    • frequency: la frecuencia de la señal PWM, en este caso “56000”.
    • duty_cycle: el ciclo de trabajo, en este caso del 50%, es decir “0.5” en decimal.
    • data: las duraciones de las señales obtenidas, sin el símbolo y empezando por el pulso alto.
Filetype: IR signals file
Version: 1
# 
name: Power
type: raw
frequency: 56000
duty_cycle: 0.500000
data: 959 947 643 1262 326 649 325 956 326 955 326 956 325 956 326 955 326 955 326 956 325 1570 325 342 326 956 326 955 326 1569 326 649 325
# 
name: Power2
type: raw
frequency: 56000
duty_cycle: 0.500000
data: 959 947 643 1262 326 649 325 956 326 955 326 956 325 956 326 955 326 955 326 956 325 1570 325 342 326 956 326 955 326 1569 326 649 325

Conclusiones

Con este procedimiento podremos repetir el proceso para cada botón y obtener una copia completa del mando a distancia.