# Problema com arduinos mestre/escravo com RS485 e comunicação com Node-RED

**URL:** <https://forum.fazedores.com/t/problema-com-arduinos-mestre-escravo-com-rs485-e-comunicacao-com-node-red/10115>\
**Category:** Arduino\
**Created:** [Junho 5, 2025, 2:28pm UTC](https://forum.fazedores.com/t/problema-com-arduinos-mestre-escravo-com-rs485-e-comunicacao-com-node-red/10115 "2025-06-05T14:28:37Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![RafaelRo7](https://avatars.discourse-cdn.com/v4/letter/r/9de0a6/32.png) [@RafaelRo7](https://forum.fazedores.com/u/RafaelRo7)\
**Post date:** [Junho 5, 2025, 2:28pm UTC](https://forum.fazedores.com/t/problema-com-arduinos-mestre-escravo-com-rs485-e-comunicacao-com-node-red/10115/1 "2025-06-05T14:28:37Z")

</div>

Estou fazendo um armário inteligente utilizando Node-RED para elaborar o programa e um arduino mega mestre para controlar outros arduinos como escravos que serão responsáveis por abrir as gavetas, além dos relés e solenoides envolvidos no projeto.

Quando estava usando apenas um arduino como protótipo o projeto funcionava certinho, agora que estou acrescentando mais arduino e a comunicação RS485 estou com problemas para funcionar, e nunca fiz nada com esse tipo de comunicação antes.  
Troquei o nó no Node-RED responsável por enviar o comando de qual gaveta abrir de um nó Arduino Out para Serial Out, alterei a function que antecede o nó e os códigos dos arduinos, pesquisei como deveria fazer a ligação dos MAX485 e repliquei igualmente. Fiz algum testes com multímetro e tudo parece normal, mas quando tento enviar o comando de abrir a gaveta nada acontece, alguém poderia me ajudar? Aceito novas abordagens também!

Abaixo os códigos dos arduinos, function e as ligações dos equipamento:

Código Arduino Mestre:  
"#include \<SimpleModbusMaster.h\>

#define MAX485\_CONTROL 2  
#define NUM\_ESCRAVOS 8

Packet packets[NUM\_ESCRAVOS];  
unsigned int modbus\_array[NUM\_ESCRAVOS];

void preTransmission() {  
digitalWrite(MAX485\_CONTROL, HIGH);  
}

void postTransmission() {  
digitalWrite(MAX485\_CONTROL, LOW);  
}

void setup() {  
Serial.begin(9600);  
pinMode(MAX485\_CONTROL, OUTPUT);  
digitalWrite(MAX485\_CONTROL, LOW);

```
// Configuração do ModbusMaster
modbus_configure(&Serial, 9600, SERIAL_8N1, 1000, 200, 3, MAX485_CONTROL, packets, NUM_ESCRAVOS, modbus_array);

```

}

void loop() {  
modbus\_update();

```
if (Serial.available()) {
    String comando = Serial.readStringUntil('\n');

    if (comando.startsWith("ABRIR:") || comando.startsWith("FECHAR:")) {
        int ID_Arduino = comando.substring(6, 7).toInt();
        int Pino_Gaveta = comando.substring(8).toInt();

        if (comando.startsWith("FECHAR:")) {
            Pino_Gaveta = -Pino_Gaveta;
        }

        if (ID_Arduino >= 1 && ID_Arduino <= NUM_ESCRAVOS) {
            modbus_array[ID_Arduino] = Pino_Gaveta; 
        }
    }
}

```

}"

Código Arduinos Escravos:  
"#include \<SimpleModbusSlave.h\>

#define MAX485\_CONTROL 2  
unsigned int holdingRegs[2];  
void setup() {  
Serial.begin(9600);  
pinMode(MAX485\_CONTROL, OUTPUT);  
digitalWrite(MAX485\_CONTROL, LOW);

```
for (int i = 2; i <= 41; i++) {
    pinMode(i, OUTPUT);
}
modbus_configure(&Serial, 9600, SERIAL_8N1, 1, 2, 0, holdingRegs);

```

}

void loop() {  
modbus\_update(); // Processa mensagens Modbus

```
int comando = holdingRegs[1]; 

if (comando >= 2 && comando <= 41) { 
    digitalWrite(comando, HIGH);  
} 
else if (comando <= -2 && comando >= -41) { 
    digitalWrite(-comando, LOW); 
}

holdingRegs[1] = 0;

```

}"

Function antes do nó Serial Out:  
"var gavetas = {  
“B01.C31”: { ID\_Arduino: 1, Pino\_Gaveta: 5 }, //(Sim as gavetas são essas stings e não são enumeradas  
// Depois vou acrescentar as gavetas  
};  
var codigoGaveta = global.get(‘gaveta’);  
var acao = “ABRIR”;

if (gavetas[codigoGaveta]) {  
var ID\_Arduino = gavetas[codigoGaveta].ID\_Arduino;  
var Pino\_Gaveta = gavetas[codigoGaveta].Pino\_Gaveta;

```
var comando = acao + ":" + ID_Arduino + "," + Pino_Gaveta + "\n";

msg.payload = comando;
return msg;

```

} else {  
node.warn(“Código da gaveta não encontrado!”);  
return null;  
}"

Configuração Serial Out:

 ![image](https://us1.discourse-cdn.com/flex016/uploads/fazedores/original/2X/e/e4ceae123d4be552f32f698107fd48215d166700.png)

Ligações:

 ![WhatsApp Image 2025-06-05 at 11.21.48](https://us1.discourse-cdn.com/flex016/uploads/fazedores/original/2X/d/dfb2186180a9d5ff4045fbaee40f7dbdbe01633d.jpeg)  
 ![WhatsApp Image 2025-06-05 at 11.21.47 (1)](https://us1.discourse-cdn.com/flex016/uploads/fazedores/original/2X/d/de6267f443f79702eff4ab7a2d2294227da04342.jpeg)  
 ![WhatsApp Image 2025-06-05 at 11.21.47](https://us1.discourse-cdn.com/flex016/uploads/fazedores/original/2X/5/59710b2d5786281157d29ca657d02666cf1e0d76.jpeg)
