Motion activated temperature and humidity sensor is a project designed to implement the functionalities that FRDM K64F developmental board and software developmental platform offers on mbed complier. Such as: Peripherals that are enabled for prototyping different headers and functionalities.Bluetooth; Wi-Fi module (ESP 8266) which supports connecting the board to cloud storage; PIR, electronic sensor for detecting motion, sensor are incorporated to build the project. The communication of peripherals with the board is implemented on serial communication and ports configured for UART.

Dependencies:   DHT ESP8266 MFRC522 mbed

Files at this revision

API Documentation at this revision

Comitter:
ndgohil
Date:
Thu Apr 28 16:41:40 2016 +0000
Commit message:
Motion Activated Temperature_Humidity Sensor Using ESP8266 and HC-06 Module

Changed in this revision

DHT.lib Show annotated file Show diff for this revision Revisions of this file
ESP8266.lib Show annotated file Show diff for this revision Revisions of this file
MFRC522.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 17278ea5a8b5 DHT.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT.lib	Thu Apr 28 16:41:40 2016 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/components/code/DHT/#df22ddf10d75
diff -r 000000000000 -r 17278ea5a8b5 ESP8266.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ESP8266.lib	Thu Apr 28 16:41:40 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/quevedo/code/ESP8266/#77388e8f0697
diff -r 000000000000 -r 17278ea5a8b5 MFRC522.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MFRC522.lib	Thu Apr 28 16:41:40 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/AtomX/code/MFRC522/#63d729186747
diff -r 000000000000 -r 17278ea5a8b5 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Thu Apr 28 16:41:40 2016 +0000
@@ -0,0 +1,275 @@
+/*
+*******************************************************************************************
+* Motion activated temprature and humidity measuring  using humidity and PIR sensor.
+* while measuring it will notify the sourunding by blikinking LED and making buzzer sound. 
+*  The measuured data is sent to  Thingsspeak cloud server
+*--PIR Motion Sensor Alarm + ESP8622 WiFi Module + FRDM-k64f
+* --PIR sensor can detect change on its surrounding by measuring the change of infra red
+* --Then will send high=1 to the FRDM-k64f to flash the LED, Run the Buzzer,
+* --Send information through UART serial Port to Tera Term and display how many motion been
+*---detected,also will send information to Thingspeak IoT website using WiFi connection 
+********************************************************************************************
+*/
+
+#include "mbed.h"
+#include "DHT.h"
+#include "ESP8266.h"
+#include "MFRC522.h" 
+
+
+#define APIKEY 7PPRUQANXEJ0UURH
+#define IP "184.106.153.149" // thingspeak.com IP Address
+DHT sensor(D4, DHT11);
+
+void printer_contractor( );
+float timprature_humidity_contractor();
+DigitalOut outside_green_led(D13);
+Serial blue(PTC15, PTC14);
+DigitalOut ledgreen(LED_GREEN);
+DigitalOut ledred(LED_RED);
+Serial pc(USBTX,USBRX);
+DigitalOut Buzzer(D10); // output
+PwmOut LED(D13); // flashing the led
+DigitalIn inputPin(D2); // pir senor input
+DigitalOut greenled(LED2);
+ESP8266 wifi(PTC17, PTC16, 9600); // baud rate for wifi
+
+
+char snd[255],rcv[1000];
+int myclock=0; //( myclock=0; myclock < max_clock; myclock ++ )
+int max_clock=20;
+int val = 0; // value to holed the high/low info from pir from pin D2
+int cnt = 0; // counter for motion
+//String thingtweetAPIKey = "TTEVLP931ODJ5GMT";
+
+/************ WiFi INTIALIZATION *********/
+void printer_contractor( );
+float timprature_humidity_contractor();
+void wifi_initialize();
+void wifi_send();
+
+int main() 
+{  
+    blue.baud(9600);
+   
+      while(1)
+            
+          {   // calling functions for diffrent task
+          
+              printer_contractor(); // calling the function that print message for the process.
+              
+              wifi_initialize(); //
+              wifi_send();       //
+              
+             
+              
+          }
+          
+          
+        
+   
+}
+
+
+void printer_contractor()
+{       outside_green_led = 1; // toggle pin
+        ledred= 1; // toggle led
+        LED=1;
+        Buzzer=1;
+        printf(" Motion activated  TEMPRATURE and HUMIDITY measurement device: \n");  
+        blue.printf(" Motion activated  TEMPRATURE and HUMIDITY measurement device: \n");
+        printf("\t :Sending IMPOTRTANT information to AGENT- CLOUD \n ");
+        blue.printf("\t :Sending IMPOTRTANT information to AGENT- CLOUD \n ");
+        printf("\t :tmprature & humidity  testing begin wait... \n ");
+        blue.printf("\t :tmprature & humidity  testing begin wait... \n ");
+        wait(3);
+}
+   
+
+
+
+ void wifi_initialize()
+
+ {
+    
+pc.baud(9600);   
+pc.printf("SET mode to AP\r\n");
+blue.printf("SET mode to AP\r\n");
+wifi.SetMode(1);    // set ESP mode to 1
+wifi.RcvReply(rcv, 1000);    //receive a response from ESP
+pc.printf("%s",rcv);    //Print the response onscreen
+blue.printf("%s",rcv);
+pc.printf("Conneting to AP\r\n");
+blue.printf("Conneting to AP\r\n");
+wifi.Join("Network", "Password");     // Your wifi username & Password 
+wifi.RcvReply(rcv, 1000);    //receive a response from ESP
+pc.printf("%s", rcv);    //Print the response onscreen
+blue.printf("%s",rcv);
+wait(5);     //waits for response from ESP
+pc.printf("Getting IP\r\n");    //get IP addresss from the connected AP
+blue.printf("Getting IP\r\n"); 
+wifi.GetIP(rcv);    //receive an IP address from the AP
+pc.printf("%s", rcv); 
+blue.printf("%s", rcv); 
+wait(5); // Delay 5 sec to give the pir time to get snapshut of the surrounding
+pc.printf(" WAIT:Initializing WiFi\r\n");
+blue.printf(" WAIT:Initializing WiFi\r\n");
+    while (1)
+      {
+       
+   val = inputPin.read();
+   
+   if (val==0) {   
+    cnt++;
+    pc.printf(" The Sensor is ON:  %i Motion Detected NOW \r\n\n",cnt);
+    blue.printf(" The Sensor is ON:  %i Motion Detected NOW \r\n\n",cnt);
+    
+    printf(" NOW lets messure  Temprature and humudity of the enviroment:\n\n\n\n");
+    blue.printf(" NOW lets messure  Temprature and humudity of the enviroment:\n\n\n\n");
+    timprature_humidity_contractor();// measruing the temprature and humidity.
+    pc.printf("Sending WiFi information to \n");
+    blue.printf("Sending WiFi information to \n");
+    wifi_send();
+    greenled=1; // when the motion detected turn of the on board red led
+    LED.period(2); // 2 seconds period
+    wait(2);
+    LED.pulsewidth(.02);    // 2 mseconds pulse (on)
+    greenled=1;
+    Buzzer = 1;
+    wait(2);
+
+
+         }
+          
+    else {
+         
+         pc.printf(" The Sensor is OFF \r\n");
+         blue.printf(" The Sensor is OFF \r\n");
+         LED = 0;
+         Buzzer =0;
+         greenled=0; // turn the on board red led on
+         wait(2);
+         }
+    } 
+  }
+  
+void wifi_send()
+{
+   
+  //WIFI updates the Status to Thingspeak servers//
+  strcpy(snd,"AT+CIPMUX=1");//Setting WiFi into MultiChannel mode
+  wifi.SendCMD(snd);
+  pc.printf(snd);
+  blue.printf(snd);
+  wait(2);
+  wifi.RcvReply(rcv, 1000);
+  pc.printf("%s", rcv);
+  blue.printf("%s", rcv);
+  wait(2);
+  sprintf(snd,"AT+CIPSTART=4,\"TCP\",\"%s\",80",IP); //Initiate connection with THINGSPEAK server 
+  pc.printf(snd);
+  blue.printf(snd);
+  wait(3);
+  wifi.RcvReply(rcv, 1000);
+  pc.printf("%s", rcv);
+  blue.printf("%s", rcv);
+  wait(2);
+  strcpy(snd,"AT+CIPSEND=4,47");    //Send Number of open connections,Characters to send 
+  wifi.SendCMD(snd);
+  pc.printf(snd);
+  blue.printf(snd);
+  wait(2.0);
+  wifi.RcvReply(rcv, 1000);
+  wait(2); 
+  pc.printf("%s", rcv);
+  blue.printf("%s", rcv);
+  wait(2);    
+  pc.printf("%s",snd); 
+  blue.printf("%s",snd); 
+  sprintf(snd,"GET https://api.thingspeak.com/update?key=7PPRUQANXEJ0UURH&feild1=2 HTTP/1.0 \r\n\r\n"); //post it
+  pc.printf("%s",snd);
+  blue.printf("%s",snd);
+  wifi.SendCMD(snd);
+  wait(3);
+  wifi.RcvReply(rcv, 1000);
+  pc.printf("%s", rcv);
+  blue.printf("%s", rcv);
+  wifi.SendCMD("AT+CIPCLOSE"); //Close the connection to server
+  wifi.RcvReply(rcv, 1000);
+  pc.printf("%s", rcv);
+  blue.printf("%s", rcv);
+}
+
+float timprature_humidity_contractor()
+{
+    int error = 0;
+    float h =0 , c =0, f = 0 , k = 0, dp = 0, dpf = 0;  // clear sensor variable for new data place
+
+     for ( myclock=0; myclock < max_clock; myclock ++ ) //while(1) 
+    {
+        wait(2);
+        error = sensor.readData();
+        // 
+        if (error ==0 ) {
+            ledred=0;
+            LED=1;
+            
+            // censior variales are assigned from the sensoor reading 
+            // and after the reading celcius to farenheit equvallent qalqucaltion.
+            
+            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);
+            
+            outside_green_led = 1; // toggle pin
+            ledgreen = 1;//ledgreen=1;
+            wait(2);
+            
+        printf(" \n\n AM2 302 tmp/Hmd sensro device is giving with:%d precsion \n", error);
+        printf(" ===========HERE IS THE  DATA YOU MAY WANT============\n " );
+            
+            printf("Temperature in Kelvin:   %5.2f \n", k );
+            printf("Temprature in  Celcius:  %5.2f \n", c );
+            printf("Temprature in Farenheit %5.2f \n",  f);
+            printf("Humidity is :  %6.2f \n",h);
+            printf("Dew Point is : %6.2f  \n",dp);
+            printf("Dew Pointvfastv is %6.2f \n ",dpf);
+            printf("--wait for the NEXT reading please.\n\n\n\n\n\n");
+            //*********************blue 
+            blue.printf(" \n\n AM2 302 tmp/Hmd sensro device is giving with:%d precsion \n", error);
+            blue.printf(" ===========HERE IS THE  DATA YOU MAY WANT============\n " );
+            
+            blue.printf("Temperature in Kelvin:   %5.2f \n", k );
+            blue.printf("Temprature in  Celcius:  %5.2f \n", c );
+            blue.printf("Temprature in Farenheit %5.2f \n",  f);
+            blue.printf("Humidity is  :  %6.2f  \n",h);
+            blue.printf("Dew Point is :  %6.2f  \n",dp);
+            blue.printf("Dew Pointvfastv is %6.2f \n ",dpf);
+            blue.printf("...wait for the NEXT reading please.\n\n\n\n\n\n");
+            
+            
+            
+        } 
+        else {
+            ledgreen=0;
+            ledred=1;// ledred = 1; // toggle led
+            wait(2);
+            printf(" Error value ( offset measured) is : %d\n", error);
+            printf(" wait: Device is calbrating for good reading \n\n\n\n\n");
+            printf("*****************************\n");
+            //********************blue
+            blue.printf(" Error value ( offset measured) is : %d\n", error);
+            blue.printf(" wait: Device is calbrating for good reading \n\n\n\n\n");
+            blue.printf("*****************************\n");
+            
+            
+        }
+    }
+    return c;
+    // dpf;
+    //return dp;
+}
+
diff -r 000000000000 -r 17278ea5a8b5 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Thu Apr 28 16:41:40 2016 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/aae6fcc7d9bb
\ No newline at end of file