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
Diff: main.cpp
- Revision:
- 0:17278ea5a8b5
--- /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; +} +