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: 30482

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 3 fevereiro 2013 às 17:58

eu tentarei, mas só poderei amanha. sobre o ultima passo, o conversor oferecido aqui não veio acompanhado de um drive de instalação, então talvez foi esse meu problema. Ele esta disponivel aqui no site para download?

Comentário de Wiechert em 1 fevereiro 2013 às 17:36

Francisco,

Tente executar os passos 8 e 9 novamente.

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

9- 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.

Se não aparecer, abra o gerenciador de dispositivos e em Portas (com/lpt) verifique se a porta do conversor usb/rs485 foi criada e se está funcionando corretamente, se não estiver, desinstale o dispositivo e reinstale o drive novamente.

Comentário de francisco josé cunha dos santos em 1 fevereiro 2013 às 16:57

Quando eu cheguei ao passo 9 (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.) do tutorial acima, o pc não reconheceu a COM o qual o conversor USB/RS485 estava ligado, não sendo possivel seleciona-la. O Adriano ou alguem pode ajudar a resolver esse problema?

Comentário de adriano de alcantara em 30 janeiro 2013 às 17:49

o codigo e  o RS485 é independente do scadabr logo se vc tiver outro supervisorio como por exemplo elipse ou um programa proprio vc consegue conetar sem problema. Eu só não sei dizer como vc vai fazer isso, mas tem um tutorial sobre andoride muito bom por aqui.

abraços

Comentário de francisco josé cunha dos santos em 30 janeiro 2013 às 15:52

estou observando o video http://www.youtube.com/watch?v=NyIFROKXaUE. Então basicamente se eu ligar os jumpers de acordo como está nesse tutorial dessa pagina (http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-shi...) eu já estarei utilizando o protocolo modbus e o barramento rs485, certo? o que eu terei que fazer é procurar um outro tipo de programa monitorador (substituir o scadabr para um outro compatível com android). Corrija-me se eu estiver equivocado.

Comentário de adriano de alcantara em 30 janeiro 2013 às 13:58

o scadabr não é o foco, mas sim, o material de apoio, como por exemplo, o codigo modbus RTU e varias explicações sobreo o mesmo, que se encontram no meio do assunto scadabr.

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

eu não sei se poderei usar o Scadabr porque a minha ideia é conectar o arduino a um tablet, e não a um pc. mas primeiro eu gostaria de obter informação de como faço um nó modbus utilizando o arduino e o shield adquirido aqui.

Comentário de adriano de alcantara em 30 janeiro 2013 às 11:08

http://labdegaragem.com/forum/topics/arduino-serial-scadabr este link tem as informações que podem te ajudar francisco e se vc pesquisar scadaBR tem muito mais

Comentário de francisco josé cunha dos santos em 30 janeiro 2013 às 10:23

eu adquiri o shield r485, eu gostaria de saber, por partes, como eu faço para estabelecer comunicação com o arduino usando o protocolo modbus. Vocês poderiam me ajudar?

Comentário de Wiechert em 21 janeiro 2013 às 17:49

Sim é possível, veja os exemplos no youtube: http://www.youtube.com/results?search_query=tablet+%2B+arduino+%2B+...

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço