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.
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
- Arduino IDE: Descargar e instalar desde arduino.cc
- 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

Instalación de Librerías
- Descarga todos los archivos ZIP de librerías desde la carpeta lib/ del repositorio de GitHub
- Copia las carpetas extraídas a tu directorio de librerías de Arduino:
- Windows:
Documents\Arduino\libraries\ - macOS:
~/Documents/Arduino/libraries/ - Linux:
~/Arduino/libraries/
- Windows:
Librerías requeridas:
- Etherkit Si5351 (v2.1.4)
- JTEncode (v1.2.0)
- LiquidCrystal I2C (v1.1.4)
- NTPClient (v3.1.0)
- RotaryEncoder (v1.5.2)
- Time (v1.5)
- TinyGPSPlus (v1.1.0)
Subida del Firmware
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.
- Conecta tu ESP32 a tu computadora vía cable USB
- Abre
wspr-beakon.inoen Arduino IDE - Configura los parámetros requeridos (ver sección Configuración abajo)
- Selecciona el puerto COM correcto en Arduino IDE
- 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
- Desarrollo: Mantén
#define DEVMODEdescomentado 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"}
};
"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
- Frecuencia Inicial del Cristal: Para la primera subida, configura todas las frecuencias del cristal a
25000000UL(25 MHz) - Calibración Requerida: Después de la subida inicial, necesitarás calibrar cada banda para precisión de frecuencia
- Frecuencias Personalizadas: Las frecuencias proporcionadas son ejemplos - debes calcular las tuyas basadas en tu cristal Si5351 específico
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:
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
};