#include <Wire.h>
#include <LiquidCrystal.h>
// Simulated data variables
float simulatedOxygenSaturation = 98.5;
int simulatedHeartRate = 75;
int simulatedBloodPressureSys = 120;
int simulatedBloodPressureDia = 80;
float simulatedTemperature = 98.6;
// Previous data variables for intrusion detection
float prevOxygenSaturation;
int prevHeartRate;
int prevBloodPressureSys;
int prevBloodPressureDia;
float prevTemperature;
// LCD setup
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // Adjust the pin numbers based on your setup
void setup() {
lcd.begin(16, 2);
lcd.print("Cardiology Patient");
delay(2000);
Serial.begin(9600); // Set the Serial Monitor baud rate
}
void loop() {
// Simulate data update
simulateData();
// Display simulated data on LCD
displayData();
// Simulate sending data to central monitoring system through Wi-Fi
simulateDataTransmission();
// Intrusion detection
if (detectIntrusion()) {
// Intrusion detected, handle accordingly
}
delay(2000); // Adjust the delay based on your simulation requirements
}
void simulateData() {
// Store previous data for intrusion detection
prevOxygenSaturation = simulatedOxygenSaturation;
prevHeartRate = simulatedHeartRate;
prevBloodPressureSys = simulatedBloodPressureSys;
prevBloodPressureDia = simulatedBloodPressureDia;
prevTemperature = simulatedTemperature;
// Simulate changes in vital signs with larger random values for quicker changes
simulatedOxygenSaturation += random(-5, 6);
simulatedHeartRate += random(-10, 11);
simulatedBloodPressureSys += random(-10, 11);
simulatedBloodPressureDia += random(-5, 6);
simulatedTemperature += random(-50, 51) / 10.0;
// Ensure data stays within realistic ranges
simulatedOxygenSaturation = constrain(simulatedOxygenSaturation, 95, 100);
simulatedHeartRate = constrain(simulatedHeartRate, 60, 100);
simulatedBloodPressureSys = constrain(simulatedBloodPressureSys, 100, 140);
simulatedBloodPressureDia = constrain(simulatedBloodPressureDia, 70, 90);
simulatedTemperature = constrain(simulatedTemperature, 97.0, 99.0);
}
void displayData() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("O2: ");
lcd.print(simulatedOxygenSaturation);
lcd.print("% HR: ");
lcd.print(simulatedHeartRate);
lcd.setCursor(0, 1);
lcd.print("BP: ");
lcd.print(simulatedBloodPressureSys);
lcd.print("/");
lcd.print(simulatedBloodPressureDia);
lcd.print(" Temp: ");
lcd.print(simulatedTemperature);
}
void simulateDataTransmission() {
Serial.print("Sending data to central system - ");
Serial.print("O2: ");
Serial.print(simulatedOxygenSaturation);
Serial.print("%, HR: ");
Serial.print(simulatedHeartRate);
Serial.print(", BP: ");
Serial.print(simulatedBloodPressureSys);
Serial.print("/");
Serial.print(simulatedBloodPressureDia);
Serial.print(", Temp: ");
Serial.println(simulatedTemperature);
}
bool detectIntrusion() {
// Simulate a basic intrusion detection by checking for significant deviations
float threshold = 2.0; // Adjust the threshold based on your scenario
if (abs(simulatedOxygenSaturation - prevOxygenSaturation) > threshold ||
abs(simulatedHeartRate - prevHeartRate) > threshold ||
abs(simulatedBloodPressureSys - prevBloodPressureSys) > threshold ||
abs(simulatedBloodPressureDia - prevBloodPressureDia) > threshold ||
abs(simulatedTemperature - prevTemperature) > threshold) {
handleIntrusion(); // Call handleIntrusion when an intrusion is detected
return true; // Intrusion detected
}
return false; // No intrusion
}
void handleIntrusion() {
// Print a message to Serial Monitor to confirm that the function is called
Serial.println("Handling Intrusion...");
// Add code here to handle the intrusion, such as logging, alerting, or triggering security measures.
// Example: Log intrusion to Serial Monitor
Serial.print("Previous Data - O2: ");
Serial.print(prevOxygenSaturation);
Serial.print("%, HR: ");
Serial.print(prevHeartRate);
Serial.print(", BP: ");
Serial.print(prevBloodPressureSys);
Serial.print("/");
Serial.print(prevBloodPressureDia);
Serial.print(", Temp: ");
Serial.println(prevTemperature);
Serial.print("Current Data - O2: ");
Serial.print(simulatedOxygenSaturation);
Serial.print("%, HR: ");
Serial.print(simulatedHeartRate);
Serial.print(", BP: ");
Serial.print(simulatedBloodPressureSys);
Serial.print("/");
Serial.print(simulatedBloodPressureDia);
Serial.print(", Temp: ");
Serial.println(simulatedTemperature);
// Add additional actions such as sending alerts, triggering security measures, etc.
}