IoT Projekte

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

Herzerkrankungen sind seit vielen Jahren eine der häufigsten Volkskrankheiten. Die Studie der Weltgesundheitsorganisation (WHO) zeigt auch, dass die meisten Menschen an Herzerkrankungen sterben. Daher darf diese Krankheit nicht auf die leichte Schulter genommen werden. Aus diesem Grund sind Gesundheitsgeräte und Überwachungssysteme darauf ausgelegt, Krankheiten professionell zu verfolgen.

Wir wissen, dass diese Krankheiten durch die Analyse und Überwachung des EKG-Signals im Anfangsstadium verhindert werden können. Auf dieser Grundlage habe ich beschlossen, an diesem Projekt mitzuarbeiten und mit der Überwachung meines EKG-Signals mithilfe IoT Entwicklungsplattform Ubidots .

In diesem Artikel werden wir die grundlegenden Schritte zum Starten und Betreiben des AD8232-Herzfrequenzmessers . Anschließend zeigen wir Ihnen, wie Sie es mit Ihrem bevorzugten Mikrocontroller verbinden und Visualisierungen mithilfe einer IoT Plattform erstellen.

Was ist der AD8232?

Der AD8232 ist ein hübscher kleiner Chip, der die elektrische Aktivität des Herzens misst. Diese elektrische Aktivität kann als EKG oder Elektrokardiogramm ausgedrückt werden. Ein Elektrokardiogramm hilft bei der Diagnose verschiedener Herzerkrankungen. (Weitere Informationen: Das Datenblatt finden Sie hier. )

Der Plan besteht darin, die AD8232-Karte so einzurichten, dass sie das EKG-Signal wahrnimmt und mit der Erzeugung des Ausgangssignals von der AD8232-Karte beginnt. Das Ausgangssignal beträgt etwa 1,5 Volt, was eine Abtastrate von 1.000 pro Sekunde ergibt. Anschließend werden diese Signale vom Arduino über USB gesendet, sodass wir sie über den seriellen Monitor und Ubidots überprüfen können.

Ohne mehr zu sagen, fangen wir an!

Anforderungen

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

Verdrahtung

Befolgen Sie das Diagramm und die Tabelle unten, um mit der Verkabelung der erforderlichen Geräte zu beginnen:

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

ESP32 mit Arduino IDE einrichten

Bitte befolgen Sie die folgenden Schritte und dann können Sie den ESP32 mit der Arduino IDE programmieren.

1. Klicken Sie auf Datei > Einstellungen

2. im Zusätzliche Board-Manager-URLs“ die unten stehende URL zu. Sie können mehrere URLs hinzufügen und diese bei Bedarf 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“ > „Board-Manager“.

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

Quellcode hochladen

1. Nachdem Sie den ESP32 in der Arduino IDE ordnungsgemäß eingerichtet haben, laden Sie den folgenden Code auf die Platine hoch, nachdem Sie ihr die erforderlichen Parameter zugewiesen haben.

  • WIFISSID: Ihre WLAN-SSID
  • PASSWORT : Ihr WLAN-Passwort
  • TOKEN: Ihre Ubidots TOKEN
  • MQTT_CLIENT_NAME: Ihre eigene ASCII-Zeichenfolge mit 8–12 alphanumerischen Zeichen.

Quellcode

Um auf diesen Beispielcode sowie auf andere IoT dieses Repository an .

/**************************************** * Bibliotheken einschließen ****** **********************************/ #enthalten<WiFi.h> #enthalten<PubSubClient.h> #define WIFISSID „Ihr WLAN-Namen“ // Geben Sie hier Ihre WifiSSID ein. #define PASSWORD „Ihr WLAN-Passwort“ // Geben Sie hier Ihr WLAN-Passwort ein. #define TOKEN „Ihr Token“ // Geben Sie Ihr Ubidots -TOKEN ein. #define MQTT_CLIENT_NAME „1234a5d6798“ / / MQTT-Clientname, bitte geben Sie Ihre eigene 8-12 alphanumerische ASCII-Zeichenfolge ein; //Es sollte eine zufällige und eindeutige ASCII-Zeichenfolge sein und sich von allen anderen Geräten unterscheiden /*********************************** ******** * Konstanten definieren ***************************************** */ #define VARIABLE_LABEL "sensor" // Variablenlabel zuweisen #define DEVICE_LABEL "esp32" // Gerätelabel zuweisen #define SENSOR A0 // A0 als SENSOR festlegen char mqttBroker[] = "industrial.api. ubidots .com "; char Nutzlast[100]; char topic[150]; // Platz zum Speichern der zu sendenden 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, Nutzlast, Länge); p[Länge] = NULL; Serial.write(Nutzlast, Länge); Serial.println(topic); } void reconnect() { // Schleife, bis wir wieder verbunden sind while (!client.connected()) { Serial.println("Versuch einer MQTT-Verbindung..."); // Versuch, eine Verbindung herzustellen if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) { Serial.println("Connected"); } else { Serial.print("Failed, rc="); Serial.print(client.state()); Serial.println("versuchen Sie es in 2 Sekunden erneut"); // Warten Sie 2 Sekunden, bevor Sie es erneut versuchen. Verzögerung (2000); } } } /**************************************** * Hauptfunktionen *** *************************************/ void setup() { Serial.begin(115200); WiFi.begin(WIFISSID, PASSWORD); // Den Pin als INPUT zuweisen pinMode(SENSOR, INPUT); Serial.println(); Serial.print("Warten auf WLAN..."); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); Verzögerung (500); } Serial.println(""); Serial.println("WiFi Connected"); 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 Nutzlast sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Fügt die Variablenbeschriftung hinzu float sensor = analogRead(SENSOR); /* 4 ist die Mindestbreite, 2 ist die Genauigkeit; Float-Wert wird auf str_sensor*/ dtostrf(sensor, 4, 2, str_sensor) kopiert; sprintf(payload, "%s {\"value\": %s}}", payload, str_sensor); // Fügt den Wert Serial.println("Daten in Ubidots Cloud veröffentlichen" hinzu); client.publish(topic, payload); client.loop(); Verzögerung (500); }

2. Überprüfen Sie Ihren Code in der Arduino IDE. Dazu sehen Sie in der oberen linken Ecke unserer Arduino IDE das „ Häkchen “-Symbol; Drücken Sie darauf, um Ihren Code zu bestätigen.

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

4. Öffnen Sie nach dem Hochladen des Codes den Serial Monitor und Sie werden sehen, wie die Geräte die Verbindung zum WLAN und zum MQTT-Broker herstellen.

Lassen Sie uns Ubidots einrichten

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

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

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

3. Wählen Sie dann die gewünschte Variable aus, um die Daten anzuzeigen. Ubidots können Sie einen individuellen Widget-Namen, eine Farbe, einen Zeitraum für die Anzeige der Daten und vieles mehr zuweisen. Ich lade Sie ein, alle Optionen für die verschiedenen Widget-Typen zu erkunden. Um die Widget-Erstellung abzuschließen, drücken Sie auf das grüne Symbol.

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