blog-eletrogate-logo-desktop blog-eletrogate-logo-mobile
  • Categorias
    • Voltar
    • INICIANTES
    • INTERMEDIÁRIOS
    • AVANÇADOS
    • divide
    • Automação Residencial
    • Componentes Eletrônicos
    • Impressão 3D
    • IoT
    • Modelagem 3D
    • Módulos Wifi
    • Por trás da tecnologia
    • Projetos
    • Raspberry Pi
    • Robótica
    • Sensores
    • Shields
    • Sistemas Operacionais
    • Tipos de Arduino
    • Tutoriais
  • Apostilas
  • Quem Somos
  • Seja um redator
  • Trabalhe Conosco
    • Categorias
      • Voltar
      • INICIANTES
      • INTERMEDIÁRIOS
      • AVANÇADOS
      • divide
      • Automação Residencial
      • Componentes Eletrônicos
      • Impressão 3D
      • IoT
      • Modelagem 3D
      • Módulos Wifi
      • Por trás da tecnologia
      • Projetos
      • Raspberry Pi
      • Robótica
      • Sensores
      • Shields
      • Sistemas Operacionais
      • Tipos de Arduino
      • Tutoriais
    • Apostilas
    • Quem Somos
    • Seja um redator
    • Trabalhe Conosco
Loja Eletrogate
voltar
  • Introdução
  • Materiais Necessários para o Projeto Comunicação com Conversor USB - RS485
  • Código
  • Circuito
  • Como Funciona?
  • Resultado e Demonstração
  • Conclusão
  • Referências
  • Sobre o Autor
Tutoriais

Comunicação com Conversor USB – RS485

Eletrogate 1 de dezembro de 2022Atualizado em: 19 dez 2022

Introdução

Nesse tutorial, vamos criar um sistema de comunicação entre um computador e uma Arduino, utilizando RS485. Vamos utilizar o conhecimento adquirido no post Comunicação Half-duplex com RS-485, onde é explicado o que é a comunicação RS485. Este projeto simula um cenário bastante comum em indústrias, onde a Arduino pode ser um CLP (Controlador lógico programável) que controla alguma máquina e/ou processo em diferentes aplicações e o computador é o sistemas de controle da indústria, por exemplo, um ERP (Sistema integrado de gestão empresarial), onde o responsável pode controlar e visualizar os dados do CLP.


Materiais Necessários para o Projeto Comunicação com Conversor USB - RS485

Todos os materiais podem ser comprados em nossa loja.

  • 1x Uno R3 + Cabo Usb para Arduino
  • 1x Conversor de dados TTL para RS485
  • 1x Mini Adaptador Serial Conversor USB para RS485
  • 1x Display LCD 16×2 com Backlight Verde
  • 1x Módulo Serial I2C para Display LCD – Sem Jumper Backlight
  • 1x Resistor 1K 1/4W (10 Unidades)
  • 1x Led Difuso 5mm Vermelho
  • 2x Protoboard 830 Pontos
  • Jumpers – Macho/Macho – 20 Unidades de 20cm

Código

O firmware lê os dados recebidos via RS485, os mostra no display LCD e, se o dado recebido for a frase “LED ON” ou “LED OFF”, o Led irá acender ou apagar, respectivamente.

/**
 * @file PC_Arduino_RS485.ino
 * Criado por: Saulo Aislan
 * @brief Firmware para receber dados via RS485 enviados pelo 
 * computador, exibir no LCD e acender ou apagar um LED.
 * @version 1.0
 * 
 * @copyright Copyright (c) 2022
 * 
*/

#include <Wire.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>

#define ENB_PIN   4   // Pino do modo de operação do RS485
#define PinLED    13  // Pino do LED

LiquidCrystal_I2C lcd(0x3F,16,2); //Inicializa o display no endereco 0x3F
SoftwareSerial serialRS(2, 3);    // RO, DI

char ledStatus;                   // Status do LED
const int BUFFER_SIZE = 100;
char buf[BUFFER_SIZE];
String strTemp = "";

/**
 * @brief setup
 */
void setup() {
  Serial.begin(9600);
  serialRS.begin(9600);  
  lcd.init();                     // Inicializa o display LCD
  pinMode(PinLED, OUTPUT);        
  pinMode(ENB_PIN, OUTPUT);       
  digitalWrite(ENB_PIN, LOW);     // Habilitar o recebimento do RS485

  lcd.clear();
  lcd.setBacklight(HIGH);
  lcd.setCursor(0,0);
  lcd.print("  Comunicacao  ");
  lcd.setCursor(0,1);
  lcd.print("     RS485   ");
  delay(1500);
}

/**
 * @brief Loop
 */
void loop() {
  if (serialRS.available() > 0)
  {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Recebendo:");
    lcd.setCursor(0,1);
    
    // Ler os dados recebidos até encontrar o '\n', armazena no buf e em rlen o tamanho
    int rlen = serialRS.readBytesUntil('\n', buf, BUFFER_SIZE);

    for(int i = 0; i < rlen-1; i++)
    {
      strTemp += buf[i];  // Escreve os dados recebidos na String strTemp
    }
    
    lcd.print(strTemp);   // Imprime no LCD os dados
    ledFunc(strTemp);     // Chama a função ledFunc
  }
  
  strTemp = "";           // limpa a String strTemp
}

/**
 * @brief Função para acender ou apagar o LED e imprimir
 * no LCD o status atual do LED
 * @params char ledNewStatus Estado de LED recebido via RS485
 */
void ledFunc(String ledNewStatus)
{
  if (ledNewStatus == "LED ON" || ledNewStatus == "LED On")
  {
    digitalWrite(PinLED,HIGH);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("LED Aceso!");
  }
  else if (ledNewStatus == "LED OFF" || ledNewStatus == "LED Off")
  {
    digitalWrite(PinLED,LOW);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("LED Apagado!");
  }
}

