Control remoto de decodificador Master

Hace tiempo compré un decodificador de TV digital Master, funciona bien pero el control remoto parece estar hecho con el diseño y los materiales más baratos por lo que ya está fallando y si llega a fallar por completo me quedaría con un decodificador inutilizable, por lo que decidí respaldar la configuración del control remoto usando el Raspberry y el paquete lirc.

En posts anteriores configuramos el Raspberry para tener conexión compartida a internet por lo que ahora podemos instalar fácilmente el paquete lirc usando el siguiente comando:

pi@raspberrypi:~ $ sudo apt-get install lirc

Una vez instalado el paquete lirc, necesitamos conectar un sensor infrarrojo al Raspberry, para esto debemos realizar las siguientes conexiones:

  • Conectar la terminal de Vcc del sensor infrarrojo a la terminal 1 del puerto GPIO del Raspberry (+3.3V).

  • Conectar la terminal de GND del sensor infrarrojo a la terminal 6 del puerto GPIO del Raspberry (GND).

  • Conectar la terminal de Data del sensor infrarrojo a la terminal 12 del puerto GPIO del Raspberry (GPIO_18).

Ahora podemos configurar y probar lirc en el Raspberry. Para cargar el módulo lirc al iniciar el Raspberry es necesario agregar las siguientes líneas al archivo /etc/modules:

lirc_dev
lirc_rpi
# Si estás usando una terminal diferente a la predefinida GPIO_18, 
# debes cambiar la línea anterior por una línea como la siguiente, 
# en la que especifiques la terminal que estás usando
# lirc_rpi gpio_in_pin=23

También es necesario agregar la siguiente línea al archivo /boot/config.txt:

# Habilitar LIRC
dtoverlay=lirc-rpi
# Si estás usando una terminal diferente a la predefinida GPIO_18, 
# debes cambiar la línea anterior con una línea como la siguiente, 
# en la que especifiques la terminal que estás usando
# dtoverlay=lirc-rpi,gpio_in_pin=18

Si reiniciamos el Raspberry ahora, podemos ver que el módulo lirc se carga automáticamente. Ahora podemos probar que el sensor infrarrojo esté funcionando ejecutando el siguiente comando, al presionar botones en tu control remoto debes ver una serie de números en la pantalla:

pi@raspberrypi:~ $ mode2 -d /dev/lirc0 
Using driver default on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
space 2381934
pulse 4504
space 4494
pulse 587
space 1656
pulse 593
space 535
pulse 562
...

Nota: Al ejecutar el comando anterior es posible obtener una salida como la siguiente:

pi@raspberrypi:~ $ mode2 -d /dev/lirc0 
Using driver devinput on device /dev/lirc0
Trying device: /dev/lirc0
Using device: /dev/lirc0
Partial read 8 bytes on /dev/lirc0

Este es un error que se puede presentar en versiones recientes de lirc. Si obtienes este resultado, lo puedes solucionar editando el archivo /etc/lirc/lirc_options.conf y cambiando la opción driver de la siguiente manera:

[lircd]
nodaemon        = False
driver          = default
...

Una vez que el sensor infrarrojo está funcionando, podemos proceder a capturar la configuración de nuestro control remoto con el comando irrecord. En primer lugar debemos obtener una lista de posibles nombres para los botones, ya que el comando irrecord nos pedirá el nombre de cada botón y este debe coincidir con uno de los nombre definidos por el programa:

pi@raspberrypi:~ $ irrecord --list-namespace
KEY_0
KEY_1
KEY_102ND
KEY_10CHANNELSDOWN
KEY_10CHANNELSUP
KEY_2
KEY_3
KEY_4
KEY_5
KEY_6
KEY_7
KEY_8
KEY_9
KEY_A
...
pi@raspberrypi:~ $ irrecord -d /dev/lirc0 
Using driver default on device /dev/lirc0

irrecord -  application for recording IR-codes for usage with lirc
Copyright (C) 1998,1999 Christoph Bartelmus(lirc@bartelmus.de)

This program will record the signals from your remote control
and create a config file for lircd.
...

Al seguir todas las instrucciones del comando irrecord, al final habrá generado un archivo que contiene la configuración de nuestro control remoto. En casos de emergencia podemos usar lirc con esta configuración para usar el Raspberry como control remoto pero eso lo veremos en otro post. De momento, este es el archivo de configuración lirc para el control remoto del convertidor de TV digital Master, en caso de que sea de utilidad para alguien:

