PPG Sensor with Arduino: A Gateway to Health Monitoring

In the world of wearable technology and health monitoring, PPG (Photoplethysmography) sensors have emerged as powerful tools for measuring various physiological parameters. Combined with the flexibility and versatility of Arduino microcontrollers, PPG sensors offer an accessible and cost-effective solution for developing health monitoring devices. This article explores the integration of PPG sensors with Arduino, highlighting their potential applications and the steps involved in creating a health monitoring system and healthcare IoT.

Understanding PPG Sensors

PPG sensors work on the principle of measuring changes in blood volume by detecting variations in light absorption. They consist of an LED (light-emitting diode) that emits light of a specific wavelength and a photodetector that captures the reflected or transmitted light. When the sensor is placed on the skin, the light penetrates the tissue and is absorbed by the blood vessels. As blood flow changes with each heartbeat, the reflected or transmitted light fluctuates, enabling the PPG sensor to detect heart rate, blood oxygen saturation (SpO2), and even blood pressure. For more see What is PPG(Photoplethysmography) sensor? how does it work?.

The Role of Arduino

Arduino, an open-source electronics platform, provides an ideal environment for integrating PPG sensors into health monitoring systems. Arduino boards are affordable, programmable, and widely supported by a large community. They offer numerous input/output (I/O) pins, which can be utilized to interface with PPG sensors and other peripherals. By leveraging the power of Arduino, developers can collect data from PPG sensors, process it, and present meaningful information to the user.

Building a PPG Sensor System with Arduino

