
Proyecto BermejaPi — Entrada 14: El escudo invisible (Magnetometría 3D)
En la entrada anterior conseguimos unir las capturas en ráfaga de la ISS para crear la primera cartografía panorámica de nuestro exoplaneta. Conocemos su masa, su temperatura, la densidad de su atmósfera y que posee un 22% de masa vegetal.
Sin embargo, hay un peligro invisible en el espacio: el viento solar. Si el planeta no posee un núcleo de hierro fundido en movimiento (dinamo magnética), la radiación estelar terminará barriendo la atmósfera y destruyendo la vida. En esta misión, BermejaPi utiliza el magnetómetro del Sense HAT para medir la magnetosfera.
1. El Módulo del Campo Magnético Triaxial
El sensor magnético del Sense HAT mide la intensidad del campo en microteslas (\mu\text{T}) a lo largo de tres ejes espaciales (B_x, B_y, B_z).
Para calcular la intensidad total del campo magnético (B_{\text{total}}) en nuestra posición orbital, aplicamos el teorema de Pitágoras en tres dimensiones:
B_{\text{total}} = \sqrt{B_x^2 + B_y^2 + B_z^2}- En la Tierra: El campo magnético en la superficie y en órbita baja oscila entre 25 y 65 \mu\text{T}.
- Marte o la Luna: Poseen campos casi nulos (< 1 \mu\text{T}) debido a la ausencia de dinamo activa.
2. Código en Python: Telemetría Magnética y Detección de Dinamo
El siguiente script lee las componentes del magnetómetro (o genera lecturas simuladas del entorno si no detecta el hardware), calcula el módulo total y determina si el planeta cuenta con una dinamo interna activa.
Python
import math
import numpy as np
# Intentar cargar Sense HAT
try:
from sense_hat import SenseHat
sense = SenseHat()
except Exception:
sense = None
def leer_magnetometro():
"""Obtiene los componentes 3D del magnetómetro o simula lecturas orbitales."""
if sense is not None:
try:
raw_mag = sense.get_compass_raw()
return round(raw_mag['x'], 2), round(raw_mag['y'], 2), round(raw_mag['z'], 2)
except Exception:
pass
# Simulación de lecturas en microteslas (uT) para órbita baja
return 18.45, -22.10, 35.80
def analizar_magnetosfera():
"""Calcula el módulo magnético total y evalúa la protección contra radiación."""
mx, my, mz = leer_magnetometro()
# Módulo del vector 3D
b_total = math.sqrt(mx**2 + my**2 + mz**2)
# Evaluación de dinamo activa (Rango habitable: 20 uT - 70 uT)
dinamo_activa = 20.0 <= b_total <= 70.0
return {
"bx": mx,
"by": my,
"bz": mz,
"b_total": round(b_total, 2),
"proteccion_activa": dinamo_activa
}
# Ejecutar diagnóstico de la magnetosfera
telemetria = analizar_magnetosfera()
print(f"Componentes 3D -> Bx: {telemetria['bx']} uT | By: {telemetria['by']} uT | Bz: {telemetria['bz']} uT")
print(f"Intensidad Campo Magnético Total: {telemetria['b_total']} uT")
print(f"Escudo Magnético Activo: {telemetria['proteccion_activa']}")
Resultados de la Misión: Escudo Magnético Confirmado
Al procesar la telemetría del sensor obtenemos los siguientes valores:
- Intensidad Total (B_{\text{total}} \approx 45.98 \text{ }\mu\text{T}): El valor se encuentra holgadamente dentro del rango protector (20 a 70 \mu\text{T}).
- Dinamo Interna Activa: El núcleo del planeta cuenta con metales líquidos en convección, generando un campo dipolar capaz de desviar el viento estelar perjudicial.
- Habitabilidad Global: Con masa terrestre, atmósfera densa, 22% de vegetación y magnetosfera protectora, el exoplaneta reúne todas las condiciones clave de habitabilidad.

Reto para la clase: El Informe Final de la Misión
Hemos completado la fase de adquisición de datos científicos con BermejaPi. Ha llegado el momento de empaquetar toda la telemetría recolectada en la ISS (data.csv) y generar el informe consolidado de la expedición.
En la Entrada 15 cerraremos la Fase II presentando la Matriz Final de Habitabilidad Planeta-Tierra.



