LCD Arduino project brief introduction

Some time ago, I found a heart rate sensor module MAX30100 in shopping online. This module can collect the blood oxygen and heart rate data of users, which is also simple and convenient to use.

According to the data, I found that there are libraries of MAX30100 in the Arduino library files. That is to say, if I use the communication between LCD Arduino and MAX30100, I can directly call the Arduino library files without having to rewrite the driver files. This is a good thing, so I bought the module of MAX30100.

I decided to use Arduino to verify the heart rate and blood oxygen collection function of MAX30100. With STONE TFT LCD screen for monitoring blood pressure.

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Note: this module by default only with 3.3 V level MCU communications, because it defaults to using IIC pin pull up the resistance of 4.7 K to 1.8 V, so there is no communication with the Arduino by default, if you want to commune with the Arduino and need two 4.7 K of the IIC pin pull-up resistor connected to the VIN pin, these contents will be introduced in the back of the chapter.

Functional assignments

Before starting this project, I thought about some simple features:

Heart rate data and blood oxygen data were collected
Heart rate and blood oxygen data are displayed through an LCD screen

These are the only two features, but if we want to implement it, we need to do more thinking:

What master MCU is used?
What kind of LCD display?

As we mentioned earlier, we use Arduino for the MCU, but this is an LCD Arduino project, so we need to choose the appropriate LCD display module. I plan to use the LCD display screen with a serial port. I have a STONE STVI070WT-01 displayer here, but if Arduino needs to communicate with it, MAX3232 is needed to do the level conversion.

Then the basic electronic materials are determined as follows:

Arduino Mini Pro development board
MAX30100 heart rate and blood oxygen sensor module
STONESTVI070WT-01LCD serial port display module
MAX3232 module

Hardware Introduction


The MAX30100 is an integrated pulse oximetry and heart rate monitor sensor solution. It combines two LEDs, a photodetector, optimized optics, and low-noise analog signal processing to detect pulse oximetry and heart-rate signals. The MAX30100 operates from 1.8V and 3.3V power supplies and can be powered down through software with negligible standby current, permitting the power supply to remain connected at all times.


Wearable Devices
Fitness Assistant Devices
Medical Monitoring Devices

Benefits and Features

1、Complete Pulse Oximeter and Heart-Rate SensorSolution Simplifies Design

Integrated LEDs, Photo Sensor, and high-Performance Analog Front -End
Tiny 5.6mm x 2.8mm x 1.2mm 14-Pin OpticallyEnhanced System-in-Package

2、Ultra-Low-Power Operation Increases Battery Life for wearable Devices

Programmable Sample Rate and LED Current forPower Savings
Ultra-Low Shutdown Current (0.7µA, type)

3、Advanced Functionality Improves Measurement Performance

High SNR Provides Robust Motion Artifact Resilience
Integrated Ambient Light Cancellation
High Sample Rate Capability
Fast Data Output Capability

Detection Principle

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Just press your finger against the sensor to estimate pulse oxygen saturation (SpO2) and pulse (equivalent to heartbeat).

The pulse oximeter (oximeter) is a mini-spectrometer that USES the principles of different red cell absorption spectra to analyze the oxygen saturation of the blood. This real-time and rapid measurement method is also widely used in many clinical references.

I will not introduce the MAX30100 too much, because these materials are available on the Internet. Interested friends can look up the information of this heart rate test module on the Internet, and have a deeper understanding of its detection principle.

Introduction to the STVI070WT-01 displayer

In this project, I will use the STONE STVI070WT-01 to display the heart rate and blood oxygen data.

The driver chip has been integrated inside the display screen, and there is software for users to use. Users only need to add buttons, text boxes, and other logic through the designed UI pictures, and then generate configuration files and download them into the display screen to run.

The display of STVI070WT-01 communicates with MCU through the UART RS232 signal, which means that we need to add a MAX3232 chip to convert the RS232 signal into a TTL signal so that we can communicate with Arduino MCU.

If you are not sure how to use the MAX3232, please refer to the following pictures:

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Three steps of STONE display screen development:

