Логотип 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#обучение робототехнике

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

Почему уровень pH в школьной гидропонике растет каждый день (и как это исправить)
Идеи и опыт· 27 сент. 2026 г.

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

Ежедневный рост pH в школьной гидропонике вызван поглощением нитратов растениями и дегазацией растворенного углекислого газа из водопроводной воды. Постоянное добавление кислоты только усугубляет ситуацию.

Читать далее →
Можно ли подключить датчик I2C к Arduino на расстоянии 5 метров в школьном саду?
Идеи и опыт· 26 сент. 2026 г.

Можно ли подключить датчик I2C к Arduino на расстоянии 5 метров в школьном саду?

С ходу и без доработок — не будет. Интерфейс I2C создавался для печатных плат сантиметрового масштаба, но 5-метровую линию в саду можно запустить, подобрав подтягивающие резисторы, снизив частоту или перейдя на RS485.

Читать далее →
Могут ли школы использовать сухие гидропонные удобрения? Как разводить порошок без засорения трубок
Идеи и опыт· 25 сент. 2026 г.

Могут ли школы использовать сухие гидропонные удобрения? Как разводить порошок без засорения трубок

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

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