To create a PPG sensor system using Arduino, the following steps can be followed:

  1. Choose the Arduino board: Select an appropriate Arduino board based on the specific requirements of your project. Consider factors such as the number of I/O pins, processing power, and form factor.
  2. Select the PPG sensor: There are various PPG sensors available in the market, including modules such as the MAX30102 or MAX30105. These sensors come with integrated LED and photodetector components, simplifying the hardware setup.
  3. Connect the PPG sensor to Arduino: Connect the PPG sensor module to the Arduino board using jumper wires. Typically, the sensor module requires connections to power (5V and GND) and the sensor module analog signal output is connected to one of the Arduino analog pin. The following is circuit diagram of implementing heart beat monitoring system with PPG sensor circuit(Photodiode, Photodector) and Arduino.
    circuit diagram PPG sensor Arduino

  4. Install the necessary libraries: Arduino libraries provide pre-written functions that facilitate communication with the PPG sensor module. Install the appropriate libraries for your specific PPG sensor to save development time and effort. For example to use Sparkfun Pulse Sensor SEN-11574 module you can use the Arduino library manager to install the PulseSensor Playground library.
    PulseSensor Playground

  5. Develop the Arduino code: Write the code that interfaces with the PPG sensor, reads the data, and processes it. Depending on the sensor and the desired parameters to measure (e.g., heart rate or SpO2), refer to the sensor's datasheet and available examples to understand the code structure.An example PPG Arduino code taken from examples of the library which reads PPG sensor data and displays Beat PerMinute(BPM) of heart beat on serial monitor is below.
    #define USE_ARDUINO_INTERRUPTS true    // Set-up low-level interrupts for most acurate BPM math.
    #include <PulseSensorPlayground.h>     // Includes the PulseSensorPlayground Library.   
    //  Variables
    const int PulseWire = 0;       // PulseSensor PURPLE WIRE connected to ANALOG PIN 0
    const int LED = 12;          // The on-board Arduino LED, close to PIN 13.
    int Threshold = 550;           // Determine which Signal to "count as a beat" and which to ignore.
                                   // Use the "Gettting Started Project" to fine-tune Threshold Value beyond default setting.
                                   // Otherwise leave the default "550" value. 
    PulseSensorPlayground pulseSensor;  // Creates an instance of the PulseSensorPlayground object called "pulseSensor"
    void setup() {   
      Serial.begin(9600);          // For Serial Monitor
      // Configure the PulseSensor object, by assigning our variables to it. 
      pulseSensor.blinkOnPulse(LED);       //auto-magically blink Arduino's LED with heartbeat.
      // 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.  
    void loop() {
    if (pulseSensor.sawStartOfBeat()) {            // Constantly test to see if "a beat happened".
    int myBPM = pulseSensor.getBeatsPerMinute();  // Calls function on our pulseSensor object that returns BPM as an "int".
                                                   // "myBPM" hold this BPM value now. 
     Serial.println("?  A HeartBeat Happened ! "); // If test is "true", print a message "a heartbeat happened".
     Serial.print("BPM: ");                        // Print phrase "BPM: " 
     Serial.println(myBPM);                        // Print the value inside of myBPM. 
      delay(20);                    // considered best practice in a simple sketch.

  6. Display or transmit the data: Use the output options available with Arduino to present the collected data. This could involve connecting an LCD display, transmitting the data wirelessly using HC-05 Bluetooth module with Arduino or Wi-Fi using NodeMCU and Arduino, IRF540N arduino circuit, or storing it on an SD card.
  7. Calibrate and test: Properly calibrate the PPG sensor system to ensure accurate measurements. Perform tests with known physiological data to verify the reliability and consistency of the readings.

PPG sensor Arduino Circuit Example

The PPG sensor with Arduino circuit diagram shown above uses APDS-9008 photo light sensor, MCP6001 operational amplifier with Arduino to make PPG sensor with Arduino. A photo-diode is used to fire photons to the user body or fingers and the APDS-9008 light sensor is used to detect the reflected photon. This reflected photon converts current to voltage which is afterwards amplified by the MCP inverting amplifier. The output of the inverting op-amp is subsequently read by Arduino analog pin 0. This is then displayed on the serial monitor. 

The basic working principle of PPG sensor can be understood by knowing the basic of photodiode, photodetector with Arduino.

Applications of PPG Sensor Systems

The integration of PPG sensors with Arduino opens up a world of possibilities in health monitoring and wearable technology. Some potential applications include:

  • Heart rate monitors: Develop portable heart rate monitors for fitness enthusiasts or healthcare professionals to track heart rate during exercise or monitoring patients' conditions.
  • Pulse oximeters: Create wearable pulse oximeters that measure blood oxygen saturation levels. This application is particularly useful for individuals with respiratory conditions or who need to monitor their oxygen levels regularly.
  • Blood pressure monitors: Combine PPG sensors with additional components to measure blood pressure non-invasively. This can provide a convenient and accessible way for individuals to monitor their blood pressure at home.
  • Sleep trackers: PPG sensors can be utilized to monitor sleep patterns and analyze heart rate variability during sleep. This application can help individuals track their sleep quality and identify potential sleep disorders.
  • Stress management devices: Develop wearable devices that utilize PPG sensors to measure heart rate variability and provide feedback on stress levels. This can aid in stress management and promote relaxation techniques.
  • Sports performance monitoring: Create devices that incorporate PPG sensors to measure heart rate and oxygen levels during physical activities. This can help athletes optimize their training and performance.
  • Remote patient monitoring: Implement PPG sensor systems in telemedicine applications to remotely monitor patients' vital signs. This can enable healthcare providers to track patients' health conditions from a distance and make informed decisions. Read more at IoT monitoring and IoT monitoring solutions.

Video demonstration of PPG sensor with Arduino

Following video demonstrates how a PPG sensor with Arduino circuit works.



The integration of PPG sensors with Arduino offers an exciting opportunity to develop health monitoring devices that are cost-effective, customizable, and accessible. By combining the power of PPG sensors to measure physiological parameters with the flexibility of Arduino microcontrollers, developers can create innovative wearable devices for a range of applications. Whether it's monitoring heart rate, blood oxygen saturation, or blood pressure, the combination of PPG sensors and Arduino opens up endless possibilities for health monitoring and wearable technology. So, dive into the world of PPG sensors and Arduino, and unleash your creativity in building the next generation of health monitoring devices.


Post a Comment

Previous Post Next Post