- Componenten vereist
- ADXL335 Versnellingsmeter
- Schakelschema
- Hoe stappenteller werkt?
- Programmering van de Arduino-stappenteller
- De Arduino-stappenteller testen
Fitnessbands worden tegenwoordig erg populair, die niet alleen de voetstappen tellen, maar ook je verbrande calorieën bijhouden, hartslag, showtime en nog veel meer weergeven. En deze IoT-apparaten worden gesynchroniseerd met de cloud, zodat u gemakkelijk alle geschiedenis van uw fysieke activiteit op een smartphone kunt krijgen. We hebben ook een op IoT gebaseerd patiëntbewakingssysteem gebouwd waarbij de kritieke gegevens naar ThingSpeak zijn gestuurd om overal te worden bewaakt.
Stappentellers zijn de apparaten die alleen gebruikt werden om voetstappen te tellen. Dus in deze tutorial gaan we een eenvoudige en goedkope DIY-stappenteller bouwen met Arduino en accelerometer. Deze stappenteller telt het aantal voetstappen en geeft deze weer op een 16x2 LCD-module. Deze stappenteller kan worden geïntegreerd met deze Arduino Smart Watch.
Componenten vereist
- Arduino Nano
- ADXL 335 Versnellingsmeter
- 16 * 2 LCD
- LCD I2C-module
- Batterij
ADXL335 Versnellingsmeter
De ADXL335 is een complete 3-assige analoge versnellingsmeter en werkt volgens het principe van capacitieve detectie. Het is een kleine, dunne module met laag vermogen met een polysilicium oppervlak-micro machinaal bewerkte sensor en signalen conditioneringsschakelingen. De ADXL335-versnellingsmeter kan zowel de statische als de dynamische versnelling meten. Hier in dit Arduino-stappentellerproject zal de ADXL335-versnellingsmeter fungeren als een stappentellersensor.
Een Accelerometer is een apparaat dat versnelling in elke richting kan omzetten in zijn respectievelijke variabele spanning. Dit wordt bereikt door condensatoren te gebruiken (zie afbeelding), aangezien de Accel beweegt, zal de condensator die erin aanwezig is ook veranderingen ondergaan (zie afbeelding) op basis van de beweging, aangezien de capaciteit wordt gevarieerd, kan ook een variabele spanning worden verkregen.
Hieronder staan de afbeeldingen voor Accelerometer vanaf de voor- en achterkant, samen met de pinbeschrijving-
Pin Beschrijving van accelerometer:
- Vcc- 5 volt voeding moet op deze pin worden aangesloten.
- X-OUT- Deze pin geeft een analoge uitgang in x-richting
- Y-OUT- Deze pin geeft een analoge uitgang in y-richting
- Z-OUT- Deze pin geeft een analoge uitgang in z-richting
- GND-aarde
- ST- Deze pin wordt gebruikt om de gevoeligheid van de sensor in te stellen
We bouwen veel projecten met behulp van Accelerometer ADXL335, waaronder een gebarengestuurde robot, aardbevingsdetectoralarm, pingpongspel, enz.
Schakelschema
Het schakelschema voor de Arduino Accelerometer-stappenteller wordt hieronder weergegeven.
In dit circuit werken we samen met Arduino Nano met ADXL335 Accelerometer. X-, Y- en Z-pinnen van de versnellingsmeter zijn verbonden met analoge pinnen (A1, A2 en A3) van Arduino Nano. Om 16x2 LCD-modules te koppelen aan Arduino, gebruiken we de I2C-module. SCL- en SDA-pinnen van de I2C-module zijn respectievelijk verbonden met A5- en A4-pinnen van Arduino Nano. Volledige aansluitingen worden gegeven in de onderstaande tabel:
Arduino Nano | ADXL335 |
3.3V | VCC |
GND | GND |
A1 | X |
A2 | Y |
A3 | Z |
Arduino Nano | LCD I2C-module |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
We hebben deze stappenteller eerst gebouwd met behulp van een Arduino- setup op een breadboard
En na succesvolle tests hebben we het gerepliceerd op Perfboard door alle componenten op Perfboard te solderen, zoals hieronder wordt weergegeven:
Hoe stappenteller werkt?
Een stappenteller berekent het totale aantal stappen dat een persoon heeft genomen met behulp van de drie bewegingscomponenten die voorwaarts, verticaal en zijwaarts zijn. Het stappentellersysteem gebruikt een versnellingsmeter om deze waarden te krijgen. Accelerometer werkt continu de maximum- en minimumwaarden van de 3-assige acceleratie bij na elk gedefinieerd nr. van monsters. De gemiddelde waarde van deze 3-assige (Max + Min) / 2, wordt het dynamische drempelniveau genoemd, en deze drempelwaarde wordt gebruikt om te beslissen of de stap al dan niet wordt genomen.
Tijdens het hardlopen kan de stappenteller in elke richting staan, dus berekent de stappenteller de stappen met behulp van de as waarvan de versnellingsverandering het grootst is.
Laat me je nu een kort overzicht geven van de werking van deze Arduino-stappenteller:
- Ten eerste start de stappenteller de kalibratie zodra deze van stroom wordt voorzien.
- Vervolgens haalt het in de lege lusfunctie continu de gegevens op van de X-, Y- en Z-as.
- Daarna berekent het de totale versnellingsvector vanaf het startpunt.
- De versnellingsvector is de vierkantswortel (x ^ 2 + y ^ 2 + z ^ 2) van de X-, Y- en Z-aswaarden.
- Vervolgens vergelijkt het de gemiddelde versnellingswaarden met de drempelwaarden om het stapnummer te tellen.
- Als de versnellingsvector de drempelwaarde overschrijdt, verhoogt hij de stappentelling; anders worden de ongeldige trillingen weggegooid.
Programmering van de Arduino-stappenteller
De volledige Arduino-stappentellercode vindt u aan het einde van dit document. Hier leggen we enkele belangrijke fragmenten van deze code uit.
Start zoals gewoonlijk de code door alle vereiste bibliotheken op te nemen. De ADXL335-versnellingsmeter heeft geen bibliotheek nodig omdat deze een analoge uitvoer geeft.
# omvatten
Definieer daarna de Arduino-pinnen, waarop de versnellingsmeter is aangesloten.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Definieer de drempelwaarde voor de versnellingsmeter. Deze drempelwaarde wordt vergeleken met de versnellingsvector om het aantal stappen te berekenen.
zwevende drempel = 6;
Binnen de lege opstelling kalibreert de functie het systeem wanneer het wordt gevoed.
ijken();
Binnen de leegte-lusfunctie leest het de X-, Y- en Z-aswaarden voor 100 monsters.
for (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); vertraging (1); yaccl = float (analogRead (ypin) - 346); vertraging (1); zaccl = float (analogRead (zpin) - 416); vertraging (1);
Bereken na het verkrijgen van de waarden op drie assen de totale versnellingsvector door de vierkantswortel te nemen uit waarden op de X-, Y- en Z-as.
totvect = sqrt (((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Bereken vervolgens het gemiddelde van de maximale en minimale acceleratievectorwaarden.
totave = (totvect + totvect) / 2;
Vergelijk nu de gemiddelde versnelling met de drempel. Als het gemiddelde groter is dan de drempel, verhoog dan het aantal stappen en hef de vlag.
if (totave> drempel && vlag == 0) {stappen = stappen + 1; vlag = 1; }
Als het gemiddelde groter is dan de drempel maar de vlag is gehesen, doe dan niets.
else if (totave> threshold && flag == 1) {// Don't Count}
Als het totale gemiddelde lager is dan de drempel en de vlag wordt gehesen, zet dan de vlag neer.
if (totave <drempel && vlag == 1) {vlag = 0; }
Druk het aantal stappen af op seriële monitor en LCD.
Serial.println (stappen); lcd.print ("Stappen:"); lcd.print (stappen);
De Arduino-stappenteller testen
Zodra je hardware en code klaar zijn, sluit je de Arduino aan op de laptop en upload je de code. Neem nu de instelling van de stappenteller in uw handen en begin stap voor stap te lopen, het zou het aantal stappen op het LCD-scherm moeten weergeven. Soms verhoogt het het aantal stappen wanneer de stappenteller heel snel of heel langzaam trilt.
De volledige werkende video en code voor de ADXL335 stappenteller Arduino worden hieronder gegeven.