- Потрібні компоненти
- Модуль датчика MPU6050 - короткий вступ
- Схема лічильника кроків Attiny85
- Виготовлення друкованої плати для лічильника кроків Attiny85
- Замовлення друкованої плати з PCBWay
- Складання друкованої плати лічильника кроків ATtiny85
- Пояснення коду лічильника кроків ATtiny85
- Давайте візьмемо наш лічильник кроків Arduino на прогулянку
У цьому підручнику ми збираємося створити простий і дешевий крокомір за допомогою мікросхеми ATtiny85, акселерометра та гіроскопа MPU6050 та модуля дисплея OLED. Цей простий лічильник кроків на базі Arduino живиться від монетної комірки 3 В, що полегшує його перенесення, коли ви виходите на прогулянку або біг підтюпцем. Для побудови також потрібно дуже мало компонентів, а код також відносно простий. Програма у цьому проекті використовує MPU6050 для вимірювання величини прискорення вздовж 3 осі (X, Y та Z). Потім він обчислює різницю величини прискорення між попереднім і поточним значеннями. Якщо різниця перевищує певний поріг (для ходьби більше 6 і для бігу більше 10), це відповідно збільшує кількість кроків. Потім всі пророблені кроки відображаються на OLED-дисплеї.
Щоб побудувати цей портативний лічильник кроків на друкованій платі, ми виготовили наші друковані плати з PCBWay, і ми будемо збирати та тестувати те саме в цьому проекті. Якщо ви хочете додати більше функцій, ви також можете додати до цього налаштування монітор Heartbeat, і ми також раніше створили лічильник кроків акселерометра Arduino за допомогою ADXL335, перевірте їх, якщо вам цікаво.
Потрібні компоненти
Щоб побудувати цей крокомір за допомогою Arduino, вам знадобляться такі компоненти.
- Attiny85 IC
- MPU6050
- Модуль дисплея OLED
- 2 × кнопки
- Резистори 5 × 10KΩ (SMD)
Модуль датчика MPU6050 - короткий вступ
MPU6050 заснований на технології мікромеханічних систем (MEMS). Цей датчик має 3-осьовий акселерометр, 3-осьовий гіроскоп та вбудований датчик температури. Він може бути використаний для вимірювання таких параметрів, як прискорення, швидкість, орієнтація, зміщення тощо. Ми вже з'єднували MPU6050 з Arduino та Raspberry pi, а також побудували кілька проектів, використовуючи його, наприклад: Самобалансуючий робот, Arduino Digital Protractor та Arduino Inclinometer.
Модуль MPU6050 має невеликі габарити та має низьке енергоспоживання, високу частоту повторення, високу стійкість до ударів та низькі цінові оцінки для користувачів. MPU6050 постачається з шиною I2C та допоміжним інтерфейсом I2C і може легко впливати на роботу інших датчиків, таких як магнітометри та мікроконтролери.
Схема лічильника кроків Attiny85
Схема лічильника кроків MPU6050 наведена нижче:
На наведеному вище зображенні зображена принципова схема для взаємодії MPU6050 та OLED-дисплея з мікросхемою Attiny85. Інтерфейс між MPU6050, OLED-дисплеєм та Arduino повинен бути реалізований за допомогою протоколу I2C. Отже, SCLPin (PB2) ATtiny85 підключений до SCLPin MPU6050 та OLED-дисплея відповідно. Подібним чином SDAPin (PB0) ATtiny85 підключений до SDAPin MPU6050 та OLED-дисплея. Дві кнопки також підключені до виводу PB3 і PB4 ATtiny85 IC. Ці кнопки можна використовувати для прокрутки тексту або зміни тексту на дисплеї.
Примітка: Дотримуйтесь попереднього підручника Програмування ATtiny85 IC безпосередньо через USB за допомогою завантажувача Digispark для програмування IC ATtiny85 через USB та завантажувач Digispark.
Виготовлення друкованої плати для лічильника кроків Attiny85
Схематична схема виконана, і ми можемо продовжувати викладку друкованої плати. Ви можете спроектувати друковану плату за допомогою будь-якого програмного забезпечення на ваш вибір. Ми використали EasyEDA для виготовлення друкованих плат для цього проекту.
Нижче представлені тривимірні моделі верхнього та нижнього шарів друкованої плати лічильника кроків:
Схема друкованої плати для вищезазначеної схеми також доступна для завантаження як Gerber за посиланням, поданим нижче:
- Файл Gerber для лічильника кроків ATtiny85
Замовлення друкованої плати з PCBWay
Тепер після завершення проектування ви можете продовжувати замовлення друкованої плати:
Крок 1: Зайдіть на https://www.pcbway.com/, підпишіться, якщо це ваш перший раз. Потім на вкладці Прототип друкованої плати введіть розміри вашої друкованої плати, кількість шарів та кількість друкованої плати, яка вам потрібна.
Крок 2: Продовжуйте, натискаючи кнопку "Процитувати зараз". Ви потрапите на сторінку, де можна встановити кілька додаткових параметрів, таких як тип плати, шари, матеріал для друкованої плати, товщина та ін. Більшість із них вибрано за замовчуванням, якщо ви вибрали якісь конкретні параметри, ви можете вибрати це тут.
Крок 3: Останнім кроком є завантаження файлу Gerber і продовження платежу. Щоб переконатися, що процес безперебійний, PCBWAY перевіряє, чи справді ваш файл Gerber, перш ніж продовжувати оплату. Таким чином, ви можете бути впевнені, що ваша друкована плата є зручною для виготовлення та зв’яжеться з вами як докладена.
Складання друкованої плати лічильника кроків ATtiny85
Через кілька днів ми отримали нашу друковану плату в акуратному пакеті, і якість друкованої плати була як завжди хорошою. Верхній і нижній шар дошки показані нижче:
Переконавшись, що сліди та сліди правильні. Я приступив до складання друкованої плати. Повністю припаяна дошка виглядає нижче:
Пояснення коду лічильника кроків ATtiny85
Повний код лічильника кроків Arduino наведено в кінці документа. Тут ми пояснюємо деякі важливі частини коду.
Код використовує бібліотеки TinyWireM.h & TinyOzOLED.h. Бібліотеку TinyWireM можна завантажити з Менеджера бібліотек в IDE Arduino та встановити звідти. Для цього відкрийте IDE Arduino і перейдіть до Sketch <Include Library <Manage Libraries . Тепер шукайте TinyWireM.h та встановіть бібліотеку TinyWireM від Adafruit.
Поки бібліотеку TinyOzOLED.h можна завантажити за вказаними посиланнями.
Після встановлення бібліотек в Arduino IDE запустіть код, включивши необхідні файли бібліотек.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Після включення бібліотек визначте змінні для зберігання показань акселерометра.
intaccelX, прискорений, прискорений Z;
Усередині циклу setup () ініціалізуйте бібліотеку проводів і скиньте датчик через регістр управління живленням, а також ініціалізуйте зв'язок I2C для OLED-дисплея. Потім у наступних рядках встановіть орієнтацію дисплея та введіть адресу реєстру для значень акселерометра та гіроскопа.
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
У функції getAccel () почніть з читання даних акселерометра. Дані для кожної осі зберігаються у двох байтах (верхній і нижній) або регістрах. Для того, щоб прочитати їх усі, починайте з першого реєстру, а за допомогою функції RequiestFrom () ми просимо прочитати всі 6 регістрів для осей X, Y та Z. Потім ми зчитуємо дані з кожного реєстру, і оскільки виходи є двома доповненнями, об’єднайте їх належним чином, щоб отримати повні значення акселерометра.
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
Тепер усередині функції циклу спочатку прочитайте значення осі X, Y та Z, а після отримання значень 3 осі обчисліть вектор загального прискорення, взявши квадратний корінь із значень осі X, Y та Z. Потім обчисліть різницю між поточним вектором та попереднім вектором, і якщо різниця більше 6, то збільште кількість кроків.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - вектор попередній; if (totalvector> 6) {Кроки ++; } OzOled.printString ("Кроки", 0, 4); OzOled.printNumber (Кроки, 0, 8, 4); vectorprevious = вектор; затримка (600);
Давайте візьмемо наш лічильник кроків Arduino на прогулянку
Закінчивши збирати друковану плату, підключіть ATtiny85 до плати програміста та завантажте код. Тепер візьміть налаштування лічильника кроків у свої руки і починайте крок за кроком, він повинен відображати кількість кроків на OLED. Іноді це збільшує кількість кроків, коли налаштування вібрує дуже швидко або дуже повільно.
Ось як ви можете створити власний лічильник кроків за допомогою ATtiny85 та MPU6050. Повну роботу проекту також можна знайти у відео, наведеному нижче. Сподіваюся, вам сподобався проект і вам було цікаво побудувати власний. Якщо у вас виникли запитання, залиште їх у розділі коментарів нижче.