Cirkit Designer LogoCirkit DesignerYour all-in-one circuit design IDE Launch Cirkit Designer App

Arduino Mega 2560 and ESP8266 Based Multi-Sensor Health Monitoring System with GPS and GSM

View and Edit Project In Cirkit DesignerImage of Arduino Mega 2560 and ESP8266 Based Multi-Sensor Health Monitoring System with GPS and GSM

Circuit Documentation

Summary

This circuit is designed to monitor various health parameters and environmental conditions. It includes an Arduino Mega 2560 as the main microcontroller, interfaced with a variety of sensors and modules such as the ESP8266 NodeMCU for WiFi connectivity, a GPS module for location tracking, a GSM module for communication, and various sensors for measuring temperature, heart rate, and blood oxygen levels. The circuit also features an OLED display for data visualization, a DFPlayer Mini for audio output, and a panic/emergency button.

Component List

Microcontrollers

Sensors and Modules

Wiring Details

ESP8266 NodeMCU

Arduino Mega 2560

0.96" OLED

Sim800l

MAX30102

DS18B20 Temperature Sensor

Green Button

MPU-6050

AD8232 HeartRate Monitor

DFPlayer MINI

Loudspeaker

GPS NEO 6M

Documented Code

#include <Adafruit_MAX31855.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_MAX30105.h>
#include <DallasTemperature.h>
#include <OneWire.h>
#include <MPU6050.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

// OLED Display
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);

// MAX30102
Adafruit_MAX30105 max30102;

// DS18B20
OneWire oneWire(2);
DallasTemperature tempSensor(&oneWire);

// MPU6050
MPU6050 mpu;

// GSM Module
SoftwareSerial gsmSerial(12, 13); // GSM TX, RX
#define GUARDIAN_NUMBER "+1234567890"
#define HOSPITAL_NUMBER "+0987654321"

// ECG Sensor
#define ECG_PIN A0
#define LEAD_OFF_PLUS_PIN 7
#define LEAD_OFF_MINUS_PIN 8

// Emergency Button
#define PANIC_BUTTON_PIN 4

// GPS Data
String latitude = "N/A";
String longitude = "N/A";

// DFPlayer Mini
SoftwareSerial dfSerial(10, 11); // DFPlayer RX, TX
DFRobotDFPlayerMini dfPlayer;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  
  // OLED Initialization
  if (!display.begin(SSD1306_I2C_ADDRESS, 0x3C)) {
    Serial.println("OLED initialization failed.");
    for (;;);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);

  // Initialize MAX30102
  if (!max30102.begin()) {
    Serial.println("MAX30102 not detected.");
    for (;;);
  }

  // Initialize DS18B20
  tempSensor.begin();

  // Initialize MPU6050
  mpu.initialize();

  // Initialize ECG Sensor
  pinMode(LEAD_OFF_PLUS_PIN, INPUT);
  pinMode(LEAD_OFF_MINUS_PIN, INPUT);

  // Initialize Emergency Button
  pinMode(PANIC_BUTTON_PIN, INPUT_PULLUP);

  // Initialize GSM
  gsmSerial.begin(9600);

  // Initialize DFPlayer Mini
  dfSerial.begin(9600);
  if (!dfPlayer.begin(dfSerial)) {
    Serial.println("DFPlayer initialization failed!");
    for (;;);