linkan_majumder
Published

ECG Monitoring System

A device that can conduct ECG on the go and show the output graph in your mobile and web.

IntermediateWork in progress12,950
ECG Monitoring System

Things used in this project

Story

Read more

Schematics

circuit diagram

Code

Ecg_Monitoring.ino

C/C++
/*Ecg Monitoring wirelessly from web*/

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

#define WIFISSID "Abctest"                             
#define PASSWORD "0oOP8QW-R54-OFg@yJ"                             
#define TOKEN "BBFF-Zh7ucB7cvbDmIdPHXTRYVHhmNKWOwy"         
#define MQTT_CLIENT_NAME "myecgsensor"                    //enter your own 8-12 alphanumeric character ASCII string
#define SENSOR A0 // Set the A0 as SENSOR                  //random and unique ascii string and different from all other devices

 

#define VARIABLE_LABEL "myecg" // Assing the variable label
#define DEVICE_LABEL "esp8266" // Assig the device label





 
char mqttBroker[]  = "industrial.api.ubidots.com";
char payload[100];
char topic[150];

char str_sensor[10];
 
/****************************************
 * Sub Functions
 ****************************************/
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() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.println("Attempting MQTT connection...");
    
    // Attemp to connect
    if (client.connect(MQTT_CLIENT_NAME, TOKEN, "")) {
      Serial.println("Connected");
    } else {
      Serial.print("Failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 2 seconds");
      // Wait 2 seconds before retrying
      delay(2000);
    }
  }
}
 
/****************************************
 * Main Functions
 ****************************************/
void setup() {
  Serial.begin(115200);
  WiFi.begin(WIFISSID, PASSWORD);
  // Assign the pin as INPUT 
  pinMode(SENSOR, INPUT);
 
  Serial.println();
  Serial.print("Waiting for WiFi...");
  
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  
  Serial.println("");
  Serial.println("WiFi Connected");
  Serial.println("IP address: ");
  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", ""); // Cleans the payload
  sprintf(payload, "{\"%s\":", VARIABLE_LABEL); // Adds the variable label
  
  float myecg = analogRead(SENSOR); 
  
  /* 4 is mininum width, 2 is precision; float value is copied onto str_sensor*/
  dtostrf(myecg, 4, 2, str_sensor);
  
  sprintf(payload, "%s {\"value\": %s}}", payload, str_sensor); // Adds the value
  Serial.println("Publishing data to Ubidots Cloud");
  client.publish(topic, payload);
  client.loop();
  delay(10);
}

Credits

linkan_majumder

linkan_majumder

1 project • 0 followers

Comments