Por que Razão o Seu micro:bit Pede Para Calibrar a Bússola em Todas as Aulas

O micro:bit força o seu minijogo de calibração porque os desvios do magnetómetro desaparecem ao desligar a alimentação, enquanto as secretárias escolares com estrutura de aço distorcem de imediato o campo magnético local. Eis como resolver o problema no MakeCode e no MicroPython.
O micro:bit exige a calibração no início da aula por duas razões combinadas: os dados de calibração do magnetómetro são armazenados apenas na memória volátil (RAM), que é apagada no instante em que a placa é desligada, e o ambiente de execução interrompe automaticamente o programa para executar a rotina de calibração na primeira vez que o código solicita uma orientação a partir de um sensor não calibrado. No ambiente escolar, este problema é agravado pelo mobiliário da sala de aula: as secretárias escolares normais com estrutura de aço e o equipamento informático adjacente distorcem o campo geomagnético local, garantindo que qualquer leitura não calibrada seja extremamente imprecisa.
Porque É que as Secretárias Escolares Afetam as Leituras do Magnetómetro
O micro:bit utiliza um chip combinado de acelerómetro e magnetómetro (como o LSM303 ou o FXOS8700 nas placas v1, ou o LSM303AGR na v2). Um magnetómetro mede a intensidade e a direção dos campos magnéticos ao longo de três eixos ortogonais. Num campo de jogos aberto, o principal campo medido é o campo geomagnético da Terra (cerca de 30 a 60 microteslas).
Numa sala de aula sul-africana comum, no entanto, os alunos sentam-se em secretárias construídas em aço tubular macio, muitas vezes diretamente sobre lajes de betão armado que contêm varões de aço. Computadores portáteis próximos, transformadores de monitores e carrinhos de carregamento criam campos eletromagnéticos ativos. Estes produzem dois tipos de distorção magnética:
- Distorção por ferros duros (hard iron): Ímanes permanentes ou objetos de aço magnetizados nas proximidades produzem um desvio constante que afasta todo o círculo magnético da origem (0, 0, 0).
- Distorção por ferros macios (soft iron): Materiais ferromagnéticos (como a estrutura de aço macio da secretária) deformam e comprimem as linhas do campo magnético da Terra, transformando o que deveria ser um traçado de medição esférico num elipsoide assimétrico.
Quando o micro:bit arranca de novo, a sua matriz interna de calibração está vazia. Assim que uma linha de código solicita compass heading ou compass.heading(), o ambiente de execução do micro:bit verifica se existe uma matriz de calibração válida. Não encontrando nenhuma, suspende o script e inicia a rotina obrigatória de inclinação (desenhar um círculo ou preencher a matriz de 5x5 LEDs) para calcular as compensações de desvio para ferros duros e macios.
O Problema dos Ciclos de Alimentação na Sala de Aula
Como o ambiente de execução padrão guarda os dados de calibração apenas na memória RAM, sempre que um aluno desliga o micro:bit de uma porta USB ou desliga o suporte de pilhas, os desvios desaparecem. Se a sua aula envolver 30 alunos a editar código repetidamente, a transferi-lo via USB e a executá-lo, a placa reinicia a cada transferência de código. Isso desencadeia até trinta sequências de calibração por aluno num único período de 45 minutos.
Pior ainda: se um aluno concluir a calibração movimentando o micro:bit no ar à altura do peito e, em seguida, pousar a placa a 5 centímetros de uma barra de suporte de aço da secretária, o campo magnético altera-se drasticamente. O micro:bit não reconhece automaticamente que a linha de base mudou, a menos que o ambiente de execução detete um vetor de campo completamente inválido, resultando em orientações imprecisas ou ponteiros de bússola erráticos.
Contornar e Controlar a Calibração no MakeCode
No Microsoft MakeCode, o bloco compass heading (°) contém uma verificação integrada: se o magnetómetro não estiver calibrado, invoca automaticamente input.calibrateCompass(). Tem três formas de gerir este comportamento dependendo dos objetivos da sua aula.
1. Se o rumo absoluto NÃO for necessário: utilize o acelerómetro
Se estiver a ensinar entradas básicas, controlos por inclinação ou direção simples (por exemplo, guiar um robô móvel para a esquerda ou direita), é quase certo que não precisa do magnetómetro. Os professores utilizam frequentemente o compass heading quando pretendem, na verdade, inclinação ou rotação. A utilização de rotation (pitch/roll) ou acceleration evita totalmente o subsistema da bússola e nunca ativa o ecrã de calibração.
2. Calibrar uma única vez de forma explícita no bloco `on start`
Se o seu projeto exigir genuinamente uma bússola (como em orientação ou navegação), execute a calibração explicitamente dentro do bloco on start em vez de permitir que seja acionada inesperadamente a meio do ciclo:
input.calibrateCompass()Instrua os alunos a levantarem-se, a segurarem o micro:bit afastado do corpo e a concluírem a rotina de inclinação no ar antes de se sentarem. Isto impede que o jogo de calibração interrompa o ciclo lógico principal durante os testes.
Gerir a Calibração no MicroPython
No MicroPython, tem um controlo muito mais granular sobre o ciclo de vida do sensor. Pode verificar o estado da calibração, calibrar de forma não interativa ou até injetar valores de desvio codificados diretamente.
Evitar o ecrã de calibração bloqueante
Por predefinição, chamar compass.heading() no MicroPython iniciará a rotina de calibração se compass.is_calibrated() devolver False. Pode precaver-se contra bloqueios inesperados verificando o estado explicitamente:
import compass
if not compass.is_calibrated():
compass.calibrate()
while True:
heading = compass.heading()
# Lógica do projeto aquiFornecer manualmente os dados de calibração
Se os seus alunos estiverem a trabalhar numa configuração fixa de laboratório e quiser eliminar completamente o jogo de inclinação durante a programação iterativa, pode determinar os desvios de base uma única vez, gravá-los no armazenamento não volátil (o sistema de ficheiros flash interno do micro:bit) e carregá-los no arranque. O MicroPython oferece acesso de baixo nível através de compass.get_field_strength() e de métodos de configuração de calibração para definir os valores de desvio diretamente, ignorando por completo a sequência de inclinação.
Protocolo Prático para a Sala de Aula
Para manter uma aula de robótica ou programação a decorrer sem percalços e sem perder dez minutos a inclinar placas:
- Mantenha as placas afastadas das estruturas das secretárias: Mantenha pelo menos 15 a 20 cm de distância entre o micro:bit e quaisquer pernas estruturais de aço, suportes de secretária ou bases de monitores.
- Não calibre com a placa assente na mesa: Se um micro:bit for calibrado pousado numa secretária de aço, fica calibrado em função da anomalia magnética da secretária. No momento em que o aluno o levantar para andar pela sala, a orientação estará errada. Calibre sempre à altura da cintura ou do peito, no ar.
- Avalie se precisa realmente do Norte absoluto: Em 80% dos desafios introdutórios em sala de aula — como seguimento de linhas, desvio de obstáculos ou jogos controlados por inclinação —, o magnetómetro é o sensor errado. Utilize antes a unidade de medição inercial (acelerómetro).
Para módulos estruturados de robótica, esquemas de referência de hardware e kits de aulas configurados para as condições das salas de aula sul-africanas, explore os guias de ensino no Sheen Canvas ou consulte os nossos workshops de desenvolvimento profissional na Sheen Academy.



