Our new website is in BETA! If you would like to take a look then please visit new.dizzy.co.za :-).

+27 (0)11 022 5323 +27 (0)64 681 8495
- -
Heart Rate 9 Click (Go to Parent Category)

Heart Rate 9 Click

The Heart Rate 9 click is a Click board™ which features PIC16F1779 8-bit MCU and SFH 7060 heart rate and pulse oximetry monitoring sensor. This click has an algorithm for processing data from the sensor and it can send data for 3 different diodes (green, ir, red) who give out a diagram of the heartbeat and its frequency per minute. The data has shown that the most notable signal comes from the green diode because it has the best reflection through the surface of the skin due to its shortest wavelength among three light sources. Implementing a light barrier to block optical crosstalk and improved geometry for optimized signal quality. Most reflective heart rate monitors still have significant noise in their designs despite the use of complex and expensive analog circuits such as Analog Front End (AFE) chips. A more cost-effective method for reducing noise and taking these measurements is necessary.

The Heart Rate 9 click is supported by a mikroSDK compliant library, which includes functions that simplify software development. This Click board™ comes as a fully tested product, ready to be used on a system equipped with the mikroBUS™ socket.

R305  Qty:
Price ex. VAT. Weight: 18g. Stock: Lead-time applicable [i]. mikroE Icon

How does it work?

The Heart Rate 9 Click board™ utilizes a Phase Division Multiplexing technique to simultaneously measure multiple signals with zero cross talk. This technique is implemented using the PIC16F1779 MCU's integrated Core Independent Peripherals (CIPs) from Microchip. Using the CIPs allows you to achieve a low-noise reflective heart rate monitor design with significantly lower BOM costs than conventional designs.

Click Boards Sensors Biometrics Heart Rate 9 Click

This Heart Rate 9 Click board™ introduces Microchip's proprietary method (hereafter ???proprietary method???) of measuring multiple signals in a body using pseudorandom binary sequence generation and phase division multiplexing. This proprietary method uses a special encoding/decoding scheme to allow multiple light-emitting diodes (LED) transmitting light simultaneously with a single photodiode to condition each light from the combined lights at the receiving side.

While the blood passes through the capillary blood vessels, they expand and dilate. Their light reflectance index changes accordingly. This is the basis of the photo-plethysmogram (PPM), a method used for the volumetric measurement of an organ, or in this case - blood vessels. The heart rate signal is calculated according to the changes of the reflected green light, sensed by the PD element. The Heart Rate 6 click can provide the HRM readings by simply placing the index finger over the optical sensor.

Oxygen saturation in the blood can be determined by measuring the light absorption in the red/IR part of the spectrum. The oxygen saturated blood absorbs more red light and less infrared than the unsaturated blood. This fact can be used to determine the oxygen saturation of the blood. For a healthy adult person, the peripheral capillary oxygen saturation (SpO2) percentage ranges from 95% to 100%.

The challenge in a multiple signal sources system (for example, the LEDs in the case of a pulse oximeter) is that each LED must share the same photodiode. A classic solution is to turn on each light source in sequence and then take each measurement in turn. Each light source gets its own slice of time in which the photodiode can get its measurement. This method is called Time-Division Multiplexing (TDM). The same principle is also applied to the TDMA-based cellular system. The drawback of the TDM approach is that adding more light sources, while keeping the data processing routine the same, results in more time to get a measurement from every source.

Microchip's proprietary method uses a known concept called Maximal Length (ML) sequence, a type of pseudorandom binary sequence, to generate a gold code or a reference sequence. This reference sequence is then phase shifted using PhaseDivision Multiplexing (PDM) to drive multiple LEDs. The light amplitudes from these LEDs, after passing through a part of a body, are detected by a phototransistor or photodiode and digitized with an Analog-to-Digital Converter (ADC). The digitized ADC light amplitude values are re-correlated with each LED's driving sequence. Spread spectrum techniques are known for their noise mitigation properties and ability to pass multiple signals through the same medium without interference. Thus, these measurements of each light absorption of the body can be performed substantially simultaneously with minimal interference from each other.

The SFH7060 made by OSRAM integrates three green, one red, one infrared emitter and one photodiode that are all placed in a reflective type of package. The reflective photosensing method has become increasingly popular in developing small, wearable biometric sensors, such as those green light sensors seen in the back of smart watches or activity tracker wristbands.


