Ana sayfa Çözümler Arduino ile Custom CAN ID Üzerinden Smart Display Sayfa Geçişi Kontrolü

Arduino ile Custom CAN ID Üzerinden Smart Display Sayfa Geçişi Kontrolü

Aug 26,2023

Tanıtım

Smart Display, CANopen ve Custom CAN ID dahil olmak üzere birden fazla CAN haberleşme protokolünü destekler. CANopen; farklı cihaz türleri için haberleşme profillerini, cihaz profillerini ve nesne modellerini tanımlayan standartlaştırılmış bir haberleşme protokolüdür. Bu sayede CAN bus üzerindeki cihazların yapılandırılması, izlenmesi ve kontrol edilmesi için standart bir yöntem sunar. Öte yandan, CAN bus üzerindeki cihazların mevcut standart protokollerle karşılanamayan belirli işlevleri veya gereksinimleri olduğunda, Custom CAN ID kullanılarak CAN haberleşmesi uygulama gereksinimlerine göre tanımlanabilir ve daha esnek bir yapılandırma sağlanabilir.

Bu makalede, bir Arduino kartı, CAN bus modülü ve sensör kullanılarak Custom CAN ID üzerinden 7 inç Smart Display'de sayfaların nasıl değiştirileceği açıklanmaktadır. Projede kullanılan donanım bileşenleri, Arduino programının derlenmesi ve Custom CAN ID kullanılarak Smart Display'de sayfa değiştirme işleminin gerçekleştirilmesi ele alınmaktadır.

Bu uygulama sayesinde geliştiriciler, Arduino kartı, CAN bus modülü ve Custom CAN ID arasındaki haberleşme ve kontrol yapısını daha iyi anlayabilir ve bu örneği ilgili Smart Display CAN haberleşme uygulamalarının geliştirilmesinde referans olarak kullanabilir.

Şekil 1 Sistem Blok Diyagramı

Şekil 1 Sistem Blok Diyagramı

Bu projede ana kontrolcü olarak Arduino Mega 2560, program geliştirme ortamı olarak ise Arduino IDE v2.0.4 kullanılmaktadır. Smart Display ile CAN bus arayüzü üzerinden haberleşebilmek için Arduino ana kontrolcüsü bir CAN bus shield'a bağlanır. Shield üzerinde bulunan MCP2515 CAN kontrolcüsü ve MCP2551 CAN transceiver, Arduino ana kontrolcüsü ile Smart Display arasında CAN bus haberleşmesini sağlar.

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

  • 7 inç Smart Display
  • Arduino Mega 2560
  • Arduino Mega 2560 için CAN bus shield
  • CAN bus dongle
  • Fiziksel buton sensörü
  • LED
  • Smart Display GUI Builder v0.4.5 veya üzeri
 

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

  • Projeyi GUI Builder'da tasarlama.
  • Projeyi derleme ve yükleme.
  • Arduino ana kontrolcüsünü programlama.
 

Projeyi GUI Builder'da Tasarlama

Başlamak için Smart Display GUI Builder'ın en güncel sürümünü açın ve yeni bir proje oluşturun. Proje adını girin; proje klasörü otomatik olarak seçilecektir.
Cihaz türünü, bu örnekte 7 inç cihazı, seçin ve haberleşme protokolü olarak "Custom CAN ID" seçeneğini belirleyin. Ekran yönü varsayılan olarak yatay modda ayarlanmıştır. Ardından boş bir kullanıcı arayüzü şablonu seçin ve Şekil 2'de gösterildiği gibi yeni projeyi oluşturmak için "Create" düğmesine tıklayın.

Şekil 2

Şekil 2

Boş proje oluşturulduktan sonra Şekil 3'te gösterilen ekran görüntülenecektir.

Şekil 3

Şekil 3

Bu demo için ikinci bir sayfa gereklidir. "Page" düğmesine ve ardından yeni bir sayfa eklemek için artı düğmesine tıklayın.

Şekil 4

Şekil 4

Arka plan stili "Resource" panelinden değiştirilebilir.

Şekil 5

Şekil 5

Arayüzün sağ tarafındaki "background" menüsünden istediğiniz arka plan stilini seçin.

Şekil 6

Şekil 6

Projeyi Derleme ve Yükleme

Arayüz tasarımı ve önceki adımlar tamamlandıktan sonra proje derlenmeye ve yüklenmeye hazırdır. "Device" düğmesine tıklayın ve "Device Property" seçeneğini belirleyin. Protokol ve baud rate ayarlarını kontrol edin ve gerektiğinde düzenleyin. GUI Builder'daki baud rate değerinin Arduino programında yapılandırılan baud rate değeriyle aynı olduğundan emin olun. Ayarları tamamladıktan sonra "Connect to Device" düğmesine tıklayın. Cihaz bağlantısı başarıyla kurulduktan sonra Şekil 7'de gösterildiği gibi projeyi yüklemek için "Upload" düğmesine tıklayın.

Şekil 7

Şekil 7

Projenin yüklenmesi tamamlandığında Şekil 8'de gösterildiği gibi "OK" düğmesine tıklayın.

Şekil 8

Şekil 8

Yükleme tamamlandıktan sonra Smart Display'de başlangıç ekranı görüntülenir. Bu ekran Şekil 9'da gösterilmektedir.

Şekil 9

Şekil 9

Ardından Smart Display, başlangıç ekranından proje sayfasına geçer. Bu, projenin GUI Builder üzerinden başarıyla derlendiğini ve yüklendiğini gösterir. Proje sayfası Şekil 10'da gösterilmektedir.

Şekil 10

Şekil 10

Arduino Host'u Programlama

mcp2515_can.h kütüphanesi Custom CAN ID haberleşmesi için, SPI.h kütüphanesi ise Serial Peripheral Interface (SPI) haberleşmesi için kullanılır. mcp2515_can.h kütüphanesi, gömülü sistemlerde yaygın olarak kullanılan MCP2515 CAN (Controller Area Network) denetleyicisi ile haberleşmeyi sağlar.

Bu kütüphane; MCP2515'in başlatılması, bit hızı, filtreler ve maskeler gibi CAN haberleşme parametrelerinin yapılandırılması, CAN mesajlarının gönderilip alınması ve hata kontrolü için gerekli işlevleri sağlar. Arduino IDE programında CAN haberleşmesi için gerekli ayarlar, Şekil 11'de gösterilen kodda tanımlanmıştır. Bunlar CAN ID, kontrol parametreleri ve ilgili değişkenleri içerir. Bu kod bölümü ayrıca programın ilerleyen aşamalarında kullanılacak global değişkenleri, sabitleri ve dizileri ilgili veri türleriyle birlikte başlatır.

Şekil 11

Şekil 11

Bu kod bölümü, program başladığında bir kez çalışan setup() fonksiyonunu içerir. Serial.begin(), Serial Monitor ile seri haberleşmeyi 115200 baud hızında başlatır. Dahili LED pini pinMode() kullanılarak çıkış, fiziksel buton pini ise giriş olarak yapılandırılır. Ardından MCP2515 CAN denetleyicisini başlatmak için bir while döngüsü kullanılır ve CAN.begin(), CAN bit hızını 250 kbps olarak ayarlamak üzere CAN_250KBPS parametresiyle çağrılır.

Şekil 12

Şekil 12

changePageFunction() fonksiyonu, belirli veri baytlarını içeren CAN mesajlarını MCP2515 üzerinden göndererek Smart Display'deki sayfalar arasında geçiş yapılmasını sağlar. Fonksiyon önce Smart Display'i yapılandırma moduna almak için bir "device mode" komutu gönderir. Ardından istenen sayfa numarasını içeren bir "change page" komutu gönderilir. Son olarak Smart Display'i yeniden görüntüleme moduna almak için bir "device mode" komutu daha gönderilir.

Şekil 13

Şekil 13

Bu kod bölümü, setup() fonksiyonu tamamlandıktan sonra sürekli olarak tekrarlanan loop() fonksiyonunu içerir.
Program, analogRead() kullanarak fiziksel butonun gerilim değerini okur ve bu değeri buttonValue değişkeninde saklar. buttonValue değeri THRESHOLD değerinden büyükse fiziksel butonun basıldığı kabul edilir. Program daha sonra nowPage değişkeninin değerini 1 artırır ve sprintf() ile Serial.println() kullanarak mevcut nowPage değerini Serial Monitor'a gönderir.
Ardından mevcut nowPage değeri changePageFunction() fonksiyonuna aktarılır ve belirtilen görüntüleme sayfasına geçilir. nowPage değeri 0 değilse digitalWrite() ile 13 numaralı pindeki dahili LED açılır; aksi durumda LED kapatılır. lastDebounce değişkeni, son butona basılma zamanını kaydetmek amacıyla millis() kullanılarak mevcut zamanla güncellenir. Program, fiziksel buton bırakılana kadar while döngüsü içinde buttonValue değerini sürekli olarak okur.
Son olarak, CAN bus mesajlarının uygun zaman aralıklarıyla gönderilmesini sağlamak amacıyla döngünün sonunda delay(100) ile 100 ms'lik bir gecikme uygulanır.

Şekil 14

Şekil 14

Daha fazla ayrıntı için Arduino koduna bakabilirsiniz. Host ile Smart Display arasında haberleşme kurulurken ilgili CAN haberleşme ayarlarının doğru şekilde yapılandırıldığından emin olun. Host ile Smart Display arasındaki haberleşme hakkında daha fazla bilgi için GUI Builder'daki haberleşme kayıtlarını inceleyebilirsiniz.

Program Arduino IDE'de başarıyla doğrulanıp yüklendikten sonra, fiziksel buton kullanılarak görüntüleme sayfaları arasında geçiş yapılabilir. Smart Display ilk sayfayı gösterirken LED kapalı kalır. Fiziksel butona basıldığında ekran ikinci sayfaya geçer ve LED yanar. Bu durum Şekil 15'te gösterilmektedir.

Şekil 15

Şekil 15

Böylece Custom CAN ID üzerinden Smart Display sayfaları arasında geçiş yapma uygulaması tamamlanmış olur.

Programı, demo videosunu ve ilgili kaynakları indirmek için GitHub proje sayfasına başvurabilirsiniz. Gerçek donanım kurulumu Şekil 16'da gösterilmektedir.

Şekil 16

Şekil 16

Sonuç

Bu örnekte, MCP2515 CAN denetleyicisine sahip bir Arduino kartı kullanılarak Custom CAN ID üzerinden Smart Display sayfalarının nasıl değiştirileceği gösterilmiştir. Arduino host, fiziksel butondan gelen giriş sinyalini okur ve görüntüleme sayfaları arasında geçiş yapmak için MCP2515 üzerinden Smart Display'e CAN komutları gönderir.

Bu örnek sayesinde geliştiriciler, Arduino host ile Smart Display arasındaki Custom CAN ID haberleşmesi ve kontrolü hakkında temel bilgi edinebilir ve bu yapıyı diğer Smart Display CAN haberleşme 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.