Делаем шагомер на основе bmi160 и arduino beetle

Послойное вскрытие BMI160 (акселерометр + гироскоп)

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

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

Собираю такую установку:

Это USB веб-камера превращенная в так называемый электронный микроскоп (по версии алиэкспресса). Там можно фокусное расстояние настраивать.

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

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

Всего в чипе два сенсора, МЭМС гироскоп и акселерометр. Возможно мы их видим в начале распила как два прямоугольника. А может и нет.

Самое интересное на 50 секунде, где схема оголяется.

В конце видны пины чипа, но только с обратной стороны 🙂

Выводов не будет, просто стало интересно что из этого выйдет.

Найдены возможные дубликаты

Технопорно. Спасибо тебе, мил человек!

Загугли на ютубе как вскрывают чипы лазером. Вот там порно. Например https://www.youtube.com/watch?v=Z11WDFFxSO0

Да, я видел именно это видео. Но здесь пикабушник заморочился, своими руками делал и не поленился выложить. Уважуха таким людям!

У меня скорее хоум видео. Спасибо за ссыль

На 50 секунде не схема оголяется. Схему ты раньше срезал. А то, что ты видишь на 50 секунде это всего навсего подложка с дорожками которые идут от самой схемы к выводам.

Два больших прямоугольника и была схема?

Скажите, не сравнивали с MPU9250? Какой лучше? Чем руководствовались при выборе бошовского датчика?

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

Сейчас мне идет новый сенсор со вшитым микроконтроллером (BNO055)

Спасибо за ответ.

И не могли бы посоветовать литературу для чайников по цифровой фильтрации?

Вы про обработку сигнала и подавление шумов?

Да. С общим принципом знаком, но нехватает для реализации, а часть книг с очень глубокой математикой.

Тут без вариантов. Либо дергать готовые библиотеки (и работать как с черным ящиком), либо с математикой.

Я бы привел аналогию с английским языком. Либо долго ждешь перевода, либо изучаешь язык (в данном случае математики) и наслаждаешься прямо сейчас.

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

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

Да и в целом когда сталкиваешься с чем-то в алгоритме, то открывал учебники универские, посвященные данной тематики, гуглил запрос – ‘*нужный термин* простыми словами’.

Через это происходит понимание у меня. Так что тут комбо скорее, чем один источник.

Я думал, ты починишь, а ты доломал 🙁

Такое уже не починить 🙁

А что за шприц с намотанным проводом? А то я столько вариантов себе напридумывал, но все бредовые.

обычный, в аптеке взял, попросил самого большого объема

Это-то ежу понятно. Я про цель обмотки?

Провод не хотел укорачивать

О сообществе

Arduino – одна из самых распространенных платформ для обучения программированию и создания прототипов электронных устройств.

Raspberry Pi – это миниатюрный компьютер «на ладони». Его размеры – всего лишь с кредитную карту, при этом возможности его применения ограничены практически только фантазией пользователя.

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

У нас всегда приветствуется активное участие в жизни сообщества и помощь соратникам 😉

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

Как сделать браслет-шагомер на основе датчика 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 отлично подходит.

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

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

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

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

Результат

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

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

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

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

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

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

Как самостоятельно сделать наручные смарт часы с шагомером на Ардуино

Последние несколько дней я был одержим идеей создания собственных наручных смарт часов на базе деталей Ардуино, чтобы я мог сказать, что сделал их своими руками. В интернете я нашел плату с датчиками (известную как GY-87), на которой располагается три датчика: HMC5883L (компас), BMP085 (давление, высота, температура) и MPU6050 (акселерометр и гироскоп). Через интерфейс I2C эту плату можно соединить с Ардуино Про Мини и дисплеем I2C Oled, таким образом на часах можно отобразить всю доступную датчикам информацию, а также сделать свой собственный шагомер (анализируя данные с акселерометра).

