Health monitoring is the major problem in today’s world. Due to lack of proper health monitoring, patient suffer from serious health issues. There are lots of IoT devices now days to monitor the health of patient over internet. Health experts are also taking advantage of these smart devices to keep an eye on their patients. With tons of new healthcare technology start-ups, IoT is rapidly revolutionizing the healthcare industry.
Here in this project, we will make an IoT based Health Monitoring System which records the patient heart beat rate and body temperature and also send an email/SMS alert whenever those readings goes beyond critical values. Pulse rate and body temperature readings are recorded over ThingSpeak and Google sheets so that patient health can be monitored from anywhere in the world over internet. A panic will also be attached so that patient can press it on emergency to send email/sms to their relatives.
Pulse Sensor is a well-designed plug-and-play heart-rate sensor for Arduino. The sensor clips onto a fingertip or earlobe and plugs right into Arduino. It also includes an open-source monitoring app that graphs your pulse in real time.
The front of the sensor is the covered with the Heart shape logo. This is the side that makes contact with the skin. On the front you see a small round hole, which is where the LED shines through from the back, and there is also a little square just under the LED. The square is an ambient light sensor, exactly like the one used in cellphones, tablets, and laptops, to adjust the screen brightness in different light conditions. The LED shines light into the fingertip or earlobe, or other capillary tissue, and sensor reads the amount of light that bounces back. That’s how it calculates the heart rate. The other side of the sensor is where the rest of the parts are mounted.
Before we use this sensor, we need to protect the exposed side of the sensor so that we can get accurate readings and avoid the short circuit due to sweat. For this, you can use Velcro strip or black tape. As shown in the picture.
There are three wires coming out of the sensor, Signal(S), Vcc(3 - 5 V) and GND.
Signal wire is connected to Arduino Analog pin. The same sensor is used in our Arduino Heart Beat monitoring project.
LM35 is a analog linear temperature sensor. Its output is proportional to the temperature (in degree Celsius). The operating temperature range is from -55°C to 150°C. The output voltage varies by 10mV in response to every o C rise or fall in temperature. It can be operated from a 5V as well as 3.3 V supply and the stand by current is less than 60uA.
Most people call ESP8266 as a WIFI module, but it is actually a microcontroller. ESP8266 is the name of the microcontroller developed by Espressif Systems which is a company based out of shanghai. This microcontroller has the ability to perform WIFI related activities hence it is widely used as a WIFI module.
There are two of ways to work with your ESP8266 module. This tutorial will help you to get started with ESP8266. One way is by using the AT commands. The other way is by using the Arduino IDE. Here we will use AT commands to send data from Arduino to ESP.
Below are the connections:
ThingSpeak provides very good tool for IoT based projects. By using ThingSpeak site, we can monitor our data and control our system over the Internet, using the Channels and webpages provided by ThingSpeak. ThingSpeak ‘Collects’ the data from the sensors, ‘Analyze and Visualize’ the data and ‘Acts’ by triggering a reaction. We have previously used ThingSpeak in Weather station project using Raspberry Pi and using Arduino, check them to learn more about ThingSpeak. Here we are briefly explaining to use ThingSpeak for this IoT Patient Monitoring Project.
We will use ThingSpeak to monitor patient heartbeat and temperature online using internet. We will also use IFTTT platform to connect ThingSpeak to email/message service so that alert message can be sent whenever the patient is in critical state.
Step 1:- First of all, user needs to Create a Account on ThingSpeak.com, then Sign In and click on Get Started.
Step 2:- Now go to the ‘Channels’ menu and click on New Channel option on the same page for further process.
Step 3:- Now you will see a form for creating the channel, fill in the Name and Description as per your choice. Then fill ‘Pulse Rate’, ‘Temperature’ and ‘Panic’ in Field 1, Field 2 and Field 3 labels, tick the checkboxes for the Fields. Also tick the check box for ‘Make Public’ option below in the form and finally Save the Channel. Now your new channel has been created.
Step 4:- You will see three charts as shown below. Note the Write API key, we will use this key in our code.
Step 5:- Now, we will use ThingHTTP app of the server to trigger the IFTTT applet for data entry to Google sheets and send email/sms. ThingHTTP enables communication among devices, websites, and web services without having to implement the protocol on the device level. You can specify actions in ThingHTTP, which you want to trigger using other ThingSpeak apps such as React.
To make New ThingHTTP, we will need URL for triggering which we will get from IFTTT.
Step 1:- Login to IFTTT and search for Webhooks and click on it.
Step 2:- Click on Documentation.
Step 3:- Type “Patient_Info” in the event box and copy the URL. We will use this URL in ThingHTTP.
Now let’s make Applet to link ThingHTTP to Google sheet and to send email/sms. After that we will jump to complete our ThingHTTP.
Step 4:- Click on New Applete in My Applete option.
Step 5:- Click on “+this” and search for Webhooks and click on it. Choose trigger as “Receive a web request”.
Step 6:- Type the Event Name which is same as you write in the event box in webhooks URL. Click on Create Trigger.
Step 7:- Click on “+that” and search for Google Sheets and click on it.
Click on Add row to spreadsheet.
Step 8:- Give any name to your sheet. In formatted row box, you have date and time, event name, BPM value and body temperature which will be written as shown.
Step 9:- Review your applet and click on finish.
In the same way, we have to make applet for sending email when Panic event is occurred.
So again click on “+this” and select Webhooks, then in event name enter “Panic”. In “+that” search for Gmail and click on it.
Now, click on Send an email.
Type the email addresses on which you wish to receive email when there is a panic to the patient.
Type the body content you wish to send in the email and click on create action. Review it and finish.
We have made our applets to perform the tasks. Now, come back to Thingspeak->Apps->ThingHTTP.
Step 1:- Click on New ThingHTTP. Give any name and Paste the URL that you copied from the webhooks documentation. Fill Remaining information as shown below.
In Body, we have to write the information that we want to send to the IFTTT applet. We are sending patient Pulse reading and temperature. So the format is
After filling these informations, click on Save ThingHTTP.
In the same manner, we have to make ThingHTTP for “Panic”. Follow the same steps.
In URL, write Panic in place of Patient_Info. Body remains empty and All other information are same as in previous ThingHTTP. Save it.
Now, we have to make React to trigger the URL.
React works with ThingHTTP app to perform actions when channel data meets a certain condition.
To make React, click on Apps -> React. Click on New React.
Step 2:- Give name to your React. Condition type as Numeric and Test Freaquency as on Data Insertion.
Choose the Condition on which you want to trigger the URL. Select your channel from the If Channel drop down menu. Choose field 1 i.e Pulse rate and make condition of greater than any value. I have used 60. As shown
Choose ThingHTTP from Action drop down menu and select the ThingHTTP.
Select “Run action each time condition is met” and click on Save React.
In the same way, make React for the Panic as shown.
Select “Run action each time condition is met” and click on Save React.
We have done with Web based work. Now, we will see code for Arduino.
Complete Arduino code is given at the end, here we are explaining few important part of it. We will use library for Pulse rate sensor which can be downloaded from this Link. Also, we are using timer to set interval to take readings. For this we need Timer library, which can be downloaded from this Link.
Let’s jump to coding part…
First, we include all the libraries. We are using software serial to communicate with esp8266.
#include #include "Timer.h" #include //pulse sensor library
Make instance for timer, SoftwareSerial and pulse sensor to use in our code.
Timer t; PulseSensorPlayground pulseSensor; SoftwareSerial esp8266(10,11); //Rx,Tx
Set-up low-level interrupts for most accurate BPM match and enable DEBUG to show ongoing commands on serial monitor.
#define USE_ARDUINO_INTERRUPTS true #define DEBUG true
Set your WiFi name , password and IP of thingspeak.com
#define SSID "*********" // "your WiFiname" #define PASS "**********" // "wifi password" #define IP "184.106.153.149" // thingspeak.com ip
Declare String to update information on ThingSpeak channel. You will need API key for this, which can be found from your ThingSpeak channel-> API key . Copy Write API key and paste here.
String msg = "GET /update?key=Your Api Key";
In setup function, set the baud rate for serial communication between Arduino serial monitor and esp8266. Start the ESP communication by giving AT command to it and connect it by calling connectWiFi(); function. After that we will initialize Timers by calling t.every(time_interval, do_this); which will take the readings of the sensors and update on the channel after every time_interval you defined.
void setup() Serial.begin(9600); esp8266.begin(115200); pulseSensor.analogInput(PulseWire); pulseSensor.blinkOnPulse(LED13); //auto-magically blink Arduino's LED with heartbeat. pulseSensor.setThreshold(Threshold); // Double-check the "pulseSensor" object was created and "began" seeing a signal. if (pulseSensor.begin()) Serial.println("We created a pulseSensor Object !"); > Serial.println("AT"); esp8266.println("AT"); delay(3000); if(esp8266.find("OK")) connectWiFi(); > t.every(10000, getReadings); t.every(10000, updateInfo); >
We have to make functions for connectWiFi(), panic_button(), update_info() and getReadings().
Make function for connectWiFi() which will return True or False depending upon Wi-Fi connected or not. AT+CWMODE=1 will make ESP8266 work in station mode. AT+CWJAP=\, command, used in this function, is to connect to your Access Point (your Wi-Fi router).
boolean connectWiFi() Serial.println("AT+CWMODE=1"); esp8266.println("AT+CWMODE=1"); delay(2000); String cmd="AT+CWJAP=\""; cmd+=SSID; cmd+="\",\""; cmd+=PASS; cmd+="\""; Serial.println(cmd); esp8266.println(cmd); …… …..
Make getReadings(); function to take pulse sensor and LM35 readings and convert them to string using dtostrf(); function.
void getReadings() raw_myTemp = analogRead(A1); Voltage = (raw_myTemp / 1023.0) * 5000; // 5000 to get millivots. tempC = Voltage * 0.1; //in degree C myTemp = (tempC * 1.8) + 32; // conver to F Serial.println(myTemp); int myBPM = pulseSensor.getBeatsPerMinute(); // Calls function on our pulseSensor object that returns BPM as an "int". if (pulseSensor.sawStartOfBeat()) < // Constantly test to see if "a beat happened". Serial.println(myBPM); // Print the value inside of myBPM. > delay(20);
Define char array for BPM and temp and convert float value of these sensors to String using dtostrf().
char buffer1[10]; char buffer2[10]; BPM = dtostrf(myBPM, 4, 1, buffer1); temp = dtostrf(myTemp, 4, 1, buffer2); >
Make function for updating sensor information on the ThingSpeak channel.
"AT+CIPSTART=\"TCP\",\"", AT Command will establish TCP command over port 80
void updateInfo() String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; Serial.println(cmd); esp8266.println(cmd); delay(2000); if(esp8266.find("Error")) return; >
Attach the readings with the GET URL using "&field1="; for pulse readings and "&field2 rtejustify"> cmd = msg ; cmd += "&field1 &field2 \r\n"; Serial.print("AT+CIPSEND AT+CIPSEND >")) Serial.print(cmd); esp8266.print(cmd); > … …
Similarly, make function for panic_button. When button goes to HIGH, esp8266 send the information to the server using AT+CIPSTART and AT+CIPSEND commands.
void panic_button() panic = digitalRead(8); if(panic == HIGH) Serial.println(panic); String cmd = "AT+CIPSTART=\"TCP\",\""; cmd += IP; cmd += "\",80"; Serial.println(cmd); esp8266.println(cmd); ….. ..
Attach this information to "&field3=“.
cmd = msg ; cmd += "&field3 rtejustify">In loop function, call panic_button() and timers using t.update() function .
void loop() panic_button(); start: //label error=0; t.update(); …… ……Patient Monitoring System in Action
Now, connect your hardware components according to the circuit diagram and upload the code to the Arduino. Open Serial monitor to see what’s going inside the code.
You will see data is updated defined in the Google sheets on Google drive, after the interval you defined in the timer setting.
Press panic button for 4-5 seconds, you will get email that patient is in problem, like shown below:
Check the demonstration Video given below.
#define USE_ARDUINO_INTERRUPTS true
#define DEBUG true
#define SSID "********" // "SSID-WiFiname"
#define PASS "************" // "password"
#define IP "184.106.153.149" // thingspeak.com ip#include
#include "Timer.h"
#include // Includes the PulseSensorPlayground Library.
Timer t;
PulseSensorPlayground pulseSensor;String msg = "GET /update?key=your api key";
SoftwareSerial esp8266(10,11);//Variables
const int PulseWire = A0; // PulseSensor PURPLE WIRE connected to ANALOG PIN 0
const int LED13 = 13; // The on-board Arduino LED, close to PIN 13.
int Threshold = 550; //for heart rate sensor
float myTemp;
int myBPM;
String BPM;
String temp;
int error;
int panic;
int raw_myTemp;
float Voltage;
float tempC;
void setup()
Serial.begin(9600);
esp8266.begin(115200);
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13); //auto-magically blink Arduino's LED with heartbeat.
pulseSensor.setThreshold(Threshold);// Double-check the "pulseSensor" object was created and "began" seeing a signal.
if (pulseSensor.begin()) Serial.println("We created a pulseSensor Object !"); //This prints one time at Arduino power-up, or on Arduino reset.
>
Serial.println("AT");
esp8266.println("AT");if(esp8266.find("OK"))
connectWiFi();
>
t.every(10000, getReadings);
t.every(10000, updateInfo);
>void loop()
panic_button();
start: //label
error=0;
t.update();
//Resend if transmission is not completed
if (error==1)
goto start; //go to label "start"
>
delay(4000);
>void updateInfo()
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
Serial.println(cmd);
esp8266.println(cmd);
delay(2000);
if(esp8266.find("Error"))
return;
>
cmd = msg ;
cmd += "&field1 &field2 \r\n";
Serial.print("AT+CIPSEND AT+CIPSEND >"))
Serial.print(cmd);
esp8266.print(cmd);
>
else
Serial.println("AT+CIPCLOSE");
esp8266.println("AT+CIPCLOSE");
//Resend.
error=1;
>
>boolean connectWiFi()
Serial.println("AT+CWMODE=1");
esp8266.println("AT+CWMODE=1");
delay(2000);
String cmd="AT+CWJAP=\"";
cmd+=SSID;
cmd+="\",\"";
cmd+=PASS;
cmd+="\"";
Serial.println(cmd);
esp8266.println(cmd);
delay(5000);
if(esp8266.find("OK"))
return true;
>
else
return false;
>
>void getReadings() raw_myTemp = analogRead(A1);
Voltage = (raw_myTemp / 1023.0) * 5000; // 5000 to get millivots.
tempC = Voltage * 0.1;
myTemp = (tempC * 1.8) + 32; // conver to F
Serial.println(myTemp);
int myBPM = pulseSensor.getBeatsPerMinute(); // Calls function on our pulseSensor object that returns BPM as an "int".
// "myBPM" hold this BPM value now.
if (pulseSensor.sawStartOfBeat()) < // Constantly test to see if "a beat happened".
Serial.println(myBPM); // Print the value inside of myBPM.
>delay(20);
char buffer1[10];
char buffer2[10];
BPM = dtostrf(myBPM, 4, 1, buffer1);
temp = dtostrf(myTemp, 4, 1, buffer2);
>void panic_button() panic = digitalRead(8);
Have any question realated to this Article?
if(panic == HIGH) Serial.println(panic);
String cmd = "AT+CIPSTART=\"TCP\",\"";
cmd += IP;
cmd += "\",80";
Serial.println(cmd);
esp8266.println(cmd);
delay(2000);
if(esp8266.find("Error"))
return;
>
cmd = msg ;
cmd += "&field3 \r\n";
Serial.print("AT+CIPSEND AT+CIPSEND >"))
Serial.print(cmd);
esp8266.print(cmd);
>
else
Serial.println("AT+CIPCLOSE");
esp8266.println("AT+CIPCLOSE");
//Resend.
error=1;
>
>
>Ask Our Community Members
Comments
Submitted by Parminder Singh on Sun, 09/23/2018 - 00:04
error showing in coding
Arduino: 1.8.7 (Windows 10), Board: "Arduino/Genuino Uno"
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino: In function 'void setup()':
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:46:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino: In function 'void updateInfo()':
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:76:26: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:90:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino: In function 'boolean connectWiFi()':
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:117:23: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino: In function 'void panic_button()':
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:156:26: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino:168:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\hp\AppData\Local\Temp\ccczdJLl.ltrans0.ltrans.o: In function `begin':
C:\Users\hp\Documents\Arduino\libraries\PulseSensorPlayground-master\src/PulseSensorPlayground.cpp:55: undefined reference to `PulseSensorPlayground::UsingInterrupts'
C:\Users\hp\Documents\Arduino\libraries\PulseSensorPlayground-master\src/PulseSensorPlayground.cpp:56: undefined reference to `PulseSensorPlaygroundSetupInterrupt()'
collect2.exe: error: ld returned 1 exit status
exit status 1
Error compiling for board Arduino/Genuino Uno.This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
- Log in or register to post comments
Submitted by Boluwatife Ade… on Fri, 10/19/2018 - 15:45
code
Where you able to get the code to work?
- Log in or register to post comments
Submitted by Boluwatife Ade… on Fri, 10/19/2018 - 15:46
code
*were you able to get the code to work?
- Log in or register to post comments
Submitted by Aswinth Raj on Tue, 10/30/2018 - 18:21
The solution is discussed
The solution is discussed here
- Log in or register to post comments
Submitted by veeru on Sat, 10/03/2020 - 09:38
code error
168:22: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
if(esp8266.find(">"))
^
exit status 1
'class Timer' has no member named 'every'
- Log in or register to post comments
Submitted by SK on Sat, 04/16/2022 - 21:46
Did you get the solution for
Did you get the solution for that? Please help
- Log in or register to post comments
Submitted by veeru on Mon, 10/05/2020 - 16:32
code error
Please give the modified code
- Log in or register to post comments
Submitted by kingshamir on Thu, 10/11/2018 - 11:29
C:\Users\Lenovo\Documents
C:\Users\Lenovo\Documents\Arduino\Patient_Monitoring\Patient_Monitoring.ino: In function 'void getReadings()':
Patient_Monitoring:128:27: error: 'A1' was not declared in this scope
- Log in or register to post comments
Submitted by kingshamir on Thu, 10/11/2018 - 11:31
type of board
what type of board we need to select
- Log in or register to post comments
Submitted by AISHA on Wed, 10/17/2018 - 18:31
Arduino UNO
- Log in or register to post comments
Submitted by Aisha on Sat, 10/27/2018 - 18:57
ERROR COMPILLING FOR BOARD ARDUINO/GENUINO UNO
When i upload this code on arduino board,i have this type of error.The error given below:
Arduino: 1.8.6 (Windows 10), Board: "Arduino/Genuino Uno"
C:\Program Files\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files\Arduino\hardware -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\Aisha Anam\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10806 -build-path C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578 -warnings=none -build-cache C:\Users\AISHAA~1\AppData\Local\Temp\arduino_cache_762418 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files\Arduino\hardware\tools\avr -verbose C:\Users\Aisha Anam\Documents\Arduino\IOTBased\IOTBased.ino
C:\Program Files\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files\Arduino\hardware -tools C:\Program Files\Arduino\tools-builder -tools C:\Program Files\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files\Arduino\libraries -libraries C:\Users\Aisha Anam\Documents\Arduino\libraries -fqbn=arduino:avr:uno -vid-pid=0X2341_0X0043 -ide-version=10806 -build-path C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578 -warnings=none -build-cache C:\Users\AISHAA~1\AppData\Local\Temp\arduino_cache_762418 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.avr-gcc.path=C:\Program Files\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA.path=C:\Program Files\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files\Arduino\hardware\tools\avr -verbose C:\Users\Aisha Anam\Documents\Arduino\IOTBased\IOTBased.ino
Using board 'uno' from platform in folder: C:\Program Files\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files\Arduino\hardware\arduino\avr
Detecting libraries used.
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o nul
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\libraries\\SoftwareSerial\\src" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o nul
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\libraries\\SoftwareSerial\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\PulseSensorPlayground-master\\src" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o nul
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\libraries\\SoftwareSerial\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\PulseSensorPlayground-master\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\Timer-master" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o nul
Using cached library dependencies for file: C:\Program Files\Arduino\hardware\arduino\avr\libraries\SoftwareSerial\src\SoftwareSerial.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src\PulseSensorPlayground.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src\utility\PulseSensor.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src\utility\PulseSensorSerialOutput.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src\utility\PulseSensorTimingStatistics.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\Timer-master\Event.cpp
Using cached library dependencies for file: C:\Users\Aisha Anam\Documents\Arduino\libraries\Timer-master\Timer.cpp
Generating function prototypes.
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\libraries\\SoftwareSerial\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\PulseSensorPlayground-master\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\Timer-master" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\preproc\\ctags_target_for_gcc_minus_e.cpp"
"C:\\Program Files\\Arduino\\tools-builder\\ctags\\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\preproc\\ctags_target_for_gcc_minus_e.cpp"
Compiling sketch.
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10806 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\cores\\arduino" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\variants\\standard" "-IC:\\Program Files\\Arduino\\hardware\\arduino\\avr\\libraries\\SoftwareSerial\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\PulseSensorPlayground-master\\src" "-IC:\\Users\\Aisha Anam\\Documents\\Arduino\\libraries\\Timer-master" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp" -o "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp.o"
Compiling libraries.
Compiling library "SoftwareSerial"
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\SoftwareSerial\SoftwareSerial.cpp.o
Compiling library "PulseSensorPlayground-master"
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\PulseSensorPlayground-master\PulseSensorPlayground.cpp.o
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\PulseSensorPlayground-master\utility\PulseSensorTimingStatistics.cpp.o
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\PulseSensorPlayground-master\utility\PulseSensorSerialOutput.cpp.o
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\PulseSensorPlayground-master\utility\PulseSensor.cpp.o
Compiling library "Timer-master"
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\Timer-master\Event.cpp.o
Using previously compiled file: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_build_523578\libraries\Timer-master\Timer.cpp.o
Compiling core.
Using precompiled core: C:\Users\AISHAA~1\AppData\Local\Temp\arduino_cache_762418\core\core_arduino_avr_uno_5638c217b04eda8279099c4937887265.a
Linking everything together.
"C:\\Program Files\\Arduino\\hardware\\tools\\avr/bin/avr-gcc" -w -Os -g -flto -fuse-linker-plugin -Wl,--gc-sections -mmcu=atmega328p -o "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578/IOTBased.ino.elf" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\sketch\\IOTBased.ino.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\SoftwareSerial\\SoftwareSerial.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\PulseSensorPlayground-master\\PulseSensorPlayground.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\PulseSensorPlayground-master\\utility\\PulseSensor.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\PulseSensorPlayground-master\\utility\\PulseSensorSerialOutput.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\PulseSensorPlayground-master\\utility\\PulseSensorTimingStatistics.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\Timer-master\\Event.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578\\libraries\\Timer-master\\Timer.cpp.o" "C:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578/..\\arduino_cache_762418\\core\\core_arduino_avr_uno_5638c217b04eda8279099c4937887265.a" "-LC:\\Users\\AISHAA~1\\AppData\\Local\\Temp\\arduino_build_523578" -lm
C:\Users\AISHAA~1\AppData\Local\Temp\cc4HPwqB.ltrans0.ltrans.o: In function `begin':C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src/PulseSensorPlayground.cpp:55: undefined reference to `PulseSensorPlayground::UsingInterrupts'
C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master\src/PulseSensorPlayground.cpp:56: undefined reference to `PulseSensorPlaygroundSetupInterrupt()'
collect2.exe: error: ld returned 1 exit status
Using library SoftwareSerial at version 1.0 in folder: C:\Program Files\Arduino\hardware\arduino\avr\libraries\SoftwareSerial
Using library PulseSensorPlayground-master at version 1.4.11 in folder: C:\Users\Aisha Anam\Documents\Arduino\libraries\PulseSensorPlayground-master
Using library Timer-master in folder: C:\Users\Aisha Anam\Documents\Arduino\libraries\Timer-master (legacy)
exit status 1
Error compiling for board Arduino/Genuino Uno.
- Log in or register to post comments
Submitted by pooja boga on Sun, 03/01/2020 - 16:57