Heart rate monitoring system design using FRDM K64F and MIT App Inventor II

Dependencies:   ESP8266 GroveEarbudSensor mbed

Fork of Heart-rate-monitor by Sarada Gajjala

Files at this revision

API Documentation at this revision

Comitter:
spriyanka
Date:
Thu May 04 04:24:48 2017 +0000
Parent:
5:f1b55ff3cda0
Commit message:
Heart rate monitor keeps you informed and indeed helps you monitor your heart rate all the time with which you can protect yourself from being prone to heart attacks or any abnormal heart functionality.

Changed in this revision

ESP8266.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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ESP8266.lib	Thu May 04 04:24:48 2017 +0000
@@ -0,0 +1,1 @@
+https://mbed.org/users/quevedo/code/ESP8266/#77388e8f0697
--- a/main.cpp	Wed Oct 01 21:35:54 2014 +0000
+++ b/main.cpp	Thu May 04 04:24:48 2017 +0000
@@ -1,60 +1,156 @@
-/* Copyright C2014 ARM, MIT License
- *
- * Author: Doug Anson (doug.anson@arm.com)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
- * and associated documentation files the "Software", to deal in the Software without restriction,
- * including without limitation the rights to use, copy, modify, merge, publish, distribute,
- * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all copies or
- * substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
- * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
+#include "mbed.h"
+#include "ESP8266.h"
+#include <string>
+#include <stdio.h>
+#include "GroveEarbudSensor.h"
+#define APIKEY SJYFHXQEDBQ75N91    //Put "Write key" of your channel in thingspeak.com 
+#define IP "184.106.153.149"       // IP Address of "api.thingspeak.com\"
+#define WIFI_SSID "vivo 1601"
+#define WIFI_PASS "bschitta"
+
 
-#include "mbed.h"
+char snd[255],rcv[1000],snd_Data[255];
+float hrt;
+
+ESP8266 esp(PTC17, PTC16, 115200); // baud rate for wifi
+Serial pc(USBTX, USBRX);
+
+// callback for receiving heartrate values 
+void heartrateCallback(float heartrate,void *data) 
+{
+         printf("Callback: heartrate = %.1f\r\n",heartrate);
+}  
 
 // Blinky
 DigitalOut led(LED1);
 
 // Our sensor as an InterruptIn
-InterruptIn sensor(D0);
+InterruptIn sensor(D2);
 
-// Grove Earbud Sensor include
-#include "GroveEarbudSensor.h"
+GroveEarbudSensor earbud(&sensor); 
 
-// callback for receiving heartrate values
-void heartrateCallback(float heartrate,void *data) {
-    printf("Callback: heartrate = %.1f\r\n",heartrate);
-}
+void esp_initialize(void);
+void esp_send(void);
 
-int main()
+int main(void)
 {   
+pc.baud(115200);
+    esp_initialize();
+    
     // announce
     printf("Grove Earbud Sensor Example v1.0.0\r\n");
     
     // allocate the earbud sensor
     printf("Allocating earbud sensor instance...\r\n");
-    GroveEarbudSensor earbud(&sensor); 
     
-    // register our callback function
-    printf("registering callback...\r\n");
-    earbud.registerCallback(heartrateCallback);
+     // register our callback function     
+     printf("registering callback...\r\n");     
+     earbud.registerCallback(heartrateCallback); 
     
     // begin main loop
     printf("Beginning main loop...\r\n");
-    while (true) {
+    while (true) 
+    {
         // blink... 
         led = !led; 
-        wait(0.5);
-        
-        // we can also call directly 
-        //printf("Direct: heartrate = %.1f\r\n",earbud.getHeartRate());
+        wait(1);
+           
+    // we can also call directly 
+    printf("Direct: heartrate = %.1f\r\n", earbud.getHeartRate());
+    
+    esp_send();
     }
-}
\ No newline at end of file
+}
+
+void esp_initialize(void)
+{
+    //AT+CWJAP="vivo 1601","bschitta" ;
+    
+    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
+    wait(2);
+
+    strcpy(snd,"AT");
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    esp.RcvReply(rcv, 400);
+    pc.printf(rcv);
+    wait(2);
+
+    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=1");
+    esp.SendCMD(snd);
+    pc.printf(snd);
+    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("Send\r\n%s",snd);
+    esp.RcvReply(rcv, 1000);
+    pc.printf("Receive\r\n%s",rcv);
+    wait(2);
+
+    hrt = earbud.getHeartRate();
+    pc.printf("Sending this information to thingspeak.com \r\n");
+    sprintf(snd,"GET https://api.thingspeak.com/update?api_key=SJYFHXQEDBQ75N91&field1=%f\r\n", hrt);
+    //wait(5);
+    //https://api.thingspeak.com/update?api_key=SJYFHXQEDBQ75N91&field1=%f\r\n", hrt
+
+    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("Send\r\n%s",cmd);
+    while(i<=20 || rcv == ">")
+    {
+        esp.RcvReply(rcv, 1000);
+        wait(100);
+        i++;
+    }
+    pc.printf("Receive\r\n%s",rcv);
+
+    esp.SendCMD(snd);       //Post value to thingspeak channel
+    pc.printf("Send\r\n%s",snd);
+
+    while(i<=20 || rcv == "OK") 
+    {
+        esp.RcvReply(rcv, 1000);
+        wait(100);
+        i++;
+    }
+    pc.printf("Receive\r\n%s",rcv);
+    
+}
+
+