- Požadované komponenty
- Akcelerometr ADXL335
- Kruhový diagram
- Jak funguje krokoměr?
- Programování čítače kroků Arduino
- Testování krokoměru Arduino
V dnešní době jsou velmi populární fitness kapely, které nejen počítají kroky, ale také sledují spálené kalorie, zobrazují tepovou frekvenci, čas a mnoho dalšího. A tato zařízení IoT jsou synchronizována s cloudem, takže můžete snadno získat celou historii své fyzické aktivity na smartphonu. Rovněž jsme vybudovali systém monitorování pacientů založený na IoT, kde byla kritická data odeslána do ThingSpeak, aby byla monitorována odkudkoli.
Krokoměry jsou zařízení, která slouží pouze k počítání kroků. V tomto tutoriálu tedy vytvoříme snadný a levný DIY krokoměr pomocí Arduina a akcelerometru. Tento krokoměr spočítá počet kroků a zobrazí je na LCD modulu 16x2. Tento krokoměr lze integrovat do hodinek Arduino Smart Watch.
Požadované komponenty
- Arduino Nano
- Akcelerometr ADXL 335
- 16 * 2 LCD
- Modul LCD I2C
- baterie
Akcelerometr ADXL335
ADXL335 je kompletní tříosý analogový akcelerometr a pracuje na principu kapacitního snímání. Jedná se o malý, tenký modul s nízkým výkonem s polysilikonovým povrchově mikroobráběným senzorem a signály upravujícími obvody. Akcelerometr ADXL335 dokáže měřit statické i dynamické zrychlení. Tady v tomto projektu Arduino Pedometer bude akcelerometr ADXL335 fungovat jako snímač krokoměru.
Akcelerometr je zařízení, které lze převést zrychlení v každém směru v příslušné proměnné napětí. Toho je dosaženo použitím kondenzátorů (viz obrázek), jak se Accel pohybuje, kondenzátor přítomný uvnitř, také podstoupí změny (viz obrázek) na základě pohybu, protože kapacita se mění, lze také získat proměnné napětí.
Níže jsou obrázky pro akcelerometr z přední a zadní strany spolu s popisem kolíku -
Pin Popis akcelerometru:
- Na tomto pinu by se mělo připojit napájení 5 voltů Vcc.
- X-OUT - Tento pin poskytuje analogový výstup ve směru x
- Y-OUT - Tento pin poskytuje analogový výstup ve směru y
- Z-OUT - Tento pin poskytuje analogový výstup ve směru z
- GND - zem
- ST - Tento kolík slouží k nastavení citlivosti snímače
Pomocí Accelerometru ADXL335 stavíme mnoho projektů, včetně robota řízeného gesty, alarmu detektoru zemětřesení, hry Ping Pong atd.
Kruhový diagram
Obvodové schéma pro čítač kroků akcelerometru Arduino je uveden níže.
V tomto obvodu provádíme propojení s Arduino Nano s akcelerometrem ADXL335. Kolíky X, Y a Z akcelerometru jsou spojeny s analogovými kolíky (A1, A2 a A3) Arduino Nano. Pro propojení 16x2 LCD modulů s Arduino používáme modul I2C. Piny SCL a SDA modulu I2C jsou připojeny k pinům A5 a A4 Arduino Nano. Kompletní připojení jsou uvedena v následující tabulce:
Arduino Nano | ADXL335 |
3,3 V | VCC |
GND | GND |
A1 | X |
A2 | Y |
A3 | Z |
Arduino Nano | Modul LCD I2C |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Nejprve jsme tento krokoměr postavili pomocí nastavení Arduina na prkénku
A po úspěšném testování jsme jej replikovali na Perfboard pájením všech komponent na Perfboard, jak je znázorněno níže:
Jak funguje krokoměr?
Krokoměr vypočítá celkový počet kroků, které osoba podnikla pomocí tří složek pohybu, které jsou vpřed, svisle a ze strany. Systém krokoměru používá k získání těchto hodnot akcelerometr. Akcelerometr neustále aktualizuje maximální a minimální hodnoty 3osého zrychlení po každém definovaném č. vzorků. Průměrná hodnota těchto 3osých (Max + Min) / 2 se nazývá dynamická prahová úroveň a tato prahová hodnota se používá k rozhodnutí, zda je krok proveden nebo ne.
Během běhu může být krokoměr v libovolné orientaci, takže krokoměr vypočítává kroky pomocí osy, jejíž změna zrychlení je největší.
Nyní vám krátce představím práci tohoto krokoměru Arduino:
- Krokoměr nejprve zahájí kalibraci, jakmile je napájen.
- Poté ve funkci void loop nepřetržitě získává data z os X, Y a Z.
- Poté vypočítá celkový vektor zrychlení od počátečního bodu.
- Vektor zrychlení je druhá odmocnina (x ^ 2 + y ^ 2 + z ^ 2) hodnot osy X, Y a Z.
- Pak porovná průměrné hodnoty zrychlení s prahovými hodnotami a spočítá číslo kroku.
- Pokud vektor zrychlení překročí prahovou hodnotu, zvyšuje počet kroků; v opačném případě znehodnocuje neplatné vibrace.
Programování čítače kroků Arduino
Úplný kód čítače kroků Arduino je uveden na konci tohoto dokumentu. Zde vysvětlujeme některé důležité úryvky tohoto kódu.
Jako obvykle spusťte kód zahrnutím všech požadovaných knihoven. Akcelerometr ADXL335 nevyžaduje žádnou knihovnu, protože poskytuje analogový výstup.
#zahrnout
Poté definujte piny Arduino, kde je připojen akcelerometr.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Definujte prahovou hodnotu pro akcelerometr. Tato prahová hodnota bude porovnána s vektorem zrychlení pro výpočet počtu kroků.
float threshold = 6;
Uvnitř neplatné nastavení , funkce kalibruje systém, když je napájen.
kalibrovat();
Uvnitř funkce void loop bude číst hodnoty osy X, Y a Z pro 100 vzorků.
for (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); zpoždění (1); yaccl = float (analogRead (ypin) - 346); zpoždění (1); zaccl = float (analogRead (zpin) - 416); zpoždění (1);
Po získání hodnot ve 3 osách vypočítejte celkový vektor zrychlení pomocí druhé odmocniny hodnot v osách X, Y a Z.
totvect = sqrt ((((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Poté vypočítejte průměr maximální a minimální hodnoty vektoru zrychlení.
totave = (totvect + totvect) / 2;
Nyní porovnejte průměrné zrychlení s prahovou hodnotou. Pokud je průměr větší než prahová hodnota, zvyšte počet kroků a zvedněte příznak.
if (totave> práh && flag == 0) {steps = steps + 1; vlajka = 1; }
Pokud je průměr větší než prahová hodnota, ale příznak je zvýšen, nedělejte nic.
else if (totave> práh && flag == 1) {// Nepočítat}
Pokud je celkový průměr menší než prahová hodnota a příznak je zvýšen, pak příznak položte.
if (totave <práh && flag == 1) {flag = 0; }
Vytiskněte počet kroků na sériovém monitoru a LCD.
Serial.println (kroky); lcd.print ("Kroky:"); lcd.print (kroky);
Testování krokoměru Arduino
Jakmile bude váš hardware a kód připraven, připojte Arduino k notebooku a nahrajte kód. Nyní vezměte nastavení krokoměru do rukou a začněte krok za krokem, na LCD by se měl zobrazit počet kroků. Někdy zvyšuje počet kroků, když krokoměr vibruje velmi rychle nebo velmi pomalu.
Kompletní pracovní video a kód pro krokoměr ADXL335 Arduino jsou uvedeny níže.