Arduino Pedometer Watch, med temperatur, höjd och kompass! (5 / 6 steg)
Steg 5: Stegräknaren:
Vanligtvis, är stegräknare gjorda genom att beräkna pulsen på accelerometrar på Z-axeln, eftersom sensorn är placerad på ett bälte nära bröstet av personen. Den här gången hur klockan var på handleden, vore det vettigt bara Z värdet, eftersom handleden rör sig på många sätt. Armen går dock framåt och bakåt när du går eller kör. Så från början jag räknat ut att summan av värdena S = | X| + | Y| + | Z| skulle öka och minska på varje steg. Genom att beräkna det glidande medelvärdet på de senaste N värden för S (Av = SUM(S)n/N) och jämföra dem med det aktuella tillfället s jag kunde säga: om Sn-1 < = Av och Sn > Av sedan lägga till ett steg counter (bild 1).
Naturligtvis, om du studsa eller flytta din arm, räknaren skulle lägga till ett steg (falska läsning). Så la jag en minsta gräns för Av, som på bilden, det kan vara 22000. Nedan skulle detta innebära du flyttar din arm, men inte gå. Högre värden för Av, till exempel 30000 menar du kör (syns på bilden).
Efter några tester upptäckte jag att flytta armen hade en summa av accelerationer riktigt nära promenader, så jag var tvungen att hitta ett sätt att identifiera en från den andra. Jag gjorde det:
- S = | X| + | Y| + | Z| för ett givet ögonblick.
- SM = det högsta värdet för S under de senaste N stunderna;
- AVM = det glidande medelvärdet för SM för M tanke på iteractions;
- AVM < = 37000 = > gör ingenting användbart;
- AVM > 37000 ans < 50000 = > promenader;
- AVM > = 50000 = > Kör;
Excel-filen med alla mina tester ingår.