Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza
Blog  ›  Ekranlar

Nextion Ekran Kullanımı: Arduino ile UART Bağlantısı

Nextion Ekran Kullanımı: Arduino ile UART Bağlantısı
Kısa cevap

Nextion ekran, arayüzü kendi işlemcisinde çalıştıran ve Arduino ile yalnızca UART (TX, RX) üzerinden metin komutlarıyla haberleşen dokunmatik bir HMI ekrandır. Arayüz Nextion Editor ile hazırlanır, ekran 5 V ile beslenir ve her komutun sonuna üç adet 0xFF baytı eklenir.

Arduino projesine dokunmatik bir menü eklemek, grafik kütüphaneleriyle uğraşıldığında hem belleği hem de zamanı hızla tüketir. Nextion ekran bu yükü ekranın kendi işlemcisine aktarır: Arduino yalnızca kısa metin komutları gönderir. Bu yazıda Nextion ekranın ne olduğunu, serilerin farklarını, Nextion Editor ile arayüz hazırlamayı, Arduino bağlantısını, 0xFF sonlandırmalı komut göndermeyi ve dokunma bilgisini okumayı örnek kodla anlatıyoruz.

Nextion ekran nedir?

Nextion ekran, TFT panel, dokunmatik katman, işlemci ve flash belleği tek kartta birleştiren, arayüzü kendi üzerinde çalıştıran ve ana kartla UART (seri port) üzerinden haberleşen bir HMI (insan-makine arayüzü) ekranıdır. Ekranın sayfaları, butonları ve görselleri bilgisayarda Nextion Editor ile hazırlanır ve ekranın belleğine yüklenir.

Arduino, ESP32 ya da bir PLC ekrana yalnızca "bu yazıyı değiştir", "bu sayfaya geç" gibi komutlar gönderir; ekran da dokunulan butonun bilgisini geri yollar. Bu sayede 2 KB RAM'li bir Arduino Uno bile 7 inç bir arayüzü yönetebilir. Ekran tiplerinin genel karşılaştırması için OLED, LCD ve TFT ekran seçimi yazımıza bakabilirsiniz.

Nextion serileri arasındaki fark nedir?

Nextion serileri işlemci gücü, bellek ve ek donanımla ayrılır: Basic (T) seri temel ekrandır; Enhanced (K) seri RTC saat, EEPROM ve 8 GPIO ekler; Intelligent (P) seri çok daha fazla bellek, microSD ve ses çıkışı sunar; Edge (E) seri ise ince yapıda Intelligent'e yakın özellikler verir. Model kodundaki harf seriyi gösterir.

SeriKod harfiÖrnek flash / RAMRTC, EEPROM, GPIOÖrnek model
BasicT4-16 MB / 3584 baytYokNX4024T032
EnhancedK16-32 MB / 3584 bayt ve üzeriVar (8 GPIO)NX3224K024, NX4827K043
IntelligentP120 MB / 512 KBVar, microSD, sesNX4827P043-011C
EdgeE120 MB / 512 KBVar, ince gövdeNX4848E028-011C

Model adı ayrıca çözünürlüğü ve boyutu da verir: NX4827K043, 480×272 çözünürlüklü, Enhanced serisi, 4,3 inç bir ekrandır. Intelligent ve Edge modellerin sonundaki "C" kapasitif, "R" rezistif dokunmatik anlamına gelir. Değerler Nextion'ın model veri sayfalarından alınmıştır; seçtiğiniz modelin sayfasını mutlaka kontrol edin.

Başlangıç için 2,4 inç Nextion NX3224K024 küçük ve ekonomik bir Enhanced modeldir; RTC gerekmiyorsa 3,2 inç Nextion NX4024T032 Basic seri seçenektir. Animasyon, ses ve büyük görseller gerekiyorsa 4,3 inç Nextion NX4827P043-011C ya da ince yapılı Nextion Edge NX4848E028 daha uygundur.

Nextion Editor ile arayüz nasıl hazırlanır?

