- Wymagane składniki
- Akcelerometr ADXL335
- Schemat obwodu
- Jak działa krokomierz?
- Programowanie licznika kroków Arduino
- Testowanie krokomierza Arduino
Zespoły fitness stają się obecnie bardzo popularne, które nie tylko zliczają kroki, ale także śledzą spalone kalorie, wyświetlają tętno, czas pokazu i wiele innych. A te urządzenia IoT są zsynchronizowane z chmurą, dzięki czemu możesz łatwo uzyskać całą historię swojej aktywności fizycznej na smartfonie. Zbudowaliśmy również system monitorowania pacjenta oparty na IoT, w którym krytyczne dane zostały przesłane do ThingSpeak w celu monitorowania z dowolnego miejsca.
Krokomierze to urządzenia, które służyły wyłącznie do liczenia kroków. W tym samouczku zbudujemy łatwy i tani krokomierz zrób to sam za pomocą Arduino i akcelerometru. Ten krokomierz zlicza kroki i wyświetla je na module LCD 16x2. Ten krokomierz można zintegrować z tym inteligentnym zegarkiem Arduino.
Wymagane składniki
- Arduino Nano
- Akcelerometr ADXL 335
- Wyświetlacz LCD 16 * 2
- Moduł LCD I2C
- Bateria
Akcelerometr ADXL335
ADXL335 to kompletny 3-osiowy analogowy akcelerometr działający na zasadzie wykrywania pojemnościowego. Jest to mały, cienki moduł o małej mocy z polikrzemowym czujnikiem powierzchniowo obrobionym mikro i obwodem kondycjonującym sygnały. Akcelerometr ADXL335 może mierzyć przyspieszenie statyczne i dynamiczne. Tutaj, w tym projekcie krokomierza Arduino, akcelerometr ADXL335 będzie działał jako czujnik krokomierza.
Przyspieszeniomierz jest urządzeniem, które można przekształcić przyspieszenia w każdym kierunku, odpowiadającym napięciu zmiennym. Odbywa się to za pomocą kondensatorów (patrz ilustracja), ponieważ Accel się porusza, kondensator obecny w nim również ulegnie zmianom (patrz ilustracja) w oparciu o ruch, ponieważ pojemność jest zmienna, można również uzyskać zmienne napięcie.
Poniżej znajdują się zdjęcia akcelerometru z przodu iz tyłu wraz z opisem pinów-
Pin Opis akcelerometru:
- Zasilanie Vcc-5 V powinno być podłączone do tego pinu.
- X-OUT- Ten pin daje wyjście analogowe w kierunku x
- Y-OUT- Ten pin daje wyjście analogowe w kierunku y
- Z-OUT- Ten pin daje wyjście analogowe w kierunku z
- GND - uziemienie
- ST- Ten pin służy do ustawiania czułości czujnika
Tworzymy wiele projektów przy użyciu akcelerometru ADXL335, w tym robota sterowanego gestami, alarmu wykrywacza trzęsień ziemi, gry w ping ponga itp.
Schemat obwodu
Schemat obwodu dla licznika kroków akcelerometru Arduino jest podany poniżej.
W tym obwodzie łączymy się z Arduino Nano z akcelerometrem ADXL335. Piny X, Y i Z akcelerometru są połączone z pinami analogowymi (A1, A2 i A3) Arduino Nano. Do połączenia modułów LCD 16x2 z Arduino używamy modułu I2C. Piny SCL i SDA modułu I2C są połączone odpowiednio z pinami A5 i A4 Arduino Nano. Kompletne połączenia podano w poniższej tabeli:
Arduino Nano | ADXL335 |
3,3 V. | VCC |
GND | GND |
A1 | X |
A2 | Y |
A3 | Z |
Arduino Nano | Moduł LCD I2C |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCL |
Najpierw zbudowaliśmy ten krokomierz przy użyciu konfiguracji Arduino na płytce prototypowej
Po udanych testach zreplikowaliśmy go na Perfboard, lutując wszystkie komponenty na Perfboard, jak pokazano poniżej:
Jak działa krokomierz?
Krokomierz oblicza całkowitą liczbę kroków wykonanych przez osobę przy użyciu trzech składowych ruchu: do przodu, w pionie i na bok. System krokomierza wykorzystuje akcelerometr do uzyskania tych wartości. Akcelerometr stale aktualizuje maksymalne i minimalne wartości przyspieszenia 3-osiowego po każdym zdefiniowanym nr. próbek. Średnia wartość tych 3-osiowych (Max + Min) / 2 nazywana jest dynamicznym poziomem progu, a ta wartość progowa jest używana do decydowania, czy krok zostanie podjęty, czy nie.
Podczas biegu krokomierz może znajdować się w dowolnej orientacji, dlatego krokomierz oblicza kroki korzystając z osi, której zmiana przyspieszenia jest największa.
Pozwólcie, że przedstawię wam teraz krótki opis działania tego krokomierza Arduino:
- Po pierwsze krokomierz rozpoczyna kalibrację, gdy tylko zostanie zasilony.
- Następnie w funkcji pustej pętli stale pobiera dane z osi X, Y i Z.
- Następnie oblicza całkowity wektor przyspieszenia od punktu początkowego.
- Wektor przyspieszenia to pierwiastek kwadratowy (x ^ 2 + y ^ 2 + z ^ 2) wartości osi X, Y i Z.
- Następnie porównuje średnie wartości przyspieszenia z wartościami progowymi, aby obliczyć liczbę kroków.
- Jeśli wektor przyspieszenia przekracza wartość progową, to zwiększa liczbę kroków; w przeciwnym razie odrzuca nieprawidłowe wibracje.
Programowanie licznika kroków Arduino
Pełny kod licznika kroków Arduino znajduje się na końcu tego dokumentu. Tutaj wyjaśniamy kilka ważnych fragmentów tego kodu.
Jak zwykle, uruchom kod, dołączając wszystkie wymagane biblioteki. Akcelerometr ADXL335 nie wymaga żadnej biblioteki, ponieważ daje wyjście analogowe.
#zawierać
Następnie zdefiniuj Piny Arduino, do których podłączony jest akcelerometr.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Zdefiniuj wartość progową dla akcelerometru. Ta wartość progowa zostanie porównana z wektorem przyspieszenia w celu obliczenia liczby kroków.
próg zmiennoprzecinkowy = 6;
W pustej konfiguracji funkcja kalibruje system, gdy jest zasilany.
kalibrować();
Wewnątrz funkcji void loop odczyta wartości osi X, Y i Z dla 100 próbek.
for (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); opóźnienie (1); yaccl = float (analogRead (ypin) - 346); opóźnienie (1); zaccl = float (analogRead (zpin) - 416); opóźnienie (1);
Po uzyskaniu wartości z 3 osi obliczyć całkowity wektor przyspieszenia, biorąc pierwiastek kwadratowy z wartości osi X, Y i Z.
totvect = sqrt (((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Następnie oblicz średnią z maksymalnych i minimalnych wartości wektora przyspieszenia.
totave = (totvect + totvect) / 2;
Teraz porównaj średnie przyspieszenie z progiem. Jeśli średnia jest większa niż próg, zwiększ liczbę kroków i podnieś flagę.
if (totave> próg && flag == 0) {kroki = kroki + 1; flag = 1; }
Jeśli średnia jest większa niż próg, ale flaga jest podniesiona, nie rób nic.
else if (totave >reshold && flag == 1) {// Nie licz}
Jeśli całkowita średnia jest mniejsza od progu i flaga jest podniesiona, odłóż flagę.
if (totave <próg && flag == 1) {flag = 0; }
Wydrukuj liczbę kroków na monitorze szeregowym i wyświetlaczu LCD.
Serial.println (kroki); lcd.print ("Kroki:"); lcd.print (kroki);
Testowanie krokomierza Arduino
Gdy twój sprzęt i kod będą gotowe, podłącz Arduino do laptopa i prześlij kod. Teraz weź konfigurację krokomierza w swoje ręce i zacznij chodzić krok po kroku, powinna wyświetlać liczbę kroków na wyświetlaczu LCD. Czasami zwiększa liczbę kroków, gdy krokomierz wibruje bardzo szybko lub bardzo wolno.
Pełne wideo robocze i kod krokomierza ADXL335 Arduino podano poniżej.