Buenas, voy a poner algunas cosillas útiles para la radio wifi, fundamentalmente relacionado con el receptor de infrarrojos.
Resulta que en la Raspberry Pi tienen un driver mediante el cual pueden conectar un módulo de infrarrojos a un GPIO y con él usar LIRC. El driver es específico para la rpi. Siempre pensé en adaptarlo pero existía el problema de que bcm63xx no tiene implementados los IRQ en el driver GPIO así que resultaba imposible.
Pero no hace mucho me di cuenta que los bcm63xx disponen de lo que llaman external IRQs accesibles desde ciertos GPIOs. Todas las placas bcm63xx tienen entre 4 y 6 external IRQs. Y casi siempre podemos encontrar que alguno de ellos está en algún botón del router sobre todo en los bcm6328 donde los GPIO23 GPIO24 van compartidos con dos ext IRQ.
Bien, basándome en el driver de la rpi hice algunas modificaciones, para que de en estos particulares GPIOs tome sus IRQs y los maneje.
El resultado fue totalmente exitoso, el driver me funcionó a la primera. Solo necesité de compilarlo en un firmware con soporte para LIRC.
Usé un
TSOP4838 como receptor de infrarrojos (cuesta alrededor de 50 céntimos), y no requiere de ninguna circuitería extra, va directamente conectado al GPIO.
+-----------------------+ 3
| data -> +---------------------o GPIO34 (BCM6368)
| |
| _____________|
| / |
| ( | 2
| \____________ + +---------------------o +3.3V
| |
| | 1
| - +---------------------o GND
+-----------------------+
El driver también tiene soporte para el emisor, con lo cual podríamos controlar un ampli externo. Necesitaría de una circuitería adicional detallado en:
https://wiki.openwrt.org/doc/howto/lirc-gpioblasterEl paquete para compilarlo en el kernel aquí:
https://github.com/danitool/openwrt-pkgs/tree/bb/lirc-bcm63xxMe funcionó tanto en Attitude Adjustment como en Barrier Breaker. Pero a partir de Chaos Calmer parece que se han cargado el controlador de IRQs externos en el kernel debido a que metieron un nuevo driver, que no funciona.
Insisto en que solo unos pocos GPIOs son válidos para el receptor (para el emisor vale cualquiera). Estos GPIOs concretos están en la tabla
https://wiki.openwrt.org/doc/hardware/soc/soc.broadcom.bcm63xx#external_irqsAlgunos GPIOs de esta tabla no fueron comprobados, por ejemplo el 25 y 26 de los bcm6328. Ya que esto no está documentado, o no tenemos acceso a documentación de Broadcom Corp.
También hice alguna modificación en el demonio LIRC
irexec, para que cada vez que pulsamos un botón configurado del mando a distancia parpadee un LED del router (a elección)
https://github.com/danitool/openwrt-pkgs/blob/bb/lirc/patches/01-add-irexec_led_blink-option.patchpara que funcione necesita del módulo de kernel kmod-ledtrig-oneshot
Y por último para que además de tener un aviso luminoso tengamos un
aviso acústico, hice un howto en la wiki de como añadir un buzzer (zumbador) de corriente contínua al router.
https://wiki.openwrt.org/doc/howto/buzzer-modSaludos