Pilotage d'un projecteur DMX en arduino avec RS485

Bonjour,
Je viens a vos rencontres dans le but de savoir si la arduino uno était compatible avec le module RS485 de chez MikroElectronica. J'ai fait mes recherches sur internet et je n'ai malheuresement pas trouver de montage compatible mis-a-part le shield arduino pour les click boards je ne sais pas comment m'y prendre pour réaliser le câblage des liaisons séries sur la carte. En espérant que quelqu'un m'aide merci d'avance.

Normalement le RS 485 demande un module d'interface, car le standard électrique n'est pas compatible TTL. Mais... on doit pouvoir bidouiller en utilisant deux entrées / sorties de l'Arduino pour attaquer la paire différentielle, à condition de trouver la bibliothèque qui va bien, faute de quoi il faut refaire toute une couche de logiciel de transmission série. Si c'est pour une manip unitaire il vaut mieux acheter le module d'interface RS 485.

Bonjour

module RS485 de chez MikroElectronica ?

Sur ce forum il revient au demandeur d'aide de fournir un lien vers le matériel particulier pour lequel il demande de l'aide,

Bonjour,

Si tu nous donnais un lien vers ton module ce serait plus simple pour te répondre.
Pour connecter une interface RS485 sur le micro tu as trois signaux

  • RX à connecter sur TX
  • TX à connecter sur RX
  • direction (émission/réception) à connecter sur une sortie numérique

A connecter aussi le gnd et le 5V (ou 3.3V si interface 3.3V)

Tu peux utiliser soit une liaison série hard, soit une liaison serie avec SoftwareSerial

Attention: J'ai déjà eu une interface RS485 ou le marquage RX/TX était inversé et correspondait aux pins du micro.

Ok merci bien j'ai câbler tout ce que tu m'a dit de câbler je vais maintenant voir avec les librairies si sa fonctionne comme il faut mais tient pour la datasheet et désolé je suis depuis peu sur se forum je ne connais pas trop les règles en vigueur . RS485 click 5V - Breakout board for ADM485 transciever IC

Après beaucoup de tentative je n'arrive toujours pas a transmettre mes données sur le moniteur série qui est censé piloter un projecteur en DMX mais rien ne se passe à chaque fois, je ne sais pas quoi faire d'autre j'ai vue que le module RS485 était doter de broches maître-esclave, des idées de câblages? De codes pour vérifier ?

Je ne comprend pas ce que tu fais. Tu ne peux pas transmettre de données sur le moniteur série avec une interface RS485.
Mets ton câblage et ton code.

Je ne sais pas trop de quoi tu parles. Les interfaces RS485 ont une pin émission/réception, ou quelque fois une pin pour autoriser l'émission et une pin pour autoriser la réception.

. En réalité je ne sais pas trop de quoi je parle non plus je suis actuellement en stage et c'est mon maître de stage qui m'a demander de réaliser ca mais déjà je pense que le module click boutton n'est pas forcément adapter pour la programmation en dmx d'autant plus que nous n'avons pas le shield et que mon maitre de stage m'a fait passer sur une teensy 3.6 que je connais vaguement même si dans les grandes lignes c'est quasiment pareil que la arduino. Je ne peux malheureusement pas t'envoyer une photo de mon montage je n'ai pas de quoi le transmettre ni le temps car je vais bientôt partir .Et tu est sur qu'on ne peux pas transmettre sur le port série car dans c'est cas la continuer le projet avec ce matériel n'aurais aucun sens, mais en tout cas merci de ton aide. A oui et pour le maître esclave c'est car j'avais trouver une photo qui représenter en faite le shield arduino -_- .

Je n'ai pas dit qu'on ne pouvais pas transmettre sur le port série, mais qu'on ne pouvait pas transmettre sur le moniteur série avec une interface RS485 (à moins d'avoir une autre interface RS485 et une interface USB-série).

C'est cette phrase qui pose un problème de compréhension.
Le terme "Moniteur Série" représente quelque chose de bien précis : c'est l'interface console que l'IDE met à ta disposition pour envoyer des données sur l'écran de ton PC.

À quoi tu pensais quand tu parlais de moniteur série ?

Vers quoi tu veux envoyer des données ? Le DMX ? Par la liaison série avec Tx et Rx ?

Actuellement la liaison dite "série" consiste à garder le protocole de la RS232 mais pas ses niveaux électriques --> O/5 V au lieu de -18 V/+18 V

Pour la RS485 la même erreur de mélanger protocole et niveaux électriques n'a pas été recommencée. La RS485 ne concerne que les niveaux électriques.
Ce qui permet de choisir le protocole de transmission que l'on veut, mais il faut en choisir un.

Tu peux très bien conserver celui de la RS232 qui existe déjà dans les microcontrôleurs.
La conversion "série" vers Rs485 se fait avec des circuits intégrés spécialisés, la société Maxim est active sur le sujet et fournie une très bonne documentation.

