Spisu treści:
- Krok 1: Obwód
- Krok 2: Kod przetwarzania sygnału i komunikacja z serwerem
- Krok 3: Serwer i przesyłanie danych
- Krok 4: Aplikacja na Androida
- Krok 5: Wniosek
Wideo: Monitor pracy serca IOT (ESP8266 i aplikacja na Androida): 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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
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
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
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
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:
Monitor pracy serca DIY (rejestrator): 4 kroki
DIY Heart Rate Monitor (logger): W tym projekcie pokażę Ci, jak komercyjny smartwatch mierzy i monitoruje Twoje tętno, a następnie pokażę Ci, jak stworzyć obwód DIY, który może w zasadzie zrobić to samo, z dodatkiem, że może również przechowywać dane tętna
Wizualizator serca - Zobacz bicie serca: 8 kroków (ze zdjęciami)
Wizualizator serca | Zobacz bicie serca: Wszyscy albo czuliśmy, albo słyszeliśmy bicie naszego serca, ale niewielu z nas to widziało. To była myśl, która sprawiła, że zacząłem ten projekt. Prosty sposób, aby wizualnie zobaczyć bicie serca za pomocą czujnika serca, a także nauczyć Cię podstaw o
Rejestrator EKG - poręczny monitor pracy serca do długoterminowej akwizycji i analizy danych: 3 kroki
Rejestrator EKG - przenośny monitor pracy serca do długoterminowej akwizycji i analizy danych: Pierwsze wydanie: Październik 2017 Najnowsza wersja: 1.6.0 Stan: Stabilny Poziom trudności: WysokiWymaganie wstępne: Arduino, Programowanie, Budowa sprzętu Unikalne repozytorium: SF (patrz linki poniżej)Wsparcie: Tylko forum, żaden PMECG Logger to urządzenie do noszenia na karku przez długi czas
Monitor pracy serca Arduino: 5 kroków
Arduino Heart Rate Monitor: Cześć wszystkim, zbudowałem ten podręczny monitor pracy serca Arduino kontrolowany przez Arduino
Monitor pracy serca AD8232, Arduino, przetwarzanie: 4 kroki
Monitor tętna AD8232, Arduino, Przetwarzanie: Analog Devices AD8232 to kompletny analogowy interfejs przeznaczony do akwizycji sygnałów EKG (ElectroCardioGram) na poziomie miliwoltów. Chociaż podłączenie AD8232 i zobaczenie wynikowego sygnału EKG na oscyloskopie jest prostą sprawą, wyzwaniem dla