Spisu treści:

Monitor pracy serca IOT (ESP8266 i aplikacja na Androida): 5 kroków
Monitor pracy serca IOT (ESP8266 i aplikacja na Androida): 5 kroków

Wideo: Monitor pracy serca IOT (ESP8266 i aplikacja na Androida): 5 kroków

Wideo: Monitor pracy serca IOT (ESP8266 i aplikacja na Androida): 5 kroków
Wideo: Ludzie, którzy zamienili się w zwierzęta 😲🤔 2024, Listopad
Anonim
Image
Image

W ramach mojego ostatniego roku projektu chciałem zaprojektować urządzenie, które będzie monitorować tętno, przechowywać dane na serwerze i powiadamiać Cię za pomocą powiadomienia, gdy Twoje tętno jest nieprawidłowe. Pomysł stojący za tym projektem pojawił się, gdy próbowałem zbudować aplikację typu fit-bit, która powiadamia użytkownika o problemach z sercem, ale nie mogłem znaleźć sposobu na wykorzystanie informacji w czasie rzeczywistym. Projekt składa się z czterech głównych części w tym fizyczny obwód do pomiaru bicia serca, moduł Wi-Fi ESP8266 z kodem przetwarzania sygnału, serwer do przechowywania kodu i aplikacja na Androida do wyświetlania tętna.

Film przedstawiający fizyczny obwód można zobaczyć powyżej. Cały kod projektu można znaleźć na moim Github.

Krok 1: Obwód

Obwód
Obwód

Istnieją dwie główne metody pomiaru bicia serca, ale w tym projekcie zdecydowałem się użyć fotopletyzmografii (PPG), która wykorzystuje źródło światła podczerwonego lub czerwonego, które jest załamywane przez kilka pierwszych warstw skóry. Fotoczujnik służy do pomiaru zmiany natężenia światła (gdy krew przepływa przez naczynie). Sygnały PPG są niesamowicie hałaśliwe, więc użyłem filtra pasmowego, aby odfiltrować określone wymagane częstotliwości. Serce człowieka bije od 1 do 1,6 Hz. Użyłem wzmacniacza operacyjnego lm324, który miał najlepsze przesunięcie napięcia ze wszystkich dostępnych dla mnie wzmacniaczy operacyjnych. Jeśli odtwarzasz ten projekt, precyzyjny wzmacniacz operacyjny byłby znacznie lepszym wyborem.

Użyto tylko dwóch wzmocnienia, ponieważ maksymalna tolerancja napięcia na ESP8266 wynosi 3,3 V i nie chciałem uszkodzić mojej płytki!

Postępuj zgodnie z powyższym obwodem i spróbuj go uruchomić na desce do krojenia chleba. Jeśli nie masz w domu oscyloskopu, możesz podłączyć wyjście do Arduino i wykreślić je, ale upewnij się, że napięcie nie jest wyższe niż tolerancja arduino lub mikrokontrolera.

Obwód został przetestowany na płytce chlebowej i zaobserwowano zmianę wyjścia po przyłożeniu palca do diody LED i fototranzystora. Postanowiłem wtedy zlutować płytkę, czego nie pokazano na filmie.

Krok 2: Kod przetwarzania sygnału i komunikacja z serwerem

Image
Image
Kod przetwarzania sygnału i komunikacja z serwerem
Kod przetwarzania sygnału i komunikacja z serwerem

Zdecydowałem się użyć Arduino IDE na ESP8266, ponieważ jest tak łatwy w użyciu. Kiedy sygnał został wykreślony, nadal był bardzo zaszumiony, więc zdecydowałem się wyczyścić go filtrem średniej ruchomej FIR z próbką numer dziesięć. Zmodyfikowałem w tym celu przykładowy program Arduino o nazwie "smoothing". Poeksperymentowałem trochę, aby znaleźć sposób na pomiar częstotliwości sygnału. Impulsy miały różną długość i amplitudę, ponieważ serce miało cztery różne typy impulsów i charakterystykę sygnałów PPG. Jako punkt odniesienia dla każdego impulsu wybrałem znaną średnią wartość, którą sygnał zawsze przekraczał. Użyłem bufora pierścieniowego, aby określić, kiedy nachylenie sygnału było dodatnie lub ujemne. Połączenie tych dwóch pozwoliło mi obliczyć okres między impulsami, kiedy sygnał był dodatni i był równy określonej wartości.