À vérifier par Kamill mais je pense que ce serait le plus simple.

Quel est l'intérêt d'utiliser la RS485 dans ton projet ?

Tu aurais pu dire dès le début que c'est pour piloter un projecteur DMX.
Tu trouveras sans doute toutes les infos en faisant une recherche «arduino DMX»

Si seulement il ne suffisait que de ca pour résoudre ces problèmes, je travaillerais pour tomorrowland à l'heure qu'il est . En fait le problème dans tout ca c'est que je n'arrive pas a faire parvenir mes infos a mon projecteur j'ai compris le code la manière de programmer en DMX mais malgré cela ce foutu projecteur ne s'allume jamais je ne sais pas si c'est par rapport à mon câblage même si j'en doute (j'ai tout essayer) ou mon câble xlr. J'ai utilisé plein de bibliothèques différentes rien à y faire je posterais probablement mon montage et le code demain en espérant trouver une âme charitable qui aide l'amateur que je suis.

Bonjour a tous j'ai finalement régler mon problème qui était bien un problème de module, mais aussi de projecteur qui avais le DMX qui ne marchais pas -_-... bref j'ai donc utiliser le module RS485 MAX485. Le but de mon code était de piloter un projecteur DMX en même tant qu'un ruban LED, avec 5 bouton et à chaque changement d'état d'un bouton que le projecteur et le ruban prennent la couleur qui est définie sur le bouton ça donne donc ca. C'est compatible aux cartes teensy si certain se pose la question.

`#include <Adafruit_NeoPixel.h>
#include "Switch.h"
#include <DmxSimple.h>
#define N 5
const byte button1pin=0;
const byte button2pin=1;
const byte button3pin=2;
const byte button4pin=3;
const byte button5pin=4;

Switch button1 = Switch(button1pin,INPUT_PULLUP);
Switch button2 = Switch(button2pin,INPUT_PULLUP);
Switch button3 = Switch(button3pin,INPUT_PULLUP);
Switch button4 = Switch(button4pin,INPUT_PULLUP);
Switch button5 = Switch(button5pin,INPUT_PULLUP);

#define PIXEL_COUNT 7 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50
#define PIXEL_PIN 6
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban

void setup() {

DmxSimple.usePin(5);
DmxSimple.write(1,50);

strip.begin(); // Lance la connection
strip.show(); // Initialise toute les led à 'off'
Serial.begin(9600);

strip.setBrightness(100);

}
int RED[3] = {255, 0, 0}; // Couleur Rouge
int GREEN[3] = {0, 255, 0}; // Couleur Verte
int CYAN[3] = {0, 255, 255}; // Couleur Cyan
int YELLOW[3] = {255, 125, 0}; // Couleur Jaune
int ORANGE[3] = {255, 40, 0}; // Couleur Orange
int PURPLE[3] = {255, 0 , 255}; // Couleur Violette
int PINK[3] = {255, 0, 100}; // Couleur Rose
int BLUE[3] = {0, 0, 255}; // Couleur Bleu
int WHITE[3] = {255, 255, 255}; // Couleur Blanche
int OFF[3] = {0, 0, 0}; // Éteint

void allLeds(int COLOR)
{
for(int i = 0 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.show();
}

void loop() {
int i;
button5.poll();
if(button5.on()){
button1.poll();
if (button1.switched()) {allLeds(RED);
DmxSimple.write(2,255);
DmxSimple.write(3,0);
DmxSimple.write(4,0);}
button2.poll();
if (button2.switched()) {allLeds(GREEN);
DmxSimple.write(2,0);
DmxSimple.write(3,255);
DmxSimple.write(4,0);}
button3.poll();
if (button3.switched()) {allLeds(PURPLE);
DmxSimple.write(2,255);
DmxSimple.write(3,0);
DmxSimple.write(4,255);}
button4.poll();
if (button4.switched()) {allLeds(CYAN);
DmxSimple.write(2,0);
DmxSimple.write(3,255);
DmxSimple.write(4,255);}
}else {
button1.poll();
if (button1.switched()) {allLeds(PINK);
DmxSimple.write(2,255);
DmxSimple.write(3,0);
DmxSimple.write(4,100);}
button2.poll();
if (button2.switched()) {allLeds(YELLOW);
DmxSimple.write(2,255);
DmxSimple.write(3,125);
DmxSimple.write(4,0);}
button3.poll();
if (button3.switched()){ allLeds(WHITE);
DmxSimple.write(2,255);
DmxSimple.write(3,255);
DmxSimple.write(4,255);}
button4.poll();
if (button4.switched()) {allLeds(BLUE);
DmxSimple.write(2,0);
DmxSimple.write(3,0);
DmxSimple.write(4,255);}
}
}`