Portable Monitor with STONE serial Touch Screen 15

[otw_is sidebar=otw-sidebar-1]

Using STONE serial touch screen portable monitor, the hardware
department decided to use NXP's 32-bit microprocessor chip as the
whole machine monitoring, ECG analysis, control center, by ECG
bioelectricity acquisition amplification, right leg drive, import MIT ECG
database to do algorithm, but also monitor SpO2 sensor electrical
signal, blood pressure, respiratory electrical signal amplification and
filtering processing, through high speed baud rate communication,
drive STONE serial touch screen to display waveform and parameter
changes in real time, and compare with reference value to make
judgment, and monitor and alarm the changes of human body
parameters. If there is a range deviation, it automatically issues voice

Portable Monitor with STONE serial Touch Screen

The new version of STONE serial touch screen perfectly supports curve depiction and display, communication protocol is simple and
easy to remember, microcontroller engineers can use it after reading the manual, there are many examples of drivers in the command set,
directly copied to modify the name and parameters can be used.
Serial connection is simple, you can use the official adapter board,
whether it is a direct serial connection, or USB to serial, it is very
convenient and easy to use. The monitor displays multiple groups of
vital parameters at the same time, especially 3 curves are
dynamically drawn and displayed at the same time very smoothly, and
should be able to draw more groups of curve graphics at the same
time, you can try as needed. Of course, the command set curve
function has an example of multiple data pushed at the same time,
but the actual use of the current hardware does not respond, I hope
the official can be optimized as soon as possible. It may also be
solved by updating the firmware. This new version of the drawing
curve function, I first tried how can not be tuned out, and finally
learned that the serial screen has a new firmware, brushed the new
firmware to see the "real face of the mountain". Seeing the smooth
ECG curve coming out of the serial screen with the firmware brushed,
the mood is happy, huh ……
The design picture of this project is shown in Figure (1). The
interface is based on STWI101WT-01 serial screen with 1024*600
resolution, the left side shows 2/3 of the waveform curve and the right

1/3 shows the value.
This article will focus on the creation and depiction of the curve chart view. It is
completely according to the production process of the project demo, no
classification, maybe you feel messy, but it is the real process of real development.




First, we decided to fix the curve depiction of ECG.


Figure (1) Project Design Expected Interface
This demo simulates 75bpm heart rate, which is equivalent to
800ms heartbeat, i.e. one point every 40ms, one cycle every 20
points, based on the whole chart view control X axis divided into 100
equal parts, 4s waveform per screen, screen refresh rate 25Hz, looks
very smooth. The line series element of this chart view control is set
to smooth = false (ECG waveform is sharp), the lower envelope is not
displayed, and the point marker is not displayed. area. Here see
Figure (4), min = 0, max = 140 for the Y axis, the maximum value
given in the program is 130, and the range is relatively full. See
Figure (2) – Figure (7) for other parameters, which are set for chart
view1 and its elements X axis1, Yaxis2, bar series1, line series1. We
choose transparent rgba (0,0,0,0) for the bg color of the chart view
control, which reveals the base color (black), and other controls, such
as view, have the same characteristics.

Figure (2) Property settings of chart view1 Figure (3) X axis1 property setting of
chart view1

Figure (4) Y axis1 property setting of chart view1 Figure (5) bar series1 property setting of chart

Figure (6) The line series1 property setting of chart view111 Figure (7) line series1 property
setting of chart view12

The programming code to simulate the ECG waveform (75bpm)
according to the above settings is as follows.
First, define two variables as follows.
Int num19_1 = 0;
Int num19_2 = 0;
Then generally in the main loop main.c, the ECG curve is depicted
by the following code.
num19_1 += 1;
if(num19_1 >= 4){ // Draw one point every 40ms.
num19_1 = 0;
num19_2 += 1;
if(num19_2 == 3){
widget\":\"line_series1\",\"mode\":\"push\",\"value\" :10}>ET");
}else if(num19_2 == 4){
widget\":\"line_series1\",\"mode\":\"push\",\"value\" :130}>ET");
widget\":\"line_series1\",\"mode\":\"push\",\"value\" :40}>ET");
if(num19_2 >= 20){ //every 20 data is a cycle
num19_2 = 0;

Then you want to take care of the CO2 curve, focusing  on scan synchronization.

The 3 curves of this project, chart view2 is for SpO2 blood oxygen sensor and
chart view3 is for CO2 respiration.
Chart view2, chart view3 X axis axis are set min = 0, max = 100, and ECG chart view1
the same, curve sweep to keep synchronized, chart view2 Y axis2 max = 100, so the
preparation of the program Y axis value is given to 95 maximum, the algorithm is
shown in the following program code.
First, define 3 variables as follows.
Int num19_3 = 0;
Int num19_4 = 0;
Int num19_5 = 0;
The CO2 curve is then generally depicted in the main loop, main.c,
by the following code.

num19_3 += 1;
if(num19_3 >= 4){ //one point every 40ms
num19_3 = 0;
num19_4 += 1;
if(num19_4 <= 10){
num19_5 = num19_4*9; //the first 10 points increase linearly
line_series3\",\"mode\":\"push\",\"value\":" );
}else if(num19_4 <= 40){ // the last 30 points decrease linearly
num19_5 = 95 – (num19_4 – 10)*3;
line_series3\",\"mode\":\"push\",\"value\":" );
num19_4 = 0;
:\"line_series3\",\"mode\":\"push\",\"value\" :5}>ET");
} }

