Nextion Ekranlar

Başlatan Serk@n, 09 Ocak 2021, 12:21:31

Serk@n

Herkese iyi çalışmalar diliyorum.

Nextion ekranları projelerimde kullanmaya başladım. Henüz başlangıç seviyesinde bir bilgiye sahip olsam da şimdilik işimi görüyor.

Bu konuda size biraz bilgi vermek istiyorum. En azından başlamayı düşünen arkadaşlar varsa kısa bir ön bilgi olur.

Ekranlar, içinde stm32 entegresi bulunan hazır bir devre kartı ile satılıyor. Ücretsiz, Visual Basic'e benzeyen bir programlama IDE'si var. Buradan ekrandaki sayfalar, menüler, butonlar, resimler, hareketli çubuklar, grafik nesneleri vs. eklenerek C diline benzer bir dille yazılımı yapılarak tasarımlar gerçekleştiriliyor. C diliyle uğraşmamış olan arkadaşların da gözü korkmasın, basic dilini bilen de kodları biraz gördüğünde ne olup-bittiğini anlayabiliyor.

Yaptığımız tasarımı ve yazdığımız kodları IDE'nin içinde bulunan simülasyon ile kontrol edilebiliyoruz. Yani mouse oku ile tıklatma, parmakla dokunma olarak simüle ediliyor.

Ekranın 4 pini var. +5V, GND, RX,TX. Böylelikle Usart bağlantı ile bir mcu ile iletişim sağlıyor. Pic, Arduino vs...

Ekran için mcu.lara kütüphaneler geliştirilmiş olsa da hiç birini kullanmaya gerek yok. Gereksiz hafıza ve ram kaybından başka birşey değil. Seri iletişim baud hızınızı ekran ile aynı yaptıktan sonra komutlarınızı mcu.dan direkt ekrana gönderebilirsiniz.

Ekranda kullanılan komutların listesi aşağıdaki linktedir:

https://nextion.tech/instruction-set/

Bu komutların çoğu serial üzerinden de gönderilebilir. Aynı zamanda mcu.dan göndermek istediğiniz komutları önceden simülatörde de test etme imkanınız var.

Ekran kullanımı hakkında ön bilgi alabileceğiniz, tavsiye edebileceğim görüntülü bir ders serisi linki:

https://youtu.be/UJ-D54i9YyM

Fiyatlarına gelince... 2.4 inç, 320x240 piksel en küçük ekranlar, 150 TL.den başlıyor. Bu ekranlar 4MB hafızaya sahip. Sonraki modellerinde ekran boyutu, hafıza ve ekstra özellikleri artıyor ve buna paralel fiyatları da artıyor tabi.

Bu linkte ekran modellerini görebilirsiniz.

https://nextion.tech/datasheets/

Hatta bu ekstra özellikler arasında  pwm çıkış pinleri bulunan ekran modelleri de var.

2.4 inç ekran tam ekran parlaklığında yaklaşık 100 mA akım çekiyor. Yani güç kaynağımızı tasarlarken ekranın çektiği akımı da dikkat etmemiz gerekiyor.

Ekranın uyku modu özelliği bulunuyor. Yine Usart üzerinden göndereceğimiz komutlarla bu işlemleri yapabiliyoruz.

Ekranı uyku moduna alıp dokunmayla uyku modunda çıkarmayı engelleyerek kullanıcıya ekran kapanmış gibi gösterebiliyoruz. Ama uyurken bile neredeyse bir Led kadar akım çekiyor. Pille çalışan devreler için pek iyi bir durum değil. Bu durumda uyku modunda çekilen akım, projenizde sorun olacaksa bir mosfet ile de ekranı komple kapatıp açabilirsiniz. Böylelikle kapalıyken akım çekmeyecektir.

