Autonomous Environmental Guard and Intelligence System – A Physical Computing Prototype for Disaster Monitoring and Early Warning
Team Members: Pratik Kurtarkar, Varad Hande

Prototype Model
The objective of the project is to create an intelligent system to monitor remote and inaccessible areas that are fragile, sensitive and vulnerable to natural disasters.
In light of recent events in Nepal, where flash floods caused by glacial melting resulted in tremendous losses of human lives, natural ecosystems and infrastructure, we, as a group, chose Disaster Relief Architecture as our field of interest, focusing on preventive measures.
For this particular issue, we proposed an earthquake monitoring system named AEGIS (Autonomous Environmental Guard and Intelligence System). This system is designed to monitor inaccessible areas using seismic sensors. During such unfortunate events, information about unusual ground movements will be relayed through public alert systems, such as warning lights and sirens, as well as through drones, to inform people residing around these vulnerable areas about potential disasters and activate preventive and protective measures at the monitoring station.
The project brief was to design a system that integrates input, processing and output mechanisms to address an architectural challenge or enhance spatial experience using at least one sensor and one actuator. To prototype this idea, we used a 3-axis accelerometer to measure movements and an LED light, a buzzer and a display screen to communicate warning states. The accelerometer demonstrates the interaction logic by evaluating the values along the set axes against predefined thresholds. When these thresholds are exceeded, signals are sent to the LED light, buzzer and display screen. The light and buzzer are programmed to operate at varying intensities, moving from high to low in a cyclical pattern. The display screen presents cautionary messages such as ‘ALERT’ and ‘EVACUATE IMMEDIATELY’.
The main challenge for us was understanding the functioning and limitations of the accelerometer. We addressed this by exploring the parameters of the code and physically moving the sensor along all three axes to establish the threshold values. To simulate the light and buzzer alerts, we experimented with different intensity values. To make the system more interactive, we also incorporated the display screen to flash alert messages.
For future prospects, the proposed program can be integrated into a wider disaster management system through alarm lights and sirens as part of the public alert infrastructure. It could simultaneously inform people through mobile messaging systems and provide voice alerts through drones deployed to patrol vulnerable areas. This system would help disseminate information rapidly to people in the vicinity, as well as to the disaster monitoring station team. By providing early warning assistance and supporting preparedness drills, the AEGIS system aims to minimize the loss of life and mitigate the potential damage caused by natural disasters.
Code:
#include “LIS3DHTR.h”
#include <Wire.h>
LIS3DHTR<TwoWire> LIS; //IIC
#define WIRE Wire
#include <Arduino.h>
#include <U8x8lib.h>
U8X8_SSD1306_128X64_NONAME_HW_I2C u8x8(/* reset=*/U8X8_PIN_NONE);
int motorPin = 3;
float xValue;
float yValue;
float zValue;
int ledPin = 6;
int btnBuzz = 5;
int lightValue;
int frequency;
void setup() {
// put your setup code here, to run once:
pinMode(ledPin, OUTPUT);
pinMode(btnBuzz, OUTPUT);
u8x8.begin();
u8x8.setPowerSave(0);
u8x8.setFlipMode(1);
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (!Serial) {};
LIS.begin(WIRE, 0x19);
Serial.println(LIS);
delay(100);
LIS.setFullScaleRange(LIS3DHTR_RANGE_2G);
LIS.setOutputDataRate(LIS3DHTR_DATARATE_100HZ);
LIS.setHighSolution(true);
}
void loop() {
// put your main code here, to run repeatedly:
xValue = LIS.getAccelerationX();
yValue = LIS.getAccelerationY();
zValue = LIS.getAccelerationZ();
Serial.print(“x:”);
Serial.print(xValue);
Serial.print(” “);
Serial.print(“y:”);
Serial.print(yValue);
Serial.print(” “);
Serial.print(“z:”);
Serial.println(zValue);
Serial.print(” “);
if (xValue >= 0.10 && xValue < 0.50 && yValue <= 0.10 && yValue < 0.50 && zValue >= 1.10 && zValue < 1.50) {
analogWrite(motorPin, 500);
u8x8.setFont(u8x8_font_chroma48medium8_r);
u8x8.drawString(4, 1, “!ALERT!”);
u8x8.drawString(4, 3, “EVACUATE”);
u8x8.drawString(3, 5, “IMMEDIATELY”);
u8x8.setInverseFont(0);
u8x8.refreshDisplay();
delay(4000);
u8x8.clearDisplay();
delay(100);
/*digitalWrite(ledPin, 255);
delay(500);
digitalWrite(btnBuzz, HIGH);
delay(500);*/
for (lightValue = 0; lightValue <= 255; lightValue += 5) {
analogWrite(ledPin, lightValue);
delay(150);
}
for (lightValue = 255; lightValue >= 0; lightValue -= 5) {
analogWrite(ledPin, lightValue);
delay(150);
}
for (frequency = 500; frequency <= 3000; frequency += 20) {
tone(btnBuzz, frequency);
delay(25);
}
for (frequency = 3000; frequency >= 500; frequency -= 20) {
tone(btnBuzz, frequency);
delay(25);
}
noTone(btnBuzz);
} else {
analogWrite(motorPin, 0);
u8x8.clearDisplay();
digitalWrite(ledPin, LOW);
digitalWrite(btnBuzz, LOW);
}
delay(50);
}




