- Потрібні компоненти
- ADXL335 Акселерометр
- Кругова діаграма
- Як працює крокомір?
- Програмування лічильника кроків Arduino
- Тестування крокоміра Arduino
Сьогодні фітнес-групи стають дуже популярними, що не тільки підраховує кроки, але й відстежує витрачені калорії, відображає частоту серцебиття, час показу та багато іншого. А ці пристрої IoT синхронізуються з хмарою, так що ви можете легко отримати всю історію своєї фізичної активності на смартфоні. Ми також створили систему моніторингу пацієнтів на основі IoT, де критичні дані надсилалися до ThingSpeak для моніторингу з будь-якого місця.
Крокоміри - це прилади, які використовувались лише для підрахунку кроків. Отже, у цьому підручнику ми збираємося створити простий і дешевий крокомір «зроби сам», використовуючи Arduino та акселерометр. Цей крокомір підраховує кількість кроків і відображає їх на РК-модулі 16x2. Цей крокомір можна інтегрувати з цим розумним годинником Arduino.
Потрібні компоненти
- Arduino Nano
- Акселерометр ADXL 335
- 16 * 2 РК-дисплей
- РК-модуль I2C
- Акумулятор
ADXL335 Акселерометр
ADXL335 - це повноцінний 3-осьовий аналоговий акселерометр, який працює за принципом ємнісного зондування. Це невеликий, тонкий модуль низької потужності з полікремнієвим поверхнево-мікрообробленим датчиком та схемою кондиціонування сигналів. Акселерометр ADXL335 може вимірювати як статичне, так і динамічне прискорення. У цьому проекті Arduino Pedometer акселерометр ADXL335 діятиме як датчик крокоміра.
Акселерометр є пристроєм, яке може перетворити прискорення в будь-якому напрямку до відповідного змінної напруги. Це досягається за допомогою конденсаторів (посилання на зображення), коли Accel рухається, конденсатор, що знаходиться всередині нього, також зазнає змін (посилання на зображення) залежно від руху, оскільки ємність змінюється, можна також отримати змінну напругу.
Нижче наведені зображення акселерометра з передньої та задньої сторони разом із описом штифта -
Pin Опис акселерометра:
- На цьому висновку повинен підключатися живлення 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, відповідно. Повні з'єднання наведені в таблиці нижче:
Arduino Nano | ADXL335 |
3,3 В | VCC |
GND | GND |
А1 | X |
А2 | Y |
A3 | Z |
Arduino Nano | РК-модуль I2C |
5 В | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Ми вперше побудували цей крокомір за допомогою налаштування Arduino на макетній дошці
І після успішного тестування ми відтворили його на Perfboard, спаявши весь компонент на Perfboard, як показано нижче:
Як працює крокомір?
Крокомір обчислює загальну кількість кроків, здійснених людиною, використовуючи три складові руху: прямий, вертикальний та бічний. Для отримання цих значень система крокоміра використовує акселерометр. Акселерометр постійно оновлює максимальне та мінімальне значення 3-осьового прискорення після кожного визначеного значення. зразків. Середнє значення цих 3-осі (Max + Min) / 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;
Усередині установки порожнечі функція калібрує систему, коли вона живиться.
калібрувати ();
Усередині функції циклу порожнечі він зчитує значення осі X, Y та Z для 100 зразків.
for (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;
Тепер порівняємо середнє прискорення з пороговим значенням. Якщо середнє значення перевищує порогове значення, збільште кількість кроків і підніміть прапор.
якщо (totave> поріг && прапор == 0) {кроки = кроки + 1; прапор = 1; }
Якщо середнє значення перевищує порогове значення, але прапор піднято, тоді нічого не робити.
else if (totave> порог && прапор == 1) {// Не рахувати}
Якщо загальне середнє менше порогового значення і прапор піднято, поставте прапор.
if (totave <порог && прапор == 1) {прапор = 0; }
Надрукуйте кількість кроків на послідовному моніторі та РК-дисплеї.
Serial.println (кроки); lcd.print ("Кроки:"); lcd.print (кроки);
Тестування крокоміра Arduino
Коли ваше обладнання та код готові, підключіть Arduino до ноутбука та завантажте код. Тепер візьміть налаштування крокоміра в свої руки і починайте крок за кроком, він повинен відображати кількість кроків на РК-дисплеї. Іноді це збільшує кількість ступенів, коли крокомір дуже швидко або дуже повільно вібрує.
Повне робоче відео та код крокоміра ADXL335 Arduino наведено нижче.