- Komponenter kreves
- MPU6050 sensormodul - en kort introduksjon
- Attiny85 Step Counter Circuit Diagram
- Fabrikasjon av PCB for Attiny85 Step Counter
- Bestille PCB fra PCBWay
- Montering av ATtiny85 Step Counter PCB
- ATtiny85 Step Counter Code Forklaring
- La oss ta Arduino Step Counter en tur
I denne opplæringen skal vi bygge en enkel og billig skritteller ved hjelp av ATtiny85 IC, MPU6050 Accelerometer & Gyroscope, og OLED Display Module. Denne enkle Arduino-baserte trinntelleren drives av en 3V myntcelle, noe som gjør det enkelt å bære når du går en tur eller jogger. Det krever også svært få komponenter å bygge, og koden er også relativt enkel. Programmet i dette prosjektet bruker MPU6050 til å måle størrelsen på akselerasjonen langs 3-aksen (X, Y og Z). Deretter beregner den forskjellen på akselerasjonsstørrelsen mellom forrige og nåværende verdi. Hvis forskjellen er større enn en viss terskel (For å gå større enn 6 og for å løpe større enn 10), øker den trinntellingen tilsvarende. De totale trinnene som er tatt vises deretter på OLED Display.
For å bygge denne bærbare trinntelleren på et PCB har vi produsert PCB-kortene våre fra PCBWay, og vi vil montere og teste det samme i dette prosjektet. Hvis du vil legge til flere funksjoner, kan du også legge til en Heartbeat-skjerm i dette oppsettet, og vi har også tidligere bygget en Arduino akselerometer trinnteller ved hjelp av ADXL335, sjekk dem ut hvis du er interessert.
Komponenter kreves
For å bygge denne skrittelleren ved hjelp av Arduino, trenger du følgende komponenter.
- Attiny85 IC
- MPU6050
- OLED-skjermmodul
- 2 × trykknapper
- 5 × 10KΩ motstander (SMD)
MPU6050 sensormodul - en kort introduksjon
MPU6050 er basert på MEMS-teknologi (Micro-Mechanical Systems). Denne sensoren har et 3-akset akselerometer, et 3-akset gyroskop og en innebygd temperatursensor. Den kan brukes til å måle parametere som Acceleration, Velocity, Orientation, Displacement, etc. Vi har tidligere grensesnitt MPU6050 med Arduino og Raspberry pi og bygde også noen få prosjekter ved hjelp av den som - Self Balancing robot, Arduino Digital Protractor og Arduino Inclinometer.
MPU6050-modulen er liten i størrelse og har lavt strømforbruk, høy repetisjon, høy sjokktoleranse og lave brukerprispunkter. MPU6050 leveres med en I2C-buss og et I2C-bussgrensesnitt og kan lett forstyrre andre sensorer som magnetometre og mikrokontrollere.
Attiny85 Step Counter Circuit Diagram
Skjematisk beskrivelse for MPU6050 trinnteller er gitt nedenfor:
Ovenstående bilde viser kretsskjemaet for grensesnitt MPU6050 og OLED-skjerm med Attiny85 IC. Grensesnittet mellom MPU6050, OLED Display og Arduino må implementeres ved hjelp av I2C Protocol. Derfor er SCLPin (PB2) til ATtiny85 koblet til SCLPin på henholdsvis MPU6050 og OLED Display. Tilsvarende er SDAPin (PB0) til ATtiny85 koblet til SDAPin på MPU6050 og OLED-skjermen. To trykknapper er også koblet til PB3- og PB4-pinnen på ATtiny85 IC. Disse knappene kan brukes til å bla i teksten eller endre teksten som vises.
Merk: Følg vår forrige opplæring Programmering ATtiny85 IC direkte via USB ved hjelp av Digispark Bootloader for å programmere ATtiny85 IC gjennom USB og Digispark Boot-loader.
Fabrikasjon av PCB for Attiny85 Step Counter
Skjematisk er ferdig, og vi kan fortsette med å legge ut PCB. Du kan designe PCB med hvilken som helst PCB-programvare du ønsker. Vi har brukt EasyEDA til å produsere PCB for dette prosjektet.
Nedenfor er 3D-modellvisningene av topplaget og bunnlaget på Step Counter PCB:
PCB-oppsettet for kretsen ovenfor er også tilgjengelig for nedlasting som Gerber fra lenken nedenfor:
- Gerber-fil for ATtiny85 Step Counter
Bestille PCB fra PCBWay
Nå etter at du er ferdig med designet, kan du fortsette med å bestille PCB:
Trinn 1: Gå inn på https://www.pcbway.com/, registrer deg hvis dette er første gang. Deretter skriver du inn dimensjonene på PCB-en, antall lag og antall PCB du trenger i kategorien PCB-prototype.
Trinn 2: Fortsett ved å klikke på "Sitat nå" -knappen. Du vil bli ført til en side der du kan angi noen ekstra parametere som brettetype, lag, materiale for PCB, tykkelse og mer. De fleste av dem er valgt som standard. Hvis du velger noen spesifikke parametere, kan du velge det her inne.
Trinn 3: Det siste trinnet er å laste opp Gerber-filen og fortsette med betalingen. For å sikre at prosessen er jevn, verifiserer PCBWAY om Gerber-filen din er gyldig før du fortsetter med betalingen. På denne måten kan du være sikker på at PCB er fabrikasjonsvennlig og vil nå deg som engasjert.
Montering av ATtiny85 Step Counter PCB
Etter noen dager mottok vi PCB-en i en pen pakke, og PCB-kvaliteten var god som alltid. Det øverste laget og det nederste laget av brettet er vist nedenfor:
Etter å ha sørget for at sporene og fotavtrykkene var riktige. Jeg fortsatte med å montere PCB. Det fullstendig loddede brettet ser ut som nedenfor:
ATtiny85 Step Counter Code Forklaring
Den komplette Arduino trinntellerkoden er gitt på slutten av dokumentet. Her forklarer vi noen viktige deler av koden.
Koden bruker TinyWireM.h & TinyOzOLED.h-bibliotekene. TinyWireM-biblioteket kan lastes ned fra Library Manager i Arduino IDE og installeres derfra. For det, åpne Arduino IDE og gå til Sketch <Include Library <Manage Libraries . Søk nå etter TinyWireM.h og installer TinyWireM-biblioteket av Adafruit.
Mens TinyOzOLED.h-biblioteket kan lastes ned fra gitte lenker.
Etter at du har installert bibliotekene til Arduino IDE, starter du koden ved å inkludere de nødvendige biblioteksfilene.
# inkluderer "TinyWireM.h" # inkluderer "TinyOzOLED.h"
Etter å ha tatt med bibliotekene, definerer du variablene som skal lagre akselerometeravlesningene.
intaccelX, accelY, accelZ;
Inne i setup () -løkken, initialiser ledningsbiblioteket og tilbakestill sensoren gjennom strømstyringsregisteret, og initialiser også I2C-kommunikasjonen for OLED-skjerm. I de neste linjene angir du visningsretningen og angir registeradressen for akselerometer- og gyroskopverdier.
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);
I getAccel () -funksjonen, start med å lese akselerometerdataene. Dataene for hver akse lagres i to byte (øvre og nedre) eller registre. For å lese dem alle, starte med det første registeret, og bruke funksjonen requiestFrom () , ber vi om å lese alle 6 registerene for X-, Y- og Z-aksene. Så leser vi dataene fra hvert register, og fordi utgangene er to komplement, kombiner dem på riktig måte for å få de komplette akselerometerverdiene.
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 (); }
Nå inne i sløyfefunksjonen, les først X-, Y- og Z-akseverdiene, og etter å ha fått 3-akseverdiene, beregne den totale akselerasjonsvektoren ved å ta kvadratroten av X-, Y- og Z-akseverdiene. Beregn deretter forskjellen mellom den nåværende vektoren og den forrige vektoren, og hvis forskjellen er større enn 6, øk trinntellingen.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; hvis (totalvektor> 6) {Steps ++; } OzOled.printString ("Steps", 0, 4); OzOled.printNumber (trinn, 0, 8, 4); vectorprevious = vektor; forsinkelse (600);
La oss ta Arduino Step Counter en tur
Når du er ferdig med å montere PCB, kobler du ATtiny85 til programmererbordet og laster opp koden. Ta nå trinntelleroppsettet i hendene og begynn å gå trinn for trinn, det skal vise antall trinn på OLED. Noen ganger øker det antall trinn når oppsettet vibrerer veldig raskt eller veldig sakte.
Slik kan du bygge din egen Step Counter ved hjelp av ATtiny85 og MPU6050. Fullstendig bearbeiding av prosjektet finner du også i videoen som er lenket nedenfor. Håper du likte prosjektet og syntes det var interessant å bygge ditt eget. Hvis du har spørsmål, kan du legge dem igjen i kommentarfeltet nedenfor.