Group1_ECE595 / Mbed 2 deprecated ECE595_Group9_FinalProject

Dependencies:   mbed Servo mbed-rtos MQ2 DHT

Files at this revision

API Documentation at this revision

Comitter:
roycoll
Date:
Tue Apr 23 15:14:58 2019 +0000
Child:
1:98989411e334
Commit message:
Edit

Changed in this revision

DHT.lib Show annotated file Show diff for this revision Revisions of this file
MQ2.lib Show annotated file Show diff for this revision Revisions of this file
Servo.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT.lib	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/teams/components/code/DHT/#6937e130feca
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MQ2.lib	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/azazeal88/code/MQ2/#944051b30179
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.lib	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/simon/code/Servo/#36b69a7ced07
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,182 @@
+#include "mbed.h"
+#include "DHT.h"
+#include "MQ2.h"
+#include "rtos.h"
+#include "Servo.h"
+
+
+ DigitalIn Occupant(D10);       //Hall Switch input shows to determine if vehicle is occupied
+ DigitalIn EngSw(D3);           //Button D3 turns Engine on and off
+ DigitalOut Buzz(D2);           //Alarm signaling high gas levels
+ DigitalOut Engine(D9);         //Autoflash LED represents Engine running
+ DigitalOut Red(PTC3);          //RED LED (RGB) D7
+ DigitalOut Green(PTC2);        //GREEN LED (RGB) D6
+ DigitalOut Blue(PTA2);         //BLUE LED (RGB) D5
+ DigitalOut Heat(LED1);         //Red on-board LED 
+ DigitalOut AC(LED3);           //Blue on-board LED
+ DigitalOut led2(LED2);         //Green on-board LED 
+ DHT sensor(D4, DHT11);         //Temperature and humidity sensor
+ PwmOut PWM1(A4);               //pin A4 == pin A5
+ Serial pc(USBTX, USBRX);       
+ MQ2 mq2(A1);                   // Analog Port to read from MQ2_gas sensor
+ Servo myservo(A5);             //Servo signal to simulate a window opening or closing
+ InterruptIn sw2(SW2);          //Switch used to manually switch between AC/Heater setting(led color)
+ InterruptIn sw3(SW3);          //Switch used to manually open or close the window
+   float p = 0; 
+   float h = 0.0f, c = 0.0f, f = 0.0f, k = 0.0f, dp = 0.0f, dpf = 0.0f; 
+   int x = 1;
+   int win = 0;  
+   int fan = 0;                /*DC motor signal*/
+
+
+int main() {
+        myservo = p;
+        pc.baud(115200);
+        mq2.begin();                                                           // 'Calibrate' sensor
+        MQ2_data_t MQ2_data;                                                        // Structure to hold data.
+        sensor.readData();
+        Engine = 0;
+        Heat = 1;
+        AC = 1;
+        led2 = 1;
+        int on = 1, off = 0;
+        int open = 1, closed = 0;
+        Buzz = !off;
+        win = closed;
+        PWM1.period_ms(500);
+        PWM1.pulsewidth_ms(fan);
+  
+while (true) 
+    {           mq2.read(&MQ2_data);
+                PWM1.period_ms(500);
+                PWM1.pulsewidth_ms(fan);
+                int error = 0;               //Thread::wait(250);
+                error = sensor.readData();
+                                if (0 == error) {
+                                    c   = sensor.ReadTemperature(CELCIUS);
+                                    f   = sensor.ReadTemperature(FARENHEIT);
+                                    k   = sensor.ReadTemperature(KELVIN);
+                                    h   = sensor.ReadHumidity();
+                                    dp  = sensor.CalcdewPoint(c, h);
+                                    dpf = sensor.CalcdewPointFast(c, h);
+                                    pc.printf("Temperature in Celcius: %4.2f\r\nTemperature in Farenheit: %4.2f\r\n", c, f);
+                                    //printf("Temperature in Kelvin: %4.2f,\r\nCelcius: %4.2f,\r\n Farenheit %4.2f\r\n", k, c, f);
+                                    //printf("Humidity is %4.2f, Dewpoint: %4.2f, Dewpoint fast: %4.2f\n", h, dp, dpf);
+                                }
+                                 else {
+                                    pc.printf("Temperature in Celcius: %4.2f\r\nTemperature in Farenheit: %4.2f\r\n", c, f);    //pc.printf("Error: %d\n", error);
+                                }
+                                         //pc.printf("................................\r\n");                      
+                                //mq2.read(&MQ2_data);                                                     // Alt reading method, reading to structure
+                                pc.printf("CO PPM: %.0f\r\n",MQ2_data.co);                              // Return data from structure
+                                //pc.printf("Smoke PPM: %.0f\r\n",MQ2_data.smoke);                        // Return data from structure
+                                //pc.printf("LPG PPM: %.0f\r\n",MQ2_data.lpg);                            // Return data from structure
+                                pc.printf("................................\r\n");                      
+                                // wait(.1);
+                   if(EngSw == 0) {
+                        if(Engine == off){
+                        Engine = on;}
+                        else{
+                        Engine = off;
+                        AC = !off;
+                        Heat = !off;
+                        }
+                    }           
+                   if((sw2 == 0) && (win == closed)){
+                                                    for(; p<1.0 && sw2 == 0; p += 0.05) {          //**Servo simulates opening a window if CarbonMonoxide level inside becomes too high while occupant is present 
+                                                    myservo = p;
+                                                    wait(0.05);
+                                                    }
+                                                win = open;
+                                                }
+                   else if((win == open) && (sw2 == 0)){
+                                                    for(; p>0 && sw2 ==0; p -= 0.05) {
+                                                    myservo = p;
+                                                    wait(0.05);
+                                                    }
+                                                win = closed;
+                                                } 
+                   if(sw3 == 0 && Engine == on){                                  //***If switch3 is pressed 
+                                if(AC == !on)    
+                                { Heat = !on;AC = !off;}
+                                else if(Heat == !on)  
+                                {Heat=!off;AC=!off;
+                                  fan=off;  }
+                                else 
+                                AC = !on;
+                              } 
+                         if(Heat == !on || AC == !on) {  
+                             fan = 4;}
+                         else if(Heat == !off && AC == !off){
+                             fan = off;}           
+                   if(Occupant == 1){  
+                         Red = 0;                  //   
+                         Blue = 0;                 //(r,g,b) = (0,0,0) = white
+                         Green = 0;
+                         Buzz = !off; }                // 
+                  else if(Occupant == 0)
+                     {          
+                             if(MQ2_data.co>=300)
+                                {              // wait(.5);                  //
+                                 Red = 0;                  //
+                                 Blue = 1;                 //(r,g,b) = (0,1,1) = red
+                                 Green = 1;                //
+                                 Buzz = !on; 
+                                 if(win == closed){
+                                                    for(; p<1.0; p += 0.05) {          //**Servo simulates opening a window if CarbonMonoxide level inside becomes too high while occupant is present 
+                                                    myservo = p;
+                                                    wait(0.05);
+                                                    }
+                                                win = open;
+                                                }
+                                      if(win==open && Engine == on){
+                                          Engine = off;}           
+                                 }                  //
+                             else if(MQ2_data.co >=50 && MQ2_data.co <= 300)
+                                 {    //wait(.5);                  //
+                                 Buzz = !off;
+                                 Blue = 1;                 //(r,g,b) = (0,0,1) = yellow
+                                 Green = 0;                //
+                                 Red = 0;                  //
+                                 }//wait(.5);                 //**RGB end**
+                             else{
+                                  Red = 1;                  //   
+                                  Blue = 1;                 //(r,g,b) = (1,1,0) = green
+                                  Green = 0;
+                                  Buzz = !off;
+                             }
+                            if(f >= 80 || f <= 70)        //Temperature from DHT 
+                             {          Engine = on;                  //x = 10;
+                                        fan = 4;
+                                        if(f>=80){ 
+                                                AC = !on;Heat=!off;
+                                                if(win == closed){                      //**Servo simulates opening a window if Temperature inside becomes too high while occupant is present 
+                                                    for(; p<1.0; p += 0.05) {
+                                                    myservo = p;
+                                                    wait(0.05);
+                                                    }
+                                                win = open;
+                                                }
+                                        else if(f<=70)
+                                            {       Heat = !on;AC=!off;  
+                                                    if(win == open){
+                                                            for(; p>0; p -= 0.05) {
+                                                            myservo = p;
+                                                            wait(0.05);
+                                                            }
+                                                    win = closed;
+                                                 }       
+                                            }                      
+                                      }
+                                } 
+                            else if(Occupant == 0 && AC == !on){
+                                         Engine = on;                  //x = 10;
+                                       fan= 4;
+                                    } 
+                            else if(Occupant == 0 && Heat == !on){
+                                         Engine = on;                  //x = 10;
+                                       fan=4;
+                                    }  //**DC motor sig end
+        }
+    } 
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-rtos.lib	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-rtos/#34e80e862021
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Apr 23 15:14:58 2019 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/6213f644d804
\ No newline at end of file