Pedometry - kilka projektów do monitorowania naszej aktywności ruchowej

Pedometry - kilka projektów do monitorowania naszej aktywności ruchowej

Okres krótko po nowym roku to, dla wielu osób, okres wzmożonej aktywności fizycznej. Postanowienia noworoczne bardzo często obejmują chęć zrzucenia kilku kilogramów lub poprawy naszej kondycji, a nawet, jeśli nie one, to ruch przyda się nam, aby spalić nadmiarowe, poświąteczne kalorie. Polecaną niemalże wszystkim aktywnością są spacery. Zrobienie 10 tysięcy kroków dziennie jest rekomendowane przez wielu specjalistów, jednak skąd wiedzieć, kiedy już pokonaliśmy tę barierę? Dobrze jest zaopatrzyć się w urządzenie, które pozwoli nam monitorować w jakiś sposób naszą aktywność – w zaprezentowanym rozwiązaniu będzie zliczać nasze kroki.

Spacery to dobry sposób na spalenie zbędnych kalorii ale mają też wiele innych zalet. Specjaliści wskazują, że regularne spacerowanie wpływa dobrze na nasze serce, układ mięśniowy i szkieletowy, a także nasz nastrój i samopoczucie. Zalety chodzenia można wymieniać w nieskończoność. Specjaliści klasyfikują chodzenie, jako umiarkowaną aktywność fizyczną, co w dzisiejszych czasach, gdy wiele osób pracuje siedząc za biurkiem, ma duże znaczenie. W zależności od naszego wieku powinniśmy robić dziennie 6...8 tysięcy kroków (osoby powyżej 60 roku życia) lub 8...10 tysięcy kroków (osoby młodsze), jeśli nasza sprawność fizyczna i inne uwarunkowania zdrowotne na to pozwalają.

Zliczanie kroków jest podstawową metodą monitorowania naszego wysiłku podczas chodzenia. Pedometr to urządzenie, którego funkcja jest właśnie zliczanie kroków. Istnieje wiele metod takiego zliczania – część z nich przedstawiona jest w poniższym artykule, gdzie pokazujemy nie jedną, a trzy tego rodzaju konstrukcje. Opis każdej konstrukcji jest ograniczony, ale szczególny nacisk położono na sposób pomiaru/wykrywania kroków.

Akcelerometr

Pierwszy moduł bazuje na chyba najbardziej klasycznym rozwiązaniu – module inercyjnym, który monitoruje ruch noszącej urządzenie osoby i zlicza ruchy, które uznawane są za kroki. Takie podejście jest najczęstsze, z takiego algorytmu korzystają również komercyjne pedometry, takie, jak spotykane w opaskach fitness czy telefonach komórkowych.

Zaprezentowana konstrukcja bazuje na module FireBeetle Board z mikrokontrolerem ESP32. Oprócz wspomnianej płytki, układ ma również ekran OLED 128×64. Do pomiaru kroków zastosowano 3-osiowy akcelerometr MEMS ADXL345. Gotowy moduł pedometru pokazano na fotografii 1.

Fotografia 1. Licznik kroków z akcelerometrem

Wyświetlacz i akcelerometr podłączone są do mikrokontrolera przez interfejs I²C, dzięki czemu wystarczy połączyć dwie linie sygnałowe – danych i zegara, aby nawiązać komunikację. Obie linie muszą być podciągnięte do zasilania, jak pokazano na fotografii 2 (Uwaga! Na zdjęciu oporniki podciągnięte są do AREF, a nie znajdującego się obok pinu 3V3 na skutek pomyłki autora).

Fotografia 2. Oporniki podciągające na płytce (uwaga – oporniki powinny podciągać do pinu 3V3, a nie AREF, jak na zdjęciu)

W projekcie podciągnięto je do zasilania opornikami 51 kΩ, jednak każda wartość pomiędzy 1 kΩ a ok. 50 kΩ powinna pracować w takim, prostym układzie o krótkich połączeniach poprawnie. Pozostało jeszcze podłączenie przycisków. Te podłączono pomiędzy linie D2, D3 i D4 i zasilanie (3V3).

Teraz pozostaje tylko załadowanie do układu firmware. Kod programu dla ESP32 jest dosyć złożony, gdyż sam układ oprócz zliczania ilości kroków liczy także czas, prezentuje go w postaci zegarka analogowego, zlicza spalone podczas chodzenia kalorie itd. Kluczowe elementy szkicu Arduino wykrywającego i zliczającego kroki pokazano na listingu 1.

Listing 1. Listing programu dla ESP32 z akcelerometrem do zliczania kroków (fragment)

void updateAdxl345(void){
 // Odczyt danych z ADXL345
 readFrom(DEVICE, regAddress, TO_READ, buff);
 xx = (((int)buff[1]) << 8) | buff[0];
 yy = (((int)buff[3])<< 8) | buff[2];
 zz = (((int)buff[5]) << 8) | buff[4];
  
 if(xx < 100){
   sprintf(str, “%d”, stepsSum);
   return;
 }

 if(fabs(xx – currentValue) > 80){
   if(xx < currentValue){
     stepsSum++;
   }
   currentValue = xx;
 }
 sprintf(str, “%d”, stepsSum);
}