Oprogramowanie wygenerowało dość niedokładny BPM, którego nie można było użyć. Z dodatkowymi iteracjami można było zaprojektować lepszy program, ale ze względu na ograniczenia czasowe nie było to możliwe. Kod można znaleźć w poniższym linku.

Oprogramowanie ESP8266

Krok 3: Serwer i przesyłanie danych

Serwer i transmisja danych
Serwer i transmisja danych

Zdecydowałem się użyć Firebase do przechowywania danych, ponieważ jest to usługa bezpłatna i bardzo łatwa w użyciu z aplikacjami mobilnymi. Nie ma oficjalnego API dla Firebase z ESP8266, ale stwierdziłem, że biblioteka Arduino działała bardzo dobrze.

W bibliotece ESP8266WiFi.h znajduje się przykładowy program, który umożliwia połączenie z routerem za pomocą identyfikatora SSID i hasła. Służyło to do połączenia tablicy z Internetem, aby można było przesyłać dane.

Chociaż przechowywanie danych było łatwe, nadal istnieje szereg problemów z wysyłaniem powiadomień push za pośrednictwem żądania HTTP POST. Znalazłem komentarz na Github, który używał starszej metody robienia tego za pośrednictwem wiadomości w chmurze Google i biblioteki HTTP dla ESP8266. Tę metodę można zobaczyć w kodzie na moim Github.

W Firebase stworzyłem projekt i wykorzystałem API oraz klucze rejestracyjne w oprogramowaniu. W aplikacji użyto wiadomości w chmurze Firebase w celu wysyłania powiadomień push do użytkownika. Po przetestowaniu komunikacji dane były widoczne w bazie danych podczas pracy ESP8266.

Krok 4: Aplikacja na Androida

Aplikacja na Androida
Aplikacja na Androida

Bardzo podstawowa aplikacja na Androida została zaprojektowana z dwoma czynnościami. Podczas pierwszej aktywności zalogowano użytkownika lub zarejestrowano go przy użyciu interfejsu Firebase API. Przeszukałem arkusz danych i znalazłem różne samouczki dotyczące korzystania z Firebase z aplikacją mobilną. Główna aktywność, która wyświetlała dane użytkownika, był nasłuchiwaniem zdarzeń w czasie rzeczywistym, dzięki czemu nie było zauważalnego opóźnienia w zmianach BPM użytkownika. Powiadomienia push zostały wykonane za pomocą wiadomości w chmurze Firebase, o której wspomniano wcześniej. W arkuszu danych Firebase znajduje się wiele przydatnych informacji o tym, jak to wdrożyć, a aplikację można przetestować, wysyłając powiadomienia z pulpitu na stronie Firebase.

Cały kod działań i metody przesyłania wiadomości w chmurze można znaleźć w moim repozytorium Github.

Krok 5: Wniosek

Wystąpiły poważne problemy z pomiarem BPM użytkownika. Wartości były bardzo zróżnicowane i nie były przydatne do określenia stanu zdrowia użytkownika. Sprowadzało się to do kodu przetwarzania sygnału, który został zaimplementowany w ESP8266. Po dodatkowych badaniach dowiedziałem się, że serce ma cztery różne impulsy z różnym okresem, więc nic dziwnego, że oprogramowanie było niedokładne. Sposobem na walkę z tym byłoby wzięcie średniej z czterech impulsów w tablicy i obliczenie okresu serca w tych czterech impulsach.

Reszta systemu działała, ale jest to bardzo eksperymentalne urządzenie, które chciałem zbudować, aby sprawdzić, czy obiekt jest możliwy. Starszy kod, który był używany do wysyłania powiadomień push, wkrótce będzie bezużyteczny, więc jeśli czytasz to pod koniec 2018 r. lub później, wymagana będzie inna metoda. Ten problem występuje tylko w przypadku ESP, więc jeśli chcesz zaimplementować to na Arduino obsługującym Wi-Fi, nie będzie problemu.

Jeśli masz jakieś pytania lub problemy, napisz do mnie na Instructables.

Zalecana: