Logótipo sheen.bot

← Perspetivas

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

28/09/2026·Sheen Robotics
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 aqui

Fornecer 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.

#microbit#magnetómetro#makecode#micropython#ensino de robótica

Mais Perspetivas