Funkcja updateAdxl345 aktualizuje (inkrementuje) liczbę kroków, zapisaną w zmiennej globalnej stepSum. W pierwszej kolejności program pobiera dane z akcelerometru ADXL345 i przetwarza je do danych dla trzech osi, zapisanych, odpowiednio, w zmiennych xx, yy oraz zz. Sam algorytm używa tylko składowej X pomiaru przyspieszenia. Jeśli jest ono poniżej 100 (jednostek umownych, LSB) to nic się nie dzieje – funkcja drukuje przez UART aktualną liczbę kroków i wychodzi. Jeśli wartość bezwzględna różnicy przyspieszenia w tej iteracji pętli i poprzedniej iteracji (zmienna globalna currentValue) jest większa od 80 i obecna wartość jest mniejsza od poprzedniej, to licznik kroków jest inkrementowany.

Następnie aktualizowana jest wartość przyspieszenia w zmiennej currentValue. Jeśli xx nie jest mniejsze od currentValue, to następuje tylko aktualizacja zapisanej wartości przyspieszenia. Finalnie, drukowana jest aktualna wartość kroków i program wychodzi z funkcji updateAdxl345.

Funkcja updateAdxl345 musi być okresowo wywoływana przez program (najlepiej z częstotliwością przygotowywania próbek danych przez akcelerometr). Aktualizuje ona wartość zmiennej globalnej stepSum, z której korzystać mogą w dowolny sposób inne komponenty programowe.

Sensor naciskowy

Zamiast akcelerometru zastosować można sensor innego rodzaju. Autor drugiego zaprezentowanego tutaj projektu zaproponował prosty sensor naciskowy, który umieszcza się w bucie, pod stopą, co pozwala mu w łatwy sposób monitorować nacisk stopy na ziemię. Zmienia się on w rytm kroków, co pozwala na zliczanie ich przez moduł Arduino. Podobnie, jak w poprzednim przypadku, mikrokontroler zlicza nie tylko liczbę kroków, ale także obliczał prędkość chodu, ilość spalonych kalorii itd. Na fotografii 3 pokazano gotowe urządzenie.

Fotografia 3. Pedometr z sensorem nacisku DIY

Podstawą projektu jest wykonanie sensora wykrywającego kroki. W tym celu należy wziąć dwa kawałki kartonu o wymiarach 40×20 mm. Następnie wycinamy dwa kawałki folii aluminiowej każdy o wymiarach 60×20 mm. Jedna strona każdego kartonu powinna być w całości przykryta folią aluminiową a druga strona mniej więcej do połowy długości. Następnie należy każdą z elektrod okleić taśmą klejącą tak, aby niewielka część folii aluminiowej po jednej stronie kartonu pozostała odsłonięta. W ten sposób wykonujemy dwie elektrody. Należy upewnić się, że pomiędzy folią a kartonem nie ma żadnej szczeliny. Jedyne miejsce, w którym powinna znajdować się szczelina, znajduje się pomiędzy odkrytymi fragmentami folii aluminiowej na powierzchni dwóch kartoników, gdy są one ze sobą złożone „w kanapkę”.

Do jednego kawałka folii dołączamy opornik 10 kΩ tak, aby stykał się z folią znajdującą się po tej stronie kartonu, która nie jest w pełni pokryta folią aluminiową. Należy przykleić go tak, aby opornik się nie ruszał. Do drugiego kawałka folii dołączyć należy dwa przewody (po tej samej stronie kartonu). Je również należy zakleić taśmą tak, aby przewody się nie poruszały. Istotne jest, aby przykleić oba przewody naraz, gdyż ciężko jest potem dokleić kolejny. Finalnie należy skleić obie elektrody ze sobą, tak, aby odizolowane powierzchnie folii aluminiowej skierowane były do siebie. Całość należy zabezpieczyć i zamocować do siebie folią aluminiową, pamiętając, aby nie ściskać elektrod ze sobą za mocno. Nie powinno być żadnego kontaktu między foliami, gdy układ jest rozprasowany.

Na koniec należy sprawdzić sensor za pomocą multimetru. Po naciśnięciu rezystancja sensora powinna się zmniejszyć. Gotowy sensor pokazany jest na fotografii 4.

Fotografia 4. Sensor nacisku; a) elektrody przed sklejeniem; b) gotowy sensor

Sensor podłączony jest pomiędzy masę i zasilanie. Masa podłączana jest do jednego z przewodów, doklejonych do elektrody, a zasilanie do opornika 10 kΩ przy drugiej elektrodzie. Trzecie wyjście sensora – drugi z przewodów – podłączony jest do wejścia cyfrowego modułu Arduinio Pro Mini. Działanie jest bardzo proste, układ sprawdza stan logiczny na wejściu podłączonym do sensora i monitoruje zbocza narastające w głównej pętli programu – loop(), jak pokazano na listingu 2.

