AVR ile Nextion Uygulamalarına Giriş
Bunca zaman AVR ile 7 segman, karakter LCD gibi göstergeleri kullanarak uygulamalar yaptık. Yalnız işi ticari boyutta yapacağımız zaman bu tarz ekranlar çağın oldukça gerisinde kalacaktır. Tasarladığımız projeye modern bir görünüm verme adına geniş, yüksek çözünürlüklü ve mümkünse dokunmatik ekranları kullanmamız şarttır. Tasarladığımız proje ne kadar iyi olursa olsun kullanıcının ilk bakacağı nokta ekran olacak ve bu ekran bir Nokia 5110 ekranı ise proje küçümsenecektir. Bu ekranlar amatör çalışmalar için çok iyi olsa da bir ürün tasarlayıp satmak istediğinizde biraz da görsellik ön plana çıkmaktadır.
Bunu kendi tecrübelerimde bizzat görüp, önce karakter LCD ekran kullanırken sonrasında Nextion ekranlara geçmiştim. Nextion ekranlar sizin bu yüksek çözünürlüklü ve geniş ekran kullanma ihtiyacınıza cevap verecektir. Siz Nextion kullanmadan da doğrudan ekranları sürme imkanına sahip olsanız da bu tarz ekranlara sürücü yazmanın çok fazla zaman alıp ileri derecede programcılık tecrübesi ve bilgisi istediğini bilmeniz gereklidir. Hazır kütüphaneleri kullansanız bile arayüzü tasarlamak sizin oldukça fazla zamanınızı alacak ve sonuçlar beklediğiniz gibi olmayacaktır.
Bunu bilgisayar ortamında C# form tasarımına benzetebilirsiniz. Orada nasıl elementleri sürükleyip bırakarak form tasarlıyorsanız burada da bu basitlikle form tabanlı arayüz tasarlama imkanına sahipsiniz. Nextion ekranların modellerine baktığımızda oldukça fazla seçenek olduğunu görmekteyiz.
Ekranlar basic, intelligent ve enhanced olarak üç ana seriye ayrılmakta. Bizim işimizin %95'ini basic serisi göreceği gibi en ucuz olan da bu seridir. Bir zamanlar elektronik dükkanlarında bulduğumuz en gelişmiş ekran olan 128x64 grafik LCD ekran fiyatına şu an dokunmatik TFT ekran alabilmeniz mümkündür. Ben fiyat performans noktasından en iyi modelin 3.5'’ basic serisi ekran olduğunu söyleyebilirim.
Nextion ekranı kullanmak için Nextion Editor’e ihtiyacınız olacaktır. Bunu aşağıdaki bağlantıdan indirip kurabilirsiniz.
Şimdi (AVRADV23…) klasöründe yer alan .HMI uzantılı dosyayı editörde açalım.
Nextion Editor ekranda yukarıda olduğu gibi karşımıza çıkacaktır. Kullanım bakımından zor bir tarafı olmayıp bilgisayar bilgisi olan birisi hiç eğitimini görmeden bile programı çözebilir. Kısaca ekranı tanıtmam gerekirse sol tarafta “Toolbox” adı altında bizim ekranda kullanacağımız elementler yer almaktadır. Bunlar diğer “sürükle bırak” tarzındaki arayüz tasarım programlarında yer alan düğme, metin kutusu, radyo düğmesi gibi arayüz elementleridir. Sol alt pencerede ise fontlar ve resimler yer almaktadır. Enchanced serisi ekranlar olmadığı için ses ve video desteklenmemektedir. Ama uygulamalarda resimleri art arda göstererek kısa video oynatma imkanı mevcuttur. Orta alt kısımda ise derleme işleminin çıktısı ve sağ tarafta yer alan “Event” penceresinde ise olay tabanlı yazacağımız program kodu yer almaktadır.
Bu olay durumu yine C#, Visual Basic gibi ortamlardaki olaylara benzemektedir. Siz düğmeye bastığınızda ne yapılacak, düğmeden parmağınızı çekince ne olacak, ekran başlayınca ne yapılacak tarzında olaylara “kısıtlı” bir şekilde program kodu ekleyebilirsiniz. Bu program kodunu instruction set adlı kılavuzda daha sonra göreceğiz.
Sağ üst tarafta ise sayfaların listesi yer almaktadır. Ekranlar her zaman sayfalara bölünür ve en azından bir sayfa üzerinde çalışır. Yeni sayfalar ekleyerek sayfalar arası geçiş yapabilirsiniz. Örneğin bir ayar penceresi koymak istediğinizde yeni bir sayfa eklemeli ve bir düğmeye basınca o sayfaya geçme komutunu yazmalısınız. Sağ alt kısımda ise elementlerin özelliği yer almakta ve sayfaya eklediğiniz elementlerin özelliğini buraya girmektesiniz. Örneğin bir düğmenin rengi, boyutu, konumu, etiketi buradan düzenlenmektedir.
Üst kısımda bulunan “Device” sekmesinden kullanacağımız ekranı ve ekranın yatay mı dikey mi olacağını belirlemekteyiz. “Compile” kısmından ise çalışmayı derleyip ekrana yüklenmeye hazır hale gelen dosyayı elde edebiliriz.
Ekrana yükleme işlemi ise ya USB-Seri çevirici vasıtasıyla bilgisayardan olmakta ya da micro SD kart vasıtasıyla olmaktadır. Micro SD ile daha hızlı atıldığı için bunu tercih edebilirsiniz. USB-Seri çevirici ile de debug modunda çalıştırma imkanınız olur.
İlk uygulamamız kaynak kodlar içinde hazır olsa da bunu nasıl yaptığımızı adım adım anlatalım.
Öncelikle ekranımızın çözünürlüğü 320x480 olduğu için bir grafik işlem programında bu çözünürlükte boş bir sayfa açıyoruz. Bu Fireworks programı olabilir. Sonrasında ise yazı ve resim ekleyerek bu tuvali dolduruyoruz.
Bunu .png olarak kaydettikten sonra Nextion Editor’ü açıyoruz ve page 0 seçiliyken sol tarafta yer alan picture kısmından hazırladığımız resmi ekliyoruz.
Resmi seçtikten sonra sağda yer alana attribute kısmından sta özelliğini “image” olarak değiştiriyoruz. Bu arkaplan özelliği olup düz renk ve resim seçenekleri sunmakta.
sta özelliği için image değerini seçtikten sonra bir alt kısımda olan pic özelliğini seçim “browse” diyip resmi seçiyoruz.
Bunu seçtikten sonra ekranın arkaplanı belirlenmiş oluyor. Şimdi bunu derleyip ekrana yükleyelim ve program tarafına geçelim.
Bu ekranı idare etmek için “Instruction set” sayfasındaki kurallara uymamız şarttır. O yüzden bu sayfayı açıp inceleyelim.
En baş kısımda şöyle bir ibare yer almaktadır.
“All instructions over serial: are terminated with three bytes of 0xFF 0xFF 0xFF”
Bütün komutlar üç kere 0xFF ile sonlandırılmalıdır demektedir. Yani bir UART üzerinden yollayacağımız her komut peşinden üç defa 0xFF yazmaksak bunu işletmemizin imkanı yoktur.
Ayrıca bu komutlar ASCII formatında olup string olarak kullanmak zorundadır. Ekranın baud oranı varsayılan olarak 9600'dür ve buna göre UART kütüphanesini ayarlamak zorundayız.
Şimdi yapmak istediğimiz uygulamaya göre komutları arayalım. Biz sadece bir sayfayı göstermek ve başka bir işlem yapmak istemiyoruz.
Burada istediğimiz komut yazmakta. Kullanım (usage) kısmında page <pid> diye belirtilmekte. Yani page yazdıktan sonra sayfanın kimlik numarasını yazıyoruz. Bu kimlik numarası ise sayfanın ismi değil sol tarafında yer alan numaradır.
Buradan bizim ekrana “page 0” demek isteyeceğimizi ve sonrasında üç kere 0xFF koymamız gerektiğini rahatça anlayabiliriz. Şimdi AVR tarafına geçelim.
Burada Peter Fluery’in UART kütüphanesini kullandım. Öncelikle karakter dizisi halinde “page 0” komutunu yazdıktan sonra üç kere 0xFF koymaktayız. Bu komutu işletmesek de Nextion ekranlar varsayılan olarak açılışta 0 numaralı sayfayı ekrana getirmekteler.
Burada en sık kullanacağınız ve en basit komutu göstermeyi hedefledim. İlerleyen uygulamalarda bu ekranla çeşitli uygulamalar yapacağız.