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
One comment