Startseite Lösungen Seitenwechsel am Smart Display über Custom CAN ID mit Arduino steuern

Seitenwechsel am Smart Display über Custom CAN ID mit Arduino steuern

Aug 26, 2023

Einführung

Smart Display unterstützt mehrere CAN-Kommunikationsprotokolle, darunter CANopen und Custom CAN ID. CANopen ist ein standardisiertes Kommunikationsprotokoll, das Kommunikationsprofile, Geräteprofile und Objektmodelle für verschiedene Gerätetypen definiert und damit einen standardisierten Ansatz zur Konfiguration, Überwachung und Steuerung von Geräten an einem CAN-Bus bietet. Wenn Geräte am CAN-Bus hingegen über spezifische Funktionen oder Anforderungen verfügen, die von bestehenden Standardprotokollen nicht abgedeckt werden, kann mit Custom CAN ID die CAN-Kommunikation entsprechend den Anforderungen der jeweiligen Anwendung definiert werden. Dies ermöglicht eine höhere Flexibilität bei der Konfiguration.

Dieser Artikel beschreibt, wie sich mit einem Arduino-Board, einem CAN-Bus-Modul und einem Sensor die Seiten eines 7-Zoll-Smart Displays über Custom CAN ID umschalten lassen. Behandelt werden die im Projekt verwendeten Hardwarekomponenten, die Kompilierung des Arduino-Programms sowie die Umsetzung der Seitenumschaltung am Smart Display mithilfe von Custom CAN ID.

Anhand dieses Beispiels können Entwickler die Kommunikation und Steuerung zwischen Arduino-Board, CAN-Bus-Modul und Smart Display über Custom CAN ID besser nachvollziehen und die Umsetzung als Referenz für die Entwicklung weiterer Smart-Display-Anwendungen mit CAN-Kommunikation nutzen.

Abb. 1 Systemblockdiagramm

Abb. 1 Systemblockdiagramm

In diesem Projekt wird ein Arduino Mega 2560 als Host-Controller verwendet. Die Programmentwicklung erfolgt mit Arduino IDE v2.0.4. Für die Kommunikation mit dem Smart Display über die CAN-Bus-Schnittstelle wird der Arduino-Host mit einem CAN-Bus-Shield verbunden. Das Shield verwendet einen MCP2515 CAN-Controller und einen MCP2551 CAN-Transceiver, um die CAN-Bus-Kommunikation zwischen dem Arduino-Host und dem Smart Display zu ermöglichen.

Für diese Anwendung werden folgende Komponenten benötigt:

  • 7-Zoll-Smart Display
  • Arduino Mega 2560
  • CAN-Bus-Shield für Arduino Mega 2560
  • CAN-Bus-Dongle
  • Physischer Tastensensor
  • LED
  • Smart Display GUI Builder v0.4.5 oder höher
 

Das Beispiel gliedert sich in drei Schritte:

  • Projekt in GUI Builder erstellen.
  • Projekt erstellen und hochladen.
  • Arduino-Host programmieren.
 

Projekt in GUI Builder erstellen

Starten Sie zunächst die aktuelle Version von Smart Display GUI Builder und erstellen Sie ein neues Projekt. Geben Sie einen Projektnamen ein; der Projektordner wird automatisch ausgewählt.
Wählen Sie den Gerätetyp aus, in diesem Beispiel ein 7-Zoll-Gerät, und legen Sie "Custom CAN ID" als Kommunikationsprotokoll fest. Die Displayausrichtung ist standardmäßig auf Querformat eingestellt. Wählen Sie anschließend eine leere UI-Vorlage aus und klicken Sie auf "Create", um das neue Projekt zu erstellen (Abb. 2).

Abb. 2

Abb. 2

Nach dem Erstellen des leeren Projekts wird die in Abb. 3 dargestellte Ansicht angezeigt.

Abb. 3

Abb. 3

Für dieses Beispiel wird eine zweite Seite benötigt. Klicken Sie auf "Page" und anschließend auf die Plus-Schaltfläche, um eine neue Seite hinzuzufügen.

Abb. 4

Abb. 4

Der Hintergrundstil kann im Bereich "Resource" geändert werden.

Abb. 5

Abb. 5

Wählen Sie im Menü "background" auf der rechten Seite der Benutzeroberfläche den gewünschten Hintergrundstil aus.

Abb. 6

Abb. 6

Projekt erstellen und hochladen

Nachdem das Layout und die vorherigen Schritte abgeschlossen sind, kann das Projekt erstellt und hochgeladen werden. Klicken Sie auf "Device" und wählen Sie "Device Property". Überprüfen Sie die Einstellungen für das Protokoll und die Baudrate und passen Sie diese bei Bedarf an. Stellen Sie sicher, dass die in GUI Builder eingestellte Baudrate mit der im Arduino-Programm konfigurierten Baudrate übereinstimmt. Klicken Sie nach Abschluss der Einstellungen auf "Connect to Device". Sobald die Verbindung zum Gerät erfolgreich hergestellt wurde, klicken Sie auf "Upload", um das Projekt hochzuladen (Abb. 7).

Abb. 7

Abb. 7

Klicken Sie nach Abschluss des Projekt-Uploads auf "OK" (Abb. 8).

Abb. 8

Abb. 8

Nach Abschluss des Uploads wird auf dem Smart Display der Startbildschirm angezeigt (Abb. 9).

Abb. 9

Abb. 9

Anschließend wechselt das Smart Display vom Startbildschirm zur Projektseite. Damit ist bestätigt, dass das Projekt über GUI Builder erfolgreich erstellt und hochgeladen wurde (Abb. 10).

Abb. 10

Abb. 10

Arduino-Host programmieren

Für die Kommunikation über Custom CAN ID wird die Bibliothek mcp2515_can.h verwendet, während die Bibliothek SPI.h für die Kommunikation über das Serial Peripheral Interface (SPI) zum Einsatz kommt. Die Bibliothek mcp2515_can.h ermöglicht die Kommunikation mit dem MCP2515 CAN-Controller (Controller Area Network), der häufig in Embedded-Systemen eingesetzt wird.

Die Bibliothek stellt Funktionen zur Initialisierung des MCP2515, zur Konfiguration von CAN-Kommunikationsparametern wie Bitrate, Filter und Masken, zum Senden und Empfangen von CAN-Nachrichten sowie zur Fehlerprüfung bereit. Im Arduino-IDE-Programm werden die für die CAN-Kommunikation erforderlichen Einstellungen im in Abb. 11 dargestellten Code definiert, darunter CAN-ID, Steuerparameter und zugehörige Variablen. Dieser Codeabschnitt initialisiert außerdem die später im Programm benötigten globalen Variablen, Konstanten und Arrays einschließlich der zugehörigen Datentypen.

Abb. 11

Abb. 11

Dieser Codeabschnitt enthält die Funktion setup(), die beim Start des Programms einmal ausgeführt wird. Serial.begin() initialisiert die serielle Kommunikation mit dem Serial Monitor bei einer Baudrate von 115200. Der Pin der integrierten LED wird mit pinMode() als Ausgang konfiguriert, während der Pin des physischen Tasters als Eingang konfiguriert wird. Anschließend wird der MCP2515 CAN-Controller in einer while-Schleife initialisiert. CAN.begin() wird mit CAN_250KBPS aufgerufen, um die CAN-Bitrate auf 250 kbps einzustellen.

Abb. 12

Abb. 12

Die Funktion changePageFunction() sendet über den MCP2515 CAN-Befehle, um mithilfe von CAN-Nachrichten mit bestimmten Datenbytes zwischen den Seiten des Smart Displays umzuschalten. Zunächst sendet die Funktion einen "device mode"-Befehl, um das Smart Display in den Konfigurationsmodus zu versetzen. Anschließend wird ein "change page"-Befehl mit der gewünschten Seitennummer gesendet. Abschließend sendet die Funktion erneut einen "device mode"-Befehl, um das Smart Display wieder in den Anzeigemodus zu versetzen.

Abb. 13

Abb. 13

Dieser Codeabschnitt enthält die Funktion loop(), die nach Abschluss der Funktion setup() fortlaufend ausgeführt wird.
Das Programm liest mit analogRead() den Spannungswert des physischen Tasters aus und speichert ihn in der Variablen buttonValue. Ist buttonValue größer als der Wert THRESHOLD, wird dies als Betätigung des physischen Tasters erkannt. Anschließend erhöht das Programm die Variable nowPage um 1 und gibt den aktuellen Wert von nowPage mithilfe von sprintf() und Serial.println() im Serial Monitor aus.
Danach übergibt das Programm den aktuellen Wert von nowPage an changePageFunction(), um zur angegebenen Displayseite zu wechseln. Ist nowPage ungleich 0, schaltet digitalWrite() die integrierte LED an Pin 13 ein; andernfalls wird die LED ausgeschaltet. Die Variable lastDebounce wird mithilfe von millis() mit der aktuellen Zeit aktualisiert, um den Zeitpunkt der letzten Tasterbetätigung zu erfassen. Innerhalb einer while-Schleife liest das Programm buttonValue kontinuierlich aus, bis der physische Taster losgelassen wird.
Abschließend fügt delay(100) am Ende der Schleife eine Verzögerung von 100 ms ein, sodass die CAN-Bus-Nachrichten in einem angemessenen Zeitintervall übertragen werden.

Abb. 14

Abb. 14

Weitere Einzelheiten finden Sie im Arduino-Code. Beim Aufbau der Kommunikation zwischen dem Host und dem Smart Display ist darauf zu achten, dass die relevanten CAN-Kommunikationseinstellungen korrekt konfiguriert sind. Weitere Informationen zur Kommunikation zwischen dem Host und dem Smart Display finden Sie im Kommunikationsprotokoll von GUI Builder.

Nachdem das Programm in Arduino IDE erfolgreich überprüft und hochgeladen wurde, können die Displayseiten über den physischen Taster umgeschaltet werden. Zeigt das Smart Display die erste Seite an, bleibt die LED ausgeschaltet. Durch Drücken des physischen Tasters wechselt die Anzeige zur zweiten Seite und die LED wird eingeschaltet (Abb. 15).

Abb. 15

Abb. 15

Damit ist die Demonstration der Seitenumschaltung des Smart Displays über Custom CAN ID abgeschlossen.

Das Programm, das Demo-Video und weitere zugehörige Ressourcen stehen auf der GitHub-Projektseite zur Verfügung. Der tatsächliche Hardwareaufbau ist in Abb. 16 dargestellt.

Abb. 16

Abb. 16

Fazit

Dieses Beispiel zeigt, wie sich mit einem Arduino-Board und einem MCP2515 CAN-Controller die Seiten eines Smart Displays über Custom CAN ID umschalten lassen. Der Arduino-Host erfasst den Eingang eines physischen Tasters und sendet über den MCP2515 CAN-Befehle an das Smart Display, um zwischen den Displayseiten umzuschalten.

Anhand dieses Beispiels erhalten Entwickler einen grundlegenden Einblick in die Kommunikation und Steuerung zwischen einem Arduino-Host und einem Smart Display über Custom CAN ID. Die Umsetzung kann als Referenz für die Entwicklung weiterer Smart-Display-Anwendungen mit CAN-Kommunikation dienen.

Haben Sie Fragen zu Displaylösungen für Ihr Unternehmen? Kontaktieren Sie uns!

Abonnieren

Erhalten Sie E-Mails mit den aktuellsten Neuigkeiten von Winstar

Kontaktieren Sie uns

Preis /Datenblatt/ Allgemeine Anfrage

Technischer Support

Kontaktieren Sie uns wegen technischer Informationen

go top
Kontakt
close

Wir schätzen Ihre Privatsphäre

Durch Klicken auf „Alle Cookies zulassen“ stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Navigation auf der Website zu verbessern, die Nutzung der Website zu analysieren und unsere Marketing- und Leistungsbemühungen zu unterstützen. Weitere Informationen zu diesem Thema finden Sie in unserer Richtlinie. Datenschutzrichtlinie

Wir schätzen Ihre Privatsphäre

Winstar und bestimmte Drittparteien verwenden Cookies auf www.winstar.com.tw. Die Einzelheiten zu den Arten von Cookies, ihrem Zweck und den beteiligten Drittparteien sind unten sowie in unserer Cookie-Richtlinie beschrieben. Klicken Sie auf „Alle zulassen“, um unserer Verwendung von Cookies zuzustimmen und die bestmögliche Erfahrung auf unseren Websites zu erzielen. Sie können auch Ihre Präferenzen festlegen oder Cookies ablehnen (mit Ausnahme der unbedingt erforderlichen Cookies).

Einwilligungspräferenzen verwalten

Immer aktiv
Notwendige Cookies

Diese Cookies sind unerlässlich, um Ihnen das Navigieren auf der Website zu ermöglichen und ihre Funktionen zu nutzen, wie z. B. das Festlegen Ihrer Datenschutzpräferenzen, das Einloggen oder das Ausfüllen von Formularen.

Analyse-Cookies

Diese Cookies, auch als „Statistik-Cookies“ bekannt, sammeln Informationen darüber, wie Sie eine Website nutzen, z. B. welche Seiten Sie besucht und auf welche Links Sie geklickt haben. Siehe Details.