Inhaltsverzeichnis:

IOT-Herzfrequenzmesser (ESP8266 und Android-App) - Gunook
IOT-Herzfrequenzmesser (ESP8266 und Android-App) - Gunook

Video: IOT-Herzfrequenzmesser (ESP8266 und Android-App) - Gunook

Video: IOT-Herzfrequenzmesser (ESP8266 und Android-App) - Gunook
Video: Smartwatch misst Bewegungen und Körperfunktionen: So funktioniert es | TECHBOOK 2024, Juli
Anonim
Image
Image

Als Teil meines Projekts im letzten Jahr wollte ich ein Gerät entwickeln, das Ihre Herzfrequenz überwacht, Ihre Daten auf einem Server speichert und Sie per Benachrichtigung benachrichtigt, wenn Ihre Herzfrequenz abnormal war. Die Idee zu diesem Projekt entstand, als ich versuchte, eine Fit-Bit-App zu entwickeln, die einen Benutzer benachrichtigt, wenn er ein Herzproblem hat, aber ich konnte keine Möglichkeit finden, Echtzeitinformationen zu verwenden. Das Projekt besteht aus vier Hauptteilen einschließlich der physikalischen Schaltung zur Messung des Herzschlags, einem ESP8266-WLAN-Modul mit Signalverarbeitungscode, dem Server zum Speichern des Codes und einer Android-App zur Anzeige der Herzfrequenz.

Ein Video, das die physikalische Schaltung detailliert beschreibt, ist oben zu sehen. Der gesamte Code für das Projekt ist auf meinem Github zu finden.

Schritt 1: Die Schaltung

Die Rennbahn
Die Rennbahn

Es gibt zwei Hauptmethoden, um einen Herzschlag zu messen, aber für dieses Projekt habe ich mich für die Photoplethysmographie (PPG) entschieden, bei der eine Infrarot- oder Rotlichtquelle verwendet wird, die durch die ersten Hautschichten gebrochen wird. Ein Fotosensor wird verwendet, um die Änderung der Lichtintensität (wenn Blut durch ein Gefäß fließt) zu messen. PPG-Signale sind unglaublich verrauscht, daher habe ich einen Bandpassfilter verwendet, um die spezifischen erforderlichen Frequenzen herauszufiltern. Ein menschliches Herz schlägt mit einer Frequenz von 1 bis 1,6 Hz. Der von mir verwendete Operationsverstärker war der lm324, der den besten Spannungs-Offset aller mir zur Verfügung stehenden Operationsverstärker hatte. Wenn Sie dieses Projekt neu erstellen, wäre ein Präzisions-Operationsverstärker eine viel bessere Wahl.

Es wurde nur eine Verstärkung von zwei verwendet, da die maximale Spannungstoleranz des ESP8266 3,3 V beträgt und ich mein Board nicht beschädigen wollte!

Folgen Sie der obigen Schaltung und versuchen Sie, es auf einem Brotbrett zum Laufen zu bringen. Wenn Sie zu Hause kein Oszilloskop haben, können Sie den Ausgang an einen Arduino anschließen und ihn darstellen, aber stellen Sie sicher, dass die Spannung nicht höher als die Toleranz des Arduino oder des Mikrocontrollers ist.

Die Schaltung wurde auf einem Steckbrett getestet und eine Änderung der Ausgabe wurde beobachtet, wenn ein Finger über die LED und den Fototransistor gelegt wurde. Ich beschloss dann, die Platine zusammenzulöten, die im Video nicht gezeigt wurde.

Schritt 2: Der Signalverarbeitungscode und die Serverkommunikation

Image
Image
Der Signalverarbeitungscode und die Serverkommunikation
Der Signalverarbeitungscode und die Serverkommunikation

Ich habe mich entschieden, die Arduino IDE auf dem ESP8266 zu verwenden, weil sie so einfach zu bedienen ist. Als das Signal aufgezeichnet wurde, war es immer noch sehr verrauscht, daher entschied ich mich, es mit einem FIR-Filter mit gleitendem Mittelwert mit einer Abtastzahl von zehn zu bereinigen. Ich habe ein Arduino-Beispielprogramm namens "Smoothing" modifiziert, um dies zu tun. Ich habe ein wenig experimentiert, um eine Möglichkeit zu finden, die Frequenz des Signals zu messen. Die Pulse waren von unterschiedlicher Länge und Amplitude, da das Herz vier verschiedene Pulsarten und die Eigenschaften von PPG-Signalen aufwies. Ich habe einen bekannten Mittelwert gewählt, den das Signal immer als Bezugspunkt für jeden Impuls durchquert. Ich habe einen Ringpuffer verwendet, um zu bestimmen, wann die Steigung des Signals positiv oder negativ war. Die Kombination dieser beiden ermöglichte es mir, die Periode zwischen den Impulsen zu berechnen, wenn das Signal positiv war und einem bestimmten Wert entsprach.

