Tutorial: Shield RS485 e Conversor USB/RS485 com Arduino e SCADABR

Adquira estes componentes na Loja do Lab de Garagem

O shield contém um chip transceiver RS485 que faz o trabalho de conversão dos dados de TTL para RS485 e vice versa, LEDs para indicar o fluxo do tráfego na rede, bornes para ligar os cabos do barramento da rede, jumpers para selecionar uso de resistores de terminação e bias da rede e jumpers para escolher entre usar uma porta de comunicação serial física do ATmega do Arduino ou usar uma porta soft serial. Para a comunicação pela hard serial (HS) são utilizados os pinos digitais 0 e 1 do Arduino. Para a comunicação usando soft serial (SS) são usados os pinos digitais 2 e 3 do Arduino. O pino digital 6 é usado para comutação entre os modos de transmissão e recepção do transceiver do shield.

O conversor USB/RS485 usa o chip FT232RL para criar um dispositivo serial em qualquer microcomputador (porta COM) que pode ser acessada pelo usuário ou programas. O conversor também possui o mesmo circuito do transceiver RS485 com os jumpers, resistores, LEDs e bornes presente no shield.

Função dos Jumpers do Shield e do conversor:

  • JP1 - Liga ou desliga o resistor de pull up do barramento;

  • JP2 - Liga ou desliga o resistor de terminação do barramento;

  • JP3 - Liga ou desliga o resistor de pull down do barramento;

  • JP4 - Seleciona o RX da HS ou da SS;

  • JP5 - Seleciona o TX da HS ou da SS.

Observações:

  • JP1 e JP3 só podem ser ligados em um único dispositivo da rede e devem ser selecionados igualmente, os dois abertos ou os dois fechados.

  • JP2 só pode estar ligado se o dispositivo estiver em uma das duas extremidades do barramento, devendo obrigatoriamente ficar desligado quando estiver no meio da rede.

  • JP4 e JP5 devem ser selecionados igualmente, ou para HS ou para SS.

  • JP4 e JP5 não podem estar ligados em HS durante o upload de um sketch para o Arduino.

  • Os Pinos Digitais 0 e 1, ou 2 e 3 e o pino 6 não poderão ser utilizados por outro periférico.

  • O upload de um sketch sempre deve ser feito pelo canal USB nativo do Arduino, não sendo possível fazer-lo pela rede RS485.

Características técnicas

  • O Kit atende a norma Standard EIA RS-485 Physical media.

  • Opera com qualquer protocolo de comunicação serial com suporte a RS485 como o protocolo MODBUS RTU entre outros.

  • Taxa de transmissão suportada de 4800bps a 115200bps.

  • Topologia de rede ponto a ponto, ou multi-ponto com cabo de par trançado.

  • Modo de operação balanceado diferencial half duplex.

  • Até 32 dispositivos são suportados na mesma rede.

  • Comprimento máximo do cabo da rede de 1200m (4000 pés).

  • Níveis de tensão no barramento RS485 de -7 V a +12 V. Mark (1) tensões positivas (B-A > +200 mV) Space (0) tensões negativas (B-A < -200 mV).

  • O chip SN75176 é usado para a conversão TTL/RS485.

  • Utiliza os pinos digitais 0 e 1, ou 2 e 3 do Arduino para comunicação serial com o shield e o pino digital 6 para comutação entre os modos de transmissão e recepção. Obs. Os Pinos Digitais 0 e 1, ou 2 e 3 e o pino 6 não poderão ser utilizados por outro periférico.

  • A alimentação do shield é feita através dos pinos 5 V e GND da placa do Arduino.

  • Disponibiliza os pinos do Arduino em dois barramentos laterais, facilitando aplicações que possam utilizar os pinos de I/O do módulo.

  • O conversor USB/RS485 utiliza o chip FTD232RL para a conversão de USB para TTL e é alimentado pela porta USB do computador.

 