Arayüz, Nextion'ın ücretsiz Windows programı Nextion Editor'da sayfalar oluşturulup bileşenler sürüklenerek hazırlanır, derlenir ve .tft dosyası olarak ekrana yüklenir. Adımlar şunlardır:

  1. Nextion Editor'ı nextion.tech adresinden indirip kurun; yeni proje açarken ekranınızın model kodunu ve yönünü seçin.
  2. Tools → Font Generator ile bir yazı tipi oluşturun; Türkçe karakter kullanacaksanız bu karakterleri içeren bir kodlama seçin.
  3. Sayfaya bir Text (t0), bir Number (n0), bir Progress bar (j0) ve bir Button (b0) ekleyin.
  4. Butonun Touch Press olayında "Send Component ID" kutusunu işaretleyin; böylece dokunulduğunda Arduino'ya bilgi gider.
  5. Debug ile arayüzü bilgisayarda deneyin, sonra Compile ile derleyin.
  6. File → TFT file output ile çıkan .tft dosyasını FAT32 biçimli bir microSD karta tek dosya olarak kopyalayıp ekrana takın ve enerji verin; yükleme bitince kartı çıkarıp yeniden başlatın. Alternatif olarak Upload ile bir USB-TTL dönüştürücü üzerinden yükleyebilirsiniz.

Nextion ekran Arduino'ya nasıl bağlanır?

Nextion ekran dört kabloyla bağlanır: 5V → 5 V besleme, GND → GND, ekranın TX ucu → Arduino'nun RX olarak kullanılan pini, ekranın RX ucu → Arduino'nun TX olarak kullanılan pini. Yani TX ve RX çapraz bağlanır; varsayılan haberleşme hızı 9600 baud'dur.

NextionArduino Uno (SoftwareSerial)Arduino MegaESP32 DevKit
5V5V ya da harici 5 V5V ya da harici 5 VHarici 5 V (VIN)
GNDGNDGNDGND
TXD2 (RX)RX1 (D19)GPIO16 (RX2)
RXD3 (TX)TX1 (D18)GPIO17 (TX2)
Nextion ekran Arduino Uno bağlantı şeması: Nextion'ın 5V ucu Arduino 5V pinine, GND ucu GND'ye, TX ucu Arduino D2 pinine (SoftwareSerial RX), RX ucu Arduino D3 pinine (SoftwareSerial TX) bağlı; ekranda t0 metin, n0 sayı, j0 ilerleme çubuğu ve id değeri 4 olan b0 butonu; altta seri portun 3,3 V TTL olduğu ve 5 V girişi kabul ettiği, her komutun üç 0xFF ile bittiği, küçük modellerin 65-85 mA, 4,3 inç Intelligent ve Edge modellerin 220-250 mA çektiği ve büyük ekranlar için ayrı 5 V 1 A kaynak gerektiği notları
Nextion TX ucu Arduino RX'e (D2), RX ucu Arduino TX'e (D3) çapraz bağlanır; 5V ve GND beslemeyi verir.

Nextion'ın seri portu 3,3 V TTL seviyesinde çıkış verir, veri sayfasına göre girişi 5 V'a kadar kabul eder; bu nedenle hem 5 V'luk Arduino hem de 3,3 V'luk ESP32 doğrudan bağlanabilir. Uno'nun tek donanım seri portu USB'ye ayrıldığı için örnekte SoftwareSerial ile D2 ve D3 kullanıyoruz. 115200 baud gibi yüksek hızlar için birden fazla donanım seri portu olan Arduino Mega 2560 R3 daha uygundur.

Nextion ekran ne kadar akım çeker?

Nextion ekranlar 5 V ile çalışır ve küçük modeller 65-85 mA, 4,3 inç Intelligent ve Edge modeller yaklaşık 220-250 mA çeker (tam parlaklıkta). Nextion, küçük modeller için 5 V 500 mA, Intelligent ve Edge modeller için 5 V 1 A besleme önerir.

2,4-3,2 inç ekranlar USB'den beslenen bir Arduino Uno R3 üzerinden çalışabilir. 4,3 inç ve büyük ekranlarda, ayrıca röle ya da motor da kullanılıyorsa ekranı ayrı bir 5 V kaynaktan besleyin ve GND'leri birleştirin. Yetersiz beslemede ekran açılışta yeniden başlar, titrer ya da dokunma hatalı çalışır. Parlaklığı dim=50 komutuyla düşürmek akımı da azaltır.

Arduino'dan Nextion'a komut nasıl gönderilir?

Arduino'dan Nextion'a komut, düz metin olarak seri porttan gönderilir ve her komutun sonuna üç adet 0xFF baytı eklenir; ekran bu üç baytı görünce komutu çalıştırır. Örneğin t0.txt="Merhaba" metin bileşenini, n0.val=25 sayı bileşenini, page 1 ise açık sayfayı değiştirir.

