//This combines the sensors and buzzer with the GSM
#include <SoftwareSerial.h> //used for GSM
SoftwareSerial mySerial(2, 3);
String cmd = "";
const float BETA = 3950; // should match the Beta Coefficient of the thermistor
const int motionPin = 13;
const int buzzPin = 12;
void setup() {
Serial.begin(9600);// put your setup code here, to run once:
//thermistor is connected to A0
pinMode(motionPin, INPUT_PULLUP); //motion sensor
pinMode(buzzPin, OUTPUT); //Buzzer
mySerial.begin(9600);
Serial.print("Initializing");
mySerial.println("AT");
updateSerial();
mySerial.println("AT+CMGF=1");
updateSerial();
mySerial.println("AT+CNMI=1,2,0,0,0");
updateSerial();
}
void loop() {
int analogValue = analogRead(A0); //thermistor uses analog pins
float celsius = 1 / (log(1 / (1023. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
int motion = digitalRead(motionPin);
int buzzTime = 150; //buzzer rhythm
static int trackingMode = 0; //remembers if someone was in the backseat
static int trackingTime = 0;
//---------------------
updateSerial();
Serial.print(motion);
Serial.print(" ");
Serial.print(celsius);
Serial.print(" ");
if (motion == 1){
trackingMode = 1; //someone is in the backseat
trackingTime = 200; //memory of someone in backseat
}
if (trackingMode == 1) {
Serial.print("Passenger?");
Serial.print(" ");
}
//alert siren for heat stroke or hypothermia threat
if (trackingMode == 1 && (celsius >= 40 || celsius <= 0)) {
Serial.print("DANGER!");
Serial.print(" ");
tone(buzzPin,150,50);
delay(buzzTime);
tone(buzzPin,250,50);
}
else delay(buzzTime); //delay compensates for buzzer usage
Serial.println();
if (trackingMode == 1) {
trackingTime--; //passenger memory fades
if (trackingTime == 0) {
trackingMode = 0;
alert_end();
}
}
} //end of the main loop
void updateSerial(){
delay(500);
while (Serial.available()){
cmd += (char)Serial.read();
cmd.trim();
if (cmd.equals("S") || cmd.equals("s")){
testSMS();
} else {
mySerial.print(cmd);
mySerial.println("");
}
}
}
void alert_end(){
//Qamar's phone
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+12816761164\"\r");
delay(500);
Serial.println("Danger Resolved.");
delay(500);
Serial.write(26);
//Jesse's phone
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+8327956864\"\r");
delay(500);
Serial.println("Danger Resolved.");
delay(500);
Serial.write(26);
}
void testSMS(){
//Qamar's phone
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+12816761164\"\r");
delay(500);
Serial.println("Test Successful.");
delay(500);
Serial.write(26);
//Jesse's phone
Serial.println("AT+CMGF=1");
delay(500);
Serial.println("AT+CMGS=\"+8327956864\"\r");
delay(500);
Serial.println("Test Successful.");
delay(500);
Serial.write(26);
}