Логотип sheen.bot

← Идеи и опыт

Почему micro:bit требует калибровать компас на каждом уроке

28 сент. 2026 г.·Sheen Robotics
Почему micro:bit требует калибровать компас на каждом уроке

micro:bit запускает мини-игру калибровки из-за того, что смещения магнитометра стираются при отключении питания, а школьные парты со стальным каркасом искажают магнитное поле. Рассказываем, как решить эту проблему в MakeCode и MicroPython.

micro:bit требует калибровки в начале урока по двум взаимосвязанным причинам: данные калибровки магнитометра хранятся только в энергозависимой памяти (ОЗУ), которая очищается в момент отключения платы от питания, а среда выполнения автоматически приостанавливает работу программы для запуска процедуры калибровки при первом же запросе направления от некалиброванного датчика. В школьных условиях ситуация усугубляется мебелью: стандартные парты на стальном каркасе и расположенная рядом компьютерная техника искажают местное геомагнитное поле, из-за чего любые некалиброванные показания оказываются совершенно неточными.

Почему школьные парты искажают показания магнитометра

В micro:bit используется комбинированный чип акселерометра и магнитометра (например, LSM303 или FXOS8700 на платах v1 либо LSM303AGR на v2). Магнитометр измеряет силу и направление магнитных полей по трем ортогональным осям. На открытом спортивном поле основным измеряемым полем является геомагнитное поле Земли (примерно от 30 до 60 микротесла).

Однако в стандартном южноафриканском классе ученики сидят за партами из мягкой трубчатой стали, часто прямо над железобетонными перекрытиями со стальной арматурой. Находящиеся рядом ноутбуки, блоки питания мониторов и зарядные тележки создают активные электромагнитные поля. Все это вызывает два типа магнитных искажений:

  • Искажения от твердого железа (Hard iron distortion): постоянные магниты или намагниченные стальные предметы поблизости создают постоянное смещение, сдвигающее всю магнитную окружность относительно начала координат (0, 0, 0).
  • Искажения от мягкого железа (Soft iron distortion): ферромагнитные материалы (например, каркас парты из мягкой стали) искривляют и сжимают силовые линии магнитного поля Земли, превращая то, что должно быть сферическим графиком измерений, в асимметричный эллипсоид.

При включении micro:bit его внутренняя матрица калибровки пуста. Как только строка кода запрашивает compass heading или compass.heading(), среда выполнения micro:bit проверяет наличие корректной матрицы калибровки. Не обнаружив ее, она приостанавливает выполнение программы и запускает обязательную процедуру наклонов (рисование круга или заполнение матрицы светодиодов 5x5) для расчета компенсационных смещений жесткого и мягкого железа.

Проблема перезапуска питания в классе

Поскольку стандартная среда выполнения хранит данные калибровки только в оперативной памяти, каждый раз, когда ученик отключает micro:bit от USB-порта или переключает батарейный блок, значения смещения исчезают. Если на уроке 30 учеников постоянно редактируют код, прошивают его по USB и запускают, плата перезагружается при каждой прошивке. Это может вызвать до тридцати процедур калибровки на одного ученика за один 45-минутный урок.

Что еще хуже: если ученик выполняет калибровку, вращая micro:bit в воздухе на уровне груди, а затем кладет плату обратно в 5 сантиметрах от стальной опоры парты, магнитное поле резко меняется. micro:bit не способен автоматически понять, что базовая линия сместилась (если только среда выполнения не зафиксирует заведомо недопустимый вектор поля), что приводит к неточным азимутам или хаотичному поведению стрелки компаса.

Обход и контроль калибровки в MakeCode

В Microsoft MakeCode блок compass heading (°) содержит встроенную проверку: если магнитометр не откалиброван, автоматически вызывается input.calibrateCompass(). В зависимости от целей урока у вас есть три способа управлять этим поведением.

1. Если абсолютный азимут НЕ требуется: используйте акселерометр

Если вы объясняете базовые принципы ввода, управление наклоном или простое определение направления (например, поворот робота-тележки влево или вправо), магнитометр вам почти наверняка не нужен. Преподаватели часто используют compass heading, когда на самом деле им нужен наклон или рыскание. Использование rotation (pitch/roll) или acceleration полностью исключает обращение к подсистеме компаса и никогда не вызывает экран калибровки.

