Saltar al contenido principal

Flasheo y Configuración de Software

Esta sección cubre la instalación del firmware y la configuración de parámetros para tu sistema WSPR Beakon.

Repositorio del Código Fuente

El código fuente completo, librerías y documentación para el proyecto WSPR Beakon están disponibles en:

https://github.com/danielcharrua/wspr-beakon

Asegúrate de descargar o clonar el repositorio para acceder a todos los archivos necesarios antes de proceder con la instalación.

Instalación del Software

Prerrequisitos

  1. Arduino IDE: Descargar e instalar desde arduino.cc
  2. Paquete ESP32: Instalar soporte para ESP32 en Arduino IDE

Configuración del Arduino IDE

Configura Arduino IDE con las siguientes opciones:

  • Placa: ESP32 Dev Module
  • Velocidad de Subida: 921600
  • Frecuencia CPU: 240MHz (WiFi/BT)
  • Frecuencia Flash: 80MHz
  • Modo Flash: QIO
  • Tamaño Flash: 4MB (32Mb)
  • Esquema de Partición: Default 4MB with spiffs
  • Nivel Debug Core: None
  • PSRAM: Disabled
  • Programador: Esptool
Configuración ESP32 Arduino

Instalación de Librerías

  1. Descarga todos los archivos ZIP de librerías desde la carpeta lib/ del repositorio de GitHub
  2. Copia las carpetas extraídas a tu directorio de librerías de Arduino:
    • Windows: Documents\Arduino\libraries\
    • macOS: ~/Documents/Arduino/libraries/
    • Linux: ~/Arduino/libraries/

Librerías requeridas:

Subida del Firmware

Seguridad de Alimentación

Si estás alimentando el circuito desde una fuente externa, es ALTAMENTE RECOMENDADO que esta fuente se apague antes de conectar un PC al módulo ESP32. NO HACERLO PUEDE DAÑAR IRREPARABLEMENTE EL PC.

  1. Conecta tu ESP32 a tu computadora vía cable USB
  2. Abre wspr-beakon.ino en Arduino IDE
  3. Configura los parámetros requeridos (ver sección Configuración abajo)
  4. Selecciona el puerto COM correcto en Arduino IDE
  5. Haz clic en "Subir" para flashear el firmware

Configuración del Software

Antes de subir el firmware, debes modificar las variables de configuración en la sección USER CONFIGURATION del código según tu configuración elegida:

Configuración del Modo de Desarrollo

#define DEVMODE // Debug del puerto serie
Modo de Desarrollo
  • Desarrollo: Mantén #define DEVMODE descomentado para depuración y resolución de problemas
  • Producción: Comenta esta línea (// #define DEVMODE) para rendimiento óptimo en despliegue final

Configuración Básica WSPR

// Configuración del transmisor WSPR
#define WSPR_CALL "EA1REX" // Tu indicativo de 4-6 caracteres
#define WSPR_LOC "IN53" // Tu localizador de cuadrícula de 4 caracteres
#define WSPR_DBM 10 // Nivel de potencia mostrado en trama WSPR (0, 3, 7, 10 dBm)
#define WSPR_TX_EVERY 4 // Transmitir cada X minutos (2, 4, 6, 8, 10, etc.)

Nivel de Potencia Si5351

// Opciones disponibles: SI5351_DRIVE_2MA, SI5351_DRIVE_4MA, SI5351_DRIVE_6MA, SI5351_DRIVE_8MA
// Potencia de salida (valores probados): SI5351_DRIVE_2MA = 1mW, SI5351_DRIVE_4MA = 2mW, SI5351_DRIVE_6MA = 5mW, SI5351_DRIVE_8MA = 10mW
#define SI5351_DRIVE_LEVEL SI5351_DRIVE_4MA

Configuración de Redes WiFi

Para configuración base (sincronización NTP):

const WiFiNetwork wifiNetworks[] = {
{"Tu_SSID_1", "contraseña1"},
{"Tu_SSID_2", "contraseña2"},
{"Tu_SSID_3", "contraseña3"}
};
SSID

"Tu_SSID_1" es el nombre de tu red Wifi

Configuración de Bandas

Configura frecuencias, calibración del cristal y pines de relé para cada banda:

} wsprFrequencies[] = {
// Frecuencia(Hz), Freq_Cristal(Hz), Etiqueta, Pin_Relé
{144489000UL, 25000000UL, "144.489 MHz 2m", 0}, // 2m band (not supported by the Si5351)
{70091000UL, 25000000UL, "70.091 MHz 4m", 0}, // 4m band (not supported by the Si5351)
{50293000UL, 25000000UL, "50.293 MHz 6m", 0}, // 6m band (not supported by the Si5351)
{40680000UL, 25000000UL, "40.680 MHz 8m", 0}, // 8m band
{28124600UL, 25000000UL, "28.124 MHz 10m", 12}, // 10m band
{24924600UL, 25000000UL, "24.924 MHz 12m", 12}, // 12m band
{21094600UL, 25000000UL, "21.094 MHz 15m", 14}, // 15m band
{18104600UL, 25000000UL, "18.104 MHz 17m", 14}, // 17m band
{14095600UL, 25000000UL, "14.095 MHz 20m", 27}, // 20m band
{10138700UL, 25000000UL, "10.138 MHz 30m", 27}, // 30m band
{7038600UL, 25000000UL, "7.038 MHz 40m", 26}, // 40m band
{5364700UL, 25000000UL, "5.364 MHz 60m", 26}, // 60m band
{3568600UL, 25000000UL, "3.568 MHz 80m", 25}, // 80m band
{1836600UL, 25000000UL, "1.836 MHz 160m", 33}, // 160m band
{474200UL, 25000000UL, "0.474 MHz 630m", 32}, // 630m band
{136000UL, 25000000UL, "0.136 MHz 2200m", 32} // 2200m band
};