Звучит очень интересно, при этом сборка достаточно проста и для осуществления понадобятся дешевые детали, небольшое знание Autodesk EAGLE и кое-какие навыки в создании самодельных печатных плат. Также нам понадобятся дешевые часы, которые мы разберём и будем использовать в качестве основы.

Перед началом работ я хотел бы, чтобы вы обратили внимание на приложенные картинки. На них вы увидите мои предыдущие сборки часов и поймёте, что от вас потребуется, и что вы можете улучшить.

Шаг 1: Предыдущие сборки

До написания статьи я собрал две версии наручных часов с шагомером. В первой я постарался совместить компас и bluetooth. Мне это удалось, часы были небольшими, но слишком толстыми. Эти часы вы увидите на первых трёх фотографиях. Часы при помощи bluetooth взаимодействовали с моим смартфоном на Windows, автоматически сверяли дату и время, также они узнавали следующее событие в моём календаре и отображали его. Еще они отправляли текущее направление по компасу, а смартфон отображал его. Да, я написал своё приложение для Windows Phone. Оно до сих пор лежит на компьютере, поэтому я приложу его к статье.
Тем не менее, у проекта были и свои недостатки:

  1. Блютус кушал много энергии и часы разряжались буквально за час.
  2. В использовании блютус не было каких-то особых преимуществ, ведь дату и время можно настроить при помощи кнопок, а если батареи бы хватало на день, то часы можно было бы заряжать перед тем, как они отключатся, и тогда не пришлось бы вбивать дату и время заново.
  3. Штука с календарём была отличная, но бесполезная, ведь события календаря можно посмотреть и на телефоне, а на часах был ограниченный запас памяти, и в них нельзя было загрузить все события.
  4. Также, каждое внесение изменений в календарь требовало новой синхронизации.
  5. Отправка данных с компаса на телефон была также классной, но бесполезной штукой, ведь показания компаса можно было посмотреть просто на часах.
  6. На каждой кнопке часов было по резистору, что оказалось также бесполезным, потому что позже я обнаружил, что на каждом цифровом входе Ардуино уже есть резисторы, которые нужно просто включить.

Таким образом, я решил собрать другую сборку с блютус, но такую, чтобы девайс можно было включить и выключить. Так вышло, что включениевыключение приводило к сбросу Ардуино. Я понял, что мне не нужен блютус и сделал вторую версию с MPU9150 (компас, акселерометр и гироскоп). Эта версия на следующих 13 фотографиях. Часы были намного лучше первых, с двумя кнопками (на них всё еще вешалось по резистору), бОльшие по размеру, но более тонкие. Батарейка была меньше, я поместил всё в каркас от часов, получилось нечто в стиле стимпанк, но это были не те часы, которые я бы одел на улицу. Батареи хватало на 14 часов, и это было очень хорошим показателем. Эта версия также не была лишена недостатков:

  1. Для сохранения энергии я мог бы отпаять два светодиода: один на Ардуино, второй на MPU9150.
  2. Опять же, не было нужды в резисторах
  3. Не обязательно было делать две кнопки, ведь с помощью софта я мог повесть на одну кнопку обе функции.
  4. Они были слишком толстыми.
  5. Каркас не был красивым и был слишком большим.
  6. Зарядка осуществлялась через двупиновый коннектор на боку и, если бы в один момент я затупил и неправильно подключил зарядник, то сжег бы часы. Нужна была «системы защиты от дурака».
  7. Я склеил всё силиконовым клеем, затем я обнаружил, что этот клей окисляет медь и олово, проводя ток — это была проблема.

Третья версия была первой, которую я мог одевать на улицу, и она описана в этой инструкции: вы увидите её на последних 4 картинках. Батарейки с легкостью хватает на 24 часа (максимально на 26) и я убрал один светодиод с платы GY-87. Второй светодиод я просто забыл снять, но итоговый результат мне понравился. Тем не менее, есть кое-что, что можно улучшить в следующих версиях:

  1. Я просверлил отверстия для кнопки и для зарядки слишком далеко друг от друга
  2. Я мог бы разместить детали более продуманно, сохранив больше свободного пространства
  3. Я мог бы спроектировать плату в Eagle также более продуманно, избежав коротких замыканий.
  4. Шагомер можно запрограммировать лучшим способом.