Listing 2. Oprogramowanie dla Arduino dla pedometru z sensorem nacisku (fragment)

void loop(){
 // Poprzedni stan
 lastState = state;
 // Odczyt aktualnego stanu – sensor na pinie 12
 state = digitalRead(12);      
 if (state == HIGH && lastState == LOW){
   // Inkrementacja licznika kroków
   count++;            
 }
 // Pozostała logika programu
}

Jeśli stan pinu, zapisany w zmiennej state jest wysoki, a lastState – stan pinu w poprzedniej iteracji pętli programu – jest niski, oznacza to, że sensor naciśnięto, więc licznik kroków count jest inkrementowany. Dalsza logika programu wykorzystuje wartość licznika, do prezentacji ilości zrobionych kroków, spalonych kalorii itd.

Bez Arduino, bez programowania

Niewątpliwie Arduino zrewolucjonizowało elektronikę, w szczególności systemy amatorskie, jednak przed jego pojawieniem się na rynku, hobbyści również konstruowali różne interesujące układy. Przykładem projektu „z tamtych czasów” może być pedometr pokazany na fotografii 5. Zaprezentowany układ zawiera tzw. wyłącznik przechylny (tilt switch). Jest to prosty element mechaniczny, który załącza obwód, w momencie, gdy zostanie pochylony. Elementy te często stosuje się, jako detektory wibracji itp. W tym układzie przełączenie tego sensora powoduje inkrementację licznika binarnego CD4024, który odpowiedzialny jest za zliczanie kroków. Przycisk S4 pozwala na zresetowanie tego licznika.

Fotografia 5. Pedometr na licznikach CD4026; a) uniwersalna płytka drukowana z elementami; b) układ w obudowie

Do wyświetlania ilości kroków zastosowano dwa wyświetlacze siedmiosegmentowe. Za ich sterowanie odpowiedzialne są dwa liczniki dekadowe CD4026, które mają wyjście kompatybilne z tego rodzaju wyświetlaczem, dzięki czemu mogą one bezpośrednio wysterować poszczególne diody LED w wyświetlaczu.

Całość uzupełnia buzzer, który piszczy w momencie, gdy zlicza krok oraz prosty układ zasilania z wyłącznikiem. Całe urządzenie może być zmontowane na kawałku płytki uniwersalnej i umieszczone w kompaktowej obudowie.

Alternatywne pomysły

Oprócz omówionych realizacji, zbierając materiały do tego artykułu, w sieci znaleziono szereg innych konstrukcji, na które warto zwrócić uwagę, ze względu na ciekawe lub bardzo uproszczone podejście. W zakresie tego ostatniego, na pewno na uwagę wskazuje możliwość zmodyfikowania komercyjnego pedometru z pomocą modułu Arduino. Tego rodzaju proste urządzenia, które zliczają kroki i wyświetlają je na ekranie mogą kosztować zaledwie kilka złotych. Ich funkcjonalności są jednak, lekko mówiąc, ubogie. Podłączenie Arduino do takiego układu pozwala na istotne rozbudowanie jego możliwości, szacowanie prędkości chodu, obliczanie spalonych kalorii itp.

Ciekawym miejscem, w jakim można umieścić moduł Arduino i licznik kroków są… buty (jak pokazano na fotografii tytułowej). Podświetlenie butów, które może być sterowane za pomocą Arduino, może indykować ilość kroków, tempo itd. Nie jest to może najbardziej ergonomiczna lokalizacja dla informacji o liczbie kroków, ale z pewnością rzuca się w oczy.

Finalnie, nie sposób wspomnieć o użyciu algorytmów uczenia maszynowego do analizy zbieranych danych. Nawet niewielkie mikrokontrolery obecnie dostarczają na tyle dużą moc obliczeniową, iż mogą być zaprzęgnięte do zadań związanych z inferencją i AI. Przykładowe algorytmy mogą obejmować wsparte AI zliczanie kroków, szacowanie prędkości ruchu, ilości spalanych kalorii, przebytej odległości czy też rozróżnianie chodu od biegu.

Podsumowanie

Nawet najbardziej zaawansowany gadżet nie spali za nas nadmiaru kalorii. Jednak urządzenia, takie jak licznik kroków, istotnie pomagają w monitorowaniu naszych ćwiczeń, co zapewnia optymalne obciążenie, dobrane do naszych potrzeb. Dodatkowo, samodzielnie wykonany gadżet, z pewnością zmotywuje nas mocniej do uprawiania sportów, chociażby takich, jak bieganie czy chodzenie, a to na pewno nam nie zaszkodzi.

Nikodem Czechowski, EP

Źródła

https://www.instructables.com/How-to-Make-a-Step-Counter/

https://github.com/Chocho2017/pedometer-ESP32

https://bit.ly/3VK5gI8

https://www.instructables.com/Pedometer-2/

https://www.instructables.com/Arduino-Pedometer/

https://bit.ly/3VDQl1M

Artykuł ukazał się w
Elektronika Praktyczna
styczeń 2023

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów