Как сделать браслет-шагомер на основе датчика BMI160

Мы купили 6-осевой инерционный датчик движения BMI160 после чего решили сделать на основе него и Ардуино Beetle браслет-шагомер.

Урок будет интересен тем, кто любит ходить и бегать. Как правило в эти моменты можно остаться наедине с собой и в голову приходят удивительные идеи. После очередной прогулки и покупки 6-осевого инерционного датчика движения от DFRobot пришла в голову  идея сделать шагомер на запястье.

Комплектующие

Ниже перечислим детали, которые используемые в этом проекте.

Аппаратные компоненты

  • I2C BMI160 6-осевой инерциальный датчик движения от DFRobot × 1
  • Beetle от DFRobot - самый маленький Arduino × 1
  • I2C OLED-2864 дисплей от DFRobot x 1
  • 3.7В мини-литиевая батарея × 1
  • Кнопка × 2
  • Переключатель × 1
  • Ремешок для часов × 1

BMI160 6-осевой инерционный датчик движения объединяет 16-разрядный 3-осевой акселерометр с 3-осевым гироскопом с малой мощностью. Когда акселерометр и гироскоп находятся в полном режиме работы, потребляемая мощность обычно составляет около 900 мкА.

Корпус

Распечатайте корпус. За пример можно взять классические часы от Casio. Дисплей выполнен как очень простой и элегантный. Минуты и часы занимают большую часть экрана, что удобно для распознавания времени. Имеют вес 40 г и оцениваются примерно в 15 долларов США.

После печати корпуса, вы можете распылить черную краску на все части, чтобы сделать корпус более гладким и монотонным.

Также дома мы нашли акриловый материал, чей цвет очень похож на цвет OLED. Поэтому мы решили разрезать его и использовать в качестве стекла.

Схема соединения

Схемы соединения по сути нет. OLED и BMI160 имеют интерфейс I2C, поэтому вам просто нужно припаять их к соответствующему интерфейсу I2C Beetle.

Код проекта

Мы пересмотрели программу шагомера в библиотеке BMI160. Добавьте функцию millis(), чтобы преобразовать время безотказной работы системы в секундомер.

Добавьте код отображения библиотеки символов u8g. Попробовав шрифт в файле заголовка u8g.h один за другим, мы обнаружили, что шрифт freedoomr отлично подходит.

Код преобразования времени безотказной работы системы в секундомер ниже:

unsigned int ss=1000;
unsigned int mi=ss*60;
long minute=t0/mi;
long second=(t0-minute*mi)/ss;
long milliSecond=sysTime-minute*mi-second*ss;
strTime[0]=(minute%60)/10+'0';
strTime[1]=minute%60%10+'0';
strTime[3]=(second%60)/10+'0';
strTime[4]=second%60%10+'0';
strTime[6]=milliSecond/100+'0';
strTime[7]=(milliSecond%100)/10+'0';

Пайка и сборка

Я думаю, что этот шаг является самым сложным, потому что после того, как мы разработали распределение пространства и аккуратно установили детали, мы включили часы и просто обнаружили, что ничего не работает. Один или два провода были отрезаны случайно во время установки. Но благодаря терпению мы всё установили как нужно.

Используйте электрический шлифовальный станок для сверления отверстия 1 мм на обоих концах корпуса, установите все детали вместе, и на этом весь проект завершен.

Результат

Вы можете заметить, что есть две кнопки на левой стороне, нижняя - для секундомера, а как насчет верхней?

Для ночных прогулок!

Верхняя кнопка используется для управления четырьмя 5-миллиметровыми светодиодами (мы заполнили трещину между отверстием и переключателем с помощью клея uv в соответствующем цвете, чтобы сделать браслет более изысканным).

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

Этот шагомер для запястья не только помогает рассчитать физическую силу, но и делает прогулки более безопасными ночью.

На этом мы заканчиваем создание браслета шагомера на основе модуля BMI160.

Ардуино+