Una de las partes de mi proyecto para el año 2014 de Controlador Remoto de Estación, incluye un «retrofit» de un conmutador Ameritron RCS-10 para poder ser utilizado de forma remota con una RaspberryPi. Para ello me hice con una placa USB de relés, con la «mala fortuna» de no fijarme en que no era la típica placa que lleva un conversor RS232-USB y no admitiría comandos serie para activar/desactivar cada uno de los relés.
En lugar de ello, lleva montado un FTDI FT245RL que no es más que un PARALELO-USB. Con este chip la única forma de controlar los relés, tal y como han diseñado las placa, es utilizar cada una de las salidas del FT245 para activar cada una de los relés de la placa. Para ello, el chip permite un modo especial «bitbang’ en el que con un único comando se activa el relé, o grupo de relés que queramos. Este comando no es más que un octeto binario con la configuración deseada:
0xb00000000 – Todos OFF
0xb11111111 – Todos ON
0xb10000000 – Relé uno ON
Hay dos librerías que permiten poner al chip en modo «bitbang» la D2XX proporcionada por FTDI y libftdi que es la que he utilizado yo. Es necesario descargar el paquete en el dispositivo (RaspberryPi o sistema Linux) antes de poder ponernos a programar. Por suerte no es necesario compilarlo uno mismo y se encuentra disponible en los repositorios tanto para la Rasp como para Linux. Para instalarla solo tenemos que ejecutar este comando:
sudo apt-get install libftdi-dev
Una vez instalada la librería y revisado el código del ejemplo bitbang.c que viene en el paquete, hacer un pequeño programa en C que permitiera controlar la placa desde la línea de comandos fue fácil.
Ahora a por el «retrofit» del RCS10