K64f, ESP8266, Heartrate Senosr, Alcohol sensor

Dependencies:   mbed GroveEarbudSensor ESP8266

Files at this revision

API Documentation at this revision

Comitter:
qxy
Date:
Mon Apr 22 19:21:04 2019 +0000
Commit message:
Here is driver health system monitor project code

Changed in this revision

ESP8266.lib Show annotated file Show diff for this revision Revisions of this file
GroveEarbudSensor.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 0a8dbe4c0447 ESP8266.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ESP8266.lib	Mon Apr 22 19:21:04 2019 +0000
@@ -0,0 +1,1 @@
+https://developer.mbed.org/users/janhavi/code/ESP8266/#4f24e7e803a1
diff -r 000000000000 -r 0a8dbe4c0447 GroveEarbudSensor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GroveEarbudSensor.lib	Mon Apr 22 19:21:04 2019 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/ansond/code/GroveEarbudSensor/#06be613d8c3e
diff -r 000000000000 -r 0a8dbe4c0447 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Apr 22 19:21:04 2019 +0000
@@ -0,0 +1,172 @@
+#include "mbed.h"
+#include "ESP8266.h"               
+#include <string>
+#include <stdio.h>
+// Grove Earbud Sensor include
+#include "GroveEarbudSensor.h"
+
+#define APIKEY SQ43V2ERAB2S42I3    //Put "Write key" of your channel in thingspeak.com 
+#define IP "184.106.153.149"       // IP Address of "api.thingspeak.com\"
+#define WIFI_SSID "ATTwXwjd7i"     // Home WIFI ID
+#define WIFI_PASS "cmvbfbjrw=+w"   // Home WIFI PASS WORD
+
+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 
+
+// Our sensor as an InterruptIn
+InterruptIn sensor(D2);
+
+// callback for receiving heartrate values
+void heartrateCallback(float heartrate,void *data) {
+    printf("Callback: heartrate = %.1f\r\n",heartrate);
+}
+
+// allocate the earbud sensor
+GroveEarbudSensor earbud(&sensor); 
+
+float RateofHeart; // Define Global variable for Heatrate detection
+
+
+
+DigitalOut heater(A1); // Set DigitalOut port for Alcohol Sensor
+AnalogIn Asensor(A0); // Set AnalogIn port for Alcohol Sensor
+
+float value = 0.0f; // Define Global variable for Alcohol detection
+
+
+int main(void) 
+{
+    
+    pc.baud(115200);           // Baud rate used for communicating with Tera-term on PC
+    
+    heater = 1;
+    
+    pc.printf("START\r\n");  // Starting point
+    
+    esp_initialize();
+    
+    // register our callback function
+    earbud.registerCallback(heartrateCallback);  
+
+    while (1) 
+    {   
+    
+        wait(5);
+
+        esp_send(); //Excute Send function to deliver detected data to Thingspeak website
+        
+    }
+}
+
+
+void esp_initialize(void) // This is the Initialization function as we defined above.
+{    
+    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);  // Sends command to ESP8266. Receives the command string
+    pc.printf(snd);
+    //wait(2);
+    esp.RcvReply(rcv, 400);       // Receive reply until no character is received after a given timeout in miliseconds
+    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);        // Send WIFI Account ID
+    strcat(snd,"\",\"");
+    strcat(snd,WIFI_PASS);        // Send WIFI Password
+    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) // This is the Initialization function as we defined above.
+{
+    //Get the rate of Heart by earbud,getHeartRate function
+    RateofHeart = earbud.getHeartRate();
+    
+    //Set the pulse value to 0 to get the data
+    heater = 0;
+    //Get the value of Alcohol rate sensed by Alcohol sensor
+    value = 1-Asensor;
+    
+    
+    
+    //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);
+    
+    pc.printf("Alcohol concentration is: %2.2f\n", value); // Print out the Alcohol concentration on the Tera Term 
+    pc.printf("heart rate is: %f\r\n", RateofHeart); // Print out the Heart Rate on the Tera Term 
+    sprintf(snd,"GET https://api.thingspeak.com/update?api_key=SQ43V2ERAB2S42I3&field1=%f&field2=%f\r\n",RateofHeart);
+    //Transfer Heart rate and Alcohol concentration to designated Thingspeak ID and display on field 1 chart and field 2 chart
+    
+    
+    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);
+    
+}
\ No newline at end of file
diff -r 000000000000 -r 0a8dbe4c0447 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Mon Apr 22 19:21:04 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file