Instalação do Shield no Arduino

  1. Encaixar o shield conversor RS485/TTL ao Arduino como na figura 2;

  2. Ligar o cabo positivo ou A do barramento da rede RS485 ao borne A do conversor RS485/TTL usando uma chave de fenda;

  3. Ligar o cabo negativo ou B do barramento da rede RS485 ao borne B do conversor RS485/TTL usando uma chave de fenda;

  4. Ligar o borne GND à malha do cabo do barramento;

  5. Abra os jumpers JP4 e JP5;

  6. Selecione o sketch desejado na IDE do Arduino e faça o upload para o Arduino usando o cabo USB do Arduino, sempre verifique que JP4 e JP5 estão abertos antes de fazer o upload;

  7. Religue os jumpers JP4 e JP5 selecionando para HS ou SS, conforme esteja no sketch usado no Arduino;

  8. Ligar os jumpers JP1, JP2 e JP3 conforme a necessidade, ver as observações na seção Descrição do KIT para mais detalhes.

Instalação do conversor USB/RS485 no PC

  1. Ligar o cabo positivo ou A do barramento da rede RS485 ao borne A do conversor USB/ RS485 usando uma chave de fenda;

  2. Ligar o cabo negativo ou B do barramento da rede RS485 ao borne B do conversor USB/ RS485;

  3. Ligar o borne GND à malha do cabo do barramento;

  4. Ligar o cabo USB ao conector USB do conversor e a uma porta USB livre do PC;

  5. Aguarde o PC reconhecer o novo dispositivo e quando abrir a tela pedindo a indicação do caminho para o drive de instalação, aponte para a pasta do PC onde está instalado a IDE do Arduino e procure pela pasta FTDI USB Drivers dentro da pasta DRIVERS, normalmente será algo parecido com: X:\arduinoYYY\drivers;
  6. Após a instalação ser concluída, verifique qual porta foi criada usando o gerenciador de dispositivos do Windows.

 

Configuração

  • O usuário deve configurar igualmente todos os parâmetros das portas de comunicação de todos os dispositivos ligados a rede RS485, observando os valores de bits por segundo (baud rate), número de bits dos dados transmitidos, paridade e stop bits.

  • Todos os dispositivos devem estar usando o mesmo protocolo de comunicação.

  • O pino digital (6) do Arduino terá função de enable (EN) que habilita o conversor RS485/TTL para o modo de transmissão quando estiver em nível lógico 1 (5V) ou para modo de recepção quando o pino de enable estiver em nível lógico 0 (0V).

  • Os LEDs TX e RX do shield e do conversor indicam o tráfego da rede.

Teste Inicial

Para testar o funcionamento correto dos módulos e a comunicação entre o PC e o Arduino a forma mais simples é usando o SERIAL MONITOR que está disponível na IDE do Arduino e montando a aplicação a seguir.

 

De posse das ferramentas e dos componentes, siga os passos abaixo:

  1. Instalar o shield ao Arduino e o conversor ao PC conforme mostrado nos itens instalação e configuração;

  2. Montar o circuito nos conectores do shield usando os componentes conforme mostrado na figura 4.

  3. Ligar o potenciômetro de 10k com o cursor ligado a entrada analógica 0 e os pinos externos ligados ao GND e 5V;

  4. Ligar a chave táctil entre o 5V e a entrada digital 4 com resistor de pull down de 10k;

ATENÇÃO: Revisar todas as ligações com muito cuidado antes de energizar o circuito, para evitar possíveis danos aos aparelhos!!!

  1. Ligar uma fonte de alimentação de 7 a 12 VCC ao conector de alimentação externa do Arduino.

  2. Abrir um novo sketch na IDE do Arduino e copiar o texto do apêndice III

  3. Faça o upload para o Arduino conectando o cabo USB no conector do Arduino e a uma porta USB do PC. Não se esqueça de desligar os jumpers JP4 e JP5 durante o upload do sketch religando-os em seguida;

  4. Assim que a mensagem confirmando que o upload terminou corretamente, desligue o cabo USB do Arduino e feche a IDE do Arduino;

  5. Ligue o conversor USB/RS485 ao PC e reabra a IDE do Arduino, abra o sketch do teste e na aba Tools / Serial Port selecione a porta COM do conversor USB/RS485.
  6. Neste sketch o Arduino ficará aguardando o recebimento de um caractere digitado no teclado do PC pelo usuário que deve estar usando um programa de terminal como por exemplo o Serial Monitor da IDE do Arduino. Assim que for recebido um caractere, o Arduino irá enviar de volta ao PC o valor presente na entrada analógica A0 (variando de 0 a 255), o estado da entrada digital D4 (0 ou 1) e o caractere que foi digitado;
  7. Abra o SERIAL MONITOR na IDE do Arduino, e ajuste a velocidade para 9600 baud. Agora digite a tecla “a” e pressione a tecla Send ( ou tecle ENTER), se tudo estiver correto, você terá uma tela parecida com a da figura 5. Faça o teste com outras teclas, mas digite e envie apenas uma de cada vez e aguarde o retorno do Arduino, não se esqueça que o RS485 é half duplex, e o seu dedo é o protocolo de comunicação.
  8. Teste a comunicação com outras velocidades mudando o baud rate no sketch na linha Serial.begin(9600); faça o novo upload repetindo os passos de 7 a 11 e mudando também a velocidade no Serial Monitor.

 

