WSPR TX: Arduino + Si5351

Para construir y poner en funcionamiento una baliza WSPR TX necesitamos:

Autorización

  • Las emisiones en bandas de radioaficionado, como es el caso de las balizas WSPR, precisan, en todo el mundo, disponer de una licencia de radioaficionado. Si no la tiene, piense que es mas fácil y económico de obtener que una licencia o permiso de conducir y le permitirá disfrutar de la afición a la radio como nunca antes lo habia hecho.

Hardware

  • Un procesador que sea capaz de definir un mensaje WSPR con el indicativo y la posición y lo transmita de forma sincrona: para esta función utilizaremos placa de desarrollo con Arduino /ESP32
  • Un patron de tiempo: para eso usaremos un chip GPS que en principio puede estar o no integrado en la placa. Elegiremos una placa ESP32 con GPS
  • Un generador de RF: para ello usaremos una placa SI5351, que es un modulo generador de reloj de 8 kHz a 160 MHz con una potencia de salida de 8 dBm (6mW) que trabaja con un cristal de 25 a 27 MHz se puede adquirir en Aliexpress por menos de 2€ si bien hay placas mas completas que incluyen pantalla TFT por unos 30€ por unos 

Resumiendo, nos basta en principio con estas dos placas:

  • Lilygo ESP32 LoRa GPS 433MHz (T-Beam) 
    • Lilygo ESP32 LoRa GPS es una placa de desarrollo compatible con Arduino que entre otras funcionalidades incorpora un  receptor GPS que permite obtener la posición y el patrón de tiempo, por lo que es un buen candidato como controlador de un TX WSPR. El GPS es un poco perezoso en el arranque si quiere una respuesta mas rápida elija la placa con GNSS

El Si5351 dispone de 3 salidas de RF con conectores SMB (CLK0, CLK1 y CLK2) ademas de 7 pines (0,1,2,SCL, SDA, GND y VIN)


Es muy conveniente disponer de :

  • Un receptor de RF (p.e. SDR) para comprobar que el WSPR TX transmite y en que frecuencia lo hace
  • Un receptor WSPR para monitorizar las transmisiones WSPR o SPOTS

Adicionalmente podriamos necesitar:

  • Un amplificador lineal de potencia, para aumentar la potencia de saldia del WSPR TX
  • Un filtro pasa bajos para disminuir los armónicos que genere el conjunto 


Software

He hecho una pequeña búsqueda de proyectos de WSPR TX  disponible en Internet y he encontrado el siguiente software:


WSPRBEACON 

Después de analizar brevemente cada uno de ellos hemos elegimos este proyecto que requiere las siguientes librerías:

Antes de continuar debe leer SI5351: primeros pasos

También usa
  • Wire (en el programa #include "Wire.h

Hay que descargar y poner en la misma carpeta del proyecto 
  • WSPR_beacon_ESP32.ino
  • GPS.ino
  • Messages.ino
  • settings.h (En el programa #include "settings.h") es un fichero de parámetros de funcionamiento, solamente pongo los que modifique por que sabia que hacian
    • #define MYCALL "MYCALL" => Poner nuestro indicativo
    • #define DBMPOWER 8 => Es la potencia que entrega Si5351
    • #define SI5351FREQ  => poner 0 pues  la frecuencia del SI5351 comprado en aliexpress es de 25 MHz, debe comprobar cual es la del suyo
    • #define SI5351_CORRECTION => Atención hay que calibrar el SI5351 en caso contrario no funcionara, el valor está en centesimas de HZ Ver SI5351: primeros pasos
Adjunto esta tabla, obtenida para una placa en concreto y unicamente como ejemplo de la variabilidad que presenta tanto la frecuencia y su correspondiente ajuste así como  la potencia entregada en cada caso (valor relativo)
Recuerde que el ancho de la banda de WSPR es de tan solo 200 Hz por lo que es muy importante esta variable


    • static const unsigned long long freqArray[6] => es la tabla con el ciclo de trabajo, en principio no la toco pero se pueden incluir mas bandas y ajustarla al International WSPR Projct) en cada entrada hay que poner la frecuencia en Hz
  • Si va usar la pantalla OLED necesitará:
    • Adafruit_SSD1306.cpp
    • Adafruit_SSD1306.h
    • Fixed8x16.h
Por ultimo deberá seleccionar la placa ESP32 que use, en nuestro caso  Lilygo T-Beam y el puerto al que está conectada en ARDUINO IDE, compilar, cargar y cruzar los dedos

El programa original está escrito para el procesador del tipo AVR (como el ATmega328P) y dado que se va usar un procesador del tipo ESP32, se reescribieron los programas que están disponibles en Github https://github.com/joanpao/WSPR_beacon_ESP32


Pruebas

1 - La primera prueba es que el GPS funciona y se comunica con la placa lilygo T-beam sin problemas y eso lo podemos hacer con  el programa GPS_display En caso de que deje de funcionar el GPS puede necesitar su inicialización o RESET que es posible hacerlo ccon el programa resetGPS . Si el GPS no va el WSPR no emitirá

2 - La siguiente prueba es que el modulo Si5351 funciona y se comunica correctamente con la placa lilygo esto se comprueba de forma indirecta con el programa de calibración

3 - La siguiente prueba es  comprobar que se ejecuta el flujo del programa, pasa ellos se han puesto mensajes para que aparezcan  por el puerto serie que nos sirven como traza (En un futuro se sacaran por la pantalla para evitar la necesitada de que esté conectado a un ordenador con Arduino IDE).

Mensaje del programa que indica que está esperando captar un primer paso de GPS, cuando lo haga el led rojo parpadeará. Mientras no lo haga no comenzará a emitir



4 - Lo siguiente es comprobar que emite y que lo hace en la frecuencia esperada, para ello usamos en un receptor (p.e. SDR-RTL & SDR++). 

En este punto se vio que la calibración hecha no acababa de funcionar y se uso el método de prueba y error partiendo de la banda de 18m y sabiendo que la corrección aumentaba a medida que aumentaba la banda y disminuia a medida que disminuía la banda (en un par de horas queda calibado). Además se decidió hacerlo directamente sobre la frecuencia de la tabla  y no como frecuencia WSPR  +/- corrección pues la correccción no es constante para todas las bandas.

Ajuste de frecuencia con SDR-RTL 6 SDR++

Tabla de los ajustes finales, con la frecuencia leida en SDR-RTL 
y la leida con openWSPR cuando es leida y decodificada 


Para las bandas de 160m, 80m y 60m la señal recibida por el SDR estaba a nivel de ruido por lo que no se pudo ajustar y se decidió no usarlas. 

5- Se comprueba que los spots se reciben por WSPR RX en local 

Monitorización con el RX de openWSPR de remoteQTH

6 - Comprobar que llegan a estaciones receptoras remotas de WSPR y que sean  subidos a WSPRnet

(A la espera)


He disfrutado mucho con este proyecto que es mas sencillo de lo que parece, aunque reconozco que conceptualmente es complejo 

No hay comentarios:

Publicar un comentario

ATS-mini SI4732: lenguaje de script

  El receptor ATS-mini SI4732  cuenta con su propio lenguaje de programación, compatible con CSS y JavaScript, que permite obtener resultado...