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/

Exibições: 30465

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de francisco josé cunha dos santos em 21 janeiro 2013 às 16:27

é possivel eu estabelecer uma comunicação desse arduino com um tablet?

Comentário de francisco josé cunha dos santos em 19 janeiro 2013 às 13:12

bem eu queria ter a certeza para não comprar erado. queria um shield que faça para mim uma comunicação via modbus junto com o arduino mega ADK

Comentário de Wiechert em 19 janeiro 2013 às 11:55

Olá,

O shield RS485 do LDG usa os pinos 0 (RX), 1 (TX), e 6 para comunicação. Como o mega ADK tem esses pinos disponíveis deve ser possível o uso do shield sem problemas, embora eu nunca tenha feito esse teste por não possuir um mega ADK, mas já testei com mega1280 e mega2560, ambos "genéricos" e sem problemas.

O mega ADK é basicamente uma placa mega2560 onde foi acrescentado um circuito integrado MAX3421e que é um host USB, isto torna possível a conexão com celulares Android e pendrives sem o uso de um shield,

fonte: http://arduino.cc/en/Main/ArduinoBoardADK.

O mega ADK é um produto original da família arduino que assim como todos os modelos de arduino tem as versões "genéricas".

Vale ressaltar que o RS485 é apenas o meio físico de transmissão, onde é definido a forma como os bits 0 e 1 são transmistidos, especificando os niveis de tensão permitidos para cada um, entre outros parâmetros.

O protocolo de comunicação não é definido na norma RS485, assim podemos usar vários protocolos já consagrados como por exemplo o modbus serial RTU ou ASCII ou mesmo definir um protocolo próprio.

Mas um detalhe, como em qualquer rede, todos os elementos da rede (nós, placas, etc) devem estar usando o mesmo protocolo, com as mesmas configurações de rede (baud rate, stop bits, paridade, etc) mas cada nó deve possuir um endereço único na rede.

Comentário de adriano de alcantara em 19 janeiro 2013 às 10:44

A rede que a gente usa sem problemas é a rede Modbus serial RTU, que funcina sem problemas com RS485 ou um usb ligado ao supervisorio.Muita gente já trabalha ou comercializa produtos com a turminha:arduino mega-rs485-usb-Modbus RTU-Supervisorio.

aconselho a usar arduino mega original(por problemas em algumas copias de mega original )

especificamente nunca testei com arduino mega AKD.

mas a rede Modbus RTU é usada tranquilamente.

Comentário de francisco josé cunha dos santos em 19 janeiro 2013 às 8:28

eu gostaria de saber dos desenvolvedores se esse shield faz comunicação com arduino mega AKD, e se a comunicação pode ser feita via rede MODBUS.

Comentário de Aluísio Cavalcante em 21 dezembro 2012 às 16:01

Cara, eu passei três semanas desenvolvendo um projeto, a pedido de uma empresa, com arduino. Durante as três semanas dois atmega 328 foram "pro espaço" do nada. E foi porque não testei todo o sistema ligado final ligado a placa do sistema arduino. Aí depois testei o mesmo sistema com o pic18f2550 e rodou normal!

Comentário de adriano de alcantara em 19 dezembro 2012 às 19:37

Estou  trabalhando, em alguns projetos que vai exigir do arduino um processamento a nivel industrial, com alguns feeds que obtive, estou percebendo uma certa sensibilidade do arduino, chegando desprogramar , mas isso é só um achismo, logo vou testar ele com o shied RS485 e ai vou saber a sua real performace.Quando tiver o material, farei um estudo de caso aqui no post

Comentário de Aluísio Cavalcante em 19 dezembro 2012 às 14:33

Pois é cara... porque pessoalmente não acho o arduino interessante para se usar em indústria. Se você ou se alguém mais souber de projetos feitos para "chão de fábrica", se possível gostaria que postassem links.

Comentário de adriano de alcantara em 19 dezembro 2012 às 12:16

Até onde sei, o shield foi recentemente lançado...logo se tem gente usado em chão de fabrica, deve estar fazendo isso por esses tempos, talvez o Marcos que criou o shield já possa ter usado.No meu caso devo usar o shield pros processos que estou trabalhando

Comentário de Aluísio Cavalcante em 19 dezembro 2012 às 8:52

Gostaria de saber se alguém realmente já testou o shield com arduino em uma indústria, no famoso chão de fábrica.

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço