Comunicação RS485 Arduino Aprenda a Comunicar 3 Arduinos Através da Comunicação Serial

Comunicação RS485 Arduino: Aprenda a Comunicar 3 Arduinos Através da Comunicação Serial

A Comunicação RS485 Arduino é uma forma de permitir que você crie uma comunicação com controladores lógicos programáveis em redes industriais, transmita dados por fios em até 1200 metros com até 32 dispositivos Arduinos ou qualquer outro com suporte à RS-485, isso de modo prático e com baixo custo.

Infelizmente, muitos usuários não conhecem a estrutura de comunicação utilizando o modo de RS-485. Várias pessoas ainda adotam o meio tradicional e utilizam uma comunicação ponto a ponto, ou seja, uma comunicação em que um Arduino transmite uma informação de um ponto A para um ponto B.

O grande problema de tudo isso é a limitação! Sua comunicação está restrita entre dois pontos, você não tem capacidade de transmitir dados em longas distâncias e utilizar protocolos industriais para transmitir entre dispositivos em rede com o Arduino. Essa é a verdade e você precisa ficar atento a tudo isso.

Essa é a melhor solução para esse problema!

Módulo Max485 para Comunicação RS485 Arduino

Módulo Max485 para Comunicação RS485 Arduino

 

A melhor forma de você evitar esse problema é aprender, agora mesmo, como utilizar a comunicação serial com o Circuito Integrado (CI) MAX485. Esse CHIP será capaz de te permitir realizar uma comunicação com outros dispositivos através de protocolos industriais. Entre os protocolos, podemos citar o MODBUS. Vamos entender o funcionamento desse circuito de comunicação?

Será que esse processo de comunicação é difícil? Será que você será capaz de comunicar dois ou mais Arduinos em rede? Onde podemos aplicar esse processo de comunicação?

Talvez, você está pensando que isso é difícil, mas eu te garanto: não é!

Se você está curioso e quer ter resposta para essas e outras perguntas, dê um passo à frente e vamos aprender como melhorar nossos sistemas de comunicação e abrir portas para novas aplicações/projetos.

Os seus projetos não serão os mesmos após você aprender como utilizar o chip MAX485 com o Arduino.

 

Módulo MAX485 para Comunicação RS485 Arduino

O módulo MAX485 é um circuito formado pelo CHIP MAX485. Veja a figura abaixo.

Chip Max485 para Arduino

Chip Max485 para Arduino

 

Esse CHIP é pequeno, mas ele é poderoso! Ele te dará a capacidade de comunicar com diversos Arduinos em rede e, até mesmo, com dispositivos industriais através de alguns protocolos de comunicação.

Você deve está com medo ou pensando que é difícil trabalhar com o circuito do chip MAX485, mas não é. Fique tranquilo! Já existe um módulo que é composto pelo chip e todo o circuito necessário para que ele funcione no seu projeto. Veja o módulo MAX485 apresentado na figura abaixo.

A estrutura desse módulo nos permite comunicar vários Arduinos em uma rede de comunicação. Você precisa aprender duas coisas: a primeira é aprender as ligações eletrônicas e a segunda é aprender a lógica de programação para enviar informações entre os vários dispositivos.

Te garanto uma coisa: Se você aprender a comunicar 2 Arduinos, você conseguirá se comunicar com 3, 4, 5 ou até 32 dispositivos!

 

O que é o Padrão de Comunicação RS-485?

O padrão de comunicação RS-485 é um meio físico, ou seja, é um arranjo de circuito físico por onde os dados trafegam entre os dispositivos industriais. Diversos protocolos utilizam esse padrão/meio físico para comunicação. Entre eles, destacamos o Protocolo Modbus.

Esse padrão tem uma característica muito interessante: ele é imune ao ruído/interferências eletromagnéticas. Além disso, ele é capaz de permitir várias formas de conexão entre os dispositivos. À essas formas de ligação, nós chamamos de topologia. Entre elas, nós destacamos a topologia de barramento, que é a utilizada pelo nosso projeto.

A seguir, veja como funcionam as conexões entre o Arduino e o Módulo MAX485.

 

Como funcionam as conexões do módulo MAX485?

Veja o circuito da Figura 3. Ele é o circuito que utilizaremos em nosso projeto. Você irá conectar um Arduino UNO aos 2 escravos da rede de comunicação.

Circuito do Projeto Comunicação RS485 Arduino

Circuito do Projeto Comunicação RS485 Arduino

O circuito do Arduino UNO possui dois botões. O botão A é responsável por ligar e desligar uma carga conectada no Arduino Nano. Já o botão B faz o mesmo processo; porém liga uma carga conectada no Arduino Mega.

O Arduino UNO envia essas informações para outros escravos da rede através da comunicação serial.

Para isso utilizamos o módulo RS-485. Esse módulo nos permite realizar a interligação e controle de comunicação entre os vários dispositivos em rede.

Para facilitar o seu entendimento veja como eles funcionam. Veja o módulo MAX485 apresentado na figura abaixo.

 

Os pinos de conexão do Módulo MAX485

Vamos, primeiramente, analisar os pinos DI, DE, RE e R0. Eles realizam o controle para transferir/receber dados entre um dispositivo e outro na rede de comunicação.

O DI e o R0 são, respectivamente, para você transferir os dados e receber os dados. Já os pinos DE e RE são utilizados para você selecionar o modo de funcionamento do módulo. Ora ele pode ser habilitado para transferir, ora para receber dados dos outros dispositivos.

Os pontos DE e RE são conectados entre si e ligados em um pino de controle digital do Arduino.

No outro lado temos os pinos VCC, A, B e GND. Esses 4 pinos são utilizados para alimentar o módulo (VCC e GND) e para transferir e receber os dados entre os dispositivos interconectados (A e B).

Pino A deve se conectar a todos os pinos A dos outros módulos. Esse mesmo processo deve ser feito para o pino B.

É através desses dois fios (A e B) que a informação percorrerá de um módulo para outro com níveis de tensão do MAX485.

Utilizar essa comunicação te traz ótimas vantagens, como:

  • Redução de interferências no sinal transmitido;
  • Permite a comunicação com até 32 dispositivos em rede;
  • Transmite dados a uma distância de até 1200 m entre os dispositivos.

Agora, te convidamos a colocar tudo isso em prática de uma forma simples e fácil.

O projeto desenvolvido consiste em controlar o LED de cada escravo a partir de comandos enviados pelo mestre. Estamos utilizando um LED, mas você pode substituí-lo por um relé, por exemplo, e acionar outras cargas.

Faremos a programação de um jeito simples, de um modo que possa te ajudar a compreender o processo de comunicação serial e desenvolver seus primeiros projetos com esse módulo.

O projeto da programação tem duas partes importantes: a programação do mestre e a dos escravos.

A seguir apresentamos as duas lógicas de programação.

 

Programação do Dispositivo Mestre — Arduino UNO.

A lógica completa é apresentada abaixo.  Nas linhas 1 e 2 foram definidos os pinos para controle do LED e do pino de habilitação da transferência e recepção de dados no módulo RS485 (Pinos 13 e 2). Depois disso fizemos a declaração das variáveis que serão utilizadas para contar a quantidade de vezes que os botões são pressionados e seus estados.

Na função setup fizemos a inicialização da comunicação serial, a configuração dos pinos digitais como entrada/saída digital e, por fim, colocamos o pino EnTxPin para nível lógico alto. Nesse estado o módulo fica configurado como transmissor de dados.

Em toda a execução da lógica iremos permanecer o pino nesse estado lógico, pois o mestre funcionará apenas como transmissor de dados.

Após isso temos a função principal void loop. É nela que realizamos todo o processo de transmissão de dados para controle das placas. Veja a explicação a seguir.

 

Lógica de controle na função void loop – Mestre

Nas linhas 1 e 2 realizamos a leitura dos botões de controle para comandar os LEDs dos 2 escravos no projeto Comunicação RS485 Arduino. Veja a estrutura de conexão dos botões na figura abaixo.

Botões de controle e comando do Arduino Mestre.

A lógica de controle é simples, veja a seguir. O sistema realiza a contagem da quantidade de vezes que os botões são pressionados. Quando o botão da placa A é pressionado 1 vez o sistema liga o LED da placa escravo A. Se ele for pressionado outra vez o sistema desliga o LED e zera a contagem, para iniciar tudo novamente. Esse processo é igual para o botão B.
Veja a lógica de controle na porção de código abaixo.

Observe a lógica para o primeiro botão e veja que ela é muito simples. Nosso objetivo não foi criar uma estrutura complexa para uma mensagem de controle. Na verdade, implementamos algo simples para te ajudar a entender e criar a comunicação com as placas.

