sábado, 22 de agosto de 2020

El Pi4D de LU7DID

Una derivación interesante del proyecto PixiePi por la experimentación que me permitió hacer fue el desarrollo de software que denominé Pi4D (Pi para Digitales). En modo recepción el proyecto no tiene nada especial, el transceptor Pixie (y por lo tanto el PixiePi) opera como un receptor de conversión directa, por lo tanto el audio resultante se alimenta a la placa de sonido de (otra) PC corriendo WSJT-X y se recibe, sorprendentemente bien para lo que es la placa Pixie en cuanto a complejidad. Para transmitir es otra historia. WSJT-X genera los distintos modos de baja señal como una banda base de audio, el cual alimentado a un transceptor de SSB convencional (usualmente en USB) permite emitir en el modo digital que sea (WSPR, FT8, etc).  Pero sucede que el PixiePi no es un transceptor de SSB, lo es de (originalmente) de CW. En principio el que tenga un amplificador clase C no es un problema, las señales digitales de baja señal son variantes de PSK que no transmiten información en la amplitud. Los problemas a vencer sin embargo son dos, como procesar las señales en banda de audio para modular con ellas la generación de RF y como lograrlo dentro de los límites de potencia de procesamiento de una placa RaspberryPi Zero (que es relativamente pequeña). Primero intenté procesando en base a la librería CSDR que usé con anterioridad para implementar ideas y prototipos de un transceiver digital para señales débiles ("Transceptor para señales débiles bit a bit"). Mal que me pese ese fue un callejón sin salida, la potencia de procesamiento de un Zero no es suficiente, el principal problema es que produce un retardo de aproximadamente dos segundos en la señal y eso es suficiente para que FT8 funcione mal o no funcione. Analizando donde se consumía el tiempo observé que era en el procesamiento de CSDR, y que su estructura de funcionamiento mediante el "pipe" entre distintas instancias del programa para distintas funciones introduce mucho procesamiento adicional ("overhead") moviendo datos. Asi que tomé mano de una serie de librería de datos que desarrollé hace tiempo basadas en el código de Taka Inoue (JI3GAB) originalmente en Java las que modificadas y adaptadas utilicé desde hace tiempo en otros proyectos, en mi versión éstas son librerías escritas en C, muy pequeñas y eficientes capaces de implementar diferentes filtros FIR, diezmador, interpolador y filtro Hilbert; como bonus implementé el análisis de la energía en la banda base de la cual se pueden derivar los eventos necesarios para un control por VOX. Es decir, los componentes necesarios para procesar cualquier señal con técnicas DSP. Implementé con ellos los pasos necesarios para generar un par de señales I/Q desde la banda base entregada por WSJT-X, por medio de las muestras entregadas por el paquete ALSA, para finalmente utilizar los modos de modulación proporcionados por la librería librpitx. Con ese procesamiento el transceptor PixiePi se podía usar como cualquier otro transceptor para emitir WSPR o FT8, y especialmente con ese último tuve resultados sorprendentes. El PTT del transceptor puede ser hecho tanto por control VOX (con la librería DSP) o mediante un PTT lógico por medio de un comando CAT implementado emulando el soporte de comandos del Yaesu FT817. Dado que el transceiver en si ya estaba despulgado y en funcionamiento todo el desarrollo fue mayormente de software, mostrando que de alguna manera había sido una buena decisión el salto a una plataforma mas potente, éste proyecto no hubiera sido posible en una plataforma Arduino. Al mismo tiempo muestra que pese a tener que cuidar la optimización del software la relación precio-performance de un Raspberry Pi Zero lo hace ideal para experimentar, no es una placa cara y su capacidad permite tener acceso a librerías de funcionamiento y desarrollo muy potentes, por no decir que se utiliza como generador de señales de RF (síntesis directa) y procesador de señales. Proyecto interesante y relativamente fácil de duplicar.

No hay comentarios:

Publicar un comentario