Ekranı kullanmanın avantajı mcu yazılımını hafifletmek. Hatta çoğu projede esas yazılımdan çok hafızayı ve RAM'i yoran işlemler ekrandan kaynaklanabiliyor. Bu yüzden projelerde genelde basit ekranlar kullanmak zorunda kalabiliyoruz. İşte bu sorunu gidermede bu ekran tam derdimize ilaç olabilecek mahiyette.

IDE ilk açıldığında ekran boyutunu, yatay-dikey gibi genel özelliklerini seçiyoruz.

Tasarım sayfası açıldığında kullanacağımız resim ve fontları ekliyoruz. Bunlar otomatik sıra numarası alarak programa ekleniyor.

Ekran yazılımında bir değişken tanımlayamıyoruz. Bunun için ide'nin bizim için önceden tanımladığı sys0, sys1 ve sys2 değişkenlerini kullanabiliyoruz.

Ekranda bir butona bastığınızda serial üzerinden mcu.ya istediğiniz bir datayı gönderebilirsiniz. Bunu da simülasyondan gözlemleyebilirsiniz.

Tasarım bittikten sonra derleyip bir microSD karta yüklüyoruz. Nextion ekranda bulunan yuvaya ekran kapalıyken takıp sonra ekranı açtığımızda yükleme işlemi gerçekleşiyor. Biraz yavaş bir işlem olsa da yazılımı serial üzerinden de ekrana yükleyebiliyoruz.

Mesela ekranda deneme adında bir metin kutunuz var. Mcu.dan serial bağlantıyla deneme.txt="merhaba" göndererek bu yazının ekrandaki metin kutusunda görülmesini sağlıyoruz.

Veya ekranda bulunan bir resim kutusundaki resmi resim.pic=1 göndererek değiştiriyoruz. 1. sıra numarası olan resim ekranda görülecektir.

Her komuttan sonra üç kere 0xFF hex kodunu da eklememiz gerekiyor. Bu da nextion ekranın komutu işlemesi için ekranı tasarlayanlar tarafından şart koşulmuş, bir komut geldiğini kesin olarak anlamak amacıyla.

İde'nin son sürümlerinde bir problem çıkmıştı. Bu problem devam ediyorsa eski ide'den de aşırı bir farkı olmadığı için eski ide'yi kullanmanızı tavsiye ederim.

Grafik tasarım işleri ile uğraşan arkadaşlarınız varsa, hatta öğrenci bile olsa onlardan biraz yardım alarak çok profesyonel görünümlü projeler yapabilirsiniz.

Seri iletişim konusunda biraz tecrübeniz varsa ve ekranlar bütçenizi zorlamayacaksa denemenizi tavsiye ederim. Başlangıç seviyesinde ben de bildiğim kadarıyla destek olabilirim.

Şimdilik benden bu kadar. İlgi gösteren arkadaşlar olursa bir kaç örnek ile küçük bir proje yapmayı anlatabilirim. Veya daha bilgili arkadaşlar yazdıklarıma ilave yapabilirler. Bu siteyi kuran ve birbirine destek olmaya çalışan herkese teşekkürler.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

alisumer

#1
 serkanzey benimde ufaktan bi çalışmam var proteus ve nextion editör üzerinden simulasyon ile videolaştırıp bu başlıkta aylaşmak isterim video işini halletiğim zaman arduino ile dolu uygulama var Pic ile kütüphanesiz bi örnek olur
Hep meraktan

Serk@n

Çok iyi olur. Takipteyim.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

alisumer

#3
video silinmiştir saygılar
Hep meraktan

Serk@n

Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

alisumer

#5
nextionda karşıya veri göndermenin birkaç tane komutu var print-prints-printh gibi biraz karışık geldi kullanım örneklerini de görmedim sadece simulasyonda denedim 4 byte veri gönderiyorlar aralarından asıl istediğinin veriyi ayıklamak biraz zor geldi kullanımı ile alakalı anlaşılır örnek bulan paylaşırsa buradan bu sayfayı ders gibi okuruz :) karşıdan gelen veriyi ayrıca işlemek gerekiyormu onun için bir komut varmı bilmiyorum simulasyonda çalışıyor ama ekran üzerinde nasıl tepki verir bilemiyorum .
Hep meraktan

