Как стать автором
Обновить

Индикатор угла наклона балансировочной доски Бильгоу v2.0

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров1.6K

Получив обратную связь от родителей детей дошкольного возраста, доработал индикатор угла наклона балансборда. Реализованы следующие функции:

  1. Приветственная анимация при включении

  2. Автономная работа от аккумуляторов

  3. Спящий режим

  4. Два режима динамической индикации

  5. Жесткая фиксация MPU-6050 на горячий клей

Большинство отзывов о первом варианте исполнения индикатора были связаны с питанием. Родители детей в возрасте 2...5 лет переживают, что провод питания будет мешать ребенку, опасен, быстро сломается: «ребенок его просто вырвет». Поэтому первой задачей было перевести систему на автономное питание. Что и было сделано.

Модернизированная система питается от 4 аккумуляторов АА, суммарное напряжение 5,4 В. Для того, чтобы центр масс располагался посередине, аккумуляторы разнесены на обе стороны корпуса по 2 шт. MPU питается от выхода 3,3 В Arduino.

Вид корпуса сверху а) - левая часть; б) - правая часть
Вид корпуса сверху а) - левая часть; б) - правая часть

Для экономии заряда аккумуляторов реализован энергосберегающий режим. При отсутствии движения (точность 0.1 рад) в течение 20 секунд, контроллер отключает ленту, MPU и переходит в глубокий спящий режим. В этом режиме работает только сторожевой таймер (watchdog timer) и внешние прерывания. Выход из спящего режима происходит как раз по внешнему прерыванию с кнопки D3.

При выходе из спящего режима происходит приветственная анимация. Она же демонстрируется и при первом включении системы. На анимации светодиоды загораются последовательно начиная с двух зеленых в центре и заканчивая всей лентой с красным цветом по краям.

Режим индикации №2, доска максимально наклонена в правую сторону
Режим индикации №2, доска максимально наклонена в правую сторону

Упомянутая кнопка используется не только для того, чтобы разбудить контроллер. В обычном режиме работы она используется для переключения видов отображения угла наклона. Таких режимов два: первый – перемещение группы шести светодиодов вдоль ленты с динамическим изменением цвета от зеленого в положении равновесия до красного в крайних положениях отклонения. Второй – включение светодиодов от центра к тому краю доски, в сторону которого происходит отклонение. Во втором режиме цвет включенных светодиодов также меняется по градиенту от зеленого в центре до красного по краям. При выходе из спящего режима всегда включается только первый режим.

Отслеживание режима бездействия реализовано следующим образом:

void checkActivity(float currentPitch) {
  // Проверяем изменение угла наклона
  if (abs(currentPitch - lastPitchValue) > MOTION_THRESHOLD) {
    lastPitchValue = currentPitch;
    lastActivityTime = millis();  // Обновляем время последней активности
  }

  // Проверяем таймаут бездействия
  if (!powerSaveMode && (millis() - lastActivityTime > INACTIVITY_TIMEOUT)) {
    enterPowerSaveMode();
  }
}

Для стабильной работы системы датчик MPU-6050 жестко зафиксирован в корпусе с помощью двух винтов М3 и горячего клея.

Датчик MPU-6050 жёстко зафиксирован горячим клеем
Датчик MPU-6050 жёстко зафиксирован горячим клеем

По моей субъективной оценке, для детей постарше (4+ года) лучше подойдёт вариант с питанием от сети (или пауэрбанка). В этом возрасте дети уже более осознаны и могут заниматься на тренажере аккуратно. При этом не нужно заморачиваться с частой сменой аккумуляторов. Всё-таки светодиодная лента потребляет на 5В ток до 2А. В системе, работающей на аккумуляторах, сделал яркость 25%. При ёмкости аккумуляторной батареи из 4*АА, равной 2100 мАч, одного заряда хватает на 4 часа активной работы (без учета спящего режима).

Для доски с питанием от сети режим энергосбережения реализован простым отключением светодиодной ленты при отсутствии движения. Фактически это не спящий режим, просто отключение ленты. Задача максимально экономить энергию, потребляемую из сети, в этом случае не является актуальной. Зато можно эффектно реализовать выход из режима энергосбережения – включать ленту при наличии движения. Такой вариант тоже реализован и подробно описан на видео.

Видео работы системы

Теги:
Хабы:
0
Комментарии6

Публикации

Ближайшие события