Non ci sono prodotti a carrello.
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.
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.
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.
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โ.
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.
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.
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โ.
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.
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.
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.
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).
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