Serk@n

#6
Komutlar mcu.dan nextiona üç şekilde gönderiliyor. Üçünün de gerekli olduğu durumlar var.

Sayı, metin, hex

Bunları birer örnekle izah edeyim:

Sayı gönderirken:

"j0.val="
intvalue
0xff
0xff
0xff

Metin gönderirken:

"t0.txt="
0x22
stringvalue
0xff
0xff
0xff

Boolean gönderirken:

"timer.en=0" veya "timer.en=1"
0xff
0xff
0xff


Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

#7
Tırnak içindekiler metin olarak gönderilecek.

0x.. olanlar hex olarak gönderilecek.

Sayısal yada metin ...value değişkenler direkt seriale yazdırılacak.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

#8
Farklı olan durum şu: Metin göndermeden önce muhakkak 0x22 hex değerini göndermek gerekiyor. Yoksa komut çalışmıyor.

Çünkü seriale komutları zaten tırnak içinde yazarak gönderiyoruz. Tırnak içinde tırnak olmasın diye ancak bunu hex olarak gönderebiliyoruz.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

#9
Nextion'dan mcu.ya gelen veriyi işleme de şu şekilde...

Ben şu şekilde kullanıyorum.

Ekrandan bana her işlemde iki hex değeri geliyor. Bunu önceden planlıyorum.

Mesela ilk hex değeri
1 ise butona basıldı
2 ise resim kutusuna basıldı
3 ise ayar çubuğu değiştirildi
4 ise aktif sayfa değişti
...
...
...
vs.

Ekranda diyelim ki ikinci sayfa aktif oldu. İkinci sayfa açılırken ekrandan mcu.ya şu komutu gönderiyorum:

get 516

Mcu.ya hex olarak sırayla 4 ve 2 bilgisi geliyor.

4, aktif sayfa değişti
2, (aktif sayfa ne oldu?) ikinci sayfa açıldı.

516 sayısını da şu şekilde buluyorum:
1 byte 256 bit olduğu için

Sayfa no * 256 + 4

Biraz karışık gibi görünebilir ama alışınca çok kullanışlı.

Kullanıcının ekrandaki her hareketi mcu.dan takip edilip işlem yapılabiliyor.


Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

#10
Nextion'dan mcu.ya metin değeri göndermek isterseniz örnek komut şu:

get t0.txt

Metin değerlerini bir harf bir harf olacak şekilde serialden çekebilirsiniz.

Hatta önce daha önceden belirlediğiniz bir kodla metin göndermek istediğinizi mcu.ya gönderip, daha sonra kaç karakter göndereceğinizi de bildirirseniz mcu.da bu duruma göre bir sayaç oluşturup dataları problemsiz bir şekilde alabilirsiniz.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

İlyas KAYA

G0 x1 f200 \r\n

Bunu nextion ile nasil gönderebilirim?
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Serk@n

get "G0 x1 f200 \r\n"
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

Serk@n

Her seriyi okuduğunuzda buradaki 15 karakteri tek tek alırsınız.
Bildiklerimize göre hareket edersek bilmediklerimizi de öğrenebiliriz.

İlyas KAYA

#14
 get ile nextion veri mi gönderiyor? Veri mi alıyor anlamadım.
Print , printh ile get arasındaki fark nedir?

Aslında yapmak istediğim şey x değişken sabit değil. Nextion ile direk usart dan gcode göndermek.

Bu komutlar ile hem sayısal hem string yollamiyor.
Print T2.txt  dedigim zaman da bir format da yolluyor o da utf8 yani txt nin yazı formatını

Çözemedim bu durumu.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

Powered by EzPortal