Nextion komut ve dokunma paketi şeması: üstte n0.val=25 komutunun karakterleri ve onaltılık değerleri (6E 30 2E 76 61 6C 3D 32 35) ve sonundaki üç FF sonlandırıcı baytı; ortada butona basıldığında gelen 65 00 04 01 FF FF FF paketi ve baytların anlamı (dokunma, sayfa 0, bileşen id 4, 1 = basıldı, son); altta 0x65 dokunma, 0x71 sayı cevabı ve 0x70 metin cevabı ilk baytlarının tablosu
Komut düz metin olarak gider ve üç 0xFF ile biter; dokunma paketi 0x65 ile başlar, ardından sayfa, bileşen id'si ve olay gelir.

Aşağıdaki kod, A0'a bağlı bir potansiyometrenin değerini n0 ve j0 bileşenlerine yazar, b0 butonuna dokunulduğunda da Arduino'nun 13 numaralı pinindeki LED'i yakıp söndürür:

#include <SoftwareSerial.h>

SoftwareSerial nex(2, 3);        // RX = D2 (Nextion TX), TX = D3 (Nextion RX)
const uint8_t BUTON_ID = 4;      // Editor'da b0'in id degeri

void nexKomut(const char *komut) {
  nex.print(komut);
  nex.write(0xFF);
  nex.write(0xFF);
  nex.write(0xFF);
}

void setup() {
  pinMode(13, OUTPUT);
  nex.begin(9600);
  delay(500);
  nexKomut("page 0");
  nexKomut("t0.txt=\"Hazir\"");
}

void loop() {
  char buf[24];
  int deger = analogRead(A0);
  snprintf(buf, sizeof(buf), "n0.val=%d", deger);
  nexKomut(buf);
  snprintf(buf, sizeof(buf), "j0.val=%d", (int)map(deger, 0, 1023, 0, 100));
  nexKomut(buf);

  // Dokunma paketi: 0x65 sayfa bilesen olay FF FF FF
  while (nex.available() >= 7) {
    if (nex.peek() != 0x65) { nex.read(); continue; }
    uint8_t p[7];
    nex.readBytes(p, 7);
    if (p[4] == 0xFF && p[5] == 0xFF && p[6] == 0xFF && p[2] == BUTON_ID && p[3] == 1) {
      digitalWrite(13, !digitalRead(13));
    }
  }
  delay(200);
}

Metin değerleri çift tırnak içinde gönderilir; C kodunda tırnağı ters eğik çizgiyle yazmanız gerekir. Bileşen adları (t0, n0, j0) Editor'da verdiğiniz adlarla aynı olmalıdır. Nextion'ın resmi Arduino kütüphanesi ve ESPHome gibi hazır çözümler de aynı protokolü kullanır; protokolü elle yazmak hem belleği korur hem de hata ayıklamayı kolaylaştırır.

Nextion'dan gelen dokunma bilgisi nasıl okunur?

"Send Component ID" işaretli bir bileşene dokunulduğunda Nextion 7 baytlık bir paket gönderir: 0x65, sayfa numarası, bileşen id'si, olay (1 = basıldı, 0 = bırakıldı) ve üç adet 0xFF. Örneğin 0. sayfadaki 4 numaralı butona basılınca 65 00 04 01 FF FF FF gelir.

Ekran başka cevaplar da gönderir: get n0.val komutuna 0x71 ile başlayan ve 4 baytlık sayıyı taşıyan bir paket, metin sorgusuna 0x70 ile başlayan bir paket döner. Yukarıdaki kod 0x65 ile başlamayan baytları atlayarak bu paketlerle karışmayı önler. Seri haberleşmede sorun yaşarsanız ekranı bir USB-TTL dönüştürücü ile bilgisayara bağlayıp gelen baytları doğrudan izleyebilirsiniz.

Sık sorulan sorular

Nextion ekran Arduino'suz çalışır mı?

Evet, sayfalar arası geçiş, buton animasyonları ve basit hesaplamalar ekranın kendi kodunda çalışır; Arduino gerekmez. Enhanced ve Intelligent serilerde GPIO uçları ve RTC olduğu için basit bir LED ya da röle sürücüsünü ekran kendisi tetikleyebilir. Sensör okuma ve yük kontrolü gibi işler ise yine bir mikrodenetleyici ister.

Nextion ekranda Türkçe karakter nasıl gösterilir?

Nextion Editor'ın Font Generator aracında Türkçe karakterleri kapsayan bir kodlamayla yazı tipi oluşturup projede kullanmanız gerekir. Arduino'dan gönderilen metnin de aynı kodlamayla gönderilmesi önemlidir; Arduino IDE metni UTF-8 olarak kaydettiği için Türkçe harfler ekranda bozuk görünebilir. Bu durumda harfleri kodda bayt değeriyle göndermek en güvenli yoldur.

