Ceci est le premier article d’une série qui présente les étapes qui ont amené à l’aboutissement du projet.
Dans le cadre de la transition vers le LED dans le théâtre où je travaille, nous avons décidé de remplacer les PC halogènes de l’éclairage du public par des Robe ParFect 150™ RGBW.
Ces appareil disposent de 2 modes DMX :
| Canaux DMX (mode 2) | Fonctions |
|---|---|
| 1 | Power / Special functions |
| 2 | Virtual colour wheel |
| 3 | Red |
| 4 | Green |
| 5 | Blue |
| 6 | White |
| 7 | CTC |
| 8 | Colour Mix control |
| 9 | Zoom |
| 10 | Shutter/ strobe |
| 11 | Dimmer intensity |
Tous ces appareils sont installé de façon permanente pour éclairer la salle lors des représentations.
Nous accueillons régulièrement des spectacles avec des techniciens qui viennent avec leurs propres consoles. Celles-ci n’ont pas toujours le bon Device dans leur librairie. Et même quand c’est le cas, il faut patcher 15 Parfect et assigner le zoom correct à chaque machine.
Parfois, certaines consoles n’ont qu’une ou deux sorties DMX et l’éclairage de la salle « mange » 165 canaux à lui tout seul.
Pour réduire considérablement le nombre de paramètres et de canaux à gérer, nous avons construit un « Pont DMX Arduino » qui réalise les tâches suivantes :

Voici le tableau des reports des valeurs pour le premier Parfect :
| Canal DMX | Fonction | Valeur Envoyée | Source | Explication |
|---|---|---|---|---|
| 1 | Power / Special | 0 | Valeur fixe | Non utilisé (défaut : 0) |
| 2 | Virtual Colour Wheel | 0 | Valeur fixe | Désactivé, car la couleur est gérée via RGBW (défaut : 0) |
| 3 | Rouge (R) | Dépend de la couleur | Menu OLED | Défini selon la couleur choisie (ex. : Light Amber → 223) |
| 4 | Vert (G) | Dépend de la couleur | Menu OLED | Idem |
| 5 | Bleu (B) | Dépend de la couleur | Menu OLED | Idem |
| 6 | Blanc (W) | Dépend de la couleur | Menu OLED | Idem |
| 7 | CTC (Correct. Temp.) | 0 | Valeur fixe | Non utilisé (défaut : 0) |
| 8 | Color Mix Control | 45 | Valeur fixe | Obligatoire : active le mode « Addition » (Virtual + RGBW) (défaut : 45) |
| 9 | Zoom | 200 | Valeur fixe (défini en dur) | Zoom spécifique (« écrit en dur » dans le code) attribué à chaque projecteur |
| 10 | Shutter / Strobe | 32 | Valeur fixe | Shutter ouvert (défaut : 32) |
| 11 | Dimmer | Repris du premier canal DMX IN | DMX IN : Canal 1 ou 2 | L’intensité est pilotée par la console via le canal d’entrée DMX 1 ou 2 (parterre ou balcon) |
Pour commencer, nous avons testé une configuration gérée par un Arduino Nano connecté à une carte « MAX485 Module RS-485 TTL« .


Connecté sur les Pins du Arduino Nano, la carte MAX485 Module RS-485 TTL n’a pas fonctionné pour du DMX car le MAX485 n’est pas totalement compatible avec les exigences du protocole DMX512.
Le DMX nécessite des transceivers capables de gérer des tensions et des vitesses spécifiques, avec une meilleure tolérance aux longues distances et aux interférences.
Le MAX485 (conçu pour du RS-485 standard) semble souvent rencontrer des problèmes de fiabilité en DMX, notamment des pertes de signal ou des erreurs de transmission.
Transmission via GPIO : Les pins numériques (GPIO) de l’Arduino Nano ne sont pas optimisés pour gérer des signaux aussi rapides et précis que ceux exigés par le protocole DMX512.
Transmission via Bus Série (TX/RX) : L’Arduino Nano ne dispose que d’un seul bus série matériel (UART). Or, le protocole DMX nécessite une communication asynchrone stricte, indépendante en entrée (DMX IN) et en sortie (DMX OUT).
Problème : Avec un seul UART, il est impossible de gérer simultanément :



Bien que la puce MAX13487 de la carte DSD TECH SH-U12 soit compatible avec les spécifications du protocole DMX512 (notamment le débit à 250 kbps), plusieurs facteurs expliquent l’absence de signal DMX valide :

Pour ce projet, nous avons utilisé une carte AZ-MEGA2560 (clone Arduino MEGA avec ATmega2560).
Voici pourquoi :



Le CQRobot DMX Shield est une solution clé en main pour intégrer le protocole DMX512 à un projet Arduino. Voici ses principaux avantages :
http://www.cqrobot.wiki/index.php/DMX_Shield_for_Arduino_SKU:_AngelDFR0260US
Le protocole DMX impose de choisir entre maître (OUT) et esclave (IN), or la plupart des librairies Arduino ne permettent pas de gérer ces deux rôles simultanément. Modifier une librairie pour combiner ces fonctions serait complexe, risqué et peu pérenne.
La solution la plus simple et fiable consiste à utiliser deux librairies complémentaires :
Pour que les deux cohabitent, il faut exploiter les deux ports série matériels (UART0 et UART1) disponibles sur l’Arduino MEGA :
Astuce importante :Par défaut, DMXSerial utilise UART0. Il faut activer une option cachée pour basculer sur UART1 :
DMXSerial_avr.h de la librairie.#define USE_DMXSERIAL_PORT1.Ordre de déclaration dans le code :
En résumé :
L’usage combiné de Conceptinetics (OUT) et DMXSerial (IN), chacun sur un UART dédié, offre une solution propre et efficace pour gérer à la fois la lecture et l’écriture DMX sur Arduino MEGA, sans réécrire de librairies complexes.

10 mois ago ·
Bonjour, bravo pour ce projet. Je gère l’éclairage dans un petit studio et j’ai un besoin semblable. Pourriez-vous partager le schéma de connexion et la configuration des jumpers du MAX485 vers l’arduino MEGA ainsi que votre code ? Un grand merci !