Envio de comandos com a placa do Arduino Mestre no Projeto

 

Comunicação RS485 Arduino

Quando você pressionar o botão 1 o Arduino mestre enviará o caractere I para acionar o LED da placa escravo 1. Essa informação chegará nas duas placas e irá ativar o LED do escravo 1, apenas. Isso acontece porque o escravo 1 é o responsável por conhecer esse comando.

Após pressionar o botão outra vez, o escravo 1 deve desligar o LED. Nesse caso o valor da contagem será igual a 2 e o escravo envia o caractere J, que é responsável por desligar o LED.

O algoritmo de controle do escravo 1 é igual para o escravo 2. A única diferença é que ao pressionar o botão 2, o mestre 2 envia o caractere K para ligar e L para desligar o LED do escravo 2. Veja a porção de código abaixo.


Novamente, deixo claro para você: esses caracteres chegarão nas duas placas, mas apenas a placa 2 reconhecerá, porque sua lógica está implementada para reconhecer os caracteres K e L. As duas placas recebem esses caracteres, porque os dois módulos estão conectados em paralelo na rede de comunicação. É por isso que ocorre o efeito de recepção simultânea de caracteres nas duas placas.

Agora que você entendeu o processo de transmissão de dados para controle dos escravos, chegou a hora de entender como os escravos recebem esses dados.

 

Programação do Dispositivo Escravo — Arduino NANO e MEGA.

A lógica de controle é igual para os dois escravos. A única diferença é nos caracteres de controle, pois o escravo 1 utiliza o I e o J, enquanto que o escravo 2 utiliza o K e o L.
Abaixo apresentamos a lógica de controle para o escravo 1. No código abaixo, inicialmente, você deve realizar a configuração do direcionamento dos pino de controle do max485 como saída digital. Depois disso você precisa colocar o pino para nível lógico baixo.
Esse estado irá configurar o módulo para funcionar no modo de recepção de dados.

Agora, vamos entender a função void loop.

 

A função void loop do código do Arduino escravo

Na função void loop você deve verificar quando há a disponibilidade de um dado na serial. O sistema faz a leitura e armazena o dado na variável botao. Em seguida precisamos verificar se o caractere lido é o I ou J. Caso seja o J o LED será desligado, caso contrário, o LED será ligado.

A figura abaixo mostra o LED acionado após receber o caractere para acionar o LED.

Comunicação RS485 Arduino: LED do escravo acionado após o comando recebido.

Comunicação RS485 Arduino: LED do escravo acionado após o comando recebido.

O código é relativamente simples e é o mesmo utilizado para a placa do escravo 2. A única diferença está nos caracteres de controle para ligar e desligar o LED. Para o escravo 2 utilizamos os caracteres K e L.

Veja o código abaixo.

Como você pode ver no Projeto Comunicação RS485 Arduino, a partir desses códigos, ampliar a comunicação para até 31 escravos. Uma outra possibilidade é, por exemplo, implementar uma comunicação com outros dispositivos em rede, como: controladores lógicos programáveis, ESP8266 e muitos outros.
Dessa forma, você conseguirá criar aplicações mais complexas e com mais recursos para os seus projetos.
Você gostou desse projeto e deseja continuar criando novas ideias a partir dele?

Finalmente, chegou a hora de você deixar suas dúvidas para que possamos te responder e te ajudar.

Categorias
ArduinoProjetos

Técnico em Automação Industrial e graduando do curso de Tecnologia em Mecatrônica Industrial pelo Instituto Federal do Ceará. E, atualmente, trabalha como desenvolvedor de projetos, sistemas inteligentes e criador de conteúdo por meio da empresa Silícios Lab para o seu canal e para o blog da UsinaInfo. Nas horas livres, desenvolve alguns projetos com Microcontroladores e Arduino.
2 Número de Comentários
  • Luiz Carlos Baron
    21 janeiro 2022 at 15:46
    Deixe seu Comentário

    Só para contribuir. Existe um erro na ligação em ralação à programação (da primeira foto, feita no software fritzing), faltou conectar o pino 2 dos microcontroladores aos pinos DE/RE para poder habilitar/desabilitar a transmissão e a recepção. Na programação a variável “EnTxPin”, relacionada ao pino 2, faz esse controle.
    Na foto da montagem prática deu para ver essa conexão.

  • Leonardo
    24 fevereiro 2024 at 22:43
    Deixe seu Comentário

    Parabéns Diego!!!

  • Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados