Monitor portatile con STONE Touch Screen seriale ed ESP32

utilizzando STONE monitor portatile touch screen seriale, il reparto hardware ha deciso di utilizzare il chip del microprocessore a 32 bit di NXP come monitoraggio dell'intera macchina, analisi ECG, centro di controllo, amplificazione dell'acquisizione di bioelettricità ECG, unità della gamba destra, importazione del database ECG MIT per eseguire un algoritmo, ma monitorare anche il segnale elettrico del sensore SpO2, la pressione sanguigna, l'amplificazione del segnale elettrico respiratorio e l'elaborazione del filtraggio, attraverso la comunicazione ad alta velocità di trasmissione STONE serial toccare schermo per visualizzare la forma d'onda e le modifiche dei parametri in tempo reale e confrontare con un valore di riferimento per esprimere un giudizio e monitorare e allarmare le modifiche dei parametri del corpo umano. Se c'è una deviazione di portata, emette automaticamente messaggi vocali.

La nuova versione di STONE il touch screen seriale supporta perfettamente la rappresentazione e la visualizzazione delle curve, il protocollo di comunicazione è semplice e facile da ricordare, gli ingegneri del microcontrollore possono usarlo dopo aver letto il manuale, ci sono molti esempi di driver nel set di comandi, copiati direttamente per modificare il nome e i parametri possono essere utilizzato. La connessione seriale è semplice, puoi utilizzare la scheda adattatore ufficiale, che si tratti di una connessione seriale diretta o da USB a seriale, è molto comoda e facile da usare. Il monitor visualizza più gruppi di parametri vitali contemporaneamente, in particolare 3 curve che vengono disegnate dinamicamente e visualizzate contemporaneamente in modo molto fluido e dovrebbero essere in grado di disegnare più gruppi di grafici di curve contemporaneamente, puoi provare secondo necessità . Ovviamente la funzione della curva del set di comandi ha un esempio di dati multipli spinti contemporaneamente, ma l'uso effettivo dell'hardware attuale non risponde, spero che l'ufficialità possa essere ottimizzata il prima possibile. Può anche essere risolto aggiornando il firmware. Per questa nuova versione della funzione di disegno della curva, ho prima provato come non può essere disattivata, e alla fine ho appreso che lo schermo seriale ha un nuovo firmware, ho spazzolato il nuovo firmware per vedere la "vera faccia della montagna". Vedendo la curva ECG regolare che esce dallo schermo seriale con il firmware spazzolato, l'umore è felice, eh ……

L'immagine del design di questo progetto è mostrata nella Figura (1). L'interfaccia si basa su a STWI101WT-01 schermo seriale con risoluzione 1024*600, il lato sinistro mostra 2/3 della curva della forma d'onda e il 1/3 destro mostra il valore.

Questo articolo si concentrerà sulla creazione e rappresentazione della visualizzazione del grafico a curve. È completamente conforme al processo di produzione della demo del progetto, senza classificazione, forse ti senti disordinato, ma è il vero processo di sviluppo reale.

Innanzitutto, abbiamo deciso di correggere la rappresentazione della curva dell'ECG.

 

Figura (1) Interfaccia prevista per la progettazione del progetto
Figura (1) Interfaccia prevista per la progettazione del progetto

Questa demo simula una frequenza cardiaca di 75 bpm, che equivale a un battito cardiaco di 800 ms, ovvero un punto ogni 40 ms, un ciclo ogni 20 punti, sulla base dell'intero controllo della visualizzazione del grafico dell'asse X diviso in 100 parti uguali, forma d'onda di 4 secondi per schermo, aggiornamento dello schermo frequenza 25Hz, sembra molto liscia. L'elemento della serie di linee di questo controllo di visualizzazione del grafico è impostato su smooth = false (la forma d'onda dell'ECG è nitida), l'inviluppo inferiore non viene visualizzato e l'indicatore del punto non viene visualizzato. la zona. Qui vedere la Figura (4), min = 0, max = 140 per l'asse Y, il valore massimo fornito nel programma è 130 e l'intervallo è relativamente pieno. Vedere la Figura (2) – Figura (7) per altri parametri, che sono impostati per la visualizzazione grafico1 e i suoi elementi asse X1, asse Y2, serie di barre1 e serie di linee1. Scegliamo rgba trasparente (0,0,0,0) per il colore bg del controllo di visualizzazione grafico, che rivela il colore di base (nero) e altri controlli, come view, hanno le stesse caratteristiche.

Figura (2) Impostazioni delle proprietà della vista grafico1
Figura (2) Impostazioni delle proprietà della vista grafico1
Figura (3) Impostazione della proprietà dell'asse X1 della vista grafico1
Figura (3) Impostazione della proprietà dell'asse X1 della vista grafico1
Figura (4) Impostazione della proprietà dell'asse Y1 della vista grafico1
Figura (4) Impostazione della proprietà dell'asse Y1 della vista grafico1
Figura (5) impostazione della proprietà della serie di barre1 della vista grafico1
Figura (5) impostazione della proprietà della serie di barre1 della vista grafico1
Figura (6) L'impostazione della proprietà line series1 di chart view111
Figura (6) L'impostazione della proprietà line series1 di chart view111
Figura (7) impostazione della proprietà line series1 della vista grafico12
Figura (7) impostazione della proprietà line series1 della vista grafico12

Il codice di programmazione per simulare la forma d'onda ECG (75 bpm) in base alle impostazioni di cui sopra è il seguente.

Innanzitutto, definisci due variabili come segue.

  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.
  delay(10);   
  
  num19_1 += 1;
  if(num19_1 >= 4){ // Draw one point every 40ms.
    num19_1 = 0;
    num19_2 += 1;
    if(num19_2 == 3){
      Serial.println("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series1\",\"mode\":\"push\",\"value\" :10}>ET");
    }else if(num19_2 == 4){
      Serial.println("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series1\",\"mode\":\"push\",\"value\" :130}>ET");
    }else{
      Serial.println("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series1\",\"mode\":\"push\",\"value\" :40}>ET");
    }
    if(num19_2 >= 20){  //every 20 data is a cycle
      num19_2 = 0;
    }
  }

Quindi vuoi occuparti della curva di CO2, concentrandoti sulla sincronizzazione della scansione.

 

Le 3 curve di questo progetto, la vista grafico2 è per il sensore di ossigeno nel sangue SpO2 e la vista grafico3 è per la respirazione di CO2.

Visualizzazione grafico2, visualizzazione grafico3 Gli assi X sono impostati min = 0, max = 100 e visualizzazione grafico ECG1 uguale, sweep della curva per mantenere sincronizzato, visualizzazione grafico2 asse Y2 max = 100, quindi viene fornito il valore dell'asse Y della preparazione del programma a 95 massimo, l'algoritmo è mostrato nel seguente codice di programma.

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
Serial.print("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series3\",\"mode\":\"push\",\"value\":" );
Serial.print(num19_5);
Serial.println("}>ET");
}else if(num19_4 <= 40){ // the last 30 points decrease linearly
num19_5 = 95 - (num19_4 - 10)*3;
Serial.print("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series3\",\"mode\":\"push\",\"value\":" );
Serial.print(num19_5);
Serial.println("}>ET");
}else{
num19_4 = 0;
Serial.println("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series3\",\"mode\":\"push\",\"value\" :5}>ET");
} }

La figura (8) mostra la forma d'onda ECG in alto e la forma d'onda CO2 in basso (raggio rotondo simbolo = 4)
La figura (8) mostra la forma d'onda ECG in alto e la forma d'onda CO2 in basso (raggio rotondo simbolo = 4)
La figura (9) mostra la forma d'onda ECG in alto e la forma d'onda CO2 in basso (raggio rotondo simbolo = 30)
La figura (9) mostra la forma d'onda ECG in alto e la forma d'onda CO2 in basso (raggio rotondo simbolo = 30)

La seguente forma d'onda di CO2 nella Figura (8) è l'effetto del programma sopra quando il simbolo dell'attributo raggio rotondo = 4 per la serie di linee3. Cerchiamo di modificare il raggio di arrotondamento del simbolo = 30, sperando che la transizione della curva sia più arrotondata, ma il risultato del test non è diverso dalla Figura (8), vedere la Figura (9), che mostra che quando i punti sono più densi, l'effetto di arrotondamento non è ovvio. Questo può essere ottenuto solo modificando le coordinate del punto.

Figura (10) con coordinate che separano gli assi
Figura (10) con coordinate che separano gli assi

Diamo un'occhiata alle proprietà dell'asse X nella Figura (3) usando la Figura (10). Nella Figura (3), quando show = true per la linea divisa, verrà visualizzata la lunga barra verticale (barra di separazione); quando show = true per la linea, verrà visualizzata la linea orizzontale dell'asse X (come la linea orizzontale nella parte inferiore della visualizzazione del grafico in alto); quando show = true per tick, verrà visualizzata la linea sottile della scala sotto la linea orizzontale dell'asse X; quando show = true per etichetta, verrà visualizzato il numero sotto la linea orizzontale dell'asse X (il valore inserito nei dati). = true, mostrerà il numero sotto la linea orizzontale dell'asse X (il valore inserito nei dati). È tutto.

Ora dipendeva dalla curva SpO2 e ho deciso di utilizzare la conversione AD.

Simulazione della curva utilizzando ESP32 ADC, è a 12 bit, fondo scala 4096. visualizzazione grafico2 asse Y max = 255, il valore letto ADC diviso per 20, può soddisfare la visualizzazione della curva. Il display SPO2 a fondo scala è al 100%, quindi il valore letto dell'ADC diviso per 20 e quindi diviso per 2.55 può essere visualizzato in label2, il programma perché è un'operazione su un numero intero, l'algoritmo è corretto, vedere il test effettivo codice programma ok. Utilizzare la funzione analogRead(32) in Arduino per leggere direttamente il valore di conversione AD di GPIO32 (anche ADC-CH4) di ESP32. Il test può essere eseguito da un potenziometro, ma anche semplicemente collegare il pin ADC-CH4 a GND, a +3.3 V, a +5 V, o sporgere per vedere la forma d'onda dell'interferenza, vedere l'effetto video (mostrato in basso quando collegato a terra, collegato a + 3.3 V, + 5 V è la stessa ampiezza piena alta, la sporgenza è una curva spuria), il controllo corretto dell'etichetta2 visualizza tempestivamente le variazioni di tensione dell'ADC. Il codice e il codice dell'algoritmo sono i seguenti.

//--------ADC-------
int adcPin = 32; // GPIO32, also ADC-CH4
int adcValue = 0;
int num19_6 = 0;
 delay(10);   
 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;
        Serial.print("ST<{\"cmd_code\":\"set_value\",\"type\":\"line_series\",\"widget\":\"line_series2\",\"mode\":\"push\",\"value\":" );
    Serial.print(adcValue);
    Serial.println("}>ET");      
    adcValue = (adcValue*10)/21;
        Serial.print("ST<{\"cmd_code\":\"set_value\",\"type\":\"label\",\"widget\":\"label2\",\"value\":");
    Serial.print(adcValue);
    Serial.println("}>ET");      
  }

Fig. (11) I 3 gruppi di curve effettivamente completati parzialmente
Fig. (11) I 3 gruppi di curve effettivamente completati parzialmente

Vedere la Figura (11) per una ripresa parziale dell'immagine reale e la Figura (12) per l'interfaccia di progettazione nel computer. Come in Figura (3), quando show = false della linea di divisione dell'asse X2 della vista grafico2, la barra di separazione dell'area SPO2 gialla al centro della Figura (12) spegnerà il display (come il vero immagine); la forma d'onda regolare del display video può essere eseguita completamente come un oscilloscopio in tempo reale.

Figura (12) 3 serie di curve completate dal computer
Figura (12) 3 serie di curve completate dal computer

Punti di riferimento

  • La struttura del STONE Il controllo della visualizzazione del grafico della piattaforma di progettazione è mostrato nella Figura (13). C'è una descrizione dettagliata nel Manuale d'uso ufficiale 8.1, inclusa la spiegazione di ogni proprietà e parametro; il set di istruzioni 4.24 fornisce il metodo di push dei dati, vedere la Figura (14), e qui ci sono esempi di istruzioni utilizzate nel programma.
Figura (13) Struttura della vista grafico del controllo della curva
Figura (13) Struttura della vista grafico del controllo della curva
Figura (14) Istruzioni per l'utilizzo della vista grafico del controllo della curva
Figura (14) Istruzioni per l'utilizzo della vista grafico del controllo della curva

2. La funzione di lettura analogRead() di Arduino per la conversione AD analogica. Nel menu della versione 1.8.13 di Arduino “Aiuto”—“Riferimento” —- “apprendimento —– “I/O analogici”, puoi vedere la descrizione della funzione analogRead() come segue.

analogRead ()

DESCRIZIONE

La scheda Arduino contiene un convertitore analogico-digitale a 6 canali (8 canali sul Mini e Nano, 16 sul Mega) e 10 bit. Ciò significa che mapperà le tensioni di ingresso comprese tra 0 e 5 volt in valori interi compresi tra 0 e 1023. Ciò produce una risoluzione tra le letture di 5 volt / 1024 unità o 0049 volt (4.9 mV) per unità. analogicoRiferimento ().

Occorrono circa 100 microsecondi (0.0001 s) per leggere un ingresso analogico, quindi la velocità di lettura massima è di circa 10,000 volte al secondo.

Sintassi

analogicoLeggi(pin)

parametri

pin: il numero dei pin di ingresso analogico da cui leggere (da 0 a 5 sulla maggior parte delle schede, da 0 a 7 su Mini e Nano, da 0 a 15 su Mega)

Reso

int (da 0 a 1023)

Note:

Se il pin dell'ingresso analogico non è collegato a nulla, il valore restituito da analogRead() fluttuerà in base a una serie di fattori (ad es. i valori degli altri ingressi analogici, quanto è vicina la tua mano alla tavola, ecc.).

Tuttavia, tieni presente che qui l'ADC-CH4 di ESP32 è a 12 bit e il valore di ritorno sarà compreso tra 0 e 4096. Per maggiori dettagli, fare riferimento al relativo collegamento nell'articolo originale e al manuale di ESP32.

stone_tft_lcd_module_touch_screen_display_hmi_display (23)

stone_tft_lcd_module_touch_screen_display_hmi_display (23)

Scorrere fino a Top