Ana sayfa Çözümler Host ile Smart Display Arasında CANopen Haberleşmesi ve Buton/Gösterge Kontrolü

Host ile Smart Display Arasında CANopen Haberleşmesi ve Buton/Gösterge Kontrolü

Jul 25,2023

Tanıtım

Host ile Smart Display Arasında CANopen Haberleşmesi

Bir Smart Display'in kontrol edilebilmesi için uygun bir sistem arayüzüne ve haberleşme protokolüne ihtiyaç vardır. Bu makalede, host kontrolü açısından ele alınan uygulamalı bir Arduino örneği üzerinden HOST'un Smart Display üzerindeki Indicator rengini değiştirmek için nasıl komut gönderdiği açıklanmaktadır. Örnekte, kullanıcı arayüzüne bir dokunmatik buton eklenir ve Arduino'ya fiziksel bir buton bağlanır. Fiziksel butona veya dokunmatik butona basıldığında ekrandaki Indicator'ın rengi değişir ve harici LED açılır veya kapatılır.

Bu uygulamada, bir Arduino geliştirme kartı kullanılarak 3,5 inç CAN Smart Display'in nasıl kontrol edileceği gösterilmektedir. Örnek; fiziksel butonun, dokunmatik butonun, ekrandaki Indicator'ın ve kart üzerindeki LED'in program aracılığıyla kontrol edilmesini ve Smart Display'in HOST tarafından gönderilen komutları nasıl aldığını kapsamaktadır. CAN Bus shield ile donatılmış Arduino Mega 2560, host kontrol birimi olarak kullanılır ve Smart Display ile CANopen üzerinden haberleşir.

Sistemin blok diyagramı aşağıda gösterilmektedir:

Arduino host ile Smart Display arasında CANopen haberleşmesi

Sistem Blok Diyagramı

Bu uygulama için aşağıdaki bileşenler gereklidir:

  1. 3,5 inç CANopen Smart Display
  2. Arduino Mega 2560
  3. Arduino Mega 2560 için CAN Bus shield
  4. CAN Bus Dongle
  5. Fiziksel buton
  6. LED
  7. Smart Display GUI Builder v0.4.2 veya üzeri
 

Bu demo üç bölümden oluşmaktadır:

  1. GUI Builder'da projenin tasarlanması
  2. Projenin oluşturulması ve yüklenmesi
  3. Arduino host'un programlanması
 

GUI Builder'da Projenin Tasarlanması

İlk olarak yeni bir proje oluşturun ve proje adını girin. Ardından cihaz türünü seçin; bu örnekte 3,5 inç cihaz kullanılmaktadır. Haberleşme protokolü olarak CANopen'ı seçin ve ekran yönünü Landscape olarak ayarlayın. Daha sonra UI şablonları arasından Blank Template'i seçin ve aşağıda gösterildiği gibi Create düğmesine tıklayarak yeni projeyi oluşturun.

GUI Builder'da CANopen Smart Display projesinin oluşturulması

Bu ayarlar tamamlandıktan sonra boş bir sayfa açılır.

GUI Builder'da oluşturulan boş proje sayfası

Bu uygulama örneği için çalışma alanına bir dokunmatik buton ve bir Indicator widget'ı ekleyin. Gerekli widget'ları kontrol panelinden seçip aşağıda gösterildiği gibi çalışma alanına sürükleyip bırakabilirsiniz.

GUI Builder çalışma alanına dokunmatik buton ve Indicator widget eklenmesi

Projenin Oluşturulması ve Yüklenmesi

Önceki ayarlar ve kullanıcı arayüzü tasarımı tamamlandıktan sonra proje oluşturulup Smart Display'e yüklenebilir. GUI Builder araç çubuğundaki Device seçeneğine tıklayın ve Device Property'yi seçin. Device Property penceresinde varsayılan baud rate değerini kullanabilir veya uygulamanızın gereksinimlerine göre değiştirebilirsiniz. Arduino programında yapılandırılan baud rate değerinin GUI Builder'daki ayarla aynı olduğundan emin olun. Ayarları tamamladıktan sonra aşağıda gösterildiği gibi Upload düğmesine tıklayarak projeyi Smart Display'e yükleyin.

GUI Builder ile projenin Smart Display'e yüklenmesi

Projenin yüklenmesi tamamlandığında "Upload project completed" mesajı görüntülenir. Aşağıda gösterildiği gibi OK düğmesine tıklayarak pencereyi kapatın.

GUI Builder proje yükleme işleminin tamamlanması

Yükleme işlemi tamamlandıktan sonra Smart Display açılış ekranını görüntüler.

Proje yüklendikten sonra Smart Display açılış ekranı

Açılış ekranının ardından Smart Display, yüklenen uygulama sayfasına geçer. Bu durum, projenin başarıyla oluşturulduğunu ve Smart Display'e yüklendiğini gösterir.

Smart Display üzerinde yüklenen uygulama sayfası

Arduino Host'un Programlanması

Bu örnekte Arduino host'u programlamak için Arduino IDE v2.0.4 kullanılmaktadır. CAN Bus haberleşmesi için mcp2515_can.h kütüphanesi ve çeşitli yardımcı kütüphanelerden yararlanılmaktadır. Daha ayrıntılı bilgi için Arduino koduna başvurabilirsiniz. Host ile Smart Display arasında haberleşme kurulurken nesnelerle ilişkili adreslerin doğru şekilde tanımlandığından emin olunmalıdır. Host ile Smart Display arasındaki CAN Bus haberleşmesi hakkında daha ayrıntılı bilgi için GUI Builder'daki haberleşme kayıtlarına başvurabilirsiniz. Gerekli nesne adresleri Arduino IDE programında aşağıda gösterildiği şekilde tanımlanmıştır.

Arduino host'un CANopen haberleşmesi için programlanması

CANopen yapısında Button stilinin index değeri 0'a (0x2000), Indicator stilinin index değeri ise 1'e (0x2001) karşılık gelir. Her nesnenin index değerinin dikkate alınması önemlidir. Bir nesnenin index değeri biliniyorsa, nesnenin durumu Arduino host programı üzerinden değiştirilebilir. İlgili nesne index değerleri, aşağıdaki simülasyon kayıt tablosunda yer alan komut bilgilerinden görülebilir:

CANopen simülasyon kayıtlarında Button nesnesinin index bilgisi

 

CANopen simülasyon kayıtlarında Indicator nesnesinin index bilgisi

Her nesnenin veri tipi burada tanımlanır. Ek nesneler kullanılacaksa, bu nesnelere karşılık gelen veri tiplerinin de programda tanımlanması gerekir.

CANopen nesneleri için veri tiplerinin tanımlanması

Aşağıdaki şekil, ObjectFunCallback fonksiyonunun her nesneden alınan değerleri nasıl işlediğini göstermektedir. Kullanıcılar, uygulama gereksinimlerine göre kodu değiştirebilir veya ek nesneler için yeni işleme mantığı ekleyebilir.

ObjectFunCallback ile nesnelerden alınan değerlerin işlenmesi

Arduino host, fiziksel butonun durumunda bir değişiklik algıladığında ilgili değeri CANopen üzerinden Smart Display'e gönderir. Komut yapısında kullanılan ID ve sub-index değerleri için aşağıdaki kodu inceleyebilirsiniz. Programın bu bölümü, fiziksel butonun durumuna göre Indicator'ın (object index 2) değerini günceller.

Fiziksel buton durumuna göre Indicator değerinin CANopen üzerinden güncellenmesi

Tüm nesnelerin register adreslerini tanımlayın, fiziksel buton ve LED gibi harici bileşenlerin pin modlarını giriş veya çıkış olarak yapılandırın ve aşağıda gösterildiği şekilde baud rate değerini ayarlayın:

Nesne register adreslerinin ve Arduino pin modlarının tanımlanması

Arduino host için pin ve baud rate ayarları

Son olarak, bu uygulama senaryosunu gerçekleştirmek için gereken program mantığı loop() içinde tanımlanır. Fiziksel butona veya Smart Display üzerindeki dokunmatik butona basıldığında sistem, ekrandaki Indicator'ın rengini değiştirir ve harici LED'i açar veya kapatır.

