sábado, 30 de noviembre de 2019

PixiePi habla lenguas

“I will use strangers who speak unknown languages to talk to my people. They will speak to them in foreign languages," Corinthians 14.

En entradas anteriores comenté sobre progresos tanto en el armado del kit D4D (crkits) como del desarrollo que denomino PixiePi el que integra un desarrollo basado en un kit DIY Pixie y la librería librpitx corriendo en una plataforma Raspberry Pi Zero (W).
Cuando comenté en el foro Facebook Técnica-LU sobre el primero de ellos junto con mi recomendación hice el comentario, mas bien conceptual, que emitir en DSB como lo hace el D4D tiene sus bemoles y que debería poderse hacer en forma mas robusta mediante generación directa de señal con técnicas SDR. Lo que tenía en mente era que el proyecto PixiePi pudiera hacerlo, claro.
En realidad el "salto" no es tan grande, de hecho puede ni siquiera ser necesario un salto. En la página del proyecto figura como recibir y emitir FT8 con el proyecto PixiePi tal como está en éste momento, solo que si bien es funcional no es cómodo. En recepción el enfoque es idéntico al D4D, un receptor de doble conversión, concedo que quizás menos sensible pero suficiente, siendo su oscilador local la librería librpitx operando como DDS. En transmisión, sin embargo, el programa PiFT8 puede emitir todos los mensajes FT8 que sean necesarios, pero es necesario armarlos y coordinarlos completamente a mano, lo que quizás sea práctico para una prueba de concepto (o para un beacon) pero no necesariamente lo es para comunicación corriente. Por otra parte, correr WSJT-X en la Raspberry Pi Zero es técnicamente posible pero la performance es muy marginal (¿lo es?).
En experimentos previos, reflejados en la serie de éste blog denominada "Construyendo un transceptor digital bit a bit" exploré que era necesario para utilizar una plataforma Raspberry Pi para recibir distintos modos a partir de un dongle RTL-SDR y emitirlos basados en la librería librpitx. La mayor parte de la experimentación la hice con una Raspberry Pi 3+, el cual es casi cuatro veces mas poderosa que una Raspberry Pi Zero en términos de CPU. Alli encontré un limitante fundamental, que era que para compensar el retardo en el procesamiento del audio de recepción y retrasar el clock de la máquina para eso, perjudicaba la exactitud de la ventana de transmisión. La conclusión que saqué en ese momento era que debería usar dos placas separadas, una para emitir y otra para recibir (cada una con su compensación de clocks).
Pero hay otro enfoque posible, y es mostrado en la figura adjunta. PixiePi no requiere procesamiento digital de su salida, el receptor Pixie es un doble conversión (bueno, regular o malo, no importa) que puede alimentar directamente un WSJT-X via una placa de sonido cualquiera, una USB es quizás la opción mas conveniente. Por su parte el WSJT-X puede si, mediante un proceso de adecuación digital, alimentar la emisión mediante PixiePi a partir de una cadena de procesamiento digital que transforme los sonidos generados con la modulación FT8 en una señal de modulación I/Q (compleja) con la que poder modular en SSB la portadora generada del DDS. Con esa premisa empecé a trabajar en crear el software necesario para integrar ambas cosas, proveer una señal DDS que opere como oscilador local (LO) en receptor y una señal SSB que emita los tonos provistos por WSJT-X en transmisión.
En realidad el transceptor Pixie es de CW, y por lo tanto su etapa de salida no es lineal pues opera en clase C. Pero ésto no es dificultad toda vez que el filtrado de la señal de salida sea adecuado para evitar espurias excesivas y que la señal FT8 está contenida en la fase de la señal y no en su amplitud, la que resulta uniforme.
La capacidad del Raspberry Pi de generar una señal modulada en amplitud que se emita por un pin digital (GPIO4) es limitada, pero sorprendentemente suficiente puesto que el "nivel" de señal en el pin puede ser controlado programáticamente en hasta 7 niveles diferentes, y eso basta para generar una aproximación de la señal modulante suficientemente buena como para ser inteligible en un grado sorprendente, no peor que una señal de SSB "comprimida".
El despliegue consiste entonces en desplegar WSJT-X en una Raspberry Pi Zero, configurarla para recibir señal desde la linea MIC de una placa de sonido, el cual es alimentado con la salida de Speaker de la placa Pixie y alimentar la señal a emitir mediante un loopback interno para poder con el mismo activar el proceso de modulación SSB. La activación del PTT se realiza mediante comandos CAT aunque no descarto en el futuro poder hacerlo con un sistema VOX tal como opera D4D, aunque no hay cables involucrados en ninguno de ambos casos pues el comando es completamente digital.
De esta forma el procesamiento queda comandado enteramente por la placa Raspberry Pi Zero, aunque aún es necesario tener alguna forma de operar el WSJT-X que alli corre.
La forma mas trivial es, por supuesto hacerlo desde una PC o laptop mediante el uso de la conectividad VNC (escritorio remoto), la operación del WSJT-X es mayormente "point & click" asi que es una interfaz totalmente aceptable; pero en realidad se puede utilizar como alternativa cualquier medio que me permita utilizar el programa VNC Viewer tal como una tableta o un teléfono celular. En cuanto al teclado puede utilizarse un teclado virtual o un teclado bluetooth.

No hay comentarios:

Publicar un comentario