2. Выполняйте калибровку один раз явно в блоке `on start`

Если в вашем проекте действительно необходим компас (например, для ориентирования или навигации), вызовите калибровку явно внутри блока on start, а не позволяйте ей неожиданно запускаться посреди основного цикла:

input.calibrateCompass()

Попросите учеников встать, держать micro:bit на расстоянии от тела и выполнить процедуру наклонов в воздухе, прежде чем сесть на место. Это предотвратит прерывание основного цикла программы мини-игрой калибровки во время тестирования.

Управление калибровкой в MicroPython

В MicroPython вы получаете гораздо более детальный контроль над жизненным циклом датчика. Вы можете проверять статус калибровки, выполнять ее в неинтерактивном режиме или даже задавать жестко закодированные смещения.

Предотвращение блокирующего экрана калибровки

По умолчанию вызов compass.heading() в MicroPython запускает процедуру калибровки, если compass.is_calibrated() возвращает False. Вы можете защититься от неожиданной блокировки, явно проверив статус:

import compass

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

while True:
    heading = compass.heading()
    # Логика проекта

Ручная передача данных калибровки

Если ученики работают в стационарном компьютерном классе и вы хотите полностью исключить игру с наклонами в процессе отладки кода, можно один раз определить базовые смещения, записать их в энергонезависимую память (внутреннюю файловую систему flash-памяти micro:bit) и загружать при старте. MicroPython предоставляет низкоуровневый доступ через compass.get_field_strength() и методы настройки калибровки, позволяя задавать значения смещения напрямую и полностью пропускать процедуру наклонов.

Практический регламент для занятий в классе

Чтобы занятия по робототехнике или программированию проходили слаженно и не тратилось по десять минут на вращение плат:

  • Держите платы подальше от металлических элементов стола: сохраняйте расстояние не менее 15–20 см между micro:bit и любыми стальными ножками, креплениями парт или подставками мониторов.
  • Не калибруйте плату лежащей на столе: если откалибровать micro:bit прямо на металлической парте, он подстроится под магнитную аномалию стола. Как только ученик возьмет его в руки, чтобы пройтись, показания компаса станут неверными. Всегда калибруйте плату в воздухе на уровне пояса или груди.
  • Оцените, действительно ли вам нужен абсолютный север: в 80% вводных учебных задач — таких как движение по линии, объезд препятствий или игры с управлением наклоном — магнитометр попросту не нужен. Используйте вместо него инерциальный измерительный блок (акселерометр).

Структурированные модули по робототехнике, справочные схемы аппаратного обеспечения и учебные комплекты, адаптированные для южноафриканских школ, вы найдете в методических руководствах на Sheen Canvas или на курсах повышения квалификации на Sheen Academy.

#microbit#магнитометр#makecode#micropython#обучение робототехнике

Больше в категории «Идеи и опыт»

Scratch или Microsoft MakeCode: с чего начать начальным школам Южной Африки?
Идеи и опыт· 13 нояб. 2026 г.

Scratch или Microsoft MakeCode: с чего начать начальным школам Южной Африки?

Начальным школам Южной Африки стоит начинать с Microsoft MakeCode, если они планируют преподавать предмет «Программирование и робототехника» по программе CAPS с использованием физических устройств, тогда как Scratch остается лучшим выбором для создания чисто экранных цифровых историй.

Читать далее →
Почему адресные светодиоды краснеют на конце ленты (и как это исправить)
Идеи и опыт· 12 нояб. 2026 г.

Почему адресные светодиоды краснеют на конце ленты (и как это исправить)

Адресные светодиодные ленты краснеют на дальнем конце из-за падения напряжения на тонких медных дорожках ниже уровня, необходимого для работы синих и зеленых диодов.

Читать далее →
Почему гидропонные насосы в школьных классах сгорают за одну четверть (и как это исправить)
Идеи и опыт· 11 нояб. 2026 г.

Почему гидропонные насосы в школьных классах сгорают за одну четверть (и как это исправить)

Погружные гидропонные насосы выходят из строя по двум предотвратимым причинам: работа всухую во время бесконтрольных выходных и заклинивание магнитной крыльчатки из-за минеральных отложений. Рассказываем, как продлить им жизнь.

Читать далее →