- Būtini komponentai
- MPU6050 jutiklio modulis - trumpas įvadas
- „Attiny85“ žingsnio skaitiklio grandinės schema
- „Attiny85“ žingsnių skaitiklio PCB gamyba
- Užsakymas PCB iš PCBWay
- „ATtiny85 Step Counter PCB“ surinkimas
- ATtiny85 žingsnio skaitiklio kodo paaiškinimas
- Pasivaikščiokime savo „Arduino Step Counter“
Šioje pamokoje mes sukursime lengvą ir pigų žingsniamatį naudodami „ATtiny85 IC“, „MPU6050“ akselerometrą ir giroskopą bei OLED ekraną. Šį paprastą „Arduino“ pagrindu veikiantį žingsninį skaitiklį maitina 3 V monetų elementas, todėl jį lengva nešiotis išėjus pasivaikščioti ar bėgioti. Tam taip pat reikia sukurti labai mažai komponentų, o kodas taip pat yra gana paprastas. Šio projekto programa naudoja MPU6050, kad matuotų pagreičio dydį išilgai 3 ašių (X, Y ir Z). Tada jis apskaičiuoja pagreičio dydžio skirtumą tarp ankstesnių ir dabartinių verčių. Jei skirtumas yra didesnis nei tam tikras slenkstis (jei vaikščiojate daugiau nei 6 ir bėgate daugiau nei 10), tai atitinkamai padidina žingsnių skaičių. Tada visi atlikti veiksmai rodomi OLED ekrane.
Norėdami pastatyti šį nešiojamąjį žingsninį skaitiklį ant PCB, mes sukūrėme savo PCB plokštes iš PCBWay ir mes surinksime ir išbandysime tą patį šiame projekte. Jei norite pridėti daugiau funkcijų, prie šios sąrankos taip pat galite pridėti „Heartbeat“ monitorių. Mes taip pat anksčiau sukūrėme „Arduino“ akselerometro žingsnių skaitiklį naudodami ADXL335, patikrinkite juos, jei jus domina.
Būtini komponentai
Norėdami sukurti šį žingsniamatį naudodami „Arduino“, jums reikės šių komponentų.
- „Attiny85 IC“
- MPU6050
- OLED ekrano modulis
- 2 × mygtukai
- 5 × 10KΩ rezistoriai (SMD)
MPU6050 jutiklio modulis - trumpas įvadas
MPU6050 yra pagrįstas mikromechaninių sistemų (MEMS) technologija. Šis jutiklis turi 3 ašių akselerometrą, 3 ašių giroskopą ir įmontuotą temperatūros jutiklį. Jis gali būti naudojamas matuoti tokius parametrus kaip pagreitis, greitis, orientacija, poslinkis ir kt. Mes anksčiau susiejome MPU6050 su „Arduino“ ir „Raspberry pi“ ir taip pat sukūrėme keletą projektų, naudodami jį kaip „Self Balancing robot“, „Arduino Digital Protractor“ ir „Arduino Inclinometer“.
„MPU6050“ modulis yra mažo dydžio, jo energija sunaudojama mažai, pasikartojimas didelis, atsparus smūgiams ir žemos vartotojo kainos. MPU6050 yra su I2C magistrale ir pagalbine I2C magistralės sąsaja ir gali lengvai trukdyti kitiems jutikliams, tokiems kaip magnetometrai ir mikrovaldikliai.
„Attiny85“ žingsnio skaitiklio grandinės schema
„MPU6050 Step Counter“ schema pateikta žemiau:
Aukščiau pateiktame paveikslėlyje parodyta MPU6050 ir OLED ekrano sąsajos su „Attiny85 IC“ grandinės schema. Sąsaja tarp MPU6050, OLED Display ir „Arduino“ turi būti įdiegta naudojant „I2C Protocol“. Taigi „ATtiny85“ SCLPin (PB2) yra prijungtas prie MPU6050 ir OLED ekrano SCLPin. Panašiai „ATtiny85“ SDAPin (PB0) yra prijungtas prie MPU6050 ir OLED ekrano SDAPin. Du mygtukai taip pat yra prijungti prie „ATtiny85 IC“ PB3 ir PB4 kaiščių. Šiais mygtukais galima slinkti tekstą arba pakeisti rodomą tekstą.
Pastaba: Vykdykite mūsų ankstesnę mokymo programą „ATtiny85 IC“ programavimas tiesiogiai per USB, naudodami „Digispark Bootloader“, kad programuotumėte „ATtiny85 IC“ per USB ir „Digispark Boot-loader“.
„Attiny85“ žingsnių skaitiklio PCB gamyba
Schema yra padaryta, ir mes galime tęsti PCB išdėstymą. Galite suprojektuoti PCB naudodami bet kurią pasirinktą PCB programinę įrangą. Gamindami PCB šiam projektui naudojome „EasyEDA“.
Žemiau pateikiami „Step Counter“ PCB viršutinio ir apatinio sluoksnio 3D modelio vaizdai:
Anksčiau nurodytos grandinės PCB išdėstymą taip pat galima atsisiųsti kaip „Gerber“ iš toliau pateiktos nuorodos:
- „Gerber“ failas, skirtas „ATtiny85 Step Counter“
Užsakymas PCB iš PCBWay
Baigę dizainą, galite tęsti užsakymą PCB:
1 žingsnis: Eikite į https://www.pcbway.com/, užsiregistruokite, jei tai jūsų pirmas kartas. Tada skirtuke PCB Prototype įveskite savo PCB matmenis, sluoksnių skaičių ir reikalingą PCB skaičių.
2 žingsnis: tęskite spustelėdami mygtuką „Pasiūlyti dabar“. Jūs pateksite į puslapį, kuriame galėsite nustatyti keletą papildomų parametrų, tokių kaip plokštės tipas, sluoksniai, medžiaga PCB, storis ir dar daugiau, dauguma jų yra pasirinkti pagal numatytuosius nustatymus, jei pasirenkate bet kuriuos konkrečius parametrus, galite pasirinkti tai čia.
3 žingsnis: Paskutinis žingsnis yra įkelti „Gerber“ failą ir tęsti mokėjimą. Norėdami įsitikinti, kad procesas vyksta sklandžiai, prieš tęsdamas mokėjimą PCBWAY patikrina, ar jūsų „Gerber“ failas galioja. Tokiu būdu galite būti tikri, kad jūsų PCB yra draugiškas gamybai ir pasieks jus kaip įsipareigojusį.
„ATtiny85 Step Counter PCB“ surinkimas
Po kelių dienų mes gavome savo PCB tvarkingoje pakuotėje ir PCB kokybė buvo gera kaip visada. Viršutinis ir apatinis lentos sluoksnis parodyti žemiau:
Įsitikinęs, kad takeliai ir pėdsakai buvo teisingi. Aš pradėjau surinkti PCB. Visiškai lituota lenta atrodo taip:
ATtiny85 žingsnio skaitiklio kodo paaiškinimas
Visas „ Arduino“ žingsnių skaitiklio kodas pateikiamas dokumento pabaigoje. Čia mes paaiškiname keletą svarbių kodo dalių.
Kodas naudoja „TinyWireM.h“ ir „TinyOzOLED.h“ bibliotekas. „TinyWireM“ biblioteką galima atsisiųsti iš „Arduino IDE“ esančios bibliotekos tvarkyklės ir įdiegti iš ten. Tam atidarykite „Arduino IDE“ ir eikite į „ Sketch <Include Library <Manage Libraries“ . Dabar ieškokite „TinyWireM.h“ ir įdiekite „ TinyWireM“ biblioteką, kurią sukūrė „Adafruit“.
Nors TinyOzOLED.h biblioteką galima atsisiųsti iš nurodytų nuorodų.
Įdiegę bibliotekas į „Arduino IDE“, paleiskite kodą įtraukdami reikalingus bibliotekų failus.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Įtraukę bibliotekas, nustatykite kintamuosius, kad būtų saugomi akselerometro rodmenys.
intaccelX, accelY, accelZ;
Viduje Setup () kilpos, inicijuoti vielos biblioteką ir iš naujo jutiklį per galios valdymo registrą, taip pat inicijuoti I2C komunikacijos OLED ekranu. Tada kitose eilutėse nustatykite ekrano orientaciją ir įveskite akselerometro ir giroskopo reikšmių registro adresą.
„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 () funkciją, pradėti skaityti akcelerometro duomenimis. Kiekvienos ašies duomenys saugomi dviem baitais (viršutiniame ir apatiniame) arba registruose. Norėdami juos visus perskaityti, pradėkite nuo pirmojo registro, o naudodamiesi funkcija requiestFrom () prašome perskaityti visus 6 ašių X, Y ir Z registrus. Tada mes perskaitėme kiekvieno registro duomenis ir, kadangi išėjimai yra du papildymai, derinkite juos tinkamai, kad gautumėte visas akselerometro reikšmes.
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 (); }
Dabar ciklo funkcijos viduje pirmiausia perskaitykite X, Y ir Z ašių reikšmes ir gavę 3 ašių vertes, apskaičiuokite bendrą pagreičio vektorių, imdami X, Y ir Z ašių verčių kvadratinę šaknį. Tada apskaičiuokite dabartinio vektoriaus ir ankstesnio vektoriaus skirtumą ir, jei skirtumas didesnis nei 6, padidinkite žingsnių skaičių.
getAccel (); vektorius = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vektorius - vektorius ankstesnis; if (totalvector> 6) {Žingsniai ++; } OzOled.printString („Žingsniai“, 0, 4); „OzOled.printNumber“ (0, 8, 4 žingsniai); vektorius ankstesnis = vektorius; vėlavimas (600);
Pasivaikščiokime savo „Arduino Step Counter“
Baigę surinkti PCB, prijunkite „ATtiny85“ prie programuotojo plokštės ir įkelkite kodą. Dabar paimkite žingsnių skaitiklio sąranką į savo rankas ir pradėkite žingsnis po žingsnio, jame turėtų būti rodomas OLED žingsnių skaičius. Kartais tai padidina žingsnių skaičių, kai sąranka vibruoja labai greitai arba labai lėtai.
Taip galite sukurti savo „ Step Counter“ naudodami „ATtiny85“ ir „MPU6050“. Visą projekto darbą taip pat galite rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad jums patiko projektas ir jums buvo įdomu kurti savo. Jei turite klausimų, palikite juos komentarų skiltyje žemiau.