Con una cuenta desbloqueas el cuestionario, el foro de dudas y el tutor con IA de esta lección, además del registro de progreso y el certificado verificable al terminar «Estaciones Terrenas y SDR: Recibir Satélites desde Cero».
Hasta aquí has aprendido a hacer las cosas a mano: apuntar, sintonizar, mirar el waterfall, corregir el Doppler girando la rueda, lanzar el decodificador. Está bien, es como se aprende y nadie debería saltárselo. Pero recuerda la aritmética de la lección 1: un satélite de órbita baja te da unos cinco pases útiles al día y en total menos del 4 % de la jornada. Dos de esos pases caen de madrugada. Si solo operas a mano, pierdes estructuralmente la mitad de tus datos, y los perderás siempre a la misma hora, lo que sesga cualquier serie temporal que intentes construir.
La automatización no es un lujo de ingeniería: es lo que convierte una afición en un instrumento. Y automatizar un pase es un problema de sistemas bastante interesante, con predicción, planificación, control en tiempo real y recursos exclusivos. Esta lección lo desarma pieza por pieza siguiendo la arquitectura real de OrbitEye, la estación terrena del ecosistema CODE Aerospace.
Predicción: del TLE al pase
Todo empieza con un TLE (two-line element set, conjunto de elementos orbitales en dos líneas): el formato veterano que codifica el estado orbital de un objeto en dos renglones de texto. Alimentado a un propagador SGP4 produce la posición del satélite en cualquier instante cercano; combinado con las coordenadas de tu estación, da azimut, elevación y distancia en función del tiempo. Un pase es simplemente el intervalo en el que la elevación supera un umbral operativo, típicamente 10 grados (por debajo de eso, los obstáculos del horizonte y el ruido térmico del suelo suelen arruinar el enlace).
El curso Redes Satelitales cubre la mecánica orbital detrás de esto; aquí nos importan las consecuencias operativas. Dos: primera, un TLE envejece — su error crece con los días y conviene refrescarlo cada 24 horas o menos; segunda, la predicción no solo da la ventana temporal, también da la curva Doppler completa del pase, que es lo que permite corregir la sintonía sin buscar a ciegas.
Corrección Doppler en vivo
En la lección 4 calculamos la magnitud del desplazamiento Doppler. Lo que importa para automatizar no es la magnitud sino la velocidad de cambio, porque de ella depende cada cuánto hay que reajustar la sintonía.
Ejemplo resuelto: cada cuánto reajustar la frecuencia
Considera un pase cenital de un satélite a h=500 km de altura con velocidad orbital v=7.6 km/s, emitiendo en f0=437.5 MHz. Aproximando la distancia estación-satélite cerca del punto de máxima aproximación por r(t)=h2+(vt)2, la aceleración radial en t=0 vale:
Si tu enlace GMSK a 9600 bit/s tolera como mucho 50 Hz de error residual de frecuencia, el periodo máximo entre actualizaciones de sintonía es:
Tact≤168Hz/s50Hz=0.30s
Es decir, hay que corregir al menos tres veces por segundo, y por eso las implementaciones reales actualizan entre 1 y 10 Hz. El resultado también explica una asimetría que desconcierta al principiante: en los extremos del pase el Doppler es grande pero casi constante, mientras que en el momento de máxima elevación es cero pero cambia a máxima velocidad. La señal se pierde justo cuando más fuerte se ve, y la culpa nunca es de la antena: es del lazo de corrección.
El ciclo de vida de una observación
Una observación automatizada es una máquina de estados, y modelarla explícitamente es lo que hace el sistema depurable: cada fallo queda anclado a una transición concreta.
AOS (acquisition of signal) y LOS (loss of signal) son los instantes de entrada y salida de la ventana. El estado Fallida merece un comentario: una observación puede fallar por causas muy distintas — el satélite no transmitió, el rotor no llegó a tiempo, hubo interferencia local, el decodificador no enganchó — y distinguirlas es justamente el problema de la lección 9.
Locks de hardware: el recurso es físico
Aquí está la diferencia esencial entre programar una estación terrena y programar un servicio web corriente. Un servicio web escala replicando procesos; una estación terrena tiene una radio y un rotor. No hay concurrencia posible: dos observaciones simultáneas no se ejecutan más lento, se corrompen las dos. Y el rotor, además, tarda decenas de segundos en girar de un extremo del cielo al otro, así que ni siquiera puede alternar.
El patrón de OrbitEye es explícito: un executor que toma locks exclusivos sobre cada recurso físico (SDR y rotor) antes de iniciar una observación y los libera al terminar, con un tiempo de guarda entre pases para el reposicionamiento. Ninguna tarea que no posea ambos locks toca el hardware. Es el mismo razonamiento que aplicarías a un fichero abierto en escritura, pero con una diferencia incómoda: si el software se cae con el lock tomado, el rotor puede quedarse apuntando al suelo y forzando un tope mecánico. Por eso el lock lleva siempre expiración y el arranque del servicio hace una rutina de recuperación.
Qué se guarda y qué viaja
La lección 3 dejó el número: un pase de 12 minutos a 2.4 MS/s con 8 bits por componente pesa unos 3.5 GB de IQ crudo. Llevemos la cuenta a una semana de operación con 5 pases diarios:
VIQ=5×7×3.5GB=122.5GB por semana y estacioˊn
Los productos derivados de esos mismos 35 pases son, en cambio, minúsculos: la imagen del waterfall en PNG (del orden de 300 kB), el audio demodulado y comprimido (unos 5 MB) y las tramas decodificadas (unas decenas de kB). En total, alrededor de 5.3 MB por pase:
Vderiv=35×5.3MB=186MBVderivVIQ=186122500≈660
Seiscientas sesenta veces menos. Esa razón dicta la arquitectura sin margen de discusión: el IQ crudo se queda en la estación con una política de retención de días, y lo que viaja a la nube son los derivados. Solo se conserva y se sube IQ cuando hay una razón concreta —un evento anómalo, una campaña de reprocesado, un satélite nuevo cuyo formato aún no se sabe decodificar— y siempre acompañado de sus metadatos SigMF, porque una grabación sin frecuencia central ni tasa de muestreo es un archivo de números sin significado.
Planificar la noche: conflictos y prioridades
Con varios satélites objetivo, los pases se solapan y hay que elegir. El problema, para una sola estación, es el de planificación de intervalos con pesos: cada pase es un intervalo con un valor asociado (elevación máxima, prioridad de la misión, tiempo transcurrido desde la última observación exitosa) y se busca el subconjunto de intervalos disjuntos de valor total máximo. Tiene solución exacta y eficiente por programación dinámica; deja de ser fácil cuando se añaden varias estaciones, tiempos de reposicionamiento del rotor y restricciones de energía.
Ejemplo resuelto: resolver un solape
Tres pases en una misma noche, con la elevación máxima como peso:
Pase
Ventana
Elevación máxima
A
20:00 – 20:11
78°
B
20:05 – 20:14
41°
C
20:20 – 20:29
62°
A y B se solapan entre 20:05 y 20:11, así que son incompatibles; C no choca con ninguno. Las dos planificaciones válidas maximales son {A,C} con valor 78+62=140 y {B,C} con valor 41+62=103. Gana {A,C}. Fíjate en que el criterio codicioso de "empezar lo antes posible" habría elegido igual aquí por casualidad, pero si B durase hasta las 20:25 habría bloqueado también a C, y la solución codiciosa por hora de inicio se quedaría en 41 frente a los 140 del óptimo. Por eso los planificadores serios ordenan por hora de fin y aplican la recurrencia de programación dinámica, en vez de decidir sobre la marcha.
El laboratorio de esta lección te pone exactamente en ese papel: cinco pases de tres satélites sobre una línea de tiempo, algunos solapados, que debes agendar respetando el lock de hardware. Verás la ejecución animada de cada observación —elevación, Doppler aplicado, estado, productos generados— y al final un resumen de la noche con los pases completados, los perdidos y los conflictos bien resueltos. Un botón lanza el planificador automático por elevación máxima para que compares tu solución con la suya. Si le ganas, tu intuición ya es la de un operador.
Antes de bajar, comprueba lo esencial:
¿Por qué el executor de la estación toma locks exclusivos sobre el SDR y el rotor?
Laboratorio: Pase automatizado · Agenda, locks y productos de una noche