- Необходимые компоненты
- Модуль датчика MPU6050 - краткое введение
- Схема счетчика шагов Attiny85
- Изготовление печатной платы для счетчика шагов Attiny85
- Заказ печатной платы на PCBWay
- Сборка печатной платы счетчика шагов ATtiny85
- Код счетчика шагов ATtiny85 Описание
- Давайте прогуляемся с нашим счетчиком шагов Arduino
В этом руководстве мы собираемся создать простой и дешевый шагомер с использованием микросхемы ATtiny85, акселерометра и гироскопа MPU6050 и модуля дисплея OLED. Этот простой счетчик шагов на базе Arduino питается от батарейки на 3 В, поэтому его легко носить с собой, когда вы выходите на прогулку или пробежку. Также для сборки требуется очень мало компонентов, и код также относительно прост. Программа в этом проекте использует MPU6050 для измерения величины ускорения по 3 осям (X, Y и Z). Затем он рассчитывает разницу в величине ускорения между предыдущим и текущим значениями. Если разница больше определенного порога (для ходьбы больше 6 и для бега больше 10), то количество шагов соответственно увеличивается. Общее количество сделанных шагов отображается на OLED-дисплее.
Чтобы построить этот портативный счетчик шагов на печатной плате, мы изготовили наши печатные платы от PCBWay, и мы соберем и протестируем то же самое в этом проекте. Если вы хотите добавить больше функций, вы также можете добавить в эту настройку монитор сердцебиения, и мы также ранее создали счетчик шагов акселерометра Arduino с использованием ADXL335, проверьте их, если вам интересно.
Необходимые компоненты
Чтобы построить этот шагомер с использованием Arduino, вам понадобятся следующие компоненты.
- Attiny85 IC
- MPU6050
- Модуль дисплея OLED
- 2 × кнопки
- Резисторы 5 × 10 кОм (SMD)
Модуль датчика MPU6050 - краткое введение
MPU6050 основан на технологии микромеханических систем (MEMS). Этот датчик имеет 3-осевой акселерометр, 3-осевой гироскоп и встроенный датчик температуры. Его можно использовать для измерения таких параметров, как ускорение, скорость, ориентация, смещение и т. Д. Мы ранее связали MPU6050 с Arduino и Raspberry pi, а также построили несколько проектов с его использованием, таких как самобалансирующийся робот, цифровой транспортир Arduino и инклинометр Arduino.
Модуль 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. Эти кнопки можно использовать для прокрутки текста или изменения текста на дисплее.
Примечание. Следуйте нашему предыдущему руководству по программированию микросхемы ATtiny85 напрямую через USB с помощью загрузчика Digispark, чтобы запрограммировать микросхему ATtiny85 через USB и загрузчик Digispark.
Изготовление печатной платы для счетчика шагов Attiny85
Схема готова, и мы можем приступить к разводке печатной платы. Вы можете спроектировать печатную плату с помощью любого программного обеспечения для печатных плат по вашему выбору. Мы использовали EasyEDA для изготовления печатной платы для этого проекта.
Ниже представлены виды 3D-модели верхнего и нижнего слоев платы счетчика шагов:
Компоновку печатной платы для указанной выше схемы также можно загрузить в формате Gerber по приведенной ниже ссылке:
- Файл Gerber для счетчика шагов ATtiny85
Заказ печатной платы на PCBWay
После доработки дизайна можно приступать к заказу печатной платы:
Шаг 1. Зайдите на https://www.pcbway.com/, зарегистрируйтесь, если это ваш первый раз. Затем на вкладке PCB Prototype введите размеры вашей печатной платы, количество слоев и количество требуемых печатных плат.
Шаг 2: Продолжите, нажав кнопку «Цитировать сейчас». Вы попадете на страницу, где установите несколько дополнительных параметров, таких как Тип платы, Слои, Материал для печатной платы, Толщина и многое другое, большинство из них выбраны по умолчанию, если вы выбираете какие-либо конкретные параметры, вы можете выбрать это здесь.
Шаг 3: Последний шаг - загрузить файл Gerber и продолжить оплату. Чтобы убедиться, что процесс проходит гладко, PCBWAY проверяет, действителен ли ваш файл Gerber, прежде чем продолжить платеж. Таким образом, вы можете быть уверены, что ваша печатная плата удобна для изготовления и будет доставлена к вам в соответствии с требованиями.
Сборка печатной платы счетчика шагов ATtiny85
Через несколько дней мы получили нашу печатную плату в аккуратной упаковке, и качество печатной платы было как всегда хорошим. Верхний и нижний слои платы показаны ниже:
Убедившись, что следы и следы правильные. Я приступил к сборке печатной платы. Полностью спаянная плата выглядит следующим образом:
Код счетчика шагов ATtiny85 Описание
Полный код счетчика шагов Arduino приведен в конце документа. Здесь мы объясняем некоторые важные части кода.
В коде используются библиотеки TinyWireM.h и TinyOzOLED.h. Библиотеку TinyWireM можно загрузить из диспетчера библиотек в Arduino IDE и установить оттуда. Для этого откройте IDE Arduino и перейдите в Sketch <Include Library <Manage Libraries . Теперь найдите TinyWireM.h и установите библиотеку TinyWireM от Adafruit.
А библиотеку TinyOzOLED.h можно скачать по указанным ссылкам.
После установки библиотек в Arduino IDE запустите код, включив необходимые файлы библиотек.
#include "TinyWireM.h" #include "TinyOzOLED.h"
После включения библиотек определите переменные для хранения показаний акселерометра.
intaccelX, ускорение, ускорение;
Внутри цикла 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); acclX = TinyWireM.read () << 8-TinyWireM.read (); acclY = TinyWireM.read () << 8-TinyWireM.read (); acclZ = TinyWireM.read () << 8-TinyWireM.read (); }
Теперь внутри функции цикла сначала прочтите значения по осям X, Y и Z и после получения значений по 3 осям вычислите вектор общего ускорения, взяв квадратный корень из значений осей X, Y и Z. Затем вычислите разницу между текущим вектором и предыдущим вектором, и если разница больше 6, увеличьте количество шагов.
getAccel (); вектор = sqrt ((ускорение * ускорение) + (ускорение * ускорение) + (ускорение * ускорение)); totalvector = vector - vectorprevious; if (totalvector> 6) {Шаги ++; } OzOled.printString ("Шаги", 0, 4); OzOled.printNumber (Шаги, 0, 8, 4); vectorprevious = вектор; задержка (600);
Давайте прогуляемся с нашим счетчиком шагов Arduino
Как только вы закончите сборку печатной платы, подключите ATtiny85 к плате программатора и загрузите код. Теперь возьмите в руки настройку счетчика шагов и начните шаг за шагом, он должен отображать количество шагов на OLED-экране. Иногда увеличивается количество шагов, когда установка очень быстро или очень медленно вибрирует.
Вот как вы можете создать свой собственный счетчик шагов, используя ATtiny85 и MPU6050. Полную работу проекта также можно найти в видео по ссылке ниже. Надеюсь, вам понравился проект, и вам было интересно создать свой собственный. Если у вас есть вопросы, оставьте их в разделе комментариев ниже.