LCD displej Nextion 2.8"

LCD displej Nextion je výstupní modul pro Arduino či Raspberry Pi. Tento dotykový displej funguje tak trochu jinak, než jsme u Arduino displejů zvyklí. Obsahuje totiž v sobě vlastní mikrokontrolér, který ve spojení se softwarem od výrobce umožňuje jednoduchým způsobem vytvářet složité nabídky či rozložení na displeji. A displej taktéž disponuje rezistivní dotykovou vrstvou, díky které můžeme ovládat tlačítka či posuvníky na displeji.
Práce s ním probíhá tak, že si pomocí programu Nextion Editor navrhnete zobrazení textu, grafů, obrázku a dalších elementů. Toto zobrazení si můžete přímo v Editoru vyzkoušet pomocí simulátoru a poté ho nahrát do samotného displeje. A po nastavení chování displeje pak stačí pomocí sériové linky připojit k displeji například Arduino či Raspberry Pi a posílat z něj příkazy pro ovládání displeje.

Displeje Nextion se prodávají v několika variantách, které si liší velikostí displeje. V tomto návodu budu pracovat s variantou 2,8“.
Pro začátek práce s displejem budeme potřebovat samotný displej, USB-Serial převodník a Arduino.
Pro propojení displeje s převodníkem zapojíme všechny čtyři dostupné vodiče, kdy propojíme +5V s 5V převodníku, TX s RX pinem, RX s TX pinem a GND s GND pinem převodníku. Je tedy nutné vždy dodržet křížení komunikačních vodičů.

Po zapojení si můžeme stáhnout vývojové prostředí od výrobce na jeho stránkách. A po stažení ho nainstalovat běžným způsobem.

Po nainstalování programu Nextion Editor ho můžeme otevřít a přivítá nás samotné prostředí. Pro vytvoření prvního programu stiskneme na horní liště tlačítko „New“ a uložíme si na libovolné místo náš první program ve formátu HMI. Po uložení se nám otevře nabídka pro zvolení správného displeje, když kliknutím vyberu NX3224T028 – můj 2,8“ LCD displej.
Na levé straně si můžete také všimnout ještě nabídky DISPLAY. V této nabídce si můžete upravit otočení displeje, kde já si rovnou nastavím, že chci displej rotovat o 90°, abych ho měl na šířku. To je z úprav vše a nabídku mohu potvrdit stisknutím tlačítka OK.

V tuto chvíli máme před sebou prázdnou obrazovku. Pro první vypsání textu budeme potřebovat nějaké písmo. V programu je připravený jednoduchý generátor, který najdeme v nabídce Tools-Font Generator. V novém okně uvidíte možnost nastavit výšku písma (Height), kódování písma (Code), volbu tučného písma (Bold) a uprostřed samotný druh písma. Já jsem nechal prozatím všechny parametry bez změn a pouze pojmenoval písmo Sans Serif a potvrdil jeho vygenerování tlačítkem Generate Font. Písmo bude opět chtít, abyste si ho uložili pro budoucí použití. A po uložení potvrdíte v nabídce jeho vytvoření a v druhém okně ho můžete rovnou pomocí tlačítka Yes přidat do programu.
V tuto chvíli můžete zavřít nabídku s písmy a pro kontrolu se na levé spodní straně podívat na nabídku Fonts.

A nyní už hurá na první zobrazený text. V levé horní nabídce stačí jednou levým tlačítkem kliknout na objekt Text a ten se nám zobrazí na obrazovce. V tu chvíli ho můžeme pomocí tažení levým tlačítkem přesunout na libovolné místo a po pravé straně v nabídce Attribute mu upravit vlastnosti.
Kromě barvy písma pro nás bude důležité pole Txt a Txt_maxl. Pole Txt slouží pro nastavení zobrazeného textu a v poli Txt_maxl si můžeme nastavit maximální počet znaků.

Po nastavení vlastního textu nyní můžeme zkusit zobrazení pomocí simulátoru. Pro jeho spuštění stačí stisknout tlačítko Debug na horní liště, po kterém se nám otevře simulovaný displej a zobrazení našeho textu.
A můžeme si zároveň ve spodní části Instruction input vyzkoušet změnu textu pomocí příkazu, který budeme v další části posílat z Arduina. Jak jste si mohli všimnout v Editoru, naše nové textové pole dostalo název t0. Pro změnu jeho textu pak stačí poslat příkaz ve formátu t0.txt=“Test“ (pro text je nutné použít uvozovky). A pro aplikování můžeme příkaz potvrdit Enterem nebo stisknout tlačítko Run all commands.

