Logotipo de sheen.bot

← Ideas y reflexiones

Por qué tu micro:bit pide calibrar la brújula en cada clase

28 sept 2026·Sheen Robotics
Por qué tu micro:bit pide calibrar la brújula en cada clase

La micro:bit fuerza su minijuego de calibración porque los desfases del magnetómetro se pierden al apagarla y los pupitres escolares de acero distorsionan el campo magnético. Descubre cómo solucionarlo en MakeCode y MicroPython.

La micro:bit exige calibrarse al inicio de una clase por dos motivos combinados: los datos de calibración del magnetómetro se almacenan únicamente en la memoria volátil (RAM), que se borra en el momento en que se desconecta la placa, y el entorno de ejecución detiene automáticamente el programa para iniciar la rutina de calibración la primera vez que el código solicita el rumbo a un sensor no calibrado. En un entorno escolar, esto se ve agravado por el mobiliario del aula: los pupitres estándar con estructura de acero y los equipos informáticos adyacentes distorsionan el campo geomagnético local, lo que hace que cualquier lectura sin calibrar sea sumamente imprecisa.

Por qué los pupitres escolares interfieren en las lecturas del magnetómetro

La micro:bit utiliza un chip combinado de acelerómetro y magnetómetro (como el LSM303 o el FXOS8700 en las placas v1, o el LSM303AGR en las v2). Un magnetómetro mide la intensidad y la dirección de los campos magnéticos a lo largo de tres ejes ortogonales. En un campo de deportes al aire libre, el campo principal que se mide es el campo geomagnético terrestre (aproximadamente de 30 a 60 microteslas).

Sin embargo, en un aula estándar sudafricana, los alumnos se sientan en mesas fabricadas con tubos de acero dulce, a menudo situadas directamente sobre forjados de hormigón armado con barras de acero. Los portátiles cercanos, los transformadores de los monitores y los carritos de carga crean campos electromagnéticos activos. Estos generan dos tipos de distorsión magnética:

  • Distorsión por hierro duro (hard iron): Los imanes permanentes o los objetos de acero magnetizado cercanos producen un desfase constante que desplaza todo el círculo magnético respecto al origen (0, 0, 0).
  • Distorsión por hierro dulce (soft iron): Los materiales ferromagnéticos (como la estructura de acero dulce del pupitre) deforman y comprimen las líneas del campo magnético terrestre, transformando lo que debería ser una gráfica de medición esférica en un elipsoide asimétrico.

Cuando la micro:bit se inicia desde cero, su matriz de calibración interna está en blanco. En cuanto una línea de código solicita rumbo de la brújula o compass.heading(), el entorno de ejecución de la micro:bit comprueba si existe una matriz de calibración válida. Al no encontrar ninguna, congela el programa y ejecuta la rutina obligatoria de inclinación (dibujar un círculo o rellenar la matriz de 5x5 LED) para calcular los desfases de compensación de hierro duro y hierro dulce.

El problema de los ciclos de apagado y encendido en el aula

Dado que el entorno de ejecución predeterminado almacena los datos de calibración únicamente en la memoria RAM, cada vez que un alumno desconecta su micro:bit de un puerto USB o acciona el interruptor del portapilas, los valores de compensación desaparecen. Si en tu clase hay 30 alumnos editando código repetidamente, transfiriéndolo por USB y ejecutándolo, la placa se reinicia con cada volcado de código. Esto provoca hasta treinta secuencias de calibración por alumno en una sola sesión de 45 minutos.

Peor aún: si un alumno completa la calibración moviendo la micro:bit en el aire a la altura del pecho y luego vuelve a colocar la placa a 5 centímetros del puntal de acero de una mesa, el campo magnético cambia de forma drástica. La micro:bit no detecta automáticamente que la referencia ha cambiado a menos que el sistema detecte un vector de campo totalmente inválido, lo que genera rumbos incorrectos o agujas de brújula erráticas.

Cómo omitir y controlar la calibración en MakeCode

