It collects environmental data and send it to the ESP module also able to receive the configuration message.

Dependencies:   BMP280 DHT mbed

Files at this revision

API Documentation at this revision

Comitter:
thinkfire
Date:
Tue Feb 07 20:16:43 2017 +0000
Commit message:
Debugging Process going smoothly...

Changed in this revision

BMP280.lib Show annotated file Show diff for this revision Revisions of this file
DHT.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.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 085d20f0ca45 BMP280.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BMP280.lib	Tue Feb 07 20:16:43 2017 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/12104404/code/BMP280/#c72b726c7dc9
diff -r 000000000000 -r 085d20f0ca45 DHT.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT.lib	Tue Feb 07 20:16:43 2017 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/thinkfire/code/DHT/#d9116db5603f
diff -r 000000000000 -r 085d20f0ca45 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Feb 07 20:16:43 2017 +0000
@@ -0,0 +1,157 @@
+#include "mbed.h"
+#include "BMP280.h"
+#include "DHT.h"
+#include "stdio.h"
+
+Timer txTimer, mqTimer;
+Serial device(p9, p10);
+BMP280 bmpObj(p28, p27);
+DHT dhtObj(p21,DHT11);
+AnalogIn mqObj(p20);
+
+char sensorConf[4];
+char msg[60];
+
+bool tmpFlag = true;    //temperature sensor flag
+bool presFlag = true;   //pressure sensor flag
+bool co2Flag = true;    //co2 sensor flag
+bool humFlag = true;    //humidity sensor flag
+
+bool rxFlag = false;    //recieve packet flag
+
+int bmpTmp,bmpPres,dhtHum,dhtTmp;     //stores bmp280 temperature and sensor value
+int avgTmp;                                 //average of bmpTmp and dhtTmp
+uint16_t mqCo2;
+
+//enable or desable sensors
+void setSensors(void);
+
+//get temperature and pressure values from bmp280
+void bmpGetValue(void);
+
+//get temperature and humidity value from dht11
+void dhtGetValue(void);
+
+//get airquality value from mq135
+void mqGetValue(void);
+
+
+void rx_interrupt()
+{
+    int i = 0;
+
+    while(device.readable()){
+        sensorConf[i++]= device.getc();
+        i++;
+        }
+
+    sensorConf[i] = '\0';
+    rxFlag = true;
+
+    return;
+}
+
+int main()
+{
+    //device.attach(&rx_interrupt,device.RxIrq);
+
+    bmpObj.initialize();        //initialize bmp280 sensor
+
+    txTimer.start();                //start transmit timer
+    mqTimer.start();                //start airquality timer
+
+    while (true) {
+        bmpGetValue();              //get value from bmp280 sensor
+        dhtGetValue();              //get value from dht11 sensor     
+
+        if (mqTimer.read_ms()>2000) {
+            mqGetValue();
+            mqTimer.reset();
+        }
+
+        if(rxFlag) {
+            setSensors();
+            rxFlag = false;
+        }
+        
+        if(bmpTmp!=0 && dhtTmp!=0) {
+
+            avgTmp = (bmpTmp + dhtTmp)/2;
+        }
+        
+        if(txTimer.read_ms()>8000) {
+            if(device.writeable()) {
+                sprintf(msg,"TMP %d PRS d% CO2 d% HUM %d ",avgTmp,bmpPres,mqCo2,dhtHum);
+                device.puts(msg);
+            }
+            txTimer.reset();
+        }
+
+        wait(0.5);
+    }
+}
+
+void bmpGetValue(void)
+{
+    if(tmpFlag) {
+        bmpTmp = bmpObj.getTemperature();
+    }
+    if(presFlag) {
+        bmpPres = bmpObj.getPressure();
+    }
+}
+
+void dhtGetValue(void)
+{
+    int s = dhtObj.readData();
+    wait(0.5);
+    if (s == ERROR_NONE) {
+        if(humFlag) {
+            dhtHum  = dhtObj.ReadHumidity();
+        }
+        if(tmpFlag) {
+            dhtTmp  = dhtObj.ReadTemperature(CELCIUS);
+        }
+    }
+}
+
+void mqGetValue()
+{
+    if(co2Flag) {
+        mqCo2 = mqObj.read_u16();
+    }
+}
+
+void setSensors(void)
+{
+    if(sensorConf[0]=='T') {
+        if(sensorConf[1]=='0') {
+            tmpFlag = false;
+            avgTmp = 0;
+        } else {
+            tmpFlag = true;
+        }
+    } else if(sensorConf[0]=='P') {
+        if(sensorConf[1]=='0') {
+            presFlag = false;
+            bmpPres = 0;
+        } else {
+            presFlag = true;
+        }
+    } else if(sensorConf[0]=='C') {
+        if(sensorConf[1]=='0') {
+            co2Flag = false;
+            mqCo2 = 0;
+        } else {
+            co2Flag = true;
+        }
+    } else if(sensorConf[0]=='H') {
+        if(sensorConf[1]=='0') {
+            humFlag = false;
+            dhtHum = 0;
+        } else {
+            humFlag = true;
+        }
+    }
+}
+
diff -r 000000000000 -r 085d20f0ca45 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Feb 07 20:16:43 2017 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/176b8275d35d
\ No newline at end of file