Po úspěšném testu v simulátoru ještě můžeme zkusit nahrát naši obrazovku přímo do displeje. To provedeme tak, že v Editoru stiskneme tlačítko Upload, které otevře novou nabídku s nastavením COM portu a rychlosti nahrávání. Pokud víte, na kterém COM portu se připojil displej, můžete ho zvolit nebo nechat Automatické hledání. Rychlost pak doporučuji nechat na maximální a pro start nahrávání stisknout tlačítko Go. A po cca 20 sekundách můžete pozorovat tento výsledek na displeji.

Tak a nyní k propojení displeje s Arduinem. Podobně jako u USB převodníku, tak i zde propojíme všechny čtyři vodiče. Propojíme +5V s 5V Arduina, TX s pinem D7, RX s pinem D8 a GND se zemí Arduina. Pro datové piny RXD a TXD lze využít také ostatní digitální piny, ale tuto volbu je nutné provést na začátku programu. Podporované piny najdete v referenci knihovny SoftwareSerial.

Ukázkový kód obsahuje na svém začátku připojení potřebné knihovny a nastavení čísel propojovacích pinů. Piny jsou následně použity při vytvoření objektu swSerial z knihovny.
Ve funkci setup je zahájena komunikace po softwarové sériové lince, přičemž pro displej je nutné zvolit rychlost 9600 baudů.
Nekonečná smyčka loop obsahuje jednoduché zobrazení času od spuštění Arduina v sekundách. Nejdříve tedy uložíme aktuální čas do proměnné a následně vytvoříme celou zprávu do proměnné typu String. Zde si můžete všimnout, že pro vypsání dvojitých uvozovek je nutné před ně napsat zpětné lomítko, protože se jedná o speciální znak. My pak lomítkem vynutíme, aby Arduino pracovalo s těmito uvozovkami jako s textem. Po vytvoření zprávy ji pak už jen pošleme do displeje, přičemž pro ukončení příkazu přidáme ještě třikrát za sebou znak 0xff. A na konci programu se nachází už jen pauza před novým odesláním času.

// Nextion LCD displej
// navody.dratek.cz

// připojení potřebné knihovny
#include <SoftwareSerial.h>
// nastavení čísel propojovacích pinů
#define RX 7
#define TX 8
// vytvoření objektu swSerial z knihovny s nastavenými piny
SoftwareSerial swSerial(RX, TX);

void setup() {
  // zahájení komunikace po softwarové sériové lince
  swSerial.begin(9600);
}

void loop() {
  // načtení aktuálního času od spuštění Arduina
  unsigned long cas = millis();
  // složení zprávy do proměnné, čas bude v sekundách
  String zprava = "t0.txt=\"Cas je ";
  zprava += cas / 1000;
  zprava += "s.\"";
  // poslání času do displeje, po zprávě
  // je nutné odeslat 3x znak 0xff
  // pro její ukončení
  swSerial.print(zprava);
  swSerial.write(0xff);
  swSerial.write(0xff);
  swSerial.write(0xff);
  // pauza před novým odeslání času
  delay(1000);
}

Po nahrání uvedeného kódu do Arduina s připojeným Nextion displejem dostaneme například tento výsledek.

LCD displej Nextion je velice zajímavý a šikovný kus elektroniky, který může pomoci hned ve dvou směrech. Začátečníkům může pomoci s jednoduchou tvorbou pěkným displejů, kdy jejich tvorba pomocí Nextion Editoru je velmi intuitivní. A pokud jste někdy už pracovali s grafickými displeji, tak mi jistě dáte za pravdu, že to může být velice náročné na paměť Arduina. To tento displej eliminuje, protože veškerá grafika je řešena uvnitř a Arduino pak jen jednoduchými příkazy řídí displej, což velice ušetří paměť.
Tyto displeje tedy podle zvolené velikosti mohou sloužit nejen jako zobrazovače, ale díky přítomné dotykové vrstvě i jako vstupní terminály či ovládací panely. A jejich naprogramování po chvilce hraní zvládnou i začátečníci.

Seznam použitých komponent:
https://dratek.cz/arduino/1258-klon-arduino-uno-r3-atmega328p-ch340g-usb-typ-b-kabel-1459967190.html
https://dratek.cz/arduino/1158-prevodnik-6pin-usb-ttl-uart-reset-pin.html
https://dratek.cz/displeje/7185-lcd-displej-pro-raspberry-pi-2-a-arduino.html
Další velikosti displeje Nextion:
https://dratek.cz/hledani.php?q=nextion&n_q=

Další podobné články