Utilizzare schermi Nextion touch a colori con Arduino: Guida completa

Schermi LCD touch a colori ed elevate prestazioni possono funzionare con Arduino: ecco come usarli.

Arduino รจ divenuta la piattaforma di sviluppo hardware e software open source piรน famosa al mondo, in virtรน delle sue potenzialitร  e semplicitร  di utilizzo. Come ben sapete รจ sufficiente connetterla al Personal Computer con un cavo USB per poter utilizzare fin da subito la scheda (ad esempio abilitando la seriale con lโ€™ide di Arduino o con un terminale). Possiamo connettere ad Arduino moltissime elettroniche, sensori, breakout board, direttamente o mediante i notissimi shield che la corredano.

Ma se volessimo interagire con la board Arduino tramite un display touch-screen, come potremmo fare? O meglio, il mercato offre una svariata tipologia di soluzioni che a volte possono anche complicare la scelta; alcuni utilizzano protocolli IยฒC, altri SPI, altri ancora la comunicazione su canale seriale RS232 o TTL.

Dobbiamo poi tenere presente come poter caricare le immagini e infine, cosa piรน importante, in che modo gestire correttamente lโ€™evento del touch premuto.

Se siete giunti a questi interrogativi e vi state chiedendo come interfacciare le schede Arduino o schede di sviluppo simili con un display di ultima generazione, e non sapete da che parte si possa iniziare, abbiamo trovato la soluzione al vostro problema e ve la proponiamo in questo articolo, dove cogliamo lโ€™occasione per presentarvi i display di ultima generazione della serie Nextion (Fig. 1).

Lโ€™obiettivo di questo articolo รจ molteplice: prima di tutto vi andremo a mostrare i vantaggi di questi display, quindi vi illustreremo come configurare uno specifico display al primo avvio, scaricare le risorse necessarie e collegare fisicamente questโ€™ultimo ad una scheda Arduino.

Proveremo infine a creare una semplice interfaccia sul display con dei pulsanti per azionare le GPIO di Arduino alla semplice pressione del touch screen.

Fig. 1 Varie versioni del display Nextion.

 

Perchรจ scegliere un display Nextion?

Nextion รจ un prodotto HMI (Human Machine Interface, ossia Interfaccia Uomo Macchina) che combina un display touch TFT con un processore e una memoria integrati; per dialogare con la MCU (ad esempio Arduino) utilizza la seriale TTL, permette anche istruzioni ASCII basate sul testo per codificare il modo in cui i componenti interagiscono sul display.

Offre due modalitร  di aggiornamento, la prima collegando il cavo USB al PC con adattatore TTL-RS232 e la seconda tramite SD-Card (in questa modalitร  si inserisce alla prima accensione e si rimuove terminato lโ€™update).

In commercio, i display Nextion si possono trovare in vari formati, che vanno da un minimo di 2,4โ€ (pollici) fino a 7โ€ (pollici) inoltre hanno sviluppato due tipologie di versioni: quella Basic e quella Enhanced. Questโ€™ultima, rispetto alla Basic ha in piรน:
โ€ข un RTC (Real Time Clock) incorporato con alloggiamento batteria tampone;
โ€ข supporta il salvataggio dei dati sulla Flash;
โ€ข supporta le GPIO (in questo caso รจ possibile utilizzare il display senza Arduino per poter pilotare delle uscite o leggere degli ingressi);
โ€ข ha una capacitร  maggiore della flash e una CPU funzionante con un clock a frequenza maggiore.

Il display che vi mostreremo ha una dimensione di 2,4โ€ corrisponde alla versione Basic, visto che dobbiamo utilizzarlo tramite il protocollo seriale e quindi andremo a pilotare le GPIO di Arduino.

Per iniziare la dimostrazione dobbiamo procurarci i seguenti componenti:
โ€ข display Nextion con cavo USB;
โ€ข Arduino mega con cavo USB;
โ€ข 4 jumper maschio/femmina;
โ€ข convertitore USB-TTL (link futura elettronica);
โ€ข software Nextion editor.

Iniziamo a lavorare con i display Nextion

Passiamo dunque allโ€™utilizzo di questi display e diamo per scontato di lavorare in ambiente Windows e che abbiate giร  installato e utilizzato sul PC il software Arduino IDE; questo perchรฉ per dialogare con il display occorrerร  caricare in Arduino un apposito sketch.

Nel caso siate al primo utilizzo, vi rimandiamo al sito ufficiale di Arduino (www.arduino.cc) dove รจ possibile trovare tutte le guide e gli esempi per poterlo utilizzare al meglio.

Per progettare lโ€™interfaccia grafica, lโ€™azienda produttrice ha progettato un software dal nome โ€œNEXTION Editor โ€œgratuito e scaricabile dal sito https://nextion.itead.cc/ che permette di sviluppare rapidamente la GUI con il semplice metodo di trascina e rilascio componenti (ad esempio grafica, testo, pulsante ecc.).

Inoltre possiede anche la funzione di debug, che si puรฒ utilizzare anche senza display per progettare tutta la grafica eseguendo una simulazione di questโ€™ultimo; addirittura รจ possibile premere anche i pulsanti con il mouse, simulando la pressione del touch screen e visualizzare il comando che si invierร  tramite seriale.

Procediamo quindi al download, selezionando, nel sito di Nextion, il comando Nextion Editor accessibile dalla voce Resources del menu header, che dร  accesso al sottomenu Download, come si vede nella Fig. 2; installiamo quindi il software sul Personal Computer.

Fig. 2 Schermata dellโ€™editor.

 

Una volta installato il software Nextion Editor, provvediamo a creare lโ€™interfaccia che utilizzeremo. Per chi invece volesse partire da un esempio giร  pronto, sul nostro sito www.elettronicain.it, insieme ai file dellโ€™articolo trovate il link da cui poter scaricare lโ€™esempio: vi basterร  fare il download e importare il progetto nellโ€™editor.

Lโ€™Editor รจ molto semplice e intuitivo da utilizzare, quindi partiamo selezionando in alto a sinistra la voce File/New e assegniamo un nome (ad esempio โ€œprovaโ€) al nostro progetto.

Come vediamo nella Fig. 3, apparirร  a video un menu che ci permetterร  di scegliere le dimensioni e la versione del display utilizzato.

Fig. 3 Impostazioni di visualizzazione del display da 2,4โ€.

 

Nel nostro caso, nella voce DEVICE selezioniamo quello basic da 2,4 pollici (se avete un altro tipo di dimensione basta selezionarla); potete anche decidere lโ€™orientamento sotto la voce DISPLAY (Fig. 3).

Facendo clic su OK apparirร  un riquadro bianco di nome โ€œPAGE0โ€; grazie al metodo trascina/rilascia (selezionate componente con il tasto sinistro del mouse e rilasciatelo nel riquadro bianco) inserite due componenti โ€œButtonโ€ e una โ€œTextโ€ nel riquadro come visualizzato nella Fig. 4.

Nella parte destra dellโ€™editor possiamo vedere la categoria โ€œAttributeโ€ (vedere la solita Fig. 4); qui cambiate il parametro โ€œobjnameโ€ per assegnare un nome ad ogni oggetto inserito: ad esempio lโ€™oggetto โ€œtextโ€ รจ rinominato in โ€œtitoloโ€, il primo button in โ€œAccendiโ€ e lโ€™altro in โ€œSpegniโ€.

Fig. 4 Inserimento dei componenti Button e Text.

 

Come potete notare, nel menu ci sono tanti altri metodi che possono essere implementati: ad esempio il cambio del colore del font utilizzato, la dimensione del font, le coordinate, perciรฒ potrete personalizzare gli oggetti come meglio riterrete opportuno.

Nel caso vogliate cambiare lo sfondo con un colore รจ sufficiente cliccare con il mouse in un punto del riquadro (purchรฉ non sia quello dove abbiamo inserito gli oggetti): la categoria โ€œAttributeโ€ caricherร  automaticamente i metodi della pagina (PAGE0); verifichiamo che nella voce โ€œstaโ€ ci sia impostato โ€œSolid colorโ€ e nella voce โ€œbcoโ€ selezionate โ€œmore colorโ€.

Fatto questo, vi apparirร  un pop-up che propone una palette di colori: scegliete quello che preferite e fate clic su OK. Il risultato dovrร  essere quello mostrato nella Fig. 5. Notate che come sfondo รจ anche possibile inserire immagini; allo scopo basterร  cambiare il metodo.

Fig. 5 Lโ€™interfaccia con gli elementi posizionati.

 

Una volta completato e personalizzato il menu facciamo clic sul pulsante โ€œDebugโ€ (barra degli strumenti in alto) il quale avvierร  una finestra dove vedremo il risultato del nostro menu; da qui possiamo, infine, caricare il tutto sul display.

รˆ possibile che alla prima compilazione (debug) appaiano degli errori; questo รจ dovuto al font (carattere) che non รจ caricato, perciรฒ selezionate la voce โ€œTools/Font generationโ€ (barra degli strumenti) e impostate, ad esempio, โ€œArialโ€ dando un nome al font โ€œEsempio Arialโ€ e fate clic su โ€œGenerate fontโ€come mostrato nella Fig. 6; allora si aprirร  un pop-up di Windows che chiederร  dove salvare il font. Qui selezionate una cartella di lavoro e date un nome al font.