Type Heart Rate,Biometrics
Applications It can be used to develop applications based on the heart rate monitoring, pulse oximetry measurements, calorie expenditure, and similar health-related applications.
On-board modules PIC16F1779 MCU and SFH 7060 sensor
Key Features Single-chip implementation using an eXtreme Low Power (XLP) PIC16F1779 8-bit MCU, Integrated features of the 8-bit MCU use a Phase Division Multiplexing technique to simultaneously measure multiple signals with zero cross talk, Low overall BOM cost due to integrated Core Independent Peripherals ( CIPs) and Analog features, Core Independent Peripherals reduce software overheard.
Interface GPIO,UART
Compatibility mikroBUS
Click board size M (42.9 x 25.4 mm)
Input Voltage 3.3V

Pinout diagram

This table shows how the pinout on Heart Rate 9 click corresponds to the pinout on the mikroBUS™ socket (the latter shown in the two middle columns).

Notes Pin Mikrobus logo.png Pin Notes
Reset RST 2 RST INT 15 NC
NC 3 CS RX 14 TX UART Transmit
NC 4 SCK TX 13 RX UART Receive
Power Supply 3.3V 7 3.3V 5V 10 NC
Ground GND 8 GND GND 9 GND Ground

Onboard settings and indicators

Label Name Default Description
LD1 PWR - Power LED Indicator
LD2 RED - Pulse Detection Indicator

Software Support

We provide a library for the Heart Rate 9 Click on our LibStock page, as well as a demo application (example), developed using MikroElektronika compilers. The demo can run on all the main MikroElektronika development boards.

Library Description

Initializes and defines UART bus driver, and defines driver's functions for reading Heart Rate data uses Heart Rate 9 clicks.

Key functions:

  • uint8_t heartrate9_read_byte() - Read Single Byte
  • uint8_t heartrate9_byte_ready() - Check for new byte received/li>

Examples description

The application is composed of three sections :

  • System Initialization - Initializes UART module
  • Application Initialization - Initializes Driver init and logs instructions on commands and format of response data
  • Application Task - Waits for valid user input and executes functions based on set of valid commands
void applicationTask()
    char hr9_rx_data;
    char console_rx_data;
    uint8_t hr9_drdy_flag;
    uint8_t console_drdy;

    console_drdy = UART_Rdy_Ptr( );

    if ( console_drdy != 0 )
        console_rx_data = UART_Rd_Ptr( );
        if ( ( console_rx_data == 's' ) || ( console_rx_data == 'S' ) )
            mikrobus_logWrite( " >> [s or S] - START << ", _LOG_LINE );
            start_app_flag = 1;
		if ( ( console_rx_data == 'b' ) || ( console_rx_data == 'B' ) )
            mikrobus_logWrite( " >> [b or B] - BREAK << ", _LOG_LINE );
            start_app_flag = 0;
		if ( ( console_rx_data == 'h' ) || ( console_rx_data == 'H' ) )
            mikrobus_logWrite( " >> [h or H] - HELP << ", _LOG_LINE );
            heartrate9_help( );
    if ( start_app_flag == 1 )
        hr9_drdy_flag = heartrate9_byte_ready( );

        if ( 1 == hr9_drdy_flag )
            hr9_rx_data = heartrate9_read_byte( );
            mikrobus_logWrite( &hr9_rx_data, _LOG_BYTE );

Commands : 'S or s' - Start logging 'B or s' - Break logging 'H or h' - Help

Additional Functions :

  • void heartrate9_help() - commands and response data help

The full application code, and ready to use projects can be found on our LibStock page.

Other mikroE Libraries used in the example:

  • UART

Additional notes and informations

Depending on the development board you are using, you may need USB UART click, USB UART 2 click or RS232 click to connect to your PC, for development systems with no UART to USB interface available on the board. The terminal available in all MikroElektronika compilers, or any other terminal application of your choice, can be used to read the message.


This Click board™ is supported with mikroSDK - MikroElektronika Software Development Kit. To ensure proper operation of mikroSDK compliant Click board™ demo applications, mikroSDK should be downloaded from the LibStock and installed for the compiler you are using.

For more information about mikroSDK, visit the official page.