Design the display logic and button logic with STONE TOOL software and download the design file to the display module.
MCU communicates with the STONE LCD display module through the serial port.
With the data obtained in step 2, the MCU does other actions.

STONE TOOL software installation

Download the latest version of the STONE TOOL software (currently TOOL2019) from the website, and install it.

After the software is installed, the following interface will be opened:


Click the “File” button in the upper left corner to create a new project, which we will discuss later.

LCD Arduino

Arduino is an open-source electronic prototype platform that is easy to use and easy to use. It includes the hardware part (various development boards that conform to the Arduino specification) and the software part (Arduino IDE and related development kits).

The hardware part (or development board) consists of a microcontroller (MCU), Flash memory (Flash), and a set of universal input/output interfaces (GPIO), which you can think of as a microcomputer motherboard.

The software part is mainly composed of Arduino IDE on PC, a related board-level support package (BSP), and a rich third-party function library. With the Arduino IDE, you can easily download the BSP associated with your development board and the libraries you need to write your programs.

Arduino is an open-source platform. So far, there have been many models and many derived controllers, including Arduino Uno, Arduino Nano, Arduino Yun, and so on. In addition, the Arduino IDE now not only supports the Arduino series development boards but also adds support for popular development boards such as Intel Galileo and NodeMCU by introducing BSP.

Arduino senses the environment through a variety of sensors, controlling lights, motors, and other devices to feedback and influence the environment. The microcontroller on the board can be programmed with an Arduino programming language, compiled into binaries, and burned into the microcontroller. Programming for Arduino is implemented with the Arduino programming language (based on Wiring) and the Arduino development environment (based on Processing). Arduino-based projects can contain Arduino only, as well as Arduino and other software running on PC, and they communicate with each other (such as Flash, Processing, MaxMSP).

HMI for Arduino display serial TFT LCD project development environment

The Arduino development environment is the Arduino IDE, which can be downloaded from the Internet.

Log into the official website of Arduino and download the software

After installing the Arduino IDE, the following interface will appear when you open the software:

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

The Arduino IDE creates two functions by default: the setup function and the loop function.

There are many Arduino introductions on the Internet. If you don’t understand something, you can go to the Internet to find it.

LCD Arduino Project implementation process

hardware connection

To ensure that the next step in writing code goes smoothly, we must first determine the reliability of the hardware connection.

Only four pieces of hardware were used in this project:

Arduino Mini pro-development board
STONE STVI070WT-01 TFT-LCD display screen
MAX30100 heart rate and blood oxygen sensor
MAX3232(rs232-> TTL)

The Arduino Mini Pro development board and STVI070WT-01 TFT-LCD display screen are connected through UART, which requires level conversion through MAX3232, and then the Arduino Mini Pro development board and MAX30100 module are connected through the IIC interface. After thinking clearly, we can draw the following wiring picture:

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Make sure there are no errors in the hardware connection and proceed to the next step.

STONE TFT LCD user interface design

First of all, we need to design a UI display image, which can be designed by PhotoShop or other image design tools. After designing the UI display image, save the image in JPG format.

Open the software STONE TOOL 2019 and create a new project:

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Remove the image that was loaded by default in the new project, and add the UI image that we designed.

Add the text display component, design the display digit and decimal point, get the storage location of the text display component in the displayer.

The effect is as follows:

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Text display component address:

Connection sta :0x0008
Heart rate :0x0001
Blood oxygen :0x0005

The main contents of the UI interface are as follows:

Connection status
Heart rate display
Blood oxygen showed

Generate configuration file

LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

Once the UI design is complete, the configuration file can be generated and downloaded to the STVI070WT-01 display.

First, perform step 1, then insert the USB flash drive into the computer, and the disk symbol will be displayed. Then click “Download to u-disk” to Download the configuration file to the USB flash drive, and then insert the USB flash drive into STVI070WT-01 to complete the upgrade.


LCD-Arduino-STONE-HMI-Display-Heart-Rate (1)