Figure (8) shows the ECG waveform at the top and the CO2 waveform at the bottom
(symbol round radius = 4)

Figure (9) shows the ECG waveform at the top and the CO2 waveform at the bottom
(symbol round radius = 30)
The following CO2 waveform in Figure (8) is the effect of the above
program when the attribute symbol round radius = 4 for line series3. We try to
modify symbol round radius = 30, hoping that the curve transition is more
rounded, but the test result is no different from Figure (8), see Figure (9),
which shows that when the points are denser, the rounding effect is not
obvious. This can only be achieved by changing the point coordinates.

Figure (10) with coordinates separating axes
Let's take a look at the properties of the X axis in Figure (3) by
using Figure (10). In Figure (3), when show = true for split line, the
long vertical bar (separator bar) will be displayed; when show = true
for line, the horizontal line of X-axis will be displayed (such as the
horizontal line at the bottom of the top chart view); when show = true
for tick, the thin line of the scale below the horizontal line of X-axis
will be displayed; when show = true for label, the number below the

horizontal line of X-axis (the value filled in data) will be displayed. =
true, it will show the number below the horizontal line of the X-axis
(the value filled in the data). That's all.

Now it was down to the SpO2 curve and decided to
use AD conversion.

Curve simulation using ESP32 ADC, it is 12-bit, full scale 4096. chart
view2 Y axis max = 255, the ADC read-in value divided by 20, can meet the
curve display. The full scale SPO2 display is 100%, so the ADC read in value
divided by 20 and then divided by 2.55 can be displayed in label2, the
program because it is an integer number operation, the algorithm is corrected,
please see the actual test ok program code. Use the function analogRead(32)
in arduino to read the AD conversion value of GPIO32 (also ADC-CH4) of
ESP32 directly. Test can be done by potentiometer, but also simply connect
ADC-CH4 pin to GND, to +3.3V, to +5V, or overhang to see the interference
waveform, see video effect (shown at low when grounded, connected to
+3.3V, +5V is the same high full amplitude, overhang is a spurious curve), the
right label2 control timely display ADC voltage changes. The code and
algorithm code are as follows.
int adcPin = 32; // GPIO32, also ADC-CH4
int adcValue = 0;
int num19_6 = 0;
adcValue = analogRead(adcPin); // Read in the value of the AD conversion
adcValue = adcValue/20;
//—–SPO2 curve plotting ——
num19_6 += 1;
if(num19_6 >= 4){ // one point every 40ms
num19_6 = 0;
ne_series2\",\"mode\":\"push\",\"value\":" );
adcValue = (adcValue*10)/21;


Fig. (11) The actual completed 3 groups of curves partially
See Figure (11) for a partial shot of the actual picture, and Figure (12) for
the design interface in the computer. As in Figure (3), when the show =
false of the split line of the X axis2 of the chart view2, the separator
bar of the yellow SPO2 area in the middle of Figure (12) will turn off
the display (like the real picture); the smooth waveform of the video
display can be done completely as a real-time oscilloscope.

Figure (12) 3 sets of curves completed by computer

Reference Points

1、 The structure of the STONE designer platform chart view control is shown in
Figure (13). There is a detailed description in the official User's Manual 8.1, including
the explanation of each property and parameter; the instruction set 4.24 gives the
method of data pushing, see Figure (14), and there are examples of instructions used
in the program here.

Figure (13) Structure of the chart view of the curve control

Figure (14) Instructions for using the chart view of the curve control
2、 arduino's analogRead() read function for analog AD conversion. In arduino version
1.8.13 menu "Help"—"Reference" —- "learning —– "Analog I/O", you can see the
description of analogRead() function As follows.
The Arduino board contains a 6 channel (8 channels on the Mini and
Nano, 16 on the Mega), 10-bit analog to digital converter. This means
that it will map input voltages between 0 and 5 volts into integer
values between 0 and 1023. This yields a resolution between
readings of: 5 volts / 1024 units or, .0049 volts (4.9 mV) per unit.
analogReference ().
It takes about 100 microseconds (0.0001 s) to read an analog input,
so the maximum reading rate is about 10,000 times a second.

pin: the number of the analog input pins to read from (0 to 5 on most
boards, 0 to 7 on the Mini and Nano, 0 to 15 on the Mega)
int (0 to 1023)
If the analog input pin is not connected to anything, the value
returned by analogRead() will fluctuate based on a number of factors
(e.g. the values of the other analog inputs, how close your hand is to
the board, etc.).

However, please note that here the ADC-CH4 of ESP32 is 12 bits and the return
value will be 0 to 4096. For more details, please refer to the related link in the
original article and the ESP32 manual.


  1. My partner and I stumbled over here by a different page and thought I
    may as well check things out. I like what I
    see so now i’m following you. Look forward to looking over
    your web page yet again.

  2. Today, I went to the beachfront with my children. I found a sea shell and gave it to my 4 year old
    daughter and said “You can hear the ocean if you put this to your ear.” She
    put the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is entirely off topic but I had to tell someone!

  3. Tһanks for sharing your tһoughts aЬout
    spheresport. Regards

  4. Its like yoս rеad my mind! Yoս ѕeem t᧐ know so much abοut this, like you wrote the
    book in it or ѕomething. I think tһat you could dο ѡith a few pics to drive thе message
    home a bit, Ьut othеr than that, this iѕ great blog.

    An excellent гead. І ԝill ϲertainly be Ƅack.

    Also visit my blog :: Ruayplaygame

  5. Hi there! Тһis is my firѕt visit tо your blog!
    We are a collection of volunteers and starting a new project іn ɑ community in the same niche.
    Ⲩour blog proѵided us beneficial infoгmation to wߋrk on. Yߋu
    have dоne a extraordinary job!

    Мy web-site; sbobetrome

  6. Hey therе! Quick question tһat’s еntirely off topic.
    Do you knoᴡ how tⲟ make your site mobile friendly?
    Ꮇy web site lоoks weird when browsing from my iphone.

    I’m trying to fіnd а theme or plugin that mіght be able to fiҳ this ⲣroblem.
    Іf you have any recommendations, ρlease share.

    Herе is my blog post: sbobettim

  7. Hello there! This is my first visit to your blog! We are a team of volunteers and
    starting a new project in a community in the same niche.
    Your blog provided us useful information to work
    on. You have done a outstanding job!

  8. Thanks for your personal marvelous posting! I really enjoyed reading it, you might be a great author.I will always bookmark
    your blog and will eventually come back sometime soon. I want to encourage continue your great
    posts, have a nice evening!

  9. Wonderful article! This iѕ the type of info tһat аrе supposed t᧐ be shared аcross tһe web.

    Shame οn Google for now not positioning thіѕ post һigher!

    Сome ᧐n over and seek advice from my website .
    Tһanks =)

    Have a look at my web ρage – gamepanankin

  10. hey there and thank you for ʏouг info – Ι’ve definiteⅼy picked up ɑnything new
    from right here. I did howeveг expertise some technical issues ᥙsing
    thіs website, as I experienced to reload tһe site а lot of times previous to I could get it t᧐ load correctly.

    Ӏ hɑd been wondering if уour web hosting is OK?
    Νot that I am complaining, Ƅut sluggish loading
    instances timeѕ wіll often affect yoᥙr placement in google and ϲould damage ʏour
    hiɡh-quality score if advertising аnd marketing ᴡith Adwords.
    Аnyway Ι am adding thіs RSS t᧐ my e-mail and cɑn looк out foг a lot more ߋf your respective intriguing сontent.
    Maқe ѕure you update thіs agaіn s᧐օn.

    Here is my web-site: sbobetmoe

  11. I’m not tһat muⅽһ օf a online reader to be honest Ьut your blogs realⅼy nice,
    kеep it up! I’ll gߋ ahead аnd bookmark уour website
    to ϲome bacк ⅼater ᧐n. All the best

    my webpage gamebetbros

  12. I constantly emailed this blog post page to all my contacts, as if like to read
    it then my links will too.

  13. Unquestionably Ьelieve tһat wһich yоu sаіd. Your favorite justification sеemed tο be οn thе net tһe easiest tһing to be aware
    of. I say to yߋu, I cеrtainly get annoyed ԝhile people tһink aƅout worries
    tһаt they just do not ҝnow about. Yoᥙ
    managed tօ hit the nail uρon the toⲣ and defined out the whole tһing without hɑving ѕide effeⅽt , people
    can tаke a signal. Will likely be Ƅack tо ցet more.

    Stop Ƅʏ my website: nexthuay

  14. We stumbled over here from a different page and thought I might as well check things out.
    I like what I see so now i’m following you. Look forward to looking over
    your web page for a second time.

  15. I was suggested this blog by my cousin. I am not sure whether this post is written by him as nobody else know such detailed about
    my trouble. You are incredible! Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *