Wireless and Multimedia final project mbed code

Dependencies:   ESP8266 mbed

Committer:
abdeokar23
Date:
Fri Feb 09 01:05:40 2024 +0000
Revision:
6:409e600bbd4e
Parent:
5:17a7d2402ed0
git update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SIT2016 0:8ca71ccb52db 1 #include "mbed.h"
abdeokar23 5:17a7d2402ed0 2 #include "ESP8266.h" //Include header file from Author: Antonio Quevedo
abdeokar23 5:17a7d2402ed0 3 #include "hcsr04.h"
agaikwad 3:164296bb4985 4
abdeokar23 5:17a7d2402ed0 5 #define APIKEY E21WSWLRUWTIDWNX //Put "Write key" of your channel in thingspeak.com
abdeokar23 5:17a7d2402ed0 6 #define IP "184.106.153.149" //IP Address of "api.thingspeak.com\"
abdeokar23 6:409e600bbd4e 7 #define WIFI_SSID "some-ssid"
abdeokar23 6:409e600bbd4e 8 #define WIFI_PASS "some-passwd"
agaikwad 3:164296bb4985 9
SIT2016 0:8ca71ccb52db 10 Serial pc(USBTX,USBRX);
abdeokar23 5:17a7d2402ed0 11 ESP8266 esp(D1, D0, 115200); //baud rate for wifi
abdeokar23 5:17a7d2402ed0 12 HCSR04 usensor(A4, A5); //Trigger, Echo
SIT2016 1:2012c31aee1b 13
abdeokar23 5:17a7d2402ed0 14 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
SIT2016 1:2012c31aee1b 15
abdeokar23 5:17a7d2402ed0 16 void esp_initialize(void); //Function used to initialize ESP8266 wifi module
abdeokar23 5:17a7d2402ed0 17 void esp_send(char); //Function used to connect with thingspeak.com and update channel using ESP8266 wifi module
SIT2016 1:2012c31aee1b 18
abdeokar23 5:17a7d2402ed0 19 int ping()
abdeokar23 5:17a7d2402ed0 20 {
abdeokar23 5:17a7d2402ed0 21 usensor.start();
abdeokar23 5:17a7d2402ed0 22 wait_ms(500);
abdeokar23 5:17a7d2402ed0 23 return(usensor.get_dist_cm());
abdeokar23 5:17a7d2402ed0 24 }
SIT2016 1:2012c31aee1b 25
agaikwad 3:164296bb4985 26 int main()
abdeokar23 5:17a7d2402ed0 27 {
abdeokar23 5:17a7d2402ed0 28 pc.baud(115200); //Baud rate used for communicating with Tera-term on PC
SIT2016 1:2012c31aee1b 29
abdeokar23 5:17a7d2402ed0 30 pc.printf("START\r\n"); //Starting point
agaikwad 3:164296bb4985 31 esp_initialize();
SIT2016 1:2012c31aee1b 32
abdeokar23 5:17a7d2402ed0 33 int distance;
abdeokar23 5:17a7d2402ed0 34 char cd;
agaikwad 3:164296bb4985 35
agaikwad 3:164296bb4985 36 while (1)
abdeokar23 5:17a7d2402ed0 37 {
abdeokar23 5:17a7d2402ed0 38 distance = ping(); //ping function
abdeokar23 5:17a7d2402ed0 39 pc.printf("\n distance = %ld cm",distance);
abdeokar23 5:17a7d2402ed0 40 wait_ms(10000);
abdeokar23 5:17a7d2402ed0 41 if(distance<=30)
abdeokar23 5:17a7d2402ed0 42 {
abdeokar23 5:17a7d2402ed0 43 cd = 'd';
abdeokar23 5:17a7d2402ed0 44 esp_send(cd);
abdeokar23 5:17a7d2402ed0 45 }
abdeokar23 5:17a7d2402ed0 46 else
abdeokar23 5:17a7d2402ed0 47 {
abdeokar23 5:17a7d2402ed0 48 cd = 'a';
abdeokar23 5:17a7d2402ed0 49 esp_send(cd);
abdeokar23 5:17a7d2402ed0 50 }
agaikwad 3:164296bb4985 51 }
SIT2016 2:817794b2f733 52 }
SIT2016 2:817794b2f733 53
agaikwad 3:164296bb4985 54 void esp_initialize(void)
agaikwad 3:164296bb4985 55 {
agaikwad 3:164296bb4985 56 pc.printf("Initializing ESP\r\n");
agaikwad 3:164296bb4985 57
agaikwad 3:164296bb4985 58 pc.printf("Reset ESP\r\n");
abdeokar23 5:17a7d2402ed0 59 esp.Reset(); //RESET ESP
abdeokar23 5:17a7d2402ed0 60 esp.RcvReply(rcv, 400); //receive a response from ESP
abdeokar23 5:17a7d2402ed0 61 //pc.printf(rcv); //Print the response onscreen
agaikwad 3:164296bb4985 62 wait(2);
agaikwad 3:164296bb4985 63
agaikwad 3:164296bb4985 64 strcpy(snd,"AT");
agaikwad 3:164296bb4985 65 esp.SendCMD(snd);
agaikwad 3:164296bb4985 66 pc.printf(snd);
agaikwad 3:164296bb4985 67 //wait(2);
agaikwad 3:164296bb4985 68 esp.RcvReply(rcv, 400);
agaikwad 3:164296bb4985 69 pc.printf(rcv);
agaikwad 3:164296bb4985 70 wait(0.1);
agaikwad 3:164296bb4985 71
agaikwad 3:164296bb4985 72 strcpy(snd,"AT+CWMODE=1");
agaikwad 3:164296bb4985 73 esp.SendCMD(snd);
agaikwad 3:164296bb4985 74 pc.printf(snd);
agaikwad 3:164296bb4985 75 wait(2);
agaikwad 3:164296bb4985 76
agaikwad 3:164296bb4985 77 strcpy(snd,"AT+CWJAP=\"");
agaikwad 3:164296bb4985 78 strcat(snd,WIFI_SSID);
agaikwad 3:164296bb4985 79 strcat(snd,"\",\"");
agaikwad 3:164296bb4985 80 strcat(snd,WIFI_PASS);
agaikwad 3:164296bb4985 81 strcat(snd,"\"");
SIT2016 1:2012c31aee1b 82
agaikwad 3:164296bb4985 83 esp.SendCMD(snd);
agaikwad 3:164296bb4985 84 pc.printf(snd);
agaikwad 3:164296bb4985 85 wait(5);
agaikwad 3:164296bb4985 86 esp.RcvReply(rcv, 400);
agaikwad 3:164296bb4985 87 pc.printf("\n %s \n", rcv);
agaikwad 3:164296bb4985 88
agaikwad 3:164296bb4985 89 strcpy(snd,"AT+CIPMUX=0");
agaikwad 3:164296bb4985 90 esp.SendCMD(snd);
agaikwad 3:164296bb4985 91 pc.printf(snd);
agaikwad 3:164296bb4985 92 //wait(2);
agaikwad 3:164296bb4985 93 esp.RcvReply(rcv, 400);
agaikwad 3:164296bb4985 94 pc.printf("\n %s \n", rcv);
agaikwad 3:164296bb4985 95 }
agaikwad 3:164296bb4985 96
abdeokar23 5:17a7d2402ed0 97 void esp_send(char ch)
agaikwad 3:164296bb4985 98 {
agaikwad 3:164296bb4985 99 //ESP updates the Status of Thingspeak channel//
agaikwad 3:164296bb4985 100 strcpy(snd,"AT+CIPSTART=");
agaikwad 3:164296bb4985 101 strcat(snd,"\"TCP\",\"");
agaikwad 3:164296bb4985 102 strcat(snd,IP);
agaikwad 3:164296bb4985 103 strcat(snd,"\",80");
agaikwad 3:164296bb4985 104
agaikwad 3:164296bb4985 105 esp.SendCMD(snd);
agaikwad 3:164296bb4985 106 pc.printf("S\r\n%s",snd);
agaikwad 3:164296bb4985 107 //wait(2);
agaikwad 3:164296bb4985 108 esp.RcvReply(rcv, 1000);
agaikwad 3:164296bb4985 109 pc.printf("R\r\n%s",rcv);
SIT2016 1:2012c31aee1b 110 wait(1);
SIT2016 1:2012c31aee1b 111
abdeokar23 5:17a7d2402ed0 112 sprintf(snd,"GET https://api.thingspeak.com/update?api_key=E21WSWLRUWTIDWNX&field1=%c\n",ch);
agaikwad 3:164296bb4985 113
agaikwad 3:164296bb4985 114 int i=0;
agaikwad 3:164296bb4985 115 for(i=0;snd[i]!='\0';i++);
agaikwad 3:164296bb4985 116 i++;
agaikwad 3:164296bb4985 117 char cmd[255];
SIT2016 1:2012c31aee1b 118
abdeokar23 5:17a7d2402ed0 119 sprintf(cmd,"AT+CIPSEND=%d",i); //Send Number of open connection and Characters to send
agaikwad 3:164296bb4985 120 esp.SendCMD(cmd);
agaikwad 3:164296bb4985 121 pc.printf("S\r\n%s",cmd);
agaikwad 3:164296bb4985 122 while(i<=20 || rcv == ">")
agaikwad 3:164296bb4985 123 {
agaikwad 3:164296bb4985 124 esp.RcvReply(rcv, 1000);
agaikwad 3:164296bb4985 125 wait(100);
agaikwad 3:164296bb4985 126 i++;
agaikwad 3:164296bb4985 127 }
agaikwad 3:164296bb4985 128 pc.printf("R\r\n%s",rcv);
abdeokar23 5:17a7d2402ed0 129 esp.SendCMD(snd); //Post value to thingspeak channel
agaikwad 3:164296bb4985 130 pc.printf("S\r\n%s",snd);
agaikwad 3:164296bb4985 131 while(i<=20 || rcv == "OK")
agaikwad 3:164296bb4985 132 {
agaikwad 3:164296bb4985 133 esp.RcvReply(rcv, 1000);
agaikwad 3:164296bb4985 134 wait(100);
agaikwad 3:164296bb4985 135 i++;
agaikwad 3:164296bb4985 136 }
agaikwad 3:164296bb4985 137 pc.printf("R\r\n%s",rcv);
abdeokar23 5:17a7d2402ed0 138 }