loop() içinde fiziksel ve dokunmatik buton kontrol mantığı

Program Arduino IDE üzerinden başarıyla doğrulanıp yüklendikten sonra, fiziksel butona veya Smart Display üzerindeki dokunmatik butona basıldığında LED yanar ve Indicator'ın rengi yeşile döner. Indicator kırmızı renkte ve LED kapalı olduğunda ise fiziksel butona veya dokunmatik butona basılmadığı anlamına gelir. Bu durum aşağıda gösterilmektedir.

Fiziksel ve dokunmatik butonlarla Indicator ve LED kontrolü

Yukarıda açıklanan programı GitHub bağlantısından indirebilirsiniz. Bu demo projesine ilişkin ek dosya ve bilgiler de örnekler içerisinde bulunmaktadır. Gerçek donanım kurulumu aşağıda gösterilmektedir.

Arduino ve Smart Display CANopen demo donanım kurulumu

Bu adımlar tamamlandıktan sonra, fiziksel buton veya Smart Display üzerindeki dokunmatik buton kullanılarak ekrandaki Indicator'ın durumu ve harici LED kontrol edilebilir. Böylece Smart Display CANopen haberleşme demosu tamamlanmış olur.

Sonuç

Bu örnek, GUI Builder'ın kullanımını ve uygulama sürecini gösterirken kullanıcıların CAN Bus üzerinden host tarafında kontrol uygulamalarının nasıl geliştirilebileceğini anlamalarına yardımcı olur. Ayrıca host'un Smart Display'i kontrol etmek için nasıl komut gönderip aldığını da göstermektedir. Bu örnek sayesinde geliştiriciler, host ile Smart Display arasındaki CANopen haberleşmesini ve kontrol yöntemlerini daha iyi anlayabilir ve edindikleri bilgileri sonraki Smart Display uygulamalarının geliştirilmesinde referans olarak kullanabilir.

İşletmenize yönelik ekran çözümleri hakkında sorularınız mı var? Bize Ulaşın!

Abone Ol

Winstar'dan haber güncellemeleri hakkında e-posta alın

Bize Ulaşın

Fiyat/Veri sayfası/Genel bilgi talebi

Teknik Destek

Her türlü teknik bilgi için bize ulaşın

go top
İletişim
close

Gizliliğinize değer veriyoruz

"Tüm Çerezlere İzin Ver" seçeneğine tıklayarak, site gezinmesini geliştirmek, site kullanımını analiz etmek ve pazarlama ve performans çalışmalarımıza yardımcı olmak amacıyla cihazınıza çerezlerin kaydedilmesini kabul etmiş olursunuz. Bu konu hakkında daha fazla bilgiye politikamızda ulaşabilirsiniz. Gizlilik Politikası

Gizliliğinize değer veriyoruz

Winstar ve bazı üçüncü taraflar www.winstar.com.tw adresinde çerezler kullanmaktadır. Çerez türleri, amaçları ve ilgili üçüncü taraflar hakkındaki ayrıntılar aşağıda ve Çerez Politikamızda açıklanmaktadır. Web sitemizde en iyi deneyimi yaşamak için çerez kullanımına izin vermek amacıyla “Hepsine İzin Ver” düğmesine tıklayabilirsiniz. Ayrıca tercihlerinizi ayarlayabilir veya zorunlu olanlar haricindeki çerezleri reddedebilirsiniz.

Rıza tercihlerini yönet

Her zaman aktif
Gerekli Çerezler

Bu çerezler, web sitesinde gezinmenizi ve gizlilik tercihlerinizi ayarlamak, oturum açmak veya formları doldurmak gibi özellikleri kullanmanızı sağlamak için gereklidir.

Analitik Çerezler

“İstatistik çerezleri” olarak da bilinen bu çerezler, bir web sitesini nasıl kullandığınız hakkında bilgi toplar; örneğin, hangi sayfalara girdiğinizi ve hangi bağlantılara tıkladığınızı. Ayrıntılara bakın.