Una tarjeta ESP32 con GPS integrado como Lilygo T-Beam GPS cuesta casi el doble que una sin ella como Lilygp LoRa32 V2.1_1.6 de LiLygo, y la cuarta parte si una tarjeta ESP32 con WiFi pero sin Lora, por eso es interesante explorar la posibilidad de configurar un WSPR TX basado en NTP a través de WiFi/internet.
El programa WSPR TX beacon ( ESP32 + Si5351 ) versión GPS/GNSS , cuay documentación debe leer en cualquier caso antes de seguir, pues se dan por sabidas muchas de las cosas que allí se exponen se modificará para:
- Obtener el tiempo mediante NTP en lugar de con GPS/GNNS
- Introducir la localización por programa en lugar de obtenerla a partir del GPS
Es necesario hacer un prueba de carga con el fin de determinar la cantidad de mensajes que se pierden por error de sincronismo. Con todo esto nos dará una viabilidad teórica de un WSPR TX NTP pero esto no nos asegura que para una determinada localización funcione, es pues mas dependiente de la localización, algo que con GPS no lo era.
¡ ATENCION !
PARA HACER FUNCIONAR ESTE PROGRAMA DEBE CONTAR CON UNA LICENCIA DE RADIOAFICIONADO Y AJUSTARSE A LA NORMATIVA ESPECÍFICA DE SU PAIS
Desarrollo WSPR TX NTP para Lilygo T3 V1.6.1
Localizaremos los pines para conectar a la Si5351
- SCL: pin 22
- SDA: pin 21
- GND: pin GND
- VIN: pin 3.3V
Que en el código aparecerá como
- // OLED I2C pins
- #define OLED_RST NOT_A_PIN
- #define OLED_SDA 21
- #define OLED_SCL 22
- Adafruit_SSD1306 display(OLED_RST);
Usaremos la salida CLK0 (En caso de cambiarla por la CLK1 o CLK2 hay que hacerlo en 5 puntos del programa
- si5351.drive_strength(SI5351_CLK0, SI5351_DRIVE_8MA);
- si5351.output_enable(SI5351_CLK0, 0);
- si5351.output_enable(SI5351_CLK0, 1);
- si5351.set_freq(tx_freq, SI5351_CLK0);
- si5351.output_enable(SI5351_CLK0, 0);
![]() |
| Montaje de pruebas de un WSPR TX NTP con una placa de desarrollo Lilygo LoRa 868 MHz (Este valor no tiene ninguna importancia) T3 V.1.6.1 + Si5351 |
Abrir la salida serie con la velocidad definida por programa
- Serial.begin(115200);
Recuerde que debe calibrar cada placa si5351 que use para que la
frecuecnia real de TX esté en la banda
Band (m) Freq Tx INI-FIN (MHz)
160 1.838 000 – 1.838 200
80 3.594 000 – 3.594 200
40 7.040 000 – 7.040 200
30 10.140 100 – 10.140 300
20 14.097 000 – 14.097 200
17 18.106 000 – 18.106 200
15 21.096 000 – 21.926 200
12 24.926 000 – 24.926 200
10 28.126 000 – 28.126 200
6 50.294 400 – 50.294 600
Compilar y transferir
Comprobaciones
Salida serie correcta
[WSPR Beacon] Inicializando...
Conectando a Wi-Fi....
✅ Wi-Fi conectado.
⏱ Sincronizado con NTP: 16:30:58
[Si5351] Inicializado correctamente.
[Timer] Configurado e iniciado.
✅ OLED inicializada, mostrando mensaje...
[TX] Frecuencia seleccionada: 14095400
[ENCODE] Codificando mensaje: EA5JTT IM99 7 dBm
[TX] Iniciando transmisión WSPR...
[TX] Símbolo 0 → Frecuencia: 1409540146
[TX] Símbolo 1 → Frecuencia: 1409540146
...
[TX] Símbolo 160 → Frecuencia: 1409540292
[TX] Símbolo 161 → Frecuencia: 1409540292
[TX] Transmisión finalizada.
Salida serie con errores
- ERROR] No se detectó el Si5351. => comprobar los pines y las conexioens
Monitorización correcta con SDR
Monitorización a traves de WSPRnet
| F4GSM recibe a EA5KJTT en la banda de 14 MHz con SNR=-25 |
Repositorio completo y probado en:
Desarrollo WSPR TX NTP para la placa ESP32 WROOM 32D DEV KIT V1 30PINS
La placa de desarrollo ESP WROOM 32D DEV KIT V1 es una placa muy popular (p.e. se incluye en el ESP32 Basic Starter Kit ) y barata (Se puede obtener por menos de 5€ en Aliexpress)
COmo en cualquier desarrollo tenemos que conocer el mapa de pines para poder adaptar nuestro programa
En este caso para economizar no instalamos pantalla OLED aunque se puede hacer (Ver: ESP32 Basic Starter Kit for dummys: Proyecto - 12 ESP32_OLED_Display)
Parametros Arduino IDE:
- Placa ESP32-WROOM-DA
- conexión: /dev/cu.usbserial-0001
Pines conexión de la placa de reloj Si5351
- SCL: pin 22
- SDA: pin 21
- GND: pin GND
- VIN: pin 3.3V
Errores
i2c.master: I2C hardware NACK detected
i2c.master: I2C transaction unexpected nack detected
i2c.master: s_i2c_synchronous_transaction(945): I2C transaction failed
i2c.master: i2c_master_multi_buffer_transmit(1214): I2C transaction failed
Por algún motivo (deben coincidir las direcciones de OLED y Si5351) las definiciones de la pantalla OLED y los comandos display le molestan por lo que como para esta placa de desarrollo ESP32 no son necesarias, se elimina.
Repositorios completos y probados en :
NTP vs GPS
Con la misma antena, y las mismas placas ESP32 y si5351,la versión con GPS obtiene 8 veces mas spots que NTP.
La primera hipótesis es que NTP no es lo suficientemente preciso. Una posible solución es dotar al sistema con un reloj de precisión como puede ser DS3231 AT24C32 que además posibilitaría que pudiera trabajar sin Wi-Fi.
Pero las hipótesis hay que confirmarlas o refutarlas, así que haremos una prueba
Ver también:
- ESP32 LoRa for dummys - NTP Time
- Un NTP con precisión GPS
- SI5351: primeros pasos
- WSPR TX beacon ( ESP32 + Si5351 ): versión NTP
- WSPR TX beacon ( ESP32 + Si5351 + DS3231): versión NTP + reloj
- WSPR TX beacon ( ESP32 + Si5351 ): versión GPS/GNSS
Referencias
- NTP Client Arduino https://github.com/arduino-libraries/NTPClient
- NTP Server / GPS Client Arduino https://github.com/mgi2212/NtpServer
Prohibida la reproducción parcial o total de este artículo sin permiso previo del autor






No hay comentarios:
Publicar un comentario