- Nepieciešamās sastāvdaļas
- MPU6050 sensora modulis - īss ievads
- Attiny85 pakāpienu skaitītāja shēmas diagramma
- Attiny85 Step Counter PCB izgatavošana
- PCB pasūtīšana no PCBWay
- ATtiny85 Step Counter PCB montāža
- ATtiny85 soļu skaitītāja koda skaidrojums
- Pastaigāsimies ar savu Arduino Step Counter
Šajā apmācībā mēs izveidosim vienkāršu un lētu soļu skaitītāju, izmantojot ATtiny85 IC, MPU6050 akselerometru un žiroskopu un OLED displeja moduli. Šo vienkāršo uz Arduino balstīto pakāpienu skaitītāju darbina 3V monētu šūna, kas atvieglo to pārvadāšanu, dodoties pastaigā vai skriešanā. Tas arī prasa ļoti maz komponentu, lai izveidotu, un kods ir arī salīdzinoši vienkāršs. Šī projekta programma izmanto MPU6050, lai izmērītu paātrinājuma lielumu pa 3 asi (X, Y un Z). Tad tas aprēķina paātrinājuma lieluma starpību starp iepriekšējām un pašreizējām vērtībām. Ja starpība ir lielāka par noteiktu slieksni (staigāšanai virs 6 un skriešanai virs 10), tā attiecīgi palielina soļu skaitu. Tad kopējais veikto darbību skaits tiek parādīts OLED displejā.
Lai izveidotu šo pārnēsājamo pakāpienu skaitītāju uz PCB, mēs esam izgatavojuši mūsu PCB plāksnes no PCBWay, un mēs to samontēsim un pārbaudīsim šajā projektā. Ja vēlaties pievienot vairāk funkciju, šai iestatīšanai varat pievienot arī Heartbeat monitoru, un mēs arī iepriekš esam izveidojuši Arduino akselerometra pakāpienu skaitītāju, izmantojot ADXL335, pārbaudiet tos, ja jūs interesē.
Nepieciešamās sastāvdaļas
Lai izveidotu šo pedometru, izmantojot Arduino, jums būs nepieciešami šādi komponenti.
- Attiny85 IC
- MPU6050
- OLED displeja modulis
- 2 × spiedpogas
- 5 × 10KΩ rezistori (SMD)
MPU6050 sensora modulis - īss ievads
MPU6050 pamatā ir mikromehānisko sistēmu (MEMS) tehnoloģija. Šim sensoram ir 3 asu akselerometrs, 3 asu žiroskops un iebūvēts temperatūras sensors. To var izmantot, lai izmērītu tādus parametrus kā paātrinājums, ātrums, orientācija, pārvietošanās utt. Mēs jau iepriekš esam saskarnē MPU6050 ar Arduino un Raspberry pi, kā arī izveidojām dažus projektus, piemēram, pašbalansējošais robots, Arduino Digital Protractor un Arduino Inclinometer.
MPU6050 modulis ir maza izmēra, un tam ir mazs enerģijas patēriņš, liela atkārtošanās spēja, augsta triecienizturība un zemas lietotāja cenas. MPU6050 ir aprīkots ar I2C kopni un papildu I2C kopnes saskarni, un tas var viegli traucēt citus sensorus, piemēram, magnetometrus un mikrokontrollerus.
Attiny85 pakāpienu skaitītāja shēmas diagramma
MPU6050 Step Counter shēma ir sniegta zemāk:
Iepriekš redzamajā attēlā parādīta shēma MPU6050 un OLED displeja saskarnei ar Attiny85 IC. Saskarne starp MPU6050, OLED Display un Arduino jāievieš, izmantojot I2C protokolu. Tādējādi ATtiny85 SCLPin (PB2) ir savienots attiecīgi ar MPU6050 un OLED displeja SCLPin. Līdzīgi ATtiny85 SDAPin (PB0) ir savienots ar MPU6050 un OLED displeja SDAPin. Divas spiedpogas ir savienotas arī ar ATtiny85 IC tapu PB3 un PB4. Šīs pogas var izmantot, lai ritinātu tekstu vai mainītu displejā redzamo tekstu.
Piezīme: Izpildiet mūsu iepriekšējo apmācību ATtiny85 IC programmēšana tieši caur USB, izmantojot Digispark Bootloader, lai programmētu ATtiny85 IC caur USB un Digispark Boot-loader.
Attiny85 Step Counter PCB izgatavošana
Shēma ir izveidota, un mēs varam turpināt izlikt PCB. Jūs varat noformēt PCB, izmantojot jebkuru izvēlēto PCB programmatūru. Mēs esam izmantojuši EasyEDA, lai izgatavotu PCB šim projektam.
Zemāk ir 3D skaitļa skati PCB Step Counter augšējā un apakšējā slānī:
Iepriekš minētās shēmas PCB izkārtojums ir pieejams lejupielādei kā Gerber no tālāk norādītās saites:
- Gerber fails ATtiny85 Step Counter
PCB pasūtīšana no PCBWay
Pēc dizaina pabeigšanas jūs varat turpināt pasūtīt PCB:
1. darbība: iekļūstiet vietnē https://www.pcbway.com/, reģistrējieties, ja tā ir jūsu pirmā reize. Pēc tam cilnē PCB Prototype ievadiet PCB izmērus, slāņu skaitu un nepieciešamo PCB skaitu.
2. solis: turpiniet, noklikšķinot uz pogas “Citēt tūlīt”. Jūs tiksiet novirzīts uz lapu, kurā iestatīsit dažus papildu parametrus, piemēram, plāksnes veidu, slāņus, materiālu PCB, biezumu un citus. Lielākā daļa no tiem ir atlasīti pēc noklusējuma. Ja izvēlaties kādus konkrētus parametrus, varat izvēlēties to šeit.
3. solis: pēdējais solis ir Gerber faila augšupielāde un maksājuma veikšana. Lai pārliecinātos, ka process ir vienmērīgs, pirms maksājuma turpināšanas PCBWAY pārbauda, vai jūsu Gerber fails ir derīgs. Tādā veidā jūs varat būt pārliecināts, ka jūsu PCB ir izgatavošanai draudzīgs un ar jums sazināsies kā apņēmies.
ATtiny85 Step Counter PCB montāža
Pēc dažām dienām mēs saņēmām mūsu PCB glītā iepakojumā, un PCB kvalitāte bija laba kā vienmēr. Dēļa augšējais un apakšējais slānis ir parādīti zemāk:
Pēc tam, kad esat pārliecinājies, ka pēdas un pēdas ir pareizas. Es turpināju salikt PCB. Pilnībā lodēts dēlis izskatās šādi:
ATtiny85 soļu skaitītāja koda skaidrojums
Pilnīgs Arduino soļu skaitītāja kods ir norādīts dokumenta beigās. Šeit mēs izskaidrojam dažas svarīgas koda daļas.
Kods izmanto bibliotēkas TinyWireM.h un TinyOzOLED.h. TinyWireM bibliotēku var lejupielādēt no bibliotēkas pārvaldnieka Arduino IDE un instalēt no turienes. Lai to izdarītu, atveriet Arduino IDE un dodieties uz Skice <Iekļaut bibliotēku <Pārvaldīt bibliotēkas . Tagad meklējiet TinyWireM.h un instalējiet TinyWireM bibliotēku no Adafruit.
Kamēr TinyOzOLED.h bibliotēku var lejupielādēt no norādītajām saitēm.
Pēc bibliotēku instalēšanas Arduino IDE sāciet kodu, iekļaujot nepieciešamos bibliotēku failus.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Pēc bibliotēku iekļaušanas definējiet mainīgos, lai saglabātu akselerometra rādījumus.
intaccelX, accelY, accelZ;
Inside uzstādīšana () cilpas, inicializēt vadu bibliotēku un reset sensoru caur jaudas vadību reģistrs arī inicializēt I2C paziņojumu par OLED displeju. Pēc tam nākamajās rindās iestatiet displeja orientāciju un ievadiet akselerometra un žiroskopa vērtību reģistra adresi.
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);
Jo getAccel () funkciju, vispirms lasot akselerometra datus. Katras ass dati tiek glabāti divos baitos (augšējā un apakšējā) vai reģistros. Lai tos visus izlasītu, sāciet ar pirmo reģistru, un, izmantojot funkciju requiestFrom () , mēs lūdzam nolasīt visus 6 asus X, Y un Z reģistrus. Tad mēs nolasām katra reģistra datus un, tā kā izejas ir divi papildinājumi, pareizi tos apvienojiet, lai iegūtu pilnīgas akselerometra vērtības.
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 (); }
Tagad cilpa funkcijas iekšpusē vispirms izlasiet X, Y un Z ass vērtības un pēc 3 asu vērtību iegūšanas aprēķiniet kopējo paātrinājuma vektoru, ņemot kvadrātsakni no X, Y un Z ass vērtībām. Pēc tam aprēķiniet starpību starp pašreizējo vektoru un iepriekšējo vektoru un, ja starpība ir lielāka par 6, tad palieliniet soļu skaitu.
getAccel (); vektors = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vektoru iepriekšējais; if (totalvector> 6) {Steps ++; } OzOled.printString ("Soļi", 0, 4); OzOled.printNumber (soļi, 0, 8, 4); vectorprevious = vektors; kavēšanās (600);
Pastaigāsimies ar savu Arduino Step Counter
Kad esat pabeidzis PCB montāžu, pievienojiet ATtiny85 pie programmētāja plates un augšupielādējiet kodu. Tagad paņemiet soli skaitītāja iestatīšanu savās rokās un sāciet soli pa solim, tajā vajadzētu parādīt OLED soļu skaitu. Dažreiz tas palielina darbību skaitu, kad iestatīšana vibrē ļoti ātri vai ļoti lēni.
Šādi jūs varat izveidot savu Step Counter, izmantojot ATtiny85 un MPU6050. Pilnīga projekta darbība ir atrodama arī zemāk esošajā videoklipā. Ceru, ka jums patika projekts un jums šķita interesanti izveidot savu. Ja jums ir kādi jautājumi, lūdzu, atstājiet tos komentāru sadaļā zemāk.