Как сделать шагомер своими руками

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Шагомер своими руками на основе Arduino и акселерометра

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

Шагомеры – это устройства, которые реализуют часть функционала фитнес-гаджетов и используются только для подсчета шагов. Итак, в этом уроке мы собираемся создать простой и дешевый шагомер, используя Arduino и акселерометр. Этот шагомер будет подсчитывать количество шагов и отображать их на ЖК-модуле 16×2.

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

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

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

  • Vcc — 5 вольт должен подключаться к этому контакту.
  • X-OUT — этот вывод дает аналоговый выход в направлении х
  • Y-OUT — этот вывод дает аналоговый выход в направлении y
  • Z-OUT — этот вывод дает аналоговый выход в направлении z
  • GND — Земля
  • ST — Этот контакт используется для настройки чувствительности датчика

Принципиальная схема счетчика шагов на основе Arduino акселерометра и Arduino приведена далее.

В этой схеме мы связываем Arduino Nano с акселерометром ADXL335. Контакты X, Y и Z акселерометра соединены с аналоговыми контактами (A1, A2 и A3) Arduino Nano. Для взаимодействия ЖК-модулей 16×2 с Arduino мы используем модуль I2C. Контакты SCL и SDA модуля I2C подключены к контактам A5 и A4 Arduino Nano соответственно.

Для быстрого прототипирования можно собрать схему на макетной плате.

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

Но как же работает такой шагомер? Шагомер вычисляет общее количество шагов, предпринятых человеком, используя три составляющих движения: прямое, вертикальное и боковое. Система шагомера использует акселерометр для получения этих значений. Акселерометр постоянно обновляет максимальные и минимальные значения 3-осевого ускорения после каждого определенного набора выборок. Среднее значение этих 3-х осевых значений (макс. + мин.)/2 называется динамическим пороговым уровнем, и это пороговое значение используется для определения того, предпринят ли шаг или нет. Во время работы шагомер может быть в любой ориентации, поэтому шагомер рассчитывает шаги, используя ось, изменение ускорения которой является наибольшим.

Теперь рассмотрим более подробно принцип работы данного шагомера. Сначала шагомер начинает калибровку, как только он включается. Затем в функции void loop он непрерывно получает данные с осей X, Y и Z. После этого он рассчитывает суммарный вектор ускорения от начальной точки. Вектор ускорения — это квадратный корень значений осей X, Y и Z, т.е. (x ^ 2 + y ^ 2 + z ^ 2). Затем он сравнивает средние значения ускорения с пороговыми значениями для подсчета количества шагов. Если вектор ускорения пересекает пороговое значение, то он увеличивает количество шагов; в противном случае он отбрасывает недопустимые вибрации.

Читайте также:  Бронировать фары пленкой своими руками

Полный код шагомера на основе Arduino приведен далее.

Когда ваше оборудование и код будут готовы, подключите Arduino к ноутбуку и загрузите код. Теперь возьмите шагомер в свои руки и начните делать шаг за шагом, на ЖК-дисплее должно отображаться количество шагов. Иногда количество шагов увеличивается, когда шагомер вибрирует очень быстро или очень медленно.

Источник

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

Источник

Своими руками — Как сделать самому

Как сделать что-то самому, своими руками — сайт домашнего мастера

Шагомер и электронная рулетка своими руками (+ схема)

Как сделать шагомер своими руками

От знакомого услышал о японской программе «10000 шагов», которая позволяет укреплять здоровье и поддерживать организм в хорошей физической форме. Решил поучаствовать и смастерил для себя своими руками трость-шагомер.

Детали и сборка

В качестве основы использовал колесо от детского велосипеда (можно с шиной). На его спице закрепил магнит от небольшого динамика, а к оси прикрутил две тонкостенные алюминиевые трубки (фото 1) длиной 20 см. К ним прикрепил деревянный короб: который изготовил из фанеры толщиной 12 мм.

Читайте также:  Браслет со славянской символикой своими руками

На одной из труб на уровне магнита закрепил (см. рис. на стр. 11) геркон* (фото 2) который затем подсоединил к обычному калькулятору, припаяв провода к контактам кнопки «=». Калькулятор зафиксировал в коробе при помощи пенопласта. Для удобного использования к коробу сверху прикрепил ручку из алюминиевой трубы нужной длины.

Принцип работы шагомера

Геркон имеет два контакта, которые замыкаются полем магнита. В калькуляторе нет функции, чтобы автоматически добавлять единицу, но если нажать «1» затем плюс и снова «1» — при многократном нажатии клавиши «=» на дисплее каждый раз число бу-детувеличиваться на единицу.

Эту функцию и будет выполнять геркон своими контактами после каждого оборота магнита. Измерил радиус колеса, в моем случае он равен 16,5 см, и определил длину шага — 1 м 4 см. Для замера пройденного расстояния показания дисплея умножаю на 1,04 м.

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

Шагомер своими руками – фото и схема

ЭЛЕКТРОННАЯ РУЛЕТКА СВОИМИ РУКАМИ

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

Электронная рулетка своими руками

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

Сборка

Из металлической трубки, велосипедной вилки и колеса изготовил основание прибора (фото 1). К контактам кнопки «=» на калькуляторе припаял провода (фото 2). После этого закрепил его на деревянной площадке. Свободные концы провода от калькулятора подсоединил к геркону, который затем примотал проволокой к вилке колеса (фото 3). На спице жестяной полоской зафиксировал магнит (фото 4)

Принцип работы