Asignación de Pines de Relé

Los siguientes pines del ESP32 se usan para control de relés de banda:

  • Pin 12: bandas 10m, 12m
  • Pin 14: bandas 15m, 17m
  • Pin 25: banda 80m
  • Pin 26: bandas 40m, 60m
  • Pin 27: bandas 20m, 30m
  • Pin 32: bandas 630m, 2200m
  • Pin 33: banda 160m
Notas Importantes de Configuración
  1. Frecuencia Inicial del Cristal: Para la primera subida, configura todas las frecuencias del cristal a 25000000UL (25 MHz)
  2. Calibración Requerida: Después de la subida inicial, necesitarás calibrar cada banda para precisión de frecuencia
  3. Frecuencias Personalizadas: Las frecuencias proporcionadas son ejemplos - debes calcular las tuyas basadas en tu cristal Si5351 específico
Paso Crítico Post-Subida

Muy Importante: Una vez que se sube el nuevo código al ESP32, es necesario hacer una selección de banda usando el encoder (ver siguiente sección) para que el microcontrolador se inicialice correctamente. De lo contrario, el funcionamiento del ensamblaje será errático.

Funcionalidad de transmisión en bandas rotativas

Se puede configurar el código para que el equipo haga la transmisión alternadamente en distintas bandas y de manera rotativa; esto puede ser útil para alguien que utilice una antena multibanda. Con esta opción activada, la secuencia de transmisión sería la siguiente: transmito en la banda “A”; hago “X” minutos de reposo; transmito en la banda ”B”; hago “X” minutos de reposo; transmito en la banda “C”; hago “X” minutos de reposo; comienzo de nuevo el ciclo volviendo a transmitir en la banda “A”.

Antes de habilitar esta funcionalidad se deben tener en cuenta las siguientes premisas:

Muy importante

Se deberá habilitar un sistema de conmutación de filtros que contemple las bandas a utilizar

  • Se deberá usar una antena adaptada a las bandas a utilizar
  • El tiempo mínimo entre transmisiones será de 4 minutos (implica dos minutos de reposo entre transmisiones)
  • Se pueden asignar tantas bandas rotativas como se desee
  • El encoder rotativo ya no servirá para escoger la banda de funcionamiento, pues estas se irán alternando según la elección que hagamos en el código. En todo caso, una vez cargado el nuevo código, debemos hacer una selección de banda con el encoder de cara a inicializar correctamente el dispositivo

Para habilitar esta funcionalidad habrá que cambiar en esta línea de código:

#define WSPR_AUTO_ROTATION false // Set to true to auto rotate frequencies after each transmission

Cambia el parametro WSPR_AUTO_ROTATION de false a true, y a continuación añade al comienzo de las líneas de código que corresponden a las distintas bandas, un par de barras inclinadas // sobre cada una de las bandas que no queremos que formen parte de la transmisión rotativa. Por ejemplo, en este bloque de líneas de código se dejaron habilitadas exclusivamente las bandas de 10, 15 y 20 metros (caso típico de alguien que quiera usar esta funcionalidad sobre la habitual antena tribanda):

} wsprFrequencies[] = {
// Frecuencia(Hz), Freq_Cristal(Hz), Etiqueta, Pin_Relé
//{144489000UL, 25000000UL, "144.489 MHz 2m", 0}, // 2m band (not supported by the Si5351)
//{70091000UL, 25000000UL, "70.091 MHz 4m", 0}, // 4m band (not supported by the Si5351)
//{50293000UL, 25000000UL, "50.293 MHz 6m", 0}, // 6m band (not supported by the Si5351)
//{40680000UL, 25000000UL, "40.680 MHz 8m", 0}, // 8m band
{28124600UL, 25000000UL, "28.124 MHz 10m", 12}, // 10m band
//{24924600UL, 25000000UL, "24.924 MHz 12m", 12}, // 12m band
{21094600UL, 25000000UL, "21.094 MHz 15m", 14}, // 15m band
//{18104600UL, 25000000UL, "18.104 MHz 17m", 14}, // 17m band
{14095600UL, 25000000UL, "14.095 MHz 20m", 27}, // 20m band
//{10138700UL, 25000000UL, "10.138 MHz 30m", 27}, // 30m band
//{7038600UL, 25000000UL, "7.038 MHz 40m", 26}, // 40m band
//{5364700UL, 25000000UL, "5.364 MHz 60m", 26}, // 60m band
//{3568600UL, 25000000UL, "3.568 MHz 80m", 25}, // 80m band
//{1836600UL, 25000000UL, "1.836 MHz 160m", 33}, // 160m band
//{474200UL, 25000000UL, "0.474 MHz 630m", 32}, // 630m band
//{136000UL, 25000000UL, "0.136 MHz 2200m", 32} // 2200m band
};