Passe seguinte programação para o Arduino:

/*

Teste de Comunicação Serial com RS485

Este exemplo é de domínio público

Testado na IDE 1.0.1

*/

int POTENCIOMETRO = 0; // valor lido no potenciometro na entrada analogica A0

int CHAVE = 0; // Estado do push botton ligado na entrada D4

int RECEBIDO = 0; // Byte recebido pela serial

void setup()

{

// Iniciando a comunicação a 9600 bps:

Serial.begin(9600);

pinMode(4, INPUT); // Chave no pino digital 4

pinMode(6, OUTPUT); // TX ENABLE no pino digital 6 (está no SHIELD)

}

void loop()

{

// Verifica se recebeu algum caracter pela serial

if (Serial.available() > 0) {

// le o byte recebido:

RECEBIDO = Serial.read();

// le a entrada analógica e divide por 4 para caber em um byte (0-255):

POTENCIOMETRO = analogRead(A0)/4;

// le o estado do botão:

CHAVE = map(digitalRead(4), 0, 1, 0, 1);

// envia os valores dos sensores:

digitalWrite(6, HIGH); // coloca o Shield RS485 em modo de transmissão

delay(1); // aguarda 1 milisegundo

Serial.write("Pino A0 = ");

Serial.print(POTENCIOMETRO);//Serial.println(POTENCIOMETRO, DEC);

Serial.write('\n');

Serial.write("Pino D4 = ");

Serial.print(CHAVE);

Serial.write('\n');

Serial.write("Caracter recebido = ");

Serial.write((byte)RECEBIDO);//Serial.write(RECEBIDO);//Serial.println(RECEBIDO, BYTE);//Serial.write(byte(RECEBIDO));

Serial.write('\n');

delay(100);

digitalWrite(6, LOW); // coloca o Shield RS485 em modo de recepção

Serial.flush();

delay(300); // aguarda

}

}

Se não estiver funcionando como o esperado:

  • Revise todas as ligações do circuito;

  • A tensão da fonte de alimentação do Arduino;

  • A ligação dos cabos do barramento RS485;

  • Verifique se a porta COM do conversor USB é a que foi selecionada na IDE do Arduino;

  • Se o baud rate no serial monitor está em 9600;

  • Se o drive do FTD232RL foi corretamente instalado no gerenciador de dispositivos de hardware do PC.

Estes produtos podem ser utilizados com SCADABR para automação residencial, utilizando o Arduino como MODBUS e assim podendo acessar remotamente periféricos instalados a ele. Junto com o Arduino é possível fazer leituras de sensores, ativar ou desativar periféricos (lâmpada, portões eletrônicos, etc).

O SCADABR é um software de sistema supervisório Open Source e pode ser utilizado para automação em vários ambientes como indústrias, residências, sistemas de energia e etc.

Para utilizar o Shield RS485 e o Conversor USB/RS485 com ScadaBR, baixe o manual clicando aqui.

E é isso! Esperamos que tenha gostado! Caso tenha dúvidas, poste aqui neste blog! Se tiver sugestões para tutoriais, poste aqui. Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente

Referências:

http://arduino.cc/en/

http://www.scadabr.com.br/

Load Previous Comments