Erstellen Sie ein IoT -EKG-System (Elektrokardiogramm) mit einem AD8232 + ESP32, um die elektrische Aktivität Ihres Herzens aufzuzeichnen

Ammar Chauhan
· 6 Minuten Lesezeit
Per E-Mail versenden

Herzkrankheiten stellen seit vielen Jahren eine weit verbreitete Erkrankung dar. Studien der Weltgesundheitsorganisation (WHO) zeigen zudem, dass die meisten Todesfälle auf Herzkrankheiten zurückzuführen sind. Daher darf diese Krankheit nicht unterschätzt werden. Aus diesem Grund werden medizinische Geräte und Überwachungssysteme entwickelt, um den Krankheitsverlauf professionell zu erfassen.

Wir wissen, dass diese Krankheiten durch die Analyse und Überwachung des EKG-Signals im Frühstadium verhindert werden können. Aus diesem Grund habe ich mich entschieden, an diesem Projekt mitzuarbeiten und mein EKG-Signal mithilfe der Ubidots IoT Entwicklungsplattform .

In diesem Artikel beschreiben wir die grundlegende Inbetriebnahme und den Betrieb des Herzfrequenzmessers AD8232 . Anschließend zeigen wir Ihnen, wie Sie ihn mit Ihrem bevorzugten Mikrocontroller verbinden und mithilfe einer IoT Plattform Visualisierungen erstellen.

Was ist AD8232?

Der AD8232 ist ein kleiner Chip, der die elektrische Aktivität des Herzens misst. Diese elektrische Aktivität kann als EKG (Elektrokardiogramm) dargestellt werden. Ein Elektrokardiogramm dient der Diagnose verschiedener Herzerkrankungen. (Weitere Informationen finden Sie im Datenblatt hier. )

Der Plan sieht vor, das AD8232-Board so einzurichten, dass es das EKG-Signal erfasst und ein Ausgangssignal erzeugt. Dieses Ausgangssignal liefert etwa 1,5 Volt bei einer Abtastrate von 1 kHz. Anschließend werden diese Signale über USB vom Arduino übertragen, sodass wir sie im seriellen Monitor und Ubidotsüberprüfen können.

Ohne weitere Worte können wir anfangen!

Anforderungen

  • Ubidots -Konto
  • Arduino Uno / Mega / Nano
  • EKG-Modul (AD8232)
  • EKG-Elektroden – 3 Stück
  • EKG-Elektrodenanschluss – 3,5 mm
  • Datenkabel
  • Überbrückungskabel

Verdrahtung

Folgen Sie dem untenstehenden Diagramm und der Tabelle, um mit dem Verdrahten der benötigten Geräte zu beginnen:

Sobald Ihre Hardware ordnungsgemäß verkabelt ist, fahren wir mit der ESP32-Konfiguration fort.

ESP32 mit der Arduino IDE einrichten

Bitte folgen Sie den unten stehenden Schritten, dann können Sie den ESP32 mit der Arduino IDE programmieren.

1. Klicken Sie auf Datei > Einstellungen

2. in das Zusätzliche Board-Manager-URLs“ ein. Sie können mehrere URLs hinzufügen und diese gegebenenfalls durch Kommas trennen.

https://dl.espressif.com/dl/package_esp32_index.json

3. Um die vorgenommenen Änderungen zu speichern, drücken Sie unbedingt die OK-Taste.

4. Fügen Sie nun die ESP32- Plattform in der Arduino IDE hinzu. Klicken Sie dazu auf Werkzeug > Board > Boardverwalter.

5. Geben Sie in der Suchleiste „ ESP32 “ ein und installieren Sie das neueste Paket.

Quellcode hochladen

1. Nachdem Sie den ESP32 in der Arduino IDE korrekt eingerichtet haben, laden Sie den folgenden Code auf das Board hoch, nachdem Sie die erforderlichen Parameter zugewiesen haben.

  • WIFISSID: Ihre WLAN-SSID
  • PASSWORT : Ihr WLAN-Passwort
  • TOKEN: Ihre Ubidots TOKEN
  • MQTT_CLIENT_NAME: Ihre eigene 8-12 alphanumerische ASCII-Zeichenkette.

Quellcode

Um auf diesen Beispielcode sowie auf weitere IoT -Projekten zuzugreifen, besuchen Sie dieses Repository .

/**************************************** * Bibliotheken einbinden ****************************************/ #include<WiFi.h> #enthalten<PubSubClient.h> #define WIFISSID "Ihr WLAN-Name" // Hier Ihre WLAN-SSID einfügen #define PASSWORD "Ihr WLAN-Passwort" // Hier Ihr WLAN-Passwort einfügen #define TOKEN "Ihr Token" // Hier Ihren Ubidots-Token einfügen #define MQTT_CLIENT_NAME "1234a5d6798" // MQTT-Client-Name. Bitte geben Sie eine 8-12 Zeichen lange alphanumerische ASCII-Zeichenkette ein. // Es sollte eine zufällige und eindeutige ASCII-Zeichenkette sein, die sich von allen anderen Geräten unterscheidet. /**************************************** * Konstanten definieren ****************************************/ #define VARIABLE_LABEL "sensor" // Variablenbezeichnung zuweisen #define DEVICE_LABEL "esp32" // Gerätebezeichnung zuweisen #define SENSOR A0 // A0 als SENSOR festlegen char mqttBroker[] = "ubidots"; char payload[100]; char topic[150]; // Speicherplatz für zu sendende Werte char str_sensor[10]; /**************************************** * Hilfsfunktionen ****************************************/ WiFiClient ubidots; PubSubClient client(ubidots); void callback(char* topic, byte* payload, unsigned int length) { char p[length + 1]; memcpy(p, payload, length); p[length] = NULL; Serial.write(payload, length); Serial.println(topic); } void reconnect() { // Schleife, bis die Verbindung wiederhergestellt ist while (!client.connected()) { Serial.println("Versuche MQTT-Verbindung..."); // Verbindungsversuch if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) { Serial.println("Verbunden"); } else { Serial.print("Fehlgeschlagen, rc="); Serial.print(client.state()); Serial.println(" Versuchen Sie es in 2 Sekunden erneut"); // 2 Sekunden warten, bevor es erneut versucht delay(2000); } } } /**************************************** * Hauptfunktionen ****************************************/ void setup() { Serial.begin(115200); WiFi.begin(WIFISSID, PASSWORD); // Pin als INPUT zuweisen pinMode(SENSOR, INPUT); Serial.println(); Serial.print("Warte auf WLAN..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WLAN verbunden"); Serial.println("IP-Adresse: "); Serial.println(WiFi.localIP()); client.setServer(mqttBroker, 1883); client.setCallback(callback); } void loop() { if (!client.connected()) { reconnect(); } sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); sprintf(payload, "%s", ""); // Bereinigt die Nutzdaten sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Fügt die Variablenbezeichnung hinzu float sensor = analogRead(SENSOR); /* 4 ist die minimale Breite, 2 die Genauigkeit; der Float-Wert wird in str_sensor kopiert */ dtostrf(sensor, 4, 2, str_sensor); sprintf(payload, "%s {\"value\": %s}}", payload, str_sensor); // Fügt den Wert hinzu Serial.println("Daten werden in der Ubidots Cloud veröffentlicht"); client.publish(topic, payload); client.loop(); delay(500); }

2. Überprüfen Sie Ihren Code in der Arduino IDE. Dazu sehen Sie oben links in der Arduino IDE das Häkchen- Symbol; tippen Sie darauf, um Ihren Code zu überprüfen.

3. Laden Sie den Code in Ihr „ ESP32 Dev Kit “ hoch. Wählen Sie dazu das Symbol mit dem „ Pfeil nach rechts “ neben dem Symbol mit dem „ Häkchen “.

4. Nach dem Hochladen des Codes öffnen Sie den seriellen Monitor . Dort sehen Sie, wie das Gerät die Verbindung zum WLAN und zum MQTT-Broker herstellt.

Ubidots einrichten

Richten wir ein Ubidots - Dashboard . Um es zu erstellen, gehen Sie zum Abschnitt Dashboard (Daten > Dashboard ).

1. Klicken Sie anschließend auf „ Neues Widget hinzufügen “ und wählen Sie Ihr Widget aus:

2. Wählen Sie den gewünschten Widget-Typ aus. In meinem Fall wähle ich das „ Liniendiagramm“ :

3. Wählen Sie anschließend die Variable aus, deren Daten angezeigt werden sollen. Ubidots ermöglicht es Ihnen, dem Widget einen individuellen Namen, eine Farbe, den anzuzeigenden Datenzeitraum und vieles mehr zuzuweisen. Entdecken Sie alle Optionen der verschiedenen Widget-Typen. Um die Widget-Erstellung abzuschließen, klicken Sie auf das grüne Symbol.

Ubidots IoT -Anwendungsentwicklungsplattform können Sie nun Ihr EKG-Signal und andere Variablen aus der Ferne überwachen :