Elektrokardiogram (EKG) to urządzenie które stworzone jest do monitorowania i obrazowania aktywności mięśnia sercowego. Urządzenie to wykorzystane może być do monitorowania tempa pracy serca, regularności uderzeń itp. Aby lepiej zrozumieć działanie EKG przejrzeć można np. tą prezentację.
Do konstrukcji układu wykorzystano Arduino i kompatybilny z nim shield z układami potrzebnymi do realizacji EKG wraz z zestawem elektrod.
Uwaga!
Należy pamiętać, że zaprezentowane urządzenie nie jest urządzeniem medycznym i nie nadaje się do takich zastosowań. Układ nie ma żadnych certyfikatów, a autor żadnego przeszkolenia medycznego. Przyczepianie elektrod do swojego ciała, może skutkować - w najgorszym przypadku - porażeniem bądź wywołaniem napadu padaczkowego.
Do zestawienia układu potrzebne będą nam:
* Arduino Uno, dostępne tutaj
* Shield Olimex EKG dostępny tutaj wraz z dedykowanym oprogramowaniem.
* Zestaw dedykowanych do shielda EKG elektrod, dostępny tutaj, ale także do znalezienia na eBay czy Amazonie.
Jakkolwiek projekt powstawał na OS X, to wykorzystano przeglądarkę Google Chrome, aby połączyć się z Arduino, co sprawia, że aplikacja powinna funkcjonować na dowolnej platformie.
Konfiguracja zworek na płytce Olimexa doskonale opisana jest w instrukcji do tego shielda. Konfiguracja wykorzystana przez autora projektu widoczna jest obok.
Sketch Arduino, dostarczony wraz z shieldem, odpowiedzialny jest za odczytywanie wejść analogowych dedykowanych dla EKG. Program ten następnie wysyła dane poprzez interfejs szeregowy. Ustawienia transmisji są następujące:
* Prędkość transmisji wynosi 57600 bps, a nie typowe 9600 bps.
* Dane wysyłane są w formie binarnej, więc nie można odczytywać ich standardowym oprogramowaniem do monitorowania portu szeregowego.
* Program do odczytu danych dostępny jest tylko na Windowsa, a celem autora było strumieniowanie danych na dowolną platformę. Kolejnymi krokami jest zautomatyzowana analiza, jednakże jest to dalszy etap realizacji projektu - pierwszym jest odczyt danych z shielda.
Do stworzenia oprogramowania autor wykorzystał Chrome App, które pozwalają na tworzenie aplikacji z wykorzystaniem jedynie HTMLa i JavaScriptu. Więcej o tych aplikacjach dowiedzieć można się tutaj.
Kod programu który odbiera dane z Arduino autor zapisał na repozytorium dostępnym tutaj. Aplikacja po zainstalowaniu zapewnia interfejs, wyglądający mniej-więcej tak:
Aby zainstalować aplikację w Chromie wystarczy sklonować powyższe repozytorium i kliknąć w sekcję "Load the extension". Następnie na Arduino instalujemy skecz dostępny na githubie.
Sketch stworzony w Arduino wysyła pakiety danych binarnych o następującym formacie:
To oznacza łącznie 17 bajtów. Pierwsza dwa to odpowiednio 165 i 90 a ostatni to jedynka. Dzięki temu Chrome App może z łatwością dzielić dane na poszczególne pakiety. W jego obrębie każdy odczyt wartości analogowej zapisywany jest jako 16 bitowy integer, co oznacza, że trzeba te liczby zrekonstruować na podstawie podzielonych na części wartości. Do tego celu wykorzystana została prosta funkcja:
W skeczu Arduino widać, że dane nadawane są w następującej kolejności - najpierw wysoka część bajtu, potem niska:
Więc aby zrekonstruować wartość z pierwszego kanału (CH1) wystarczy wykorzystać funkcję: byteArrayToLong([TXBuf[5], TXBuff[4]]), to znaczy najpierw z niską (low) częścią, a potem wysoką (high). Następnie aplikacja wykorzystuje CanvasJS aby prezentować dane w czasie rzeczywistym. W danym momencie na żywo prezentowany jest jedynie jeden kanał analogowy.
Teraz wystarczy tylko podłączyć elektrody do "pacjenta", co jak zauważa autor nie jest takie proste, gdyż trudni jest zrealizować odpowiedni kontakt pomiędzy skórą a elektrodą. Konfiguracja w której układ działał najlepiej to elektrody L i R na, odpowiednio lewym i prawym nadgarstku, a elektroda D na kostce. Jak zauważa autor, elektrody na nadgarstkach muszą być ciasno zapięte i najlepiej posmarowane żelem poprawiającym ich kontakt ze skórą.
Dalsze plany:
* Automatyczna detekcja szczytów
* Obliczanie częstotliwości skurczu serca
* Obliczanie wariancji częstotliwości skurczu serca
Źrodło: http://www.talkingquickly.co.uk/2015/01/diy-ekg-with-arduino-javascript/
Do konstrukcji układu wykorzystano Arduino i kompatybilny z nim shield z układami potrzebnymi do realizacji EKG wraz z zestawem elektrod.
Uwaga!
Należy pamiętać, że zaprezentowane urządzenie nie jest urządzeniem medycznym i nie nadaje się do takich zastosowań. Układ nie ma żadnych certyfikatów, a autor żadnego przeszkolenia medycznego. Przyczepianie elektrod do swojego ciała, może skutkować - w najgorszym przypadku - porażeniem bądź wywołaniem napadu padaczkowego.
Do zestawienia układu potrzebne będą nam:
* Arduino Uno, dostępne tutaj
* Shield Olimex EKG dostępny tutaj wraz z dedykowanym oprogramowaniem.
* Zestaw dedykowanych do shielda EKG elektrod, dostępny tutaj, ale także do znalezienia na eBay czy Amazonie.
Jakkolwiek projekt powstawał na OS X, to wykorzystano przeglądarkę Google Chrome, aby połączyć się z Arduino, co sprawia, że aplikacja powinna funkcjonować na dowolnej platformie.
Konfiguracja zworek na płytce Olimexa doskonale opisana jest w instrukcji do tego shielda. Konfiguracja wykorzystana przez autora projektu widoczna jest obok.
Sketch Arduino, dostarczony wraz z shieldem, odpowiedzialny jest za odczytywanie wejść analogowych dedykowanych dla EKG. Program ten następnie wysyła dane poprzez interfejs szeregowy. Ustawienia transmisji są następujące:
* Prędkość transmisji wynosi 57600 bps, a nie typowe 9600 bps.
* Dane wysyłane są w formie binarnej, więc nie można odczytywać ich standardowym oprogramowaniem do monitorowania portu szeregowego.
* Program do odczytu danych dostępny jest tylko na Windowsa, a celem autora było strumieniowanie danych na dowolną platformę. Kolejnymi krokami jest zautomatyzowana analiza, jednakże jest to dalszy etap realizacji projektu - pierwszym jest odczyt danych z shielda.
Do stworzenia oprogramowania autor wykorzystał Chrome App, które pozwalają na tworzenie aplikacji z wykorzystaniem jedynie HTMLa i JavaScriptu. Więcej o tych aplikacjach dowiedzieć można się tutaj.
Kod programu który odbiera dane z Arduino autor zapisał na repozytorium dostępnym tutaj. Aplikacja po zainstalowaniu zapewnia interfejs, wyglądający mniej-więcej tak:
Aby zainstalować aplikację w Chromie wystarczy sklonować powyższe repozytorium i kliknąć w sekcję "Load the extension". Następnie na Arduino instalujemy skecz dostępny na githubie.
Sketch stworzony w Arduino wysyła pakiety danych binarnych o następującym formacie:
Kod: C / C++
To oznacza łącznie 17 bajtów. Pierwsza dwa to odpowiednio 165 i 90 a ostatni to jedynka. Dzięki temu Chrome App może z łatwością dzielić dane na poszczególne pakiety. W jego obrębie każdy odczyt wartości analogowej zapisywany jest jako 16 bitowy integer, co oznacza, że trzeba te liczby zrekonstruować na podstawie podzielonych na części wartości. Do tego celu wykorzystana została prosta funkcja:
Kod: C / C++
W skeczu Arduino widać, że dane nadawane są w następującej kolejności - najpierw wysoka część bajtu, potem niska:
Kod: C / C++
Więc aby zrekonstruować wartość z pierwszego kanału (CH1) wystarczy wykorzystać funkcję: byteArrayToLong([TXBuf[5], TXBuff[4]]), to znaczy najpierw z niską (low) częścią, a potem wysoką (high). Następnie aplikacja wykorzystuje CanvasJS aby prezentować dane w czasie rzeczywistym. W danym momencie na żywo prezentowany jest jedynie jeden kanał analogowy.
Teraz wystarczy tylko podłączyć elektrody do "pacjenta", co jak zauważa autor nie jest takie proste, gdyż trudni jest zrealizować odpowiedni kontakt pomiędzy skórą a elektrodą. Konfiguracja w której układ działał najlepiej to elektrody L i R na, odpowiednio lewym i prawym nadgarstku, a elektroda D na kostce. Jak zauważa autor, elektrody na nadgarstkach muszą być ciasno zapięte i najlepiej posmarowane żelem poprawiającym ich kontakt ze skórą.
Dalsze plany:
* Automatyczna detekcja szczytów
* Obliczanie częstotliwości skurczu serca
* Obliczanie wariancji częstotliwości skurczu serca
Źrodło: http://www.talkingquickly.co.uk/2015/01/diy-ekg-with-arduino-javascript/
Fajne? Ranking DIY