Следующим шагом является сборка компонентов.

Шаг 2: Список необходимых деталей

Список деталей с ссылками на Ebay:

  1. Датчик 10DOF (HMC5883L, MPU6050 и BMP180) (Ebay);
  2. Arduino Pro Mini 3.3V (или совместимая плата) (Ebay);
  3. Батарейка от сотового (3.7 — 4V);
  4. Дисплей I2C Oled (синего цвета) (Ebay);
  5. Медная печатная плата(Ebay);
  6. Хлорид железа (Ebay);
  7. Разъём питания типа «мама» 2.5*0.7 мм (Ebay);
  8. Выключатель (боковая кнопка) (Ebay);
  9. Старые или дешевые часы, которые не жалко разобрать (желательно достаточно большого размера);
  10. Припой, паяльник и т.д.;
  11. Зарядник для батарейки, который, конечно же. будет находиться в не часов (Ebay).

Шаг 3: Плата Eagle и соединение частей проекта

Я приложил zip-файл с моим дизайном платы, но я предупреждаю вас, что в дизайне есть ошибки, ведь я одновременно учился работать в программе и сразу же создавал дизайн. В следующий раз я планирую создать более продуманную версию. Тем не менее, очень просто понять каким образом части часов соединяются вместе. Сборка происходит по следующей схеме:

  1. Микроконтроллер Ардуино
    • PIN 2 — вывод кнопки;
    • VCC — VCC от зарядного коннектора, VCC дисплея и датчика;
    • GND — GND зарядника, ввод кнопки и датчиков / GND дисплея;
    • A5 PIN — пин I2C SCL дисплея и датчтика;
    • A4 PIN — пин I2C SDA дисплея и датчика;
  2. Кнопка:
    • Один пин на GND;
    • Другой пин на вход цифрового пина 2 Ардуино;
  3. Дисплей:
    • пин VCC;
    • пин GND;
    • пин SC на пин A5 Ардуино;
    • пин SDA на пин A4 Ардуино;
  4. GY-87 (плата датчиков):
    • пин VCC на пин VCC Ардуино;
    • пин GND;
    • пин SCL на пин A5 Ардуино;
    • пин SDA на пин A4 Ардуино;
    • остальные пины оставьте неподключенными! Это касается 3.3V VCC, который не будет использоваться!

Также вы можете решить, оставить или отпаять диоды (один на Ардуино, рядом с кнопкой ресет, а второй на плате датчиков). Оба диода бесполезны и постоянно потребляют около 1.5mA каждый. Теперь из медной платы и хлорида железа вам нужно соорудить свою печатную плату. Я не буду вдаваться в подробности о том, как это делается, ведь в интернете есть много статей об этом. Для лучшего результата я использовал лазерный принтер.

Шаг 4: Код

Как упоминалось ранее, я создал три версии часов. При этом вторая и третья версии очень схожи, поэтому я приложил код для первой и последней версии часов. Первая версия поддерживает синхронизацию по bluetooth со смартфоном на Windows и содержит календарь. Также я приложил код приложения для Windows Phone.
Я использовал следующие библиотеки:

  • Wire.h;
  • I2Cdev.h (включена в эту статью);
  • MPU6050.h включаена в I2Cdev;
  • Ug8lib.h (включена в эту статью);
  • Time.h (включена в эту статью);
  • HMC5883L.h (включена в эту статью);
  • Adafruit BMP085.h (включена в эту статью);

Старая версия часов дополнительно использует эту библиотеку:

Шаг 5: Шагомер