Nextion'ın haberleşme hızı nasıl değiştirilir?

Varsayılan hız 9600 baud'dur; bauds=115200 komutu hızı kalıcı olarak (açılış hızı), baud=115200 komutu yalnızca o oturum için değiştirir (veri sayfalarına göre desteklenen aralık 2400-921600 baud'dur). Hızı değiştirdikten sonra Arduino tarafında da aynı değeri kullanın. SoftwareSerial yüksek hızlarda güvenilir olmadığı için 115200 baud'da donanım seri portu tercih edin.

Ekrana .tft dosyası yüklenmiyor, ne yapmalıyım?

microSD kartın FAT32 biçimli olduğunu, 32 GB'tan büyük olmadığını ve kök dizinde yalnızca bir .tft dosyası bulunduğunu kontrol edin. Projenin ekranınızın tam model kodu için derlendiğinden emin olun; farklı model için derlenen dosya yüklenmez. Editor sürümü ile ekran yazılımı arasındaki uyumsuzluklarda Editor'ı güncelleyin.

Nextion ile ESP32 birlikte kullanılabilir mi?

Evet, ESP32'nin ikinci donanım seri portu (ör. GPIO16 ve GPIO17) Nextion için idealdir ve seviye dönüştürücü gerekmez. Ekranı ESP32 kartının 3V3 pininden değil, 5 V hattından besleyin. Wi-Fi'dan alınan hava durumu ya da sensör verisi aynı komutlarla ekrana yazılır; benzer projeleri TFT ekran ile Arduino ve ESP32 yazımızda da bulabilirsiniz.

Özet

  • Nextion ekran, arayüzü kendi işlemcisinde çalıştıran ve UART ile haberleşen dokunmatik bir HMI ekrandır.
  • Arayüz Nextion Editor'da hazırlanır, .tft dosyası microSD ya da USB-TTL ile yüklenir.
  • Bağlantı dört kablodur: 5V, GND ve çapraz TX-RX; varsayılan hız 9600 baud'dur.
  • Her komut düz metindir ve sonuna üç adet 0xFF baytı eklenir; dokunma paketi 0x65 ile başlar.
  • Küçük modeller 5 V 500 mA, Intelligent ve Edge modeller 5 V 1 A besleme ister.

Bu yazıdaki ürünler

Diğer yazılar

12 Kasım 20268 dk okuma

AMG8833 Termal Kamera Sensörü: 8x8 Isı Haritası Rehberi

AMG8833, Panasonic Grid-EYE ailesinden 8x8 = 64 pikselli bir termopil kızılötesi dizi sensörüdür. 0-80 °C aralığındaki yüzeylerin sıcaklığın...

Devamını oku →
12 Kasım 20268 dk okuma

MT6701 Manyetik Encoder: 14 Bit Açı Sensörü Rehberi

MT6701, MagnTek'in ürettiği, dönen bir mıknatısın açısını Hall algılayıcılarla temassız ölçen 14 bitlik manyetik açı sensörüdür. Açıyı I2C y...

Devamını oku →
12 Kasım 20267 dk okuma

MG90S ve SG90 Servo Farkı: Tork, Dişli ve Seçim Rehberi

MG90S ile SG90 arasındaki temel fark dişlilerdir: MG90S metal, SG90 plastik dişli kullanır. İkisi de aynı boyda mikro servodur ve 4,8 V'ta y...

Devamını oku →
12 Kasım 20267 dk okuma

C5198 ve A1941 Transistör: Değerler, Bacaklar ve Muadil

C5198 (2SC5198), Toshiba'nın ses amplifikatörü çıkış katı için ürettiği 140 V, 10 A ve 100 W değerli NPN güç transistörüdür; PNP eşi A1941'd...

Devamını oku →
12 Kasım 20267 dk okuma

ZB2L3 Pil Kapasite Test Cihazı: Bağlantı ve Kullanım

ZB2L3 pil kapasite test cihazı, pili harici bir yük direnci üzerinden ayarladığınız sonlandırma gerilimine kadar boşaltıp gerçek kapasiteyi...

Devamını oku →
12 Kasım 20266 dk okuma

TC4427 MOSFET Sürücü: Pinout, Bağlantı ve TC4426 Farkı

TC4427, Microchip'in iki kanallı, evirmeyen (non-inverting) ve 1,5 A tepe akımlı MOSFET sürücü entegresidir. 4,5-18 V ile beslenir ve Arduin...

Devamını oku →