Die Software erzeugte einen ziemlich ungenauen BPM, der nicht wirklich verwendet werden konnte. Mit zusätzlichen Iterationen konnte ein besseres Programm entworfen werden, aber aus Zeitgründen war dies keine Option. Den Code finden Sie im unten stehenden Link.

ESP8266-Software

Schritt 3: Der Server und die Datenkommunikation

Der Server und die Datenkommunikation
Der Server und die Datenkommunikation

Ich habe mich für Firebase entschieden, um die Daten zu speichern, da es ein kostenloser Service ist und sehr einfach mit mobilen Apps zu verwenden ist. Es gibt keine offizielle API für Firebase mit dem ESP8266, aber ich fand, dass die Arduino-Bibliothek sehr gut funktioniert.

In der ESP8266WiFi.h-Bibliothek befindet sich ein Beispielprogramm, mit dem Sie sich mit der SSID und dem Passwort mit einem Router verbinden können. Dies wurde verwendet, um das Board mit dem Internet zu verbinden, damit Daten gesendet werden konnten.

Obwohl das Speichern von Daten einfach war, gibt es immer noch eine Reihe von Problemen beim Senden der Push-Benachrichtigungen über eine HTTP-POST-Anfrage. Ich habe einen Kommentar auf dem Github gefunden, der eine Legacy-Methode verwendet, um dies über Google Cloud-Messaging und die HTTP-Bibliothek für ESP8266 zu tun. Diese Methode ist im Code auf meinem Github zu sehen.

Auf Firebase habe ich ein Projekt erstellt und die API und Registrierungsschlüssel in der Software verwendet. Das Cloud-Messaging von Firebase wurde mit der App verwendet, um Push-Benachrichtigungen an den Benutzer zu senden. Als die Kommunikation getestet wurde, konnten Daten in der Datenbank angezeigt werden, während der ESP8266 lief.

Schritt 4: Die Android-App

Die Android-App
Die Android-App

Eine sehr einfache Android-App wurde mit zwei Aktivitäten entwickelt. Bei der ersten Aktivität wurde der Nutzer über die Firebase API angemeldet oder registriert. Ich habe das Datenblatt recherchiert und verschiedene Tutorials zur Verwendung von Firebase mit einer mobilen App gefunden. Die Hauptaktivität, die dem Datenbenutzer des Benutzers einen Echtzeit-Ereignis-Listener anzeigte, so dass es keine merklichen Verzögerungen bei Änderungen am BPM des Benutzers gab. Die Push-Benachrichtigungen erfolgten über das bereits erwähnte Firebase Cloud Messaging. Das Firebase-Datenblatt enthält viele nützliche Informationen zur Implementierung und die App kann getestet werden, indem Benachrichtigungen vom Dashboard auf der Firebase-Website gesendet werden.

Den gesamten Code für die Aktivitäten und die Methoden für das Cloud-Messaging finden Sie in meinem Github-Repository.

Schritt 5: Fazit

Es gab einige große Probleme bei der Messung des BPM des Benutzers. Die Werte schwankten stark und waren nicht brauchbar, um den Gesundheitszustand eines Benutzers zu bestimmen. Dies lief auf den Signalverarbeitungscode hinaus, der auf dem ESP8266 implementiert wurde. Nach weiteren Recherchen fand ich heraus, dass ein Herz vier verschiedene Pulse mit unterschiedlicher Periode hat, daher war es kein Wunder, dass die Software ungenau war. Eine Möglichkeit, dies zu bekämpfen, besteht darin, einen Durchschnitt der vier Pulse in einem Array zu nehmen und die Herzperiode über diese vier Pulse zu berechnen.

Der Rest des Systems war funktionsfähig, aber dies ist ein sehr experimentelles Gerät, das ich bauen wollte, um zu sehen, ob das Objekt möglich ist. Der Legacy-Code, der zum Senden von Push-Benachrichtigungen verwendet wurde, wird bald unbrauchbar sein, wenn Sie dies also Ende 2018 oder spät lesen, wäre eine andere Methode erforderlich. Dieses Problem tritt jedoch nur beim ESP auf. Wenn Sie dies also auf einem WiFi-fähigen Arduino implementieren möchten, wäre dies kein Problem.

Wenn Sie Fragen oder Probleme haben, wenden Sie sich bitte an Instructables.

Empfohlen: