Smart Display prend en charge plusieurs protocoles de communication CAN, notamment CANopen et Custom CAN ID. CANopen est un protocole de communication standardisé qui définit des profils de communication, des profils d’équipements et des modèles d’objets pour différents types d’appareils. Il fournit ainsi une méthode standardisée pour configurer, surveiller et contrôler les équipements connectés à un bus CAN. En revanche, lorsque les équipements d’un bus CAN présentent des fonctions ou des exigences spécifiques qui ne peuvent pas être prises en charge par les protocoles standard existants, Custom CAN ID permet de définir la communication CAN en fonction des besoins de l’application et offre ainsi une plus grande flexibilité de configuration.
Cet article explique comment utiliser une carte Arduino, un module CAN bus et un capteur pour changer de page sur un Smart Display 7 pouces via Custom CAN ID. Il présente les composants matériels utilisés dans le projet, la compilation du programme Arduino ainsi que la mise en œuvre du changement de page sur le Smart Display à l’aide de Custom CAN ID.
Grâce à cette démonstration, les développeurs peuvent mieux comprendre la communication et le contrôle entre la carte Arduino, le module CAN bus et le Smart Display via Custom CAN ID, et s’appuyer sur cet exemple pour développer d’autres applications Smart Display utilisant la communication CAN.

Fig. 1 Schéma fonctionnel du système
Ce projet utilise une carte Arduino Mega 2560 comme contrôleur hôte et Arduino IDE v2.0.4 pour le développement du programme. Pour communiquer avec le Smart Display via l’interface CAN bus, l’hôte Arduino est équipé d’un shield CAN bus. Ce shield intègre un contrôleur CAN MCP2515 et un transceiver CAN MCP2551 afin d’assurer la communication CAN bus entre l’hôte Arduino et le Smart Display.
Cette application nécessite les composants suivants :
- Smart Display 7 pouces
- Arduino Mega 2560
- Shield CAN bus pour Arduino Mega 2560
- Dongle CAN bus
- Capteur à bouton-poussoir physique
- LED
- Smart Display GUI Builder v0.4.5 ou version ultérieure
Cette démonstration se déroule en trois étapes :
- Concevoir le projet dans GUI Builder.
- Compiler et charger le projet.
- Programmer l’hôte Arduino.
Concevoir le projet dans GUI Builder
Pour commencer, lancez la dernière version de Smart Display GUI Builder et créez un nouveau projet. Saisissez un nom de projet ; le dossier du projet sera sélectionné automatiquement.
Sélectionnez le type d’appareil, ici un modèle 7 pouces, puis choisissez "Custom CAN ID" comme protocole de communication. Par défaut, l’orientation de l’écran est définie en mode paysage. Sélectionnez ensuite un modèle d’interface utilisateur vierge et cliquez sur "Create" pour créer le nouveau projet, comme illustré à la Figure 2.

Fig. 2
Une fois le projet vierge créé, l’écran présenté à la Figure 3 s’affiche.

Fig. 3
Pour cette démonstration, une deuxième page est nécessaire. Cliquez sur "Page", puis sur le bouton plus pour ajouter une nouvelle page.

Fig. 4
Le style d’arrière-plan peut être modifié depuis le panneau "Resource".

Fig. 5
Sélectionnez le style d’arrière-plan souhaité dans le menu "background" situé à droite de l’interface.

Fig. 6
Compiler et charger le projet
Une fois la mise en page et les étapes précédentes terminées, le projet peut être compilé et chargé sur le Smart Display. Cliquez sur "Device", puis sélectionnez "Device Property". Vérifiez les paramètres du protocole et du débit en bauds, puis ajustez-les si nécessaire. Assurez-vous que le débit en bauds configuré dans GUI Builder correspond à celui défini dans le programme Arduino. Une fois les réglages terminés, cliquez sur "Connect to Device". Lorsque la connexion avec l’appareil est établie, cliquez sur "Upload" pour charger le projet, comme illustré à la Figure 7.

Fig. 7
Une fois le chargement du projet terminé, cliquez sur "OK", comme illustré à la Figure 8.

Fig. 8
Une fois le chargement terminé, l’écran de démarrage apparaît sur le Smart Display, comme illustré à la Figure 9.

Fig. 9
Le Smart Display passe ensuite de l’écran de démarrage à la page du projet, ce qui confirme que le projet a été correctement compilé et chargé via GUI Builder, comme illustré à la Figure 10.

Fig. 10
Programmer l’hôte Arduino
La bibliothèque mcp2515_can.h est utilisée pour la communication via Custom CAN ID, tandis que la bibliothèque SPI.h est utilisée pour la communication via l’interface Serial Peripheral Interface (SPI). La bibliothèque mcp2515_can.h permet de communiquer avec le contrôleur CAN (Controller Area Network) MCP2515, couramment utilisé dans les systèmes embarqués.
Cette bibliothèque fournit des fonctions permettant d’initialiser le MCP2515, de configurer les paramètres de communication CAN tels que le débit binaire, les filtres et les masques, d’émettre et de recevoir des messages CAN, ainsi que de détecter les erreurs. Dans le programme Arduino IDE, les paramètres nécessaires à la communication CAN sont définis dans le code présenté à la Figure 11, notamment l’ID CAN, les paramètres de contrôle et les variables associées. Ce segment de code initialise également les variables globales, les constantes et les tableaux nécessaires à la suite du programme, avec leurs types de données respectifs.

Fig. 11
Ce segment de code contient la fonction setup(), qui est exécutée une seule fois au démarrage du programme. Serial.begin() initialise la communication série avec le moniteur série à un débit de 115200 bauds. La broche de la LED intégrée est configurée en sortie à l’aide de pinMode(), tandis que la broche du bouton physique est configurée en entrée. Une boucle while est ensuite utilisée pour initialiser le contrôleur CAN MCP2515, et CAN.begin() est appelée avec CAN_250KBPS afin de régler le débit CAN sur 250 kbps.

Fig. 12
La fonction changePageFunction() envoie des commandes CAN via le MCP2515 afin de changer de page sur le Smart Display à l’aide de messages CAN contenant des octets de données spécifiques. La fonction envoie d’abord une commande "device mode" pour placer le Smart Display en mode de configuration, puis une commande "change page" avec le numéro de la page souhaitée. Enfin, elle envoie une nouvelle commande "device mode" afin de remettre le Smart Display en mode d’affichage.

Fig. 13
Ce segment de code contient la fonction loop(), qui s’exécute en continu une fois la fonction setup() terminée.
Le programme lit la valeur de tension du bouton physique à l’aide de analogRead() et l’enregistre dans la variable buttonValue. Si buttonValue est supérieure à la valeur THRESHOLD, le bouton physique est considéré comme actionné. Le programme incrémente alors la variable nowPage de 1 et affiche sa valeur actuelle dans le moniteur série à l’aide de sprintf() et Serial.println().
Le programme transmet ensuite la valeur actuelle de nowPage à changePageFunction() afin de passer à la page d’affichage spécifiée. Si nowPage est différent de 0, digitalWrite() allume la LED intégrée sur la broche 13 ; dans le cas contraire, la LED est éteinte. La variable lastDebounce est mise à jour avec l’heure actuelle à l’aide de millis() afin d’enregistrer le moment de la dernière pression sur le bouton. Le programme lit en continu buttonValue dans une boucle while jusqu’à ce que le bouton physique soit relâché.
Enfin, delay(100) introduit un délai de 100 ms à la fin de la boucle afin que les messages CAN bus soient transmis à un intervalle approprié.

Fig. 14
Pour plus de détails, reportez-vous au code Arduino. Lors de l’établissement de la communication entre l’hôte et le Smart Display, assurez-vous que les paramètres de communication CAN correspondants sont correctement configurés. Pour plus d’informations sur la communication entre l’hôte et le Smart Display, consultez le journal de communication dans GUI Builder.
Après avoir vérifié et chargé le programme avec succès dans Arduino IDE, il est possible de changer de page à l’aide du bouton physique. Lorsque le Smart Display affiche la première page, la LED reste éteinte. Une pression sur le bouton physique fait passer l’affichage à la deuxième page et allume simultanément la LED, comme illustré à la Figure 15.

Fig. 15
Cette étape termine la démonstration du changement de page du Smart Display via Custom CAN ID.
Pour télécharger le programme, la vidéo de démonstration et les ressources associées, consultez la page du projet GitHub. La configuration matérielle réelle est présentée à la Figure 16.

Fig. 16
Conclusion
Cet exemple montre comment utiliser une carte Arduino avec un contrôleur CAN MCP2515 pour changer de page sur un Smart Display via Custom CAN ID. L’hôte Arduino lit l’état d’un bouton physique et envoie des commandes CAN au Smart Display via le MCP2515 afin de passer d’une page d’affichage à une autre.
Grâce à cet exemple, les développeurs peuvent acquérir une compréhension de base de la communication et du contrôle entre un hôte Arduino et un Smart Display via Custom CAN ID. Cette mise en œuvre peut servir de référence pour le développement d’autres applications Smart Display utilisant la communication CAN.