Делаем автоматический счетчик отжиманий на Ардуино

Содержание

Создадим автоматический счетчик отжиманий на основе Ардуино с использованием датчика приближения Kemet SS-430.

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

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

Компоненты оборудования

  1. Датчик приближения KEMET Electronics (пироэлектрический бесконтактный инфракрасный датчик) × 1 × 1
  2. Шилд Arduino WiFi × 1
  3. Шилд Seeed Grove для Arduino Nano × 1
  4. Светодиод Seeed Grove RGB Led V2.0 × 1
  5. Спикер Seeed Grove × 1

Программное обеспечение

Дополнительно

Идея проекта

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

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

В этом уроке мы создаем прототип счетчика отжиманий, используя пирометрический датчик Kemet и Arduino.

Шаг 1. Собираем схему

Для этого проекта мы будем использовать Arduino Uno, Wifi шилд и шилд Grove для того, чтобы мы могли добавить дополнительные датчики.

Еще мы должны собрать корпус, либо его распечатать на принтере, например, от thingsverse. Благодаря 3D-печати мы сможем создать базовый корпус.

После того, как все сделано, у нас должно быть что-то вроде этого.

Соединяем все комплектующие, и получаем в итоге:

Назначение контактов справа налево : контакт 1 — питание, контакт 5 — заземление, контакт 4 — Vout.

После того как все сделано, мы сможем перейти к следующему шагу.

Шаг 2. Тестирование датчика

Мы можем сначала попробовать программу с официального сайта:

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

Схема на этом этапе будет такая:

Шаг 3. Kemet SS-430 линзы

Как мы видели из предыдущего шага, сенсор реагирует на всё из-за своей чувствительности. Нам нужны дополнительные линзы, чтобы сенсор действовал правильно.

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

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

Шаг 4. Хранение данных

Теперь, когда датчик работает, и мы можем отследить отжимания, нам нужно сохранить прогресс тренировки. Один из самых простых способов — использовать firebase от Google.

Мы рассмотрим использование firebase в очень простом варианте. Создаем проект и далее создаем базу данных с тестовой средой.

Далее начните сбор отжиманий — Start a collection.

Затем мы можем добавить нашу схему, которая будет включать в себя счетчик отжиманий и временные отметки (timestamp).

Когда все будет сделано, у нас будет нормальная настроенная базы данных.

Вам также понадобится ключ служебной учетной записи (service account key), генерируемый через firebase. Пожалуйста, не загружайте этот ключ в репозиторий, так как это ключ безопасности.

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

Шаг 5. Интеграция Arduino

Теперь, когда мы можем считать свои отжимания и хранить данные о них, пришло время собрать всё вместе.

Во-первых, нам нужно использовать Wi-Fi Arduino для подключения к Интернету.

Теперь мы также добавляем зеленый светодиод, зуммер и кнопку. В настройках у нас всё это должно быть. Как только Wi-Fi подключен, мы можем моргнуть зеленым светодиодом 3 раза.

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

Кнопка используется для загрузки информации на локальный сервер и отправки ее в firebase. Мы также чистим флаг pushupCount, так как отправляем эту информацию на сервер.


Источник: arduinoplus.ru