# Please take the time to finish this file as described in
# https://sourceforge.net/p/lirc-remotes/wiki/Checklist/
# and make it available to others by sending it to
# <lirc@bartelmus.de>
#
# This config file was automatically generated
# using lirc-0.9.4c(default) on Mon Sep  4 20:28:36 2017
# Command line used: -d /dev/lirc0
# Kernel version (uname -r): 4.9.41+
#
# Remote name (as of config file): MASTER
# Brand of remote device, the thing you hold in your hand:
# Remote device model nr:
# Remote device info url:
# Does remote device has a bundled capture device e. g., a
#     usb dongle? :
# For bundled USB devices: usb vendor id, product id
#     and device string (use dmesg or lsusb):
# Type of device controlled
#     (TV, VCR, Audio, DVD, Satellite, Cable, HTPC, ...) :
# Device(s) controlled by this remote:

begin remote

  name  MASTER
  bits           32
  flags SPACE_ENC|CONST_LENGTH
  eps            30
  aeps          100

  header       8984  4520
  one           556  1692
  zero          556   568
  ptrail        543
  repeat       8986  2280
  gap          107912
  toggle_bit_mask 0x0
  frequency    38000

      begin codes
          KEY_POWER                0x00FFE817 0xBEEE21FC
          KEY_MUTE                 0x00FF40BF 0xBEEE21FC
          KEY_1                    0x00FF32CD 0xBEEE21FC
          KEY_2                    0x00FF708F 0xBEEE21FC
          KEY_3                    0x00FFB24D 0xBEEE21FC
          KEY_4                    0x00FFF00F 0xBEEE21FC
          KEY_5                    0x00FFF20D 0xBEEE21FC
          KEY_6                    0x00FF728D 0xBEEE21FC
          KEY_7                    0x00FFD02F 0xBEEE21FC
          KEY_8                    0x00FFD22D 0xBEEE21FC
          KEY_9                    0x00FF52AD 0xBEEE21FC
          KEY_0                    0x00FF12ED 0xBEEE21FC
          KEY_REDO                 0x00FF50AF 0xBEEE21FC
          KEY_SUBTITLE             0x00FF926D 0xBEEE21FC
          KEY_PROGRAM              0x00FFB04F 0xBEEE21FC
          KEY_MACRO                0x00FF30CF 0xBEEE21FC
          KEY_AUDIO                0x00FF10EF 0xBEEE21FC
          KEY_RADIO                0x00FF906F 0xBEEE21FC
          KEY_MENU                 0x00FF22DD 0xBEEE21FC
          KEY_EXIT                 0x00FFA05F 0xBEEE21FC
          KEY_VOLUMEDOWN           0x00FFD827 0xBEEE21FC
          KEY_VOLUMEUP             0x00FF18E7 0xBEEE21FC
          KEY_EPG                  0x00FFE01F 0xBEEE21FC
          KEY_INFO                 0x00FF609F 0xBEEE21FC
          KEY_PAGEUP               0x00FF5AA5 0xBEEE21FC
          KEY_PAGEDOWN             0x00FF9867 0xBEEE21FC
          KEY_CHANNELUP            0x00FF629D 0xBEEE21FC
          KEY_CHANNELDOWN          0x00FF6897 0xBEEE21FC
          KEY_OK                   0x00FFAA55 0xBEEE21FC
          KEY_RECORD               0x00FFC837 0xBEEE21FC
          KEY_FAVORITES            0x00FF48B7 0xBEEE21FC
          KEY_GOTO                 0x00FF827D 0xBEEE21FC
          KEY_REWIND               0x00FF0AF5 0xBEEE21FC
          KEY_FASTFORWARD          0x00FFCA35 0xBEEE21FC
          KEY_STOP                 0x00FF8A75 0xBEEE21FC
          KEY_UWB                  0x00FF8877 0xBEEE21FC
          KEY_PREVIOUS             0x00FF2AD5 0xBEEE21FC
          KEY_NEXT                 0x00FFEA15 0xBEEE21FC
          KEY_PLAY                 0x00FF4AB5 0xBEEE21FC
          KEY_PAUSE                0x00FF08F7 0xBEEE21FC
      end codes

end remote

 

Leave a comment