- Komponenter krävs
- MPU6050 sensormodul - En kort introduktion
- Attiny85 Step Counter Circuit Diagram
- Tillverkar PCB för Attiny85 Step Counter
- Beställa PCB från PCBWay
- Montering av ATtiny85 Step Counter PCB
- ATtiny85 Step Counter Code Förklaring
- Låt oss ta vår Arduino Step Counter på en promenad
I den här handledningen ska vi bygga en enkel och billig stegräknare med ATtiny85 IC, MPU6050 Accelerometer & Gyroscope och OLED Display Module. Den här enkla Arduino-baserade stegräknaren drivs av en 3V-myntcell, vilket gör det enkelt att bära när du går ut eller går. Det kräver också mycket få komponenter att bygga och koden är också relativt enkel. Programmet i detta projekt använder MPU6050 för att mäta accelerationens storlek längs 3-axeln (X, Y och Z). Därefter beräknar den skillnaden i accelerationsstorlek mellan föregående och aktuella värden. Om skillnaden är större än ett visst tröskelvärde (för att gå större än 6 och för att springa större än 10) ökar det stegräkningen i enlighet därmed. De totala steg som tagits visas sedan på OLED Display.
För att bygga denna bärbara stegräknare på ett kretskort har vi tillverkat våra kretskort från PCBWay och vi kommer att montera och testa detsamma i detta projekt. Om du vill lägga till fler funktioner kan du också lägga till en Heartbeat-skärm i den här installationen och vi har också tidigare byggt en Arduino accelerometer stegräknare med ADXL335, kolla in dem om du är intresserad.
Komponenter krävs
För att bygga denna stegräknare med Arduino behöver du följande komponenter.
- Attiny85 IC
- MPU6050
- OLED-skärmmodul
- 2 × tryckknappar
- 5 × 10KΩ motstånd (SMD)
MPU6050 sensormodul - En kort introduktion
MPU6050 är baserad på MEMS-teknik (Micro-Mechanical Systems). Denna sensor har en 3-axlig accelerometer, ett 3-axligt gyroskop och en inbyggd temperatursensor. Den kan användas för att mäta parametrar som acceleration, hastighet, orientering, förskjutning etc. Vi har tidigare gränssnitt MPU6050 med Arduino och Raspberry pi och byggt också några projekt med den som - Självbalanseringsrobot, Arduino Digital Protractor och Arduino Inclinometer.
MPU6050-modulen är liten i storlek och har låg energiförbrukning, hög repetition, hög chocktolerans och låga användarprispunkter. MPU6050 levereras med en I2C-buss och ett extra I2C-bussgränssnitt och kan enkelt störa andra sensorer som magnetometrar och mikrokontroller.
Attiny85 Step Counter Circuit Diagram
Schemat för MPU6050 stegräknare ges nedan:
Ovanstående bild visar kretsschemat för gränssnitt mellan MPU6050 och OLED-skärm med Attiny85 IC. Gränssnittet mellan MPU6050, OLED Display och Arduino måste implementeras med hjälp av I2C-protokollet. Därför är SCLPin (PB2) på ATtiny85 ansluten till SCLPin på MPU6050 respektive OLED-skärmen. På samma sätt är SDAPin (PB0) i ATtiny85 ansluten till SDAPin på MPU6050 och OLED-skärmen. Två tryckknappar är också anslutna till PB3- och PB4-stiftet på ATtiny85 IC. Dessa knappar kan användas för att bläddra i texten eller ändra texten på displayen.
Obs: Följ vår tidigare handledning Programmering ATtiny85 IC direkt via USB med Digispark Bootloader för att programmera ATtiny85 IC via USB och Digispark Boot-loader.
Tillverkar PCB för Attiny85 Step Counter
Schemat är klar och vi kan fortsätta med att lägga ut kretskortet. Du kan designa PCB med valfri PCB-programvara. Vi har använt EasyEDA för att tillverka PCB för detta projekt.
Nedan visas 3D-modellvyerna av toppskiktet och bottenlagret på Step Counter PCB:
PCB-layouten för ovanstående krets är också tillgänglig för nedladdning som Gerber från länken nedan:
- Gerber-fil för ATtiny85 Step Counter
Beställa PCB från PCBWay
Efter att ha slutfört designen kan du fortsätta med att beställa kretskortet:
Steg 1: Gå in på https://www.pcbway.com/, registrera dig om det är första gången. Ange sedan måtten på din PCB, antalet lager och antalet PCB du behöver på fliken PCB Prototype.
Steg 2: Fortsätt genom att klicka på knappen "Citera nu". Du kommer till en sida där du kan ställa in några ytterligare parametrar som korttyp, lager, material för kretskort, tjocklek och mer, de flesta är valda som standard, om du väljer några specifika parametrar kan du välja det här.
Steg 3: Det sista steget är att ladda upp Gerber-filen och fortsätta med betalningen. För att säkerställa att processen är smidig verifierar PCBWAY om din Gerber-fil är giltig innan du fortsätter med betalningen. På så sätt kan du vara säker på att din PCB är tillverkningsvänlig och når dig som engagerad.
Montering av ATtiny85 Step Counter PCB
Efter några dagar fick vi vår PCB i ett snyggt paket och PCB-kvaliteten var som alltid bra. Brädans översta och undre lager visas nedan:
Efter att ha kontrollerat att spåren och fotspåren var korrekta. Jag fortsatte med att montera kretskortet. Det helt lödda kortet ser ut som nedan:
ATtiny85 Step Counter Code Förklaring
Den kompletta Arduino stegräknarkoden ges i slutet av dokumentet. Här förklarar vi några viktiga delar av koden.
Koden använder biblioteken TinyWireM.h & TinyOzOLED.h. TinyWireM-biblioteket kan laddas ner från Library Manager i Arduino IDE och installeras därifrån. För det, öppna Arduino IDE och gå till Skiss <Inkludera bibliotek <Hantera bibliotek . Sök nu efter TinyWireM.h och installera TinyWireM-biblioteket av Adafruit.
Medan TinyOzOLED.h-biblioteket kan laddas ner från de angivna länkarna.
Efter att ha installerat biblioteken till Arduino IDE, starta koden genom att inkludera de biblioteksfiler som behövs.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Efter att ha inkluderat biblioteken, definiera variablerna för att lagra Accelerometer-avläsningarna.
intaccelX, accelY, accelZ;
Inuti setup () -slingan, initialisera trådbiblioteket och återställ sensorn genom energihanteringsregistret, initiera också I2C-kommunikationen för OLED-skärm. Ställ sedan in visningsorienteringen i nästa rader och ange registeradressen för accelerometer- och gyroskopvärden.
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, börja med att läsa accelerometerdata. Data för varje axel lagras i två byte (övre och nedre) eller register. För att läsa dem alla, börja med det första registret och använda funktionen requiestFrom () , begär vi att läsa alla 6 register för X-, Y- och Z-axlarna. Sedan läser vi data från varje register, och eftersom utgångarna är två komplement, kombinera dem på rätt sätt för att få de kompletta accelerometervärdena.
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 inuti loopfunktionen, läs först X-, Y- och Z-axelvärdena och efter att ha fått 3-axelvärdena, beräkna den totala accelerationsvektorn genom att ta kvadratroten av X-, Y- och Z-axelvärdena. Beräkna sedan skillnaden mellan den aktuella vektorn och den tidigare vektorn och om skillnaden är större än 6, öka sedan stegräkningen.
getAccel (); vektor = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; if (totalvector> 6) {Steps ++; } OzOled.printString ("Steps", 0, 4); OzOled.printNumber (Steg, 0, 8, 4); vectorprevious = vektor; fördröjning (600);
Låt oss ta vår Arduino Step Counter på en promenad
När du är klar med att montera kretskortet ansluter du ATtiny85 till programmeringskortet och laddar upp koden. Ta nu stegräknarinställningen i dina händer och börja gå steg för steg, den ska visa antalet steg på OLED. Ibland ökar antalet steg när installationen vibrerar mycket snabbt eller mycket långsamt.
Så här kan du bygga din egen stegräknare med ATtiny85 och MPU6050. Det fullständiga arbetet med projektet finns också i videon som länkas nedan. Hoppas du gillade projektet och tyckte att det var intressant att bygga ditt eget. Om du har några frågor, vänligen lämna dem i kommentarfältet nedan.