- Komponenter, der kræves
- MPU6050 sensormodul - En kort introduktion
- Attiny85 Step Counter Circuit Diagram
- Fabrikation af printkort til Attiny85 Step Counter
- Bestilling af printkort fra PCBWay
- Samling af ATtiny85 Step Counter PCB
- ATtiny85 Step Counter Code Forklaring
- Lad os tage vores Arduino Step Counter en tur
I denne vejledning skal vi bygge en nem og billig skridttæller ved hjælp af ATtiny85 IC, MPU6050 Accelerometer & Gyroscope og OLED Display Module. Denne enkle Arduino-baserede skridttæller er drevet af en 3V møntcelle, hvilket gør det let at bære, når du går en tur eller løber. Det kræver også meget få komponenter at bygge, og koden er også relativt enkel. Programmet i dette projekt bruger MPU6050 til at måle størrelsen af accelerationen langs 3-aksen (X, Y og Z). Derefter beregner den forskellen i accelerationsstørrelsen mellem de forrige og aktuelle værdier. Hvis forskellen er større end en bestemt tærskel (For at gå større end 6 og for at løbe større end 10), så øger det trinantal i overensstemmelse hermed. De samlede trin, der er taget, vises derefter på OLED Display.
For at bygge denne bærbare skridttæller på et printkort har vi fabrikeret vores printkort fra PCBWay, og vi vil samle og teste det samme i dette projekt. Hvis du vil tilføje flere funktioner, kan du også tilføje en Heartbeat-skærm til denne opsætning, og vi har også tidligere bygget en Arduino accelerometer skridtæller ved hjælp af ADXL335, tjek dem ud, hvis du er interesseret.
Komponenter, der kræves
For at bygge dette skridttæller ved hjælp af Arduino skal du bruge følgende komponenter.
- Attiny85 IC
- MPU6050
- OLED-skærmmodul
- 2 × trykknapper
- 5 × 10KΩ modstande (SMD)
MPU6050 sensormodul - En kort introduktion
MPU6050 er baseret på MEMS-teknologi (Micro-Mechanical Systems). Denne sensor har et 3-akset accelerometer, et 3-akset gyroskop og en indbygget temperatursensor. Det kan bruges til at måle parametre som acceleration, hastighed, orientering, forskydning osv. Vi har tidligere grænsefladen MPU6050 med Arduino og Raspberry pi og bygget også et par projekter ved hjælp af det som - Selvbalanceringsrobot, Arduino Digital Protractor og Arduino Inclinometer.
MPU6050-modulet er lille i størrelse og har lavt strømforbrug, høj gentagelse, høj stødtolerance og lave brugerprispoint. MPU6050 leveres med en I2C-bus og en ekstra I2C-busgrænseflade og kan let interferere med andre sensorer såsom magnetometre og mikrokontroller.
Attiny85 Step Counter Circuit Diagram
Skematisk skema for MPU6050 trin tæller er angivet nedenfor:
Ovenstående billede viser kredsløbsdiagrammet til grænseflade mellem MPU6050 og OLED-skærm med Attiny85 IC. Grænsefladen mellem MPU6050, OLED Display og Arduino skal implementeres ved hjælp af I2C-protokol. Derfor er SCLPin (PB2) i ATtiny85 forbundet til SCLPin på henholdsvis MPU6050 og OLED Display. På samme måde er SDAPin (PB0) på ATtiny85 forbundet til SDAPin på MPU6050 og OLED-skærmen. To trykknapper er også forbundet til PB3- og PB4-stiften på ATtiny85 IC. Disse knapper kan bruges til at rulle teksten eller ændre teksten på displayet.
Bemærk: Følg vores tidligere tutorial Programmering ATtiny85 IC direkte via USB ved hjælp af Digispark Bootloader til at programmere ATtiny85 IC via USB og Digispark Boot-loader.
Fabrikation af printkort til Attiny85 Step Counter
Skematisk er færdig, og vi kan fortsætte med at lægge printkortet ud. Du kan designe printkortet ved hjælp af hvilken som helst pcb-software, du vælger. Vi har brugt EasyEDA til at fremstille PCB til dette projekt.
Nedenfor er 3D-modelvisningerne af det øverste og nederste lag af Step Counter PCB:
Printkortlayoutet til ovenstående kredsløb kan også downloades som Gerber fra nedenstående link:
- Gerber-fil til ATtiny85 Step Counter
Bestilling af printkort fra PCBWay
Efter endt færdiggørelse af designet kan du fortsætte med at bestille printkortet:
Trin 1: Gå ind på https://www.pcbway.com/, tilmeld dig, hvis det er første gang. Indtast derefter dimensionerne på din PCB, antallet af lag og antallet af PCB, du har brug for, på fanen PCB Prototype.
Trin 2: Fortsæt ved at klikke på knappen 'Citér nu'. Du føres til en side, hvor du kan indstille et par ekstra parametre som korttype, lag, materiale til printkort, tykkelse og mere, de fleste af dem er valgt som standard. Hvis du vælger specifikke parametre, kan du vælge det herinde.
Trin 3: Det sidste trin er at uploade Gerber-filen og fortsætte med betalingen. For at sikre, at processen er glat, verificerer PCBWAY, om din Gerber-fil er gyldig, inden du fortsætter med betalingen. På denne måde kan du være sikker på, at dit print er fabrikationsvenligt og når dig som engageret.
Samling af ATtiny85 Step Counter PCB
Efter et par dage modtog vi vores PCB i en pæn pakke, og PCB-kvaliteten var som altid god. Det øverste lag og det nederste lag af tavlen er vist nedenfor:
Efter at have sørget for, at sporene og fodsporene var korrekte. Jeg fortsatte med at samle printkortet. Det fuldstændigt lodde bord ser ud som nedenfor:
ATtiny85 Step Counter Code Forklaring
Den komplette Arduino-skridttællerkode gives i slutningen af dokumentet. Her forklarer vi nogle vigtige dele af koden.
Koden bruger bibliotekerne TinyWireM.h & TinyOzOLED.h. TinyWireM-biblioteket kan downloades fra Library Manager i Arduino IDE og installeres derfra. For det skal du åbne Arduino IDE og gå til Skitse <Inkluder bibliotek <Administrer biblioteker . Søg nu efter TinyWireM.h og installer TinyWireM-biblioteket af Adafruit.
Mens biblioteket TinyOzOLED.h kan downloades fra de givne links.
Efter installation af bibliotekerne til Arduino IDE skal du starte koden ved at inkludere de nødvendige biblioteksfiler.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Efter inkludering af bibliotekerne defineres variablerne til lagring af accelerometermålingerne.
intaccelX, accelY, accelZ;
Inde i setup () -sløjfen, initialiser ledningsbiblioteket og nulstil sensoren gennem strømstyringsregistret, initialiser også I2C-kommunikationen til OLED-skærm. Derefter indstiller displayretningen i de næste linjer og indtaster registeradressen for accelerometer- og gyroskopværdier.
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 () -funktionen skal du starte med at læse accelerometerdataene. Dataene for hver akse lagres i to bytes (øvre og nedre) eller registre. For at kunne læse dem alle, starte med det første register og bruge funktionen requiestFrom () , anmoder vi om at læse alle 6 registre for X-, Y- og Z-akserne. Derefter læser vi dataene fra hvert register, og fordi output er to's komplement, kombiner dem korrekt for at få de komplette accelerometerværdier.
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 (); }
Nu inden i loop-funktionen skal du først læse X-, Y- og Z-akse-værdierne, og efter at have fået 3-akse-værdierne, skal du beregne den samlede accelerationsvektor ved at tage kvadratroden af X-, Y- og Z-akse-værdier. Beregn derefter forskellen mellem den aktuelle vektor og den forrige vektor, og hvis forskellen er større end 6, så øg trinantalet.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Trin ++; } OzOled.printString ("Trin", 0, 4); OzOled.printNumber (trin, 0, 8, 4); vectorprevious = vektor; forsinkelse (600);
Lad os tage vores Arduino Step Counter en tur
Når du er færdig med at samle printkortet, skal du slutte ATtiny85 til programmørkortet og uploade koden. Tag nu trinopstillingsopsætningen i dine hænder, og begynd at gå trin for trin, det skal vise antallet af trin på OLED. Nogle gange øger det antallet af trin, når opsætningen vibrerer meget hurtigt eller meget langsomt.
Sådan kan du opbygge din egen Step Counter ved hjælp af ATtiny85 og MPU6050. Den komplette bearbejdning af projektet kan også findes i videoen, der er linket nedenfor. Håber du nød projektet og fandt det interessant at bygge dit eget. Hvis du har spørgsmål, skal du lade dem være i kommentarfeltet nedenfor.