BLOG - Sistemas Embarcados

Este blog tem como autores os participantes do projeto Smart Campus e alunos das disciplinas: Sistemas Embarcados(Engenharia de Controle e Automação) e Plataformas de prototipação para Internet das Coisas (Especialização Lato Sensu em Internet das Coisas). O objetivo é a divulgação de trabalhos em desenvolvimento no campus que envolvam a utilização de conceitos de sistemas embarcados, internet das coisas, telemetria e outras tecnologias para a resolução de problemas da indústria, meio ambiente, cidades inteligentes, fazendas inteligentes, ....
Coordenação: Prof. Marcos Chaves

[ LOGIN ] [ Autores ]

numero de postagens:1

Projeto de Controle de Robô SCARA Utilizando Servomotores com Integração de IoT, Banco de Dados e Dashboard

Visão Geral:

A automação industrial tem avançado significativamente com o desenvolvimento da tecnologia, e uma das ferramentas mais emblemáticas dessa evolução são os robôs. Entre eles, destaca-se o robô SCARA (Selective Compliance Assembly Robot Arm) por sua precisão e eficiência em tarefas repetitivas, como montagem, embalagem e manipulação de materiais. Este projeto visa desenvolver um sistema de controle para um robô SCARA utilizando servomotores e integrando tecnologias de Internet das Coisas (IoT), banco de dados e dashboards interativos.

O principal objetivo deste projeto é  implementar um sistema de controle eficiente para um robô SCARA. Para isso, serão utilizados servomotores que proporcionam a precisão e o controle de movimento essenciais para as operações do robô. Além disso, a integração de IoT permitirá a comunicação em tempo real entre o robô e uma infraestrutura de controle remota. Esta comunicação será realizada por meio de um ESP 32, que enviará e receberá informações via uma rede sem fio. O sistema IoT incluirá a utilização de protocolos seguros de comunicação, como MQTT (Message Queuing Telemetry Transport),  garantindo a integridade e a confidencialidade das informações transmitidas.

O banco de dados será utilizado para armazenar informações relevantes sobre a cinemática do robô, oferecendo um sistema de configuração dupla: “automático”, que permitirá ao robô realizar operações de forma autônoma, e “manual”, que permitirá ao usuário controlar diretamente os movimentos do robô, e gravá-los quando aplicável. Por fim, a criação de um dashboard interativo fornecerá uma interface amigável para o controle do sistema, permitindo a visualização em tempo real dos dados operacionais e o ajuste de parâmetros de controle conforme necessário.

Materiais utilizados:

  • 1 x ESP 32 Wemos D1 R32;
  • 1 x Protoboard de 830 pontos;
  • 1 x Potenciomentro de 10K;
  • 1 x Servo motor de 9g SG90;
  • 1 x Led da cor amarela;
  • 1 x Resistor de 330 ohm;
  • 1x Powerbank 10000 mAh;
  • Juppers do tipo macho-femea.

Tópicos MQTT:

  • potenciometro1/valor;
  • servo1/angulo;
  • atuador.

Tópico potenciometro1/valor:

Esse tópico será responsavel por publicar as leituras analogicas do potenciomentro que serão convertidas gruas para posterioremente enviar para o servo motor

      int valorPot1 = analogRead(A0);  

     int angulo1 = map(valorPot1, 0, 4095, 0, 180);  // Converte o valor do potenciômetro 1 para um ângulo (0-180)    

     client.publish(mqtt_topic_pot1, String(valorPot1).c_str());

Tópico servo1/valor:

Esse tópico por sua vez será responsavel por receber as publicações do tópico anterior e então enviar o ângulo já convertido em uma faixa de movimentação do servo motor  

StaticJsonDocument<200> doc;  

DeserializationError error = deserializeJson(doc, message);   // Verifica se a mensagem é para o servo 1  

if (String(topic) == mqtt_topic_servo1) {    

int angulo = message.toInt();    

if (angulo >= 0 && angulo <= 180) {      

x1 = map(angulo, 0, 180, 1200, 8000);      

ledcWrite(14, x1);    

}  

}

Tópico atuador:

Tópico responsavel receber a solicitação de um toggle button e então acionar o atuador do robô ( representado pelo Led)

StaticJsonDocument<200> doc;  

DeserializationError error = deserializeJson(doc, message);

if (String(topic) == mqtt_topic_atuador) {    

if (doc.containsKey("z")) {    

zValue = doc["z"].as();  

}  

if (zValue == 1 ) {    

digitalWrite(27, HIGH);    

delay(1000);   }   //Lógica para desacionar o atuador  

if (zValue == 0 ) {  

  digitalWrite(27, LOW);    

delay(1000);  

}  

}

Infraestrutura do Propmt de comandos:

Este projeto conta com uma infraestrutura em nuvem  que possibilita o controle remoto dos angulos mensurados e do status de liga e desliga do atuador, via internet,no qual é representado pela figura abaixo:

Seu fluxo (flow) Node-RED implementado, pode ser observado abaixo:

Resultado final:

Uma vez desenvolvido o fluxo de captação e monitoramento de leituras externas, foi possível desenvolver a seguinte prototipagem de teste:

 

[ID:173] Autor: - Criado em: 2024-05-29 23:37:08 - [ Compartilhar ]