Smart Fridge code

Dependencies:   mbed MFRC522

Revision:
2:9a39ebd76683
Parent:
1:ad028c0c6c6c
Child:
3:11a68fb3886f
--- a/main.cpp	Mon Apr 15 20:34:43 2019 +0000
+++ b/main.cpp	Fri Apr 19 21:59:14 2019 +0000
@@ -1,9 +1,28 @@
 #include "mbed.h" 
 #include "MFRC522.h" 
+#include "ESP8266.h"               // Include header file from Author: Antonio Quevedo
+#include "math.h"
+#include <string>
+
 // FRDM-K64F (Freescale) Pin for MFRC522 reset 
 #define MF_RESET    PTD0 
 #define SERIAL_1
 
+#define APIKEY XE2W5EIXWN6LA234    //Put "Write key" of your channel in thingspeak.com 
+#define IP "184.106.153.149"       // IP Address of "api.thingspeak.com\"
+#define WIFI_SSID "Sheelu"
+#define WIFI_PASS "Barbie"
+
+//Serial pc(USBTX,USBRX);
+
+ESP8266 esp(PTC17, PTC16, 115200); // baud rate for wifi
+
+char snd[255],rcv[1000],snd_Data[255];           //snd= string used to send command to ESP 8266 wii and  rcv = string used to receive response from ESP8266 wifi module 
+
+void esp_initialize(void); // Function used to initialize ESP8266 wifi module 
+void esp_send(void);       // Function used to connect with thingspeak.com and update channel using ESP8266 wifi module 
+
+
 DigitalOut LedGreen(LED2); 
 
 //Serial connection to PC for output 
@@ -21,13 +40,22 @@
  
 int main(void) { 
    
-   blue.baud(9600);
-   pc.baud(9600);
+   blue.baud(115200);
+   pc.baud(115200);
    printf("Welcome to RFID Tag Reader Using FRDM K64F...\n\r");
    blue.printf("Welcome to RFID Tag Reader Uing FRDM K64F...\n\r");
    printf("Bluetooth Enable\r\n");
    blue.printf("Bluetooth Enable\r\n");
-   RfChip.PCD_Init(); 
+   RfChip.PCD_Init();
+   
+   
+    pc.baud(115200);           // Baud rate used for communicating with Tera-term on PC
+    
+    pc.printf("START\r\n");  // Starting point
+    
+    esp_initialize();
+   
+    
  
    while (true) { 
      LedGreen = 1; 
@@ -70,6 +98,7 @@
      else if(counter1 == 1){
          printf("\r\nMilk is out of the fridge");
          counter1 = 0;
+         esp_send();
          }
      }
     
@@ -84,6 +113,7 @@
     else if (counter2 == 1){
     printf("\r\nBeer is out of the fridge");
     counter2 = 0;
+    esp_send();
     }
     }
     //wait(1);
@@ -104,4 +134,95 @@
      
    } 
  } 
- 
+ void esp_initialize(void)
+{    
+    pc.printf("Initializing ESP\r\n"); 
+      
+    pc.printf("Reset ESP\r\n"); 
+    esp.Reset();                   //RESET ESP
+    esp.RcvReply(rcv, 400);        //receive a response from ESP
+    //pc.printf(rcv);          //Print the response onscreen 
+    wait(2);
+    
+    strcpy(snd,"AT");
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    //wait(2);
+    esp.RcvReply(rcv, 400);       
+    pc.printf(rcv);      
+    wait(0.1);
+    
+    strcpy(snd,"AT+CWMODE=1");
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    wait(2);
+
+    strcpy(snd,"AT+CWJAP=\"");
+    strcat(snd,WIFI_SSID);
+    strcat(snd,"\",\"");
+    strcat(snd,WIFI_PASS);
+    strcat(snd,"\"");
+    
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    wait(5);
+    esp.RcvReply(rcv, 400);       
+    pc.printf("\n %s \n", rcv); 
+    
+    strcpy(snd,"AT+CIPMUX=0");
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    //wait(2);
+    esp.RcvReply(rcv, 400);       
+    pc.printf("\n %s \n", rcv); 
+
+}
+
+
+void esp_send(void)
+{
+   
+    //ESP updates the Status of Thingspeak channel//
+    
+    strcpy(snd,"AT+CIPSTART=");
+    strcat(snd,"\"TCP\",\"");
+    strcat(snd,IP);
+    strcat(snd,"\",80");
+    
+    esp.SendCMD(snd); 
+    pc.printf("S\r\n%s",snd);
+    //wait(2);                                                    
+    esp.RcvReply(rcv, 1000);
+    pc.printf("R\r\n%s",rcv);
+    wait(1);
+    
+    sprintf(snd,"GET https://api.thingspeak.com/update?key=XE2W5EIXWN6LA234&field1=%d&field2=%d\r\n",counter1,counter2);
+    
+    int i=0;
+    for(i=0;snd[i]!='\0';i++);
+    i++;
+    char cmd[255];
+    
+    sprintf(cmd,"AT+CIPSEND=%d",i);                                       //Send Number of open connection and Characters to send 
+    esp.SendCMD(cmd);
+    pc.printf("S\r\n%s",cmd);
+    while(i<=20 || rcv == ">")
+    {
+        esp.RcvReply(rcv, 1000);
+        wait(100);
+        i++;
+    }
+    pc.printf("R\r\n%s",rcv);
+    
+    esp.SendCMD(snd);                                                      //Post value to thingspeak channel
+    pc.printf("S\r\n%s",snd);
+    
+    while(i<=20 || rcv == "OK")
+    {
+        esp.RcvReply(rcv, 1000);
+        wait(100);
+        i++;
+    }
+    pc.printf("R\r\n%s",rcv);
+    
+}