- Požadované komponenty
- Modul snímače MPU6050 - stručný úvod
- Obvodové schéma počítadla kroků Attiny85
- Výroba PCB pro počítadlo kroků Attiny85
- Objednání desky plošných spojů z PCBWay
- Sestavení desky plošných spojů ATtiny85
- Vysvětlení kódu čítače kroků ATtiny85
- Pojďme se vydat na procházku s naším čítačem kroků Arduino
V tomto tutoriálu se chystáme vytvořit snadný a levný krokoměr pomocí ATtiny85 IC, akcelerometru a gyroskopu MPU6050 a OLED displeje. Toto jednoduché počítadlo kroků založené na Arduinu je napájeno 3V knoflíkovou buňkou, takže se snadno nosí, když jdete na procházku nebo jog. Vyžaduje také velmi málo komponent k sestavení a kód je také relativně jednoduchý. Program v tomto projektu používá MPU6050 k měření velikosti zrychlení podél 3 os (X, Y a Z). Poté vypočítá rozdíl velikosti zrychlení mezi předchozí a aktuální hodnotou. Pokud je rozdíl větší než určitá prahová hodnota (pro chůzi větší než 6 a pro běh větší než 10), pak se odpovídajícím způsobem zvyšuje počet kroků. Celkový počet provedených kroků se poté zobrazí na OLED displeji.
Abychom mohli postavit tento přenosný počitadlo kroků na desce plošných spojů, vyrobili jsme naše desky plošných spojů z PCBWay a v tomto projektu je sestavíme a otestujeme. Pokud chcete přidat další funkce, můžete do tohoto nastavení přidat také monitor Heartbeat a my jsme také dříve vytvořili čítač kroků akcelerometru Arduino pomocí ADXL335, pokud máte zájem, zkontrolujte je.
Požadované komponenty
K sestavení tohoto krokoměru pomocí Arduina budete potřebovat následující komponenty.
- Attiny85 IC
- MPU6050
- OLED displejový modul
- 2 × tlačítka
- Rezistory 5 × 10 KΩ (SMD)
Modul snímače MPU6050 - stručný úvod
MPU6050 je založen na technologii Micro-Mechanical Systems (MEMS). Tento snímač má tříosý akcelerometr, tříosý gyroskop a vestavěný teplotní snímač. Může být použit k měření parametrů, jako je zrychlení, rychlost, orientace, posunutí atd. MPU6050 jsme již dříve propojili s Arduino a Raspberry pi a také jsme postavili několik projektů, které jej používají jako - Self Balancing robot, Arduino Digital Protractor a Arduino Inclinometer.
Modul MPU6050 je malý a má nízkou spotřebu energie, vysoké opakování, vysokou toleranci rázů a nízké uživatelské ceny. MPU6050 se dodává se sběrnicí I2C a rozhraním pomocné sběrnice I2C a může snadno interferovat s dalšími senzory, jako jsou magnetometry a mikrokontroléry.
Obvodové schéma počítadla kroků Attiny85
Schéma počitadla kroků MPU6050 je uvedeno níže:
Výše uvedený obrázek ukazuje schéma zapojení rozhraní MPU6050 a OLED displeje s Attiny85 IC. Rozhraní mezi MPU6050, OLED displejem a Arduino musí být implementováno pomocí protokolu I2C. Proto je SCLPin (PB2) ATtiny85 připojen k SCLPin na MPU6050 a OLED displeji. Podobně je SDAPin (PB0) ATtiny85 připojen k SDAPin na MPU6050 a OLED displeji. Dvě tlačítka jsou také připojena k pinu PB3 a PB4 ATtiny85 IC. Tato tlačítka lze použít k posouvání textu nebo ke změně textu na displeji.
Poznámka: Postupujte podle našeho předchozího kurzu Programování ATtiny85 IC přímo přes USB pomocí programu Digispark Bootloader a naprogramujte ATtiny85 IC přes USB a Digispark Boot-loader.
Výroba PCB pro počítadlo kroků Attiny85
Schéma je hotové a můžeme pokračovat v rozložení desky plošných spojů. Desku plošných spojů můžete navrhnout pomocí libovolného softwaru desek plošných spojů podle vašeho výběru. Pro výrobu PCB pro tento projekt jsme použili EasyEDA.
Níže jsou 3D pohledy na horní vrstvu a spodní vrstvu desky plošných spojů Step Counter:
Uspořádání desek plošných spojů pro výše uvedený obvod je také k dispozici ke stažení jako Gerber z níže uvedeného odkazu:
- Soubor Gerber pro počítadlo kroků ATtiny85
Objednání desky plošných spojů z PCBWay
Nyní po dokončení návrhu můžete pokračovat v objednávání desky plošných spojů:
Krok 1: Vstupte na https://www.pcbway.com/, zaregistrujte se, pokud jste poprvé. Poté na kartě Prototyp desky plošných spojů zadejte rozměry desky plošných spojů, počet vrstev a požadovaný počet desek plošných spojů.
Krok 2: Pokračujte kliknutím na tlačítko „Citovat nyní“. Budete přesměrováni na stránku, kde můžete nastavit několik dalších parametrů, jako je typ desky, vrstvy, materiál pro PCB, tloušťka a další, většina z nich je vybrána ve výchozím nastavení, pokud se rozhodnete pro konkrétní parametry, můžete vybrat je to tady.
Krok 3: Posledním krokem je nahrání souboru Gerber a pokračování platby. Před pokračováním v platbě PCBWAY ověří, zda je váš soubor Gerber platný, aby byl proces hladký. Tímto způsobem si můžete být jisti, že vaše deska plošných spojů je přátelská k výrobě a dostane se k vám jako oddaná.
Sestavení desky plošných spojů ATtiny85
Po několika dnech jsme dostali naše PCB v úhledném balení a kvalita PCB byla jako vždy dobrá. Horní vrstva a spodní vrstva desky jsou zobrazeny níže:
Poté, co se ujistil, že stopy a stopy jsou správné. Pokračoval jsem v montáži desky plošných spojů. Kompletně připájená deska vypadá takto:
Vysvětlení kódu čítače kroků ATtiny85
Celý kód čítače kroků Arduino je uveden na konci dokumentu. Zde vysvětlujeme některé důležité části kódu.
Tento kód používá knihovny TinyWireM.h & TinyOzOLED.h. Knihovnu TinyWireM lze stáhnout ze Správce knihoven v Arduino IDE a nainstalovat odtud. Za tímto účelem otevřete Arduino IDE a přejděte na Sketch <Zahrnout knihovnu <Spravovat knihovny . Nyní vyhledejte TinyWireM.h a nainstalujte knihovnu TinyWireM od Adafruit.
Knihovnu TinyOzOLED.h lze stáhnout z uvedených odkazů.
Po instalaci knihoven do Arduino IDE spusťte kód zahrnutím potřebných souborů knihoven.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Po zahrnutí knihoven definujte proměnné, do kterých se budou ukládat údaje z akcelerometru.
intaccelX, accelY, accelZ;
Ve smyčce setup () inicializujte knihovnu vodičů a resetujte senzor prostřednictvím registru správy napájení a také inicializujte komunikaci I2C pro OLED displej. Poté v dalších řádcích nastavte orientaci displeje a zadejte adresu registru pro hodnoty akcelerometru a gyroskopu.
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);
Ve funkci getAccel () začněte čtením dat akcelerometru. Data pro každou osu jsou uložena ve dvou bajtech (horní a dolní) nebo registrech. Abychom je mohli přečíst všechny, začněte s prvním registrem a pomocí funkce requiestFrom () požadujeme načíst všech 6 registrů pro osy X, Y a Z. Potom načteme data z každého registru a protože výstupy jsou dvojkovým doplňkem, vhodně je kombinujte, abyste získali úplné hodnoty akcelerometru.
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 (); }
Nyní uvnitř funkce smyčky nejprve přečtěte hodnoty osy X, Y a Z a po získání hodnot ve 3 osách vypočítejte celkový vektor zrychlení pomocí druhé odmocniny hodnot osy X, Y a Z. Poté vypočítejte rozdíl mezi aktuálním vektorem a předchozím vektorem a pokud je rozdíl větší než 6, zvyšte počet kroků.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektor - vektorpředcházející; if (totalvector> 6) {Steps ++; } OzOled.printString ("Kroky", 0, 4); OzOled.printNumber (kroky, 0, 8, 4); vectorprevious = vektor; zpoždění (600);
Pojďme se vydat na procházku s naším čítačem kroků Arduino
Po dokončení montáže desky plošných spojů připojte ATtiny85 k desce programátoru a nahrajte kód. Nyní vezměte nastavení počítadla kroků do svých rukou a začněte krok za krokem, na OLED by se měl zobrazit počet kroků. Někdy zvyšuje počet kroků, když nastavení vibruje velmi rychle nebo velmi pomalu.
Takto si můžete pomocí ATtiny85 a MPU6050 vytvořit vlastní počítadlo kroků. Kompletní fungování projektu najdete také ve videu, na které odkazujete níže. Doufám, že se vám projekt líbil a bylo pro vás zajímavé vytvořit si vlastní. Máte-li jakékoli dotazy, nechte je prosím v sekci komentářů níže.