Circuito

Certifique que ao conectar o módulo RS485 ao conversor USB/RS485 a conexão está correta A com A e B com B. Para informações sobre utilização do display e endereçamento consulte o nosso artigo sobre LCD.


Como Funciona?

Para testar o projeto, vamos utilizar o Termite (https://www.compuphase.com/software_termite.htm) para enviar os dados via USB para RS485:

Ao enviar qualquer mensagem pelo Termite, a Arduino recebe e imprime no display LCD. Se a mensagem enviada for “LED ON” ou “LED On” o Led irá acender e irá aparecer, no display, a mensagem “LED Aceso!”. Ao enviar “LED OFF” ou “LED Off”, o Led irá apagar e irá aparecer, no display, a mensagem “LED Apagado!”


Resultado e Demonstração

https://blog.eletrogate.com/wp-content/uploads/2022/11/Demonstracao_pc_rs485.mp4

Conclusão

Nesse tutorial, aprendemos a montar um sistema de comunicação de dados via RS485 entre um computador e um Arduino. Esse projeto é só uma amostra do potencial e usabilidade desse tipo de comunicação. Para mais material como este, continue acompanhando as postagens semanais do blog e não deixe de visitar nossa loja. Lá, você encontra todos os componentes necessários para desenvolver esse e muitos outros projetos!

Que a força estejam com vocês e até mais!


Referências

Referências utilizadas no artigo:

  • https://microkontroller.ru/arduino-projects/posledovatelnaya-svyaz-po-protokolu-modbus-rs-485-s-vedomoj-arduino/
  • https://rimandstudio.medium.com/rs485-and-softwareserial-6df665d0543a
  • https://forum.arduino.cc/t/solved-modbus-timeout-arduino-nano-with-max485-as-slave-pc-as-master/554299
  • https://rockjjy.tistory.com/2723
  • https://tutorials.probots.co.in/rs-485-modbus-serial-communication-using-arduino-uno-as-master-slave-part-2/
  • https://forum.arduino.cc/t/pc-usb-rs485-arduino-communication-noobie/414979

Sobre o Autor


Saulo Aislan

Graduando em Tecnologia em Telemática pelo IFPB – Campus de Campina Grande – PB. Tenho experiência com os microcontroladores da família Arduino, ESP8266, ESP32, STM32 e microprocessador Raspberry Pi. Tenho projetos na áreas de IoTs voltada para a indústria 4.0, agroindústria e indústria aeroespacial civil utilizando LoRa, Bluetooth, ZigBee e Wi-Fi. Atualmente estudando e desenvolvendo em FreeRTOS para sistemas em tempo real com ESP32 e LoRaWan para Smart City e compartilhando alguns projetos no blog da Eletrogate.


Eletrogate

1 de dezembro de 2022 Atualizado em: 19 dez 2022

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Componentes Eletronicos

Conceitos Básicos sobre Solda Eletrônica

Eletrogate26 de janeiro de 2023

Este post aborda os tipos de ferro de solda, tipos de solda, acessórios para o processo e procedimentos para manutenção do ferro de solda.

Componentes Eletronicos

Conceitos Básicos sobre Solda Eletrônica

Eletrogate26 de janeiro de 2023

Este post aborda os tipos de ferro de solda, tipos de solda, acessórios para o processo e procedimentos para manutenção do ferro de solda.

Sensores

MPU6050 com BluePill e STM32CubeIDE

Eletrogate19 de janeiro de 2023

Neste post, veremos como medir aceleração e velocidade angular utilizando o MPU6050 junto de uma BluePill programada pelo STM32CubeIDE.

Sensores

MPU6050 com BluePill e STM32CubeIDE

Eletrogate19 de janeiro de 2023

Neste post, veremos como medir aceleração e velocidade angular utilizando o MPU6050 junto de uma BluePill programada pelo STM32CubeIDE.

Robótica

Controle de Corrente em Servomotores

Eletrogate12 de janeiro de 2023

Este post trata acerca de um simples sistema que visa ajustar o período do pulso de controle de um servomotor evitando que este permaneça em um estado de alto consumo de corrente.

Robótica

Controle de Corrente em Servomotores

Eletrogate12 de janeiro de 2023

Este post trata acerca de um simples sistema que visa ajustar o período do pulso de controle de um servomotor evitando que este permaneça em um estado de alto consumo de corrente.

Tipos de Arduino

BluePill com STM32CubeIDE

Eletrogate6 de janeiro de 2023 Atualizado em: 09 jan 2023

Neste post, desenvolveremos, utilizando recursos do STM32CubeIDE, um simples piscaLED para a placa BluePill.

Tipos de Arduino

BluePill com STM32CubeIDE

Eletrogate6 de janeiro de 2023 Atualizado em: 09 jan 2023

Neste post, desenvolveremos, utilizando recursos do STM32CubeIDE, um simples piscaLED para a placa BluePill.

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!

blog-eletrogate-logo-footer

Rua Rio de Janeiro, 441 - Sala 1301
Centro - Belo Horizonte/MG
CEP 30160-041
*Não temos atendimento físico

ANWAR SLEIMAN HACHOUCHE - ME
CNPJ: 18.917.521/0001-73

Atendimento

(31) 3142-3800

contato@eletrogate.com


Seg a Sex - das 8h às 17h

Institucional

  • Apostilas
  • Quem Somos
  • Privacidade
  • Seja um Redator
  • Trabalhe Conosco

Nos acompanhe

Facebook Instagram Youtube

© ELETROGATE 2023 - Todos os direitos reservados. Termos de uso e Política de privacidade.