En Microsoft MakeCode, el bloque rumbo de la brújula (°) incluye una comprobación integrada: si el magnetómetro no está calibrado, invoca automáticamente input.calibrateCompass(). Tienes tres formas de gestionar este comportamiento en función de los objetivos de tu clase.

1. Si NO necesitas un rumbo absoluto: utiliza el acelerómetro en su lugar

Si estás enseñando entradas básicas, controles por inclinación o giros simples (por ejemplo, dirigir un buggy a izquierda o derecha), es casi seguro que no necesitas el magnetómetro. El profesorado suele recurrir a rumbo de la brújula cuando en realidad busca la inclinación o la orientación angular. El uso de rotación (cabeceo/alabeo) o aceleración evita por completo el subsistema de la brújula y jamás activa la pantalla de calibración.

2. Calibra una sola vez de forma explícita en `al iniciar`

Si tu proyecto requiere verdaderamente una brújula (como en actividades de orientación o navegación), llama a la calibración de forma explícita dentro del bloque al iniciar en lugar de permitir que se active de forma inesperada en mitad de un bucle:

input.calibrateCompass()

Indica a los alumnos que se pongan de pie, sostengan la micro:bit lejos del cuerpo y completen la rutina de inclinación en el aire antes de sentarse. Esto evita que el minijuego de calibración interrumpa el bucle de lógica principal durante las pruebas.

Gestión de la calibración en MicroPython

En MicroPython dispones de un control mucho más granular sobre el ciclo de vida del sensor. Puedes comprobar el estado de calibración, calibrar de forma no interactiva o incluso introducir desfases fijos en el código.

Evitar la pantalla de calibración bloqueante

Por defecto, llamar a compass.heading() en MicroPython activará la rutina de calibración si compass.is_calibrated() devuelve False. Puedes protegerte frente a bloqueos inesperados comprobando el estado de forma explícita:

import compass

if not compass.is_calibrated():
    compass.calibrate()

while True:
    heading = compass.heading()
    # Lógica del proyecto aquí

Introducir manualmente los datos de calibración

Si tus alumnos trabajan en un aula de informática fija y quieres eliminar por completo el juego de inclinación durante las fases de programación iterativa, puedes calcular los desfases de referencia una sola vez, escribirlos en el almacenamiento no volátil (el sistema de archivos de la memoria flash interna de la micro:bit) y cargarlos en el arranque. MicroPython ofrece acceso de bajo nivel mediante compass.get_field_strength() y métodos de configuración de la calibración para asignar los valores de desfase directamente, saltándose por completo la secuencia de inclinación.

Protocolo práctico para el aula

Para que una clase de robótica o programación se desarrolle con fluidez sin perder diez minutos inclinando placas:

  • Mantén las placas alejadas de las estructuras de los pupitres: Mantén una distancia de al menos 15 a 20 cm entre la micro:bit y cualquier pata estructural de acero, soporte de mesa o base de monitor.
  • No calibres en plano sobre la mesa: Si se calibra una micro:bit mientras está apoyada sobre una mesa de acero, se calibrará respecto a la anomalía magnética de esa mesa. En el momento en que el alumno la levante para caminar por el aula, el rumbo será erróneo. Calibra siempre a la altura de la cintura o del pecho en el aire.
  • Valora si necesitas el norte absoluto: En el 80 % de los retos iniciales de aula —como el seguimiento de líneas, la evasión de obstáculos o los juegos controlados por inclinación— el magnetómetro no es el sensor adecuado. Utiliza en su lugar la unidad de medición inercial (acelerómetro).

Para acceder a módulos de robótica estructurados, diseños de hardware de referencia y kits didácticos configurados para las condiciones del aula sudafricana, consulta las guías pedagógicas en Sheen Canvas o revisa nuestros talleres de desarrollo profesional en Sheen Academy.

#microbit#magnetómetro#makecode#micropython#docencia en robótica

Más de Ideas y reflexiones