smart fridge using RFID and Bluetooth
Revision 2:9a39ebd76683, committed 2019-04-19
- Comitter:
- sthiyag
- Date:
- Fri Apr 19 21:59:14 2019 +0000
- Parent:
- 1:ad028c0c6c6c
- Commit message:
- v1
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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);
+
+}