MAX30100 communicates via IIC. Its working principle is that the ADC value of heart rate can be obtained through infrared led irradiation. The MAX30100 register can be divided into five categories: state register, FIFO, control register, temperature register, and ID register. The temperature register reads the temperature value of the chip to correct the deviation caused by the temperature. The ID register can read the chip’s ID number.

MAX30100 is connected with the Arduino Mini Pro development board through the IIC communication interface. Because there are ready-made MAX30100 library files in the Arduino IDE, we can read the heart rate and blood oxygen data without studying the registers of MAX30100.

For those who are interested in exploring the MAX30100 register, see the MAX30100 Datasheet.

Modify the MAX30100 IIC pull-up resistor

It should be noted that the 4.7k pull-up resistance of the IIC pin of the MAX30100 module is connected to 1.8v, which is not a problem in theory. However, the communication logic level of the Arduino IIC pin is 5V, so it cannot communicate with Arduino without changing the hardware of the MAX30100 module. Direct communication is possible if the MCU is STM32 or another 3.3v logic level MCU.

Therefore, the following changes need to be made:

Remove the three 4.7k resistors marked in the picture with an electric soldering iron. Then weld two resistors of 4.7k at the pins of SDA and SCL to VIN, so that we can communicate with Arduino.

Arduino serial display LCD

Open the Arduino IDE and find the following buttons:

Search for “MAX30100” to find two libraries for MAX30100, then click download and install.

After the installation, you can find the Demo of MAX30100 in the LIB library folder of LCD Arduino:

Double-click the file to open it.

This Demo can be directly tested. If the hardware connection is ok, you can download the code compilation into the Arduino development board and see the data of MAX30100 in the serial debugging tool.

The complete code is as follows:


Arduino-MAX30100 oximetry/heart rate integrated sensor library

Copyright (C) 2016  OXullo Intersections< style=”box-sizing: border-box; -webkit-tap-highlight-color: transparent;”></>

This program is free software: you can redistribute it and/or modify

it under the terms of the GNU General Public License as published by

the Free Software Foundation, either version 3 of the License, or

(at your option) any later version.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of


GNU General Public License for more details.

You should have received a copy of the GNU General Public License

along with this program.  If not, see.

This code is very simple, I believe you can understand it at a glance. I have to say that the modular programming of Arduino is very convenient, and I don’t even need to understand how the driver code of Uart and IIC is implemented.

Of course, the above code is an official Demo, and I still need to make some changes to display the data to STONE’s displayer.

Display data to the STONE display through Arduino LCD

First, we need to get the address of the component that displays the heart rate and blood oxygen data in STONE’s displayer:

In my project, the address is as follows:

Heart rate display component address: 0x0001

Address of blood oxygen display module: 0x0005

Sensor connection status address: 0x0008

If you need to change the display content in the corresponding space, you can change the display content by sending data to the corresponding address of the display screen through the serial port of Arduino.

The modified code is as follows:

Compile the code, download it to the Arduino serial display LCD development board, and you’re ready to start testing.

We can see that when the fingers leave the MAX30100, the heart rate and blood oxygen display 0. Place your finger on the MAX30100 collector to see your heart rate and blood oxygen levels in real-time.

STONE LCD Arduino project effect can be seen in the following picture

LCD-Arduino-STONE-HMI-Display-Heart-Rate (20)

LCD-Arduino-STONE-HMI-Display-Heart-Rate (20)

Related posts:

Bluetooth communication DEMO: NRF51822 UART communicate with STONE HMI display
The Benefits of Looking for Chinese TFT LCD manufacturers
The Structure and Display Principle of High Brightness LCD
Raspberry Pi GUI using STONE HMI Touch Screen Display Module
Self-service Device Application in Pandemic
STONE TFT LCD Application in FDM LCD 3D Printer
Tutorial: STONE HMI display for EV charging infrastructure project
Ultrasonic module test with STONE LCD module
STONE TFT LCD Module STM32 Service Robot Motion Status Monitoring
Arduino Project Control Automation STONE HMI

LCD Arduino + STONE HMI + Display Heart Rate