Обычно шагомеры считают показатели по пульсации акселерометров по оси Z, ведь датчик располагается на поясе. Так как часы находятся на запястье, то будет неправильным учитывать лишь показания оси Z, ведь запястье движется в разных направлениях. Тем не менее, при ходьбе или беге рука движется вперёд и назад. Поэтому изначально я подумал, что сумма значений S = |X|+|Y|+|Z| будет увеличиваться и уменьшаться при каждом шаге. Высчитывая изменяющееся среднее значение из последних N для S (Av = SUM(S)n/N) и сравнивая их с S на текущий момент, я могу сказать следующее: если Sn-1Av то нужно добавить единицу к счётчику шагомера (картинка 1).

Конечно же, если вы прыгаете или двигаете рукой, то счётчик тоже увеличится (ложное считывание). Поэтому я добавил для Av минимальный предел, такой как на картинке, он будет 22000. Показатель ниже этого значения означает, что вы двигаете рукой, но не идёте. Более высокие значения, такие как 30000 означают, что вы бежите (легко заметить это на картинке).

После кое-каких испытаний я обнаружил, что болтание рукой имеет сумму ускорений близкую к ходьбе, поэтому я решил найти способ, как отличить одно от другого. Я сделал это таким способом:
S = |X|+|Y|+|Z| для данного момента;
SM = максимальное для S значение за последние N моментов;
AVM = изменяющееся среднее значени SM для M взаимодействий;

AVM не делаете ничего полезного;
AVM > 37000 и идёте;
AVM >= 50000 => бежите;

Экселевский файлик со всеми моими испытаниями я прикрепил к этому шагу.

Шаг 6: Заключение

Я надеюсь, что вам понравился этот проект! Я собираюсь сделать улучшенный и окончательный вариант этих часов, представляющих собой подобие фитнес-браслета, в ближайшем будущем, усовершенствовав печатную плату и код, особенно его часть, различающую ходьбубег и вождение машины (эта часть расчетов оказалась сложной).

Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.

Arduino.ru

Подсчет калорий или Шагомер на базе акселерометра MPU6050

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

Вот пришел тут Акселерометр MPU6050

Скачал код, подключил. Работает. Выдает какие-то странные цифры в сериальный порт (углы). Уже Очищенные.

Хочется сделать прибор, который будет оценивать потребление калорий во время бега. Точность не нужна. В простейшем случае, без SD Карты:

-Старт. Горит красный светодиод. Как только обнаружена пауза – писчит. типа беги дальше.

-Как только набралось достаточно движений – загорается зеленый светодиод. Типа все, можно разворачиваться и бежать обратно.

По идее Должно быть очень просто – постоянно оценивать ускорение и интегрировать. При этом нужно отбрасывать маленькие ускорения (медленный шаг)

Не понимаю, по каким ключевым словам искать. Спасибо.

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

будет оценивать потребление калорий во время бега.

смотря, что потреблять во время бега.

например – водка резко увеличивает количество потреблённых калорий, но способствует похудению организьма.

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

а куда ставить датчик? на голову или спину? все остальное во время бега дергается еще сильнее. и кроме ускорения вперед и назад, будет влево вправо верх вниз (будет у всего, но у головы наверно меньше всего). даже зная формулу расчета калорий от скорости движения например, как это приделать к постоянно тряске. вам надо получше продумать все таки

например ставим датчик на руку. исмеряем скорость колебаний руки – четко связано с ногами, но только по одной оси. измеряем собственную длину шага при разной скорости (она полюбому разная)

зная частоту колебаний руки и длину шага при данной частоте колебаний руки можно определить скорость (с погрешностью). и тут в зависимости от вашего веса и скорости высчитываем калории

наверно так. пока мне кажется самое оптимальное

Источники:

http://arduinoplus.ru/braslet-shagomer-na-osnove-datchika-bmi160/

http://masterclub.online/topic/13927-naruchnye-smart-chasy-s-shagomerom-arduino

http://arduino.ru/forum/programmirovanie/podschet-kalorii-ili-shagomer-na-baze-akselerometra-mpu6050

http://narodstream.ru/esp8266-urok-1-pervoe-znakomstvo-s-kontrollerom-esp8266/

Ссылка на основную публикацию