- Необходимые компоненты
- ADXL335 Акселерометр
- Принципиальная электрическая схема
- Как работает шагомер?
- Программирование счетчика шагов Arduino
- Тестирование шагомера Arduino
В настоящее время очень популярны фитнес-браслеты, которые не только подсчитывают шаги, но также отслеживают количество сожженных калорий, отображают частоту сердечных сокращений, время выступления и многое другое. Эти устройства Интернета вещей синхронизируются с облаком, поэтому вы можете легко получить всю историю своей физической активности на смартфоне. Мы также создали систему мониторинга пациентов на основе Интернета вещей, в которой важные данные отправляются в ThingSpeak для мониторинга из любого места.
Шагомеры - это устройства, которые используются только для подсчета шагов. Итак, в этом уроке мы собираемся создать простой и дешевый шагомер своими руками, используя Arduino и акселерометр. Этот шагомер будет подсчитывать количество шагов и отображать их на ЖК-модуле 16x2. Этот шагомер можно интегрировать с умными часами Arduino.
Необходимые компоненты
- Ардуино Нано
- ADXL 335 Акселерометр
- 16 * 2 ЖК-дисплей
- ЖК-модуль I2C
- Аккумулятор
ADXL335 Акселерометр
ADXL335 - это полноценный 3-осевой аналоговый акселерометр, работающий по принципу емкостного измерения. Это небольшой, тонкий модуль с низким энергопотреблением, оснащенный датчиком из поликремния с механической обработкой поверхности и схемой преобразования сигналов. Акселерометр ADXL335 может измерять как статическое, так и динамическое ускорение. В этом проекте шагомера Arduino акселерометр ADXL335 будет действовать как датчик шагомера.
Акселерометр является устройством, которое может преобразовать ускорение в любом направлении к соответствующему переменного напряжения. Это достигается за счет использования конденсаторов (см. Изображение), поскольку по мере движения Accel конденсатор, присутствующий внутри него, также будет претерпевать изменения (см. Изображение) в зависимости от движения, поскольку емкость изменяется, также можно получить переменное напряжение.
Ниже приведены изображения акселерометра спереди и сзади вместе с описанием контактов.
Описание контактов акселерометра:
- К этому выводу должно подключаться питание Vcc- 5 вольт.
- X-OUT - этот вывод дает аналоговый выход в направлении x
- Y-OUT - этот вывод дает аналоговый выход в направлении y
- Z-OUT - этот вывод дает аналоговый выход в направлении z.
- GND- Земля
- ST- Этот вывод используется для установки чувствительности датчика.
Мы создаем множество проектов с использованием акселерометра ADXL335, включая робота, управляемого жестами, сигнализацию детектора землетрясения, игру в пинг-понг и т. Д.
Принципиальная электрическая схема
Принципиальная схема счетчика шагов акселерометра Arduino приведена ниже.
В этой схеме мы взаимодействуем с Arduino Nano с акселерометром ADXL335. Контакты X, Y и Z акселерометра подключены к аналоговым контактам (A1, A2 и A3) Arduino Nano. Для сопряжения ЖК-модулей 16x2 с Arduino мы используем модуль I2C. Контакты SCL и SDA модуля I2C подключены к контактам A5 и A4 Arduino Nano соответственно. Полные соединения приведены в таблице ниже:
Ардуино Нано | ADXL335 |
3,3 В | VCC |
GND | GND |
A1 | Икс |
A2 | Y |
A3 | Z |
Ардуино Нано | ЖК-модуль I2C |
5В | VCC |
GND | GND |
A4 | ПДД |
A5 | SCL |
Сначала мы построили этот шагомер, используя установку Arduino на макете.
И после успешного тестирования мы воспроизвели его на Perfboard, припаяв все компоненты на Perfboard, как показано ниже:
Как работает шагомер?
Шагомер рассчитывает общее количество шагов, сделанных человеком, с использованием трех компонентов движения: вперед, вертикали и в сторону. Система шагомера использует акселерометр для получения этих значений. Акселерометр непрерывно обновляет максимальное и минимальное значения 3-х осевого ускорения после каждого определенного числа. образцов. Среднее значение этих трех осей (Макс. + Мин.) / 2 называется динамическим пороговым уровнем, и это пороговое значение используется для определения того, будет ли сделан шаг или нет.
Во время бега шагомер может быть в любой ориентации, поэтому шагомер рассчитывает шаги, используя ось, изменение ускорения которой является наибольшим.
Теперь позвольте мне кратко рассказать вам о работе этого шагомера Arduino:
- Сначала шагомер начинает калибровку, как только на него подается питание.
- Затем в функции цикла void он непрерывно получает данные по осям X, Y и Z.
- После этого он вычисляет общий вектор ускорения от начальной точки.
- Вектор ускорения - это квадратный корень (x ^ 2 + y ^ 2 + z ^ 2) значений по осям X, Y и Z.
- Затем он сравнивает средние значения ускорения с пороговыми значениями для подсчета количества шагов.
- Если вектор ускорения пересекает пороговое значение, то он увеличивает счетчик шагов; в противном случае он отбрасывает недопустимые вибрации.
Программирование счетчика шагов Arduino
Полный код счетчика шагов Arduino приведен в конце этого документа. Здесь мы объясняем некоторые важные фрагменты этого кода.
Как обычно, начните код с включения всех необходимых библиотек. Акселерометр ADXL335 не требует какой-либо библиотеки, так как он имеет аналоговый выход.
#включают
После этого определите контакты Arduino, к которым подключен акселерометр.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Определите пороговое значение для акселерометра. Это пороговое значение будет сравниваться с вектором ускорения для расчета количества шагов.
порог поплавка = 6;
Внутри настройки void функция калибрует систему при включении питания.
откалибровать ();
Внутри функции цикла void он считывает значения осей X, Y и Z для 100 выборок.
для (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); задержка (1); yaccl = float (analogRead (ypin) - 346); задержка (1); zaccl = float (analogRead (zpin) - 416); задержка (1);
После получения значений по 3 осям рассчитайте вектор общего ускорения, извлекая квадратный корень из значений осей X, Y и Z.
totvect = sqrt (((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Затем вычислите среднее из максимального и минимального значений вектора ускорения.
totave = (totvect + totvect) / 2;
Теперь сравните среднее ускорение с порогом. Если среднее значение больше порога, увеличьте количество шагов и поднимите флаг.
if (totave> threshold && flag == 0) {steps = steps + 1; flag = 1; }
Если среднее значение больше порога, но флаг поднят, ничего не делать.
else if (totave> threshold && flag == 1) {// Не считать}
Если общее среднее значение меньше порогового значения и флаг поднят, то опустите флаг.
if (totave <порог && flag == 1) {flag = 0; }
Напечатайте количество шагов на последовательном мониторе и ЖК-дисплее.
Serial.println (шаги); lcd.print ("Шаги:"); lcd.print (шаги);
Тестирование шагомера Arduino
Когда ваше оборудование и код будут готовы, подключите Arduino к ноутбуку и загрузите код. Теперь возьмите в руки настройку шагомера и начните шаг за шагом, количество шагов должно отображаться на ЖК-дисплее. Иногда увеличивается количество шагов, когда шагомер очень быстро или очень медленно вибрирует.
Полное рабочее видео и код для шагомера ADXL335 Arduino приведены ниже.