- Необходими компоненти
- MPU6050 сензорен модул - кратко въведение
- Диаграма на брояча на стъпки Attiny85
- Изработка на печатни платки за брояч на стъпки Attiny85
- Поръчка на печатни платки от PCBWay
- Сглобяване на печатната платка на брояча на стъпки ATtiny85
- ATtiny85 Обяснение на кода за брояч на стъпки
- Да вземем на разходка нашия брояч на стъпки Arduino
В този урок ще изградим лесен и евтин крачкомер, използвайки ATtiny85 IC, MPU6050 акселерометър и жироскоп и OLED дисплеен модул. Този прост брояч на стъпки, базиран на Arduino, се захранва от 3V клетка за монети, което го прави лесен за носене, когато излизате на разходка или джогинг. Той също така изисква много малко компоненти за изграждане и кодът също е относително прост. Програмата в този проект използва MPU6050 за измерване на величината на ускорението по 3-те оси (X, Y и Z). След това изчислява разликата в степента на ускорение между предишната и текущата стойности. Ако разликата е по-голяма от определен праг (за ходене по-голямо от 6 и за бягане по-голямо от 10), тогава съответно увеличава броя на стъпките. След това общите предприети стъпки се показват на OLED дисплея.
За да изградим този преносим брояч на стъпки на печатни платки, ние сме изработили нашите платки от PCB от PCBWay и ще сглобим и тестваме същото в този проект. Ако искате да добавите още функции, можете също да добавите монитор Heartbeat към тази настройка и ние също така преди това изградихме брояч на стъпки на акселерометър Arduino, използвайки ADXL335, проверете ги, ако се интересувате.
Необходими компоненти
За да изградите този крачкомер с помощта на Arduino, ще ви трябват следните компоненти.
- Attiny85 IC
- MPU6050
- OLED дисплеен модул
- 2 × Бутони
- 5 × 10KΩ резистори (SMD)
MPU6050 сензорен модул - кратко въведение
MPU6050 се основава на технологията Micro-Mechanical Systems (MEMS). Този сензор има 3-осен акселерометър, 3-осен жироскоп и вграден температурен сензор. Може да се използва за измерване на параметри като ускорение, скорост, ориентация, изместване и др. Преди това сме свързвали MPU6050 с Arduino и Raspberry pi и също така сме изградили няколко проекта като него - Самобалансиращ се робот, Arduino Digital Protractor и Arduino Inclinometer.
Модулът MPU6050 е с малки размери и има ниска консумация на енергия, висока повторяемост, висока устойчивост на удар и ниски потребителски цени. MPU6050 се предлага с I2C шина и спомагателен интерфейс I2C шина и може лесно да пречи на други сензори като магнитометри и микроконтролери.
Диаграма на брояча на стъпки Attiny85
Схемата за брояча на стъпки MPU6050 е дадена по-долу:
Горното изображение показва схемата за свързване на MPU6050 и OLED дисплей с Attiny85 IC. Интерфейсът между MPU6050, OLED дисплей и Arduino трябва да бъде реализиран с помощта на I2C протокол. Следователно SCLPin (PB2) на ATtiny85 е свързан съответно с SCLPin на MPU6050 и OLED дисплея. По същия начин SDAPin (PB0) на ATtiny85 е свързан със SDAPin на MPU6050 и OLED дисплея. Две бутони също са свързани към PB3 и PB4 щифта на ATtiny85 IC. Тези бутони могат да се използват за превъртане на текста или промяна на текста на дисплея.
Забележка: Следвайте нашия предишен урок Програмиране на ATtiny85 IC директно през USB с помощта на Digispark Bootloader, за да програмирате ATtiny85 IC чрез USB и Digispark Boot-loader.
Изработка на печатни платки за брояч на стъпки Attiny85
Схемата е направена и можем да продължим с излагането на печатната платка. Можете да проектирате печатната платка, използвайки всеки софтуер за печатни платки по ваш избор. Използвахме EasyEDA за производството на печатни платки за този проект.
По-долу са изгледите на 3D модела на горния и долния слой на печатната платка на брояча на стъпки:
Оформлението на печатни платки за горната схема също е достъпно за изтегляне като Gerber от връзката, дадена по-долу:
- Файл Gerber за брояч на стъпки ATtiny85
Поръчка на печатни платки от PCBWay
Сега след финализиране на дизайна можете да продължите с поръчката на печатната платка:
Стъпка 1: Влезте в https://www.pcbway.com/, регистрирайте се, ако за първи път. След това в раздела PCB Prototype въведете размерите на вашата PCB, броя на слоевете и броя на PCB, който ви е необходим.
Стъпка 2: Продължете, като кликнете върху бутона „Цитирай сега“. Ще бъдете отведени на страница, където да зададете няколко допълнителни параметъра като тип платка, слоеве, материал за печатни платки, дебелина и др., Повечето от тях са избрани по подразбиране, ако сте избрали някакви конкретни параметри, можете да изберете тук.
Стъпка 3: Последната стъпка е да качите файла Gerber и да продължите с плащането. За да се увери, че процесът е гладък, PCBWAY проверява дали вашият Gerber файл е валиден, преди да продължи с плащането. По този начин можете да сте сигурни, че вашата PCB е удобна за изработка и ще се свърже с вас като ангажирана.
Сглобяване на печатната платка на брояча на стъпки ATtiny85
След няколко дни получихме нашата ПХБ в чист пакет и качеството на ПХБ беше добро както винаги. Най-горният и долният слой на дъската са показани по-долу:
След като се уверих, че следите и следите са правилни. Продължих със сглобяването на печатната платка. Напълно споената дъска изглежда по-долу:
ATtiny85 Обяснение на кода за брояч на стъпки
Пълният код на брояча на стъпки на Arduino е даден в края на документа. Тук обясняваме някои важни части от кода.
Кодът използва библиотеките TinyWireM.h & TinyOzOLED.h. Библиотеката TinyWireM може да бъде изтеглена от Мениджъра на библиотеки в IDE на Arduino и инсталирана от там. За това отворете IDE на Arduino и отидете на Скица <Включване на библиотека <Управление на библиотеки . Сега потърсете TinyWireM.h и инсталирайте библиотеката TinyWireM от Adafruit.
Докато библиотеката TinyOzOLED.h може да бъде изтеглена от дадените връзки.
След като инсталирате библиотеките в Arduino IDE, стартирайте кода, като включите необходимите библиотечни файлове.
#include "TinyWireM.h" #include "TinyOzOLED.h"
След като включите библиотеките, дефинирайте променливите, за да съхранявате показанията на акселерометъра.
intaccelX, AcceLY, AccelZ;
Вътре в контура за настройка () инициализирайте проводниковата библиотека и нулирайте сензора чрез регистъра за управление на захранването, също инициализирайте 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 (); вектор = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = вектор - векторпреди; if (totalvector> 6) {Стъпки ++; } OzOled.printString ("Стъпки", 0, 4); OzOled.printNumber (Стъпки, 0, 8, 4); vectorprevious = вектор; забавяне (600);
Да вземем на разходка нашия брояч на стъпки Arduino
След като завършите сглобяването на печатната платка, свържете ATtiny85 към платката на програмиста и качете кода. Сега вземете настройката на брояча на стъпки в ръцете си и започнете да ходите стъпка по стъпка, той трябва да показва броя на стъпките на OLED. Понякога увеличава броя на стъпките, когато настройката вибрира много бързо или много бавно.
Ето как можете да създадете свой собствен брояч на стъпки, като използвате ATtiny85 и MPU6050. Цялостната работа на проекта може да бъде намерена и във видеото, свързано по-долу. Надявам се, че проектът ви е харесал и ви е било интересно да създадете свой собствен. Ако имате някакви въпроси, моля, оставете ги в раздела за коментари по-долу.