Fig. 6 Generazione font.

 

Infine lโ€™editor ci chiederร  se vogliamo caricare il font nel progetto: rispondiamo facendo clic su โ€œYesโ€.

Se il font รจ stato caricato correttamente, cliccando sul pulsante โ€œAggiornaโ€ nel riquadro font in basso a sinistra dovremo visualizzare in posizione 0 il font da noi aggiunto (Fig. 7). A questo punto bisognerร  cliccare nuovamente su โ€œDebugโ€ e verificare che stavolta non si presentino errori.

Chiudiamo il โ€œDebugโ€ e vediamo come aggiungere una stringa ad Arduino ogni volta che viene premuto un pulsante sul display; allo scopo selezioniamo con il mouse il primo pulsante โ€œAccendiโ€ e nel riquadro โ€œEventโ€ mettiamo solo la spunta in โ€œTouch Press Eventโ€ โ€œSend Component IDโ€.

Fig. 7 Font caricato correttamente.

 

Facciamo la stessa cosa anche con il secondo pulsante e, infine, clicchiamo di nuovo sul pulsante โ€œDebugโ€.

Come possiamo notare nella Fig. 8, ogni volta che clicchiamo su un pulsante nellโ€™area di debug, lโ€™editor mostrerร  una stringa, che sarร  logicamente diversa per ogni pulsante.

La stringa sarร  inviata sulla porta seriale e quindi dal display verso la board Arduino.

Quello che dobbiamo fare adesso รจ caricare in Arduino un codice che permetta alla scheda di comprendere la stringa ricevuta e di accendere o spegnere una linea GPIO (ad esempio quella corrispondente al LED presente sulla board Arduino) ossia di farla commutare da 0 a 1 logico e viceversa.

Fig. 8 Simulazione dei messaggi ogni volta che si preme un pulsante.

Mettiamo mano allโ€™hardware dei display Nextion

Adesso รจ il momento di lavorare sul display Nextion allo scopo di prepararlo a interagire con la nostra Arduino; per prima cosa colleghiamo al touch-panel il convertitore USB/TTL come visualizzato in Fig. 9 e infine inseriamo il connettore del cavo USB nella presa USB del Personal Computer.

Il convertitore USB/TTL utilizzato รจ del tipo che permette di alimentare il display perchรฉ prevede unโ€™uscita a 5 volt. Precisiamo che i collegamenti da effettuare sono i seguenti:
โ€ข uscita +5V del convertitore al contatto 5V del connettore del display;
โ€ข GND del converter a GND del connettore del display;
โ€ข uscita TX del convertitore va allโ€™RX del connettore del display;
โ€ข ingresso RX del converter al TX del connettore del display.

Fig. 9 Collegamento dal display al convertitore mediante lโ€™apposito cavetto.

 

Ora nel menu di debug facciamo clic sul pulsante โ€œOperationโ€ e scegliamo opzione โ€œUpload to nextionโ€.

Come visualizzato nellโ€™immagine in Fig. 10, sarร  mostrata a video una finestra di dialogo relativa alle porte di comunicazione; qui, cliccando su Com Port si aprirร  il menu a tendina nel quale sarร  possibile impostare la porta ed il baud-rate. Notate che scegliendo il comando di menu Auto search verrร  rilevata automaticamente la porta COM virtuale cui il display รจ stato connesso attraverso il converter USB/TTL.

Premendo il pulsante โ€œGOโ€ partirร  lโ€™aggiornamento del display e visualizzeremo il nuovo software da noi creato con i due pulsanti abilitati.

Scolleghiamo il display dal PC e spostiamoci lato Arduino per istruirlo ad acquisire i comandi del display.

Fig. 10 Con auto search sarร  rilevata in automatico la porta connessa al display.

 

Carichiamo il codice su Arduino

Abbiamo creato per voi uno sketch di esempio reperibile tra i file dellโ€™articolo sul nostro sito Internet www.elettronicain.it; questo vi permetterร  di provare subito il display senza dover configurare tutto quanto quello che รจ stato spiegato sinora.

Per utilizzare lโ€™esempio dovete caricarlo, pertanto collegate Arduino al Personal Computer tramite il consueto cavo USB e aprite lโ€™IDE; qui dovete aprire il file (File/Open) e dal menu Strumenti, cliccare su Scheda e, dal sottomenu che si apre scegliere Arduino mega. Poi impostate la โ€œCOMโ€ corretta e infine fate clic sul pulsante Upload.

Il codice che andrete a caricare permetterร  ad Arduino di ricevere dalla seriale i comandi inviati dal display nel momento in cui premeremo i pulsanti touch del display stesso; se il parsing del comando โ€œaccendiโ€ risulterร  corretto (codice esadecimale 65 00 01 01 FF FF FF) si accenderร  il LED presente sulla scheda, mentre con il comando โ€œspegniโ€ (65 00 02 01 FF FF FF) lo stesso tornerร  spento.

Il codice che fa tutto questo lo trovate le Listato 1, qui accanto.

Listato 1

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
  Serial.begin(BAUDRATE_SERIAL); /*baudrate seriale*/
  delay(10);
  Serial.flush();
}

void loop() {
    if (Serial.available() & gt; 0) {
      char inChar = (char) Serial.read();
      if (idx & lt; STRING_MAX) {
        /*Pulizia del buffer*/
        inputString[idx] = inChar;
        idx++;
      }
      if (idx & gt; 6)
      /*se ho piuโ€™ di 6 caratteri ricevuti eseguo parsing
      { stringComplete=true; } 
      }
      parse_menu(); /*Effettuo parsing dei comandi ricevuti*/
    }

    void parse_menu() {
      uint8_t index = 0;
      if (stringComplete) /*Ho ricevuto una stringa*/ {
        delay(2);
        index = strlen(inputString);
        if ((inputString[0] == 0x65) & amp; & amp;
          (inputString[1] == 0x00)) {
          if (inputString[2] == 0x01) {
            digitalWrite(LED_BUILTIN, HIGH);
          } else if (inputString[2] == 0x02) {
            digitalWrite(LED_BUILTIN, LOW);
          }
        }

        for (idx = 0; idx & lt; STRING_MAX; idx++) /*Pulisco la stringa */ {
          inputString[idx] = 0;
        }
        idx = 0;
        stringComplete = false;
      }
    }

 

Colleghiamo Arduino al Display Nextion

Bene, ora che abbiamo sperimentato anche lโ€™esempio applicativo e testato il funzionamento del display, possiamo passare ad assemblare lโ€™hardware che poi รจ lโ€™obiettivo di questo articolo.

Dunque, procediamo collegando il display ad Arduino e fornendogli lโ€™alimentazione da questo, come illustrato nello schema di cablaggio proposto nella Fig. 11; come vedete, il +5V e la GND di Arduino (che nel caso dellโ€™immagine รจ una MEGA) alimentano il touch-screen, mentre per la comunicazione viene utilizzata la UART hardware, connettendo TX di Arduino a RX del pannello touch e lโ€™RX di questโ€™ultimo alla linea TX dellโ€™UART di Arduino MEGA.

Partendo dal nostro esempio, sarete in grado di realizzare sistemi di azionamento con interfaccia touch; ad esempio potrete aggiungere dei pulsanti personalizzati sul display, con gestione del tasto premuto o ad esempio del rilascio (con lโ€™invio del comando) ed infine caricare il nuovo progetto nel display. Ogni qualvolta si aggiungerร  un comando sul display, ricordate che tramite la seriale dovrete modificare anche lโ€™esempio caricato in Arduino, aggiungendo nel parsing di ricezione i nuovi comandi ricevuti per azionare altre GPIO (anche in questo caso dovrete fare lโ€™upload del firmware sulla scheda di Arduino).

Fig. 11 Collegamento tra display e arduino; per alimentazione collegare il cavo USB di Arduino al PC o alimentatore esterno ad Arduino.

Conclusioni

Vi ricordiamo che rispetto ad altri display touch presenti in commercio, lโ€™offerta di Nextion permette di coprire al meglio tutti gli aspetti della progettazione che riguardano lโ€™interfaccia utente. Inoltre con la versione โ€œnextion enhancedโ€ รจ possibile programmare direttamente il display tramite codice (pseudo C proprietario Nextion) senza lโ€™utilizzo di Arduino ed azionare i GPIO disponibili direttamente dal display (ad esempio รจ possibile collegare un relรฉ direttamente al display).

Lasciamo a voi la scoperta delle ulteriori funzionalitร  offerte da questi prestanti display di ultima generazione e la loro sperimentazione, ricordandovi che sul sito web รจ disponibile la documentazione utile ad approfondire quegli aspetti che qui non abbiamo potuto, per ragioni di spazio e di taglio dellโ€™articolo, โ€œsnocciolareโ€.

Dunque, non ci resta che augurarvi buon lavoro nello sviluppo delle vostre applicazioni.

1 Commento

Lascia un commento

Il tuo indirizzo email non sarร  pubblicato.

Menu