Projet réalisation d'un système pyrotechnique piloté par DMX

Bonjour,

Pour mon premier post, je vais vous présenter mon premier projet à base d'arduino qui consiste en une table de tir pyrotechnique 60 voies pilotée en DMX grâce à un ordinateur et un logiciel de régie lumière.

Mais je vais tout d'abord commencer par me présenter;
Je m'appelle Florian, j'ai 22 ans.
Dans la vie, je travaille comme technicien d'exploitation dans une entreprise dont je ne citerais pas le nom.
Les domaines dans lesquels je travaille sont l'électricité, la petite mécanique et l'automatisme au niveau industriel. Je peux donc vous aider ou conseiller dans ces domaines si besoin.

Je pratique également l'impression 3D, dommaine dans lequel je peux également vous apporter mon expérience

J'ai débuté sur arduino avec quelques programmes très basiques afin de me faire un peu le main sur le langage, la manière de fonctionner et étudier quelques fonctions.

Je vais maintenant vous présenter mon projet qui avance petit à petit mais qui doit encore faire un long chemin.

Besoin : créer une table de tir pyrotechnique permettant la mise à feu d'artifices de thêatre lors d'évènements (canons à confettis, chandelles d'intérieur...)

Mon cahier des charges :
Le système devra être pilotable pour mon logiciel de régie lumière (Daslight 4 pour les connaisseurs)
qui communique par le protocole DMX512 (RS485) grâce à une inferface USB/DMX avec mes jeux de lumière.

Le système comportera 60 lignes permettant donc l'usage de 60 produits différents, mais celui-ci commencera par 20 voies afin de rendre plus simple le projet qui évoluera par la suite.

L'adressage sera dans un premier temps fixe. Mais dans une future évolution, celui-ci sera paramettrable à l'aide de boutons +/- ainsi que d'un afficheur 7 segments/3digits

Le système comprendra également une fonction "test de lignes" qui ne sera cependant pas prise en compte par le microcontrôleur mais simplement grâce à des led

Suite à ce cahier des charges établi, j'ai donc choisi mon matériel :

Le coeur du système est une carte MEGA2560
La reception du signal sera faite par un module MAX485
La carte ne comportant pas assez de sorties et souhaitant en garder le plus possibles disponibles pour des futures évolutions, j'ai choisi de passer par des extension I2C de type MCP23017.
La mise sous tension finale des inflammateurs sera faite par 8 badeaux de 8 relais 5V

J'ai également des modules d'alimentation réglables de 3 à 12Vdc

Voici donc la première étape de mon projet :

Réalisation de la table avec seulement 20 voies, et donc sans modules I2C afin de faciliter la première programmation, n'ayant pas beaucoup d'expérience

Par simplicité, j'ai remplacé les relais par des leds pour mes tests

Actuellement, j'ai réalisé le cablage sur une breadboard de ma carte 2560, le module max 485 ainsi que les leds pour les tests

j'ai ensuite testé plusieurs programmes qui fonctionnent sauf pour la partie réception DMX

Ce post évoluera très prochainement et je vous tendrais informé de la suite

Bonne soirée à tous

joli projet ! Il me semble avoir vu passer un sujet sur le même thème il y a quelques mois mais je n'arrive pas à remettre la souris dessus...

Celui-ci ?
https://forum.arduino.cc/index.php?topic=533011.msg3635622#msg3635622

FlorianRachesboeuf:
Pour mon premier post, je vais vous présenter mon premier projet à base d'arduino qui consiste en une table de tir pyrotechnique 60 voies pilotée en DMX grâce à un ordinateur et un logiciel de régie lumière.

Bonjour
un topic un peu "ancien , mais pas trop vieilli 8)

Merci pour le partage de ces posts
J'étais passé sur l'un d'eux précédemment.

Malheureusement pour moi, je bloque sur l'étape de réception du DMX.

J'essaye de vous joindre le schéma de mon montage de tests ainsi que le programme que j'ai testé.
Si jamais quelqu'un connait ce protocole et son traitement par adruino en réception, je suis interessé

FlorianRachesboeuf:
Merci pour le partage de ces posts
J'étais passé sur l'un d'eux précédemment.

Malheureusement pour moi, je bloque sur l'étape de réception du DMX.

J'essaye de vous joindre le schéma de mon montage de tests ainsi que le programme que j'ai testé.
Si jamais quelqu'un connait ce protocole et son traitement par adruino en réception, je suis interessé

Il y a ici sur le forum un excellent specialiste du DMX que j'ai eu le plaisir de rencontrer perso
lire çà

Super.
Merci

Je vais éplucher le programme que j'ai trouvé sur son site afin de voir si je peux récupérer des information que j'aurais éventuellement oubliées dans mon programme de test.

A la fin de mes essais, je ferais un retour sur l'avancée actuelle avec schémas, programmes etc.. pour vous partager mon évolution

FlorianRachesboeuf:
Super.
Merci

Je vais éplucher le programme que j'ai trouvé sur son site afin de voir si je peux récupérer des information que j'aurais éventuellement oubliées dans mon programme de test.

A la fin de mes essais, je ferais un retour sur l'avancée actuelle avec schémas, programmes etc.. pour vous partager mon évolution

:grin:

T’inquiète , d’expérience , je sais que sur ce forum , il y a qq personnes qui savent faire "péter" des "trucs" en toute sécurité 8)

bonjour à tous,
sur mon site le code qu'il te faut est ici. Je te laisse regarder, la lib utilisé est DMX four universes.
Pour le test de ligne, tu vas trouver les infos chez sonelec.
A bientôt,
Jacques