Геркон — вакуумная трубка, внутри которой расположены два контакта. Они замыкаются под воздействием магнитного поля, создаваемого магнитом на спице во время вращения колеса. При замыкании поступает сигнал на калькулятор. Для счета его необходимо настроить — нажать на клавишу «О», затем «1»,«+» и снова «1». Так как контакты замыкают клавишу «=», то каждый оборот колеса будет плюсоваться. Чтобы узнать расстояние, нужно количество оборотов колеса (будет показано на калькуляторе) умножить на длину его окружности.

© Автор: Николай Мартыненко, г. Житомир. Фото автора

*Геркон — электромеханическое коммутационное устройство, изменяющее состояние подключенной электрической цепи при воздействии магнитного поля от постоянного магнита или внешнего электромагнита.

Источник

Как сделать шагомер и калькулятор расстояний на базе Arduino

Очень распространенной функцией фитнес-приложений для Android и iOS является вычисление количества шагов, которые пользователь ходит, и расстояния, которое он преодолевает.

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

В этом проекте мы разработали аналогичный калькулятор шагов ходьбы на платформе Arduino. Здесь используется метод отслеживания вектора ускорения устройства. Для этого акселерометр ADXL345 сопряжен с Arduino. Количество шагов, пройденных пользователем, и пройденное им расстояние отображаются на OLED-экране.

Автор проекта — Nikhil Agnihotri, Engineersgarage.com

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

Датчик акселерометра ADXL345 x1;

SSD1306 OLED-дисплей x1;

Соединительные провода и перемычки.

Схема подключения

Для разработки этого проекта датчик акселерометра ADXL345 и SSD1306 OLED сопрягаются с Arduino. Для этого подключите его контакты GND и VCC к заземлению Arduino и выходным контактам 3,3 В. Затем подключите контакты SDA и SCL датчика акселерометра к контактам SDA и SCL порта I2C на Arduino. В этом проекте 7-контактный OLED-модуль SSD1306 подключен к Arduino UNO.

Читайте также:  Делаем будильник своими руками

Принципиальная схема шагомера на базе Arduino

Скетч для Arduino:

Как это работает

Когда устройство включено, OLED-дисплей SSD1306 инициализируется, и на экране мигают логотип «EEWORLDONLINE» и название устройства «Steps Counter». Первоначальное количество шагов отображается как 0, а пройденное расстояние также отображается как 0.

Теперь все, что нужно сделать пользователю, — это держать устройство при себе. Устройство постоянно отслеживает свой вектор ускорения с помощью датчика акселерометра ADXL345.

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

Средние значения ускорения рассчитываются при включении устройства и на экране мигают начальные сообщения. Средние значения также вычисляются путем взятия среднего из 50 последовательных показаний акселерометра ADXL345. Эти средние значения ускорения устройства по осям x, y и z служат контрольной точкой.

После завершения первоначальной настройки устройство снова вычисляет ускорение по осям x, y и z 50 раз подряд и вычисляет среднее из этих значений. Вектор ускорения устройства вычисляется путем извлечения квадратного корня из разницы текущих значений ускорения по сравнению с контрольными значениями.

После задержки в 250 миллисекунд устройство снова вычисляет ускорение по осям x, y и z 50 раз подряд и вычисляет среднее из этих значений. Вектор ускорения устройства вычисляется еще раз с интервалом 250 мс путем извлечения квадратного корня из разницы текущих значений ускорения по сравнению с эталонными значениями.

Вычисляется разница между вектором ускорения сейчас и вектором ускорения за 250 мс до этого, и если разница больше 0,05, шаг увеличивается.

Значение пройденного расстояния рассчитывается путем умножения количества шагов на один фут или 0,3048 метра, предполагая, что средняя длина шага составляет один фут.

Количество шагов и пройденное расстояние обновляются на OLED-экране с задержкой 400 мс.

Процесс вычисления разницы между двумя последовательными векторами ускорения устройства с интервалом 250 мс продолжается на всем протяжении для отслеживания движения пользователя.

Следует отметить, что задержка в 250 мс между вычислением двух последовательных усредненных векторов ускорения и разница 0,05 получается после тщательной калибровки устройства.

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

Код

Код начинается с импорта wire.h для связи I2C с датчиком акселерометра ADXL345 и SPI.h для связи с OLED-дисплеем SSD1306.

Библиотеки Adafruit для работы с OLED-дисплеями импортируются, а также константы, необходимые для OLED-интерфейса, и определенные параметры. Для класса SSD1306 инициализируется отображение объекта.

Растровое изображение для логотипа EEWORLDONLINE хранится в PROGMEM Arduino и преобразуется в объект массива. Объявляются переменные для хранения средних, текущих и ближайших значений ускорения. Объявлена ​​переменная для хранения количества шагов.

В функции setup () вызываются три разные функции. Ssd1306_init () вызывается для инициализации OLED-дисплея SSD1306 и передачи на него начальных сообщений. Adxl345_init () вызывается для инициализации датчика ускорения.

Функция read_av_acc () вызывается для вычисления опорных значений ускорения, когда устройство находится в состоянии покоя. В функции loop () вектор ускорения вычисляется дважды с интервалом 250 мс, и если разница между двумя значениями больше 0,05, увеличивается один шаг. Количество шагов и пройденное расстояние обновляются на OLED-дисплее.

Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

Записывайтесь в онлайн-университет от GeekBrains:

Изучить C, механизмы отладки и программирования микроконтроллеров;

Получить опыт работы с реальными проектами, в команде и самостоятельно;

Получить удостоверение и сертификат, подтверждающие полученные знания.

Starter box для первых экспериментов в подарок!

После прохождения курса в вашем портфолио будет: метостанция с функцией часов и встроенной игрой, распределенная сеть устройств, устройства регулирования температуры (ПИД-регулятор), устройство контроля влажности воздуха, система умного полива растений, устройство контроля протечки воды.

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

Источник

Оцените статью