Bonjour,

N'ayant pas de temps à accorder à mon projet pendant quelques jours, je mettrais ce post à jour prochainement.

Je vous remercie pour l'intérêt que vous portez à celui-ci et je remercie également les personnes qui ont contribué à son évolution.

Merci à Bouault également pour le partage de ton programme.
J'ai consulté celui-ci et j'ai commencé à travailler dessus.

Bonne semaine et bonne soirée à vous

Bonjour,

Suite à la leture afin de comprendre la fonctionnement du programme 16o/f cité dans les précédents messages, j'ai réalisé une petite modification (surpression des fonctions rattachées à l'arpdressboard, étant actuellement sur une adreese fixe), lors du test du programme, je me retrouve avec le message suivant :

" exit status 1
Erreur de compilation pour la carte Arduino/Genuino Mega or Mega 2560 "

Le programme précédent ainsi que ses librairies sont-elles compatibles avec la carte mega2560 ?

Voici le programme :
Ai-je peut-être fait une erreur ?

#include <lib_dmx.h>

#define default_adress (1)//adresse DMX par defaut
#define nbre_circuits (16)//
#define    DMX512     (0)  

// byte adress;
int adress;//debug 26/12/16 pour les adresses au delas de 255...

//////////////////////////PATCH////////////////////////////////////////////
byte output [16] = {3,5,6,13,12,9,10,11,2,8,14,15,16,17,18,19}; //les 16 sorties

#define bascule 127  //la valeur où passer de LOW à HIGH
///////////////////////////////////////////////////////////////////////

void setup(){

pinMode(4, OUTPUT);  //met la led verte (temoin) en output
bitWrite (PORTD,4,1);// equivalent a digitalWrite(led_temoin,HIGH);


for(int i=0;i<nbre_circuits;i++)//met les 16 sorties en output
  {
   pinMode(output [i], OUTPUT); 
  }
///////////////////////////////////////////////////////////////////////
ArduinoDmx0.attachRXInterrupt  (frame_received);
ArduinoDmx0.set_control_pin(7);    // Arduino output pin for MAX485 input/output control (connect to MAX485 pins 2-3) 
ArduinoDmx0.set_rx_address(adress);      // dmx start address
ArduinoDmx0.set_rx_channels(nbre_circuits);     // number of rx channels
ArduinoDmx0.init_rx(DMX512);        // starts universe 0 as rx, NEW Parameter DMX mode
}

void loop()
{
delay(500);//la led s'éteind apres 500ms sans reception DMX
bitWrite (PORTD,4,1);
} 

void frame_received(uint8_t universe) // cette boucle est executé à chaque réception d'une trame DMX
{
led_temoin ();//la led clignote si elle reçoit un signal DMX  

for(int i=0;i<nbre_circuits;i++)
 {
    if (ArduinoDmx0.RxBuffer[i]> bascule ){
      digitalWrite(output [i], HIGH);
    }
    else{
      digitalWrite(output [i], LOW);   
    }
 }
}

peux-tu editer ton message et mettre le programme entre balises code (icone</>) ? merci

moi je vois des erreurs au début, avec tes #define, il ne faut pas de () situ veux définir une valeur. là tu as défini le total avec les ()

et il y a sans doute d'autres erreurs, par exemple led_temoin ();//la led clignote si elle reçoit un signal DMX,ça sort d'où ça led_temoin ? ce n'est defini nulle part. et en plus il y aurait un espace en trop

mais ce n'est peut-être pas les seules erreurs,il faut que tu donnes les messages d'erreurs complets, ceux qui s'affichent en bas de la fenetre de l'éditeur.

FlorianRachesboeuf:
Bonjour,

Suite à la leture afin de comprendre la fonctionnement du programme 16o/f cité dans les précédents messages, j'ai réalisé une petite modification (surpression des fonctions rattachées à l'arpdressboard, étant actuellement sur une adreese fixe), lors du test du programme, je me retrouve avec le message suivant :

Bonsoir
Mets déjà ton code entre balises code
et dans les préférences de l'IDE (Fichier --->Préférences)
assure toi de çà

et recopie et poste l'intégralité des "erreurs"

même sans activer ces deux cases, ça en raconte déjà pas mal...

bricofoy:
même sans activer ces deux cases, ça en raconte déjà pas mal...

Bonsoir bricofoy
oui, nos réponses se sont croisées :grin:

Artouste:
Bonsoir bricofoy
oui, nos réponses se sont croisées :grin:

j'ai vu ça :stuck_out_tongue:

Bonsoir,

J'ai réédité mon précédent post avec les balises et j'ai activé les options dont Artouste fait référence.

Visblement il y a tellement d'erreurs que le message fait trop de caractères
Je vais essayer de comprendre un peu plus par moi même avant de vous soliciter
C'est en cherchant que l'on apprend

Merci pour votre aide

FlorianRachesboeuf:
Bonsoir,

J'ai réédité mon précédent post avec les balises et j'ai activé les options dont Artouste fait référence.

Visblement il y a tellement d'erreurs que le message fait trop de caractères
Je vais essayer de comprendre un peu plus par moi même avant de vous soliciter
C'est en cherchant que l'on apprend

Merci pour votre aide

Alors justement ! Commence par ne pas les activer, en général ça en raconte bien assez par défaut pour trouver les erreurs. Et si vraiment il reste des choses étranges tu pourras toujours le remettre