Como programar um Braço Robótico Educacional? – Parte III

Como-programar-um-braco-robotico
Font Size

Fala, makers! Tudo bom com vocês? Hoje eu estou super animado pois consegui finalmente programar o braço robótico educacional MeArm para funcionar com um controle de Playstation 4 e o melhor: o método que eu usei serve para qualquer controle. Esse é o primeiro tutorial na net que ensina como programar esse braço usando qualquer controle compatível com computador, USB ou Bluetooth, de uma maneira simples e fácil, então vem comigo!

Obs.: Essa é a parte 3 de uma série de posts, não deixe de conferir a Introdução e a Montagem do braço robótico, MeArm.

Como programar um braço robótico – Programas necessários

Você vai precisar de um programa chamado Processing rodando no seu computador, ela é um Ambiente Integral de Desenvolvimento, ou IDE, e vai ser utilizada para facilitar a interação entre o Arduino e o computador que será a nossa ponte.

Além disso, um controle compatível com seu computador, e se necessário um software que adapte seu controle. No meu caso vou precisar de um programa chamado DS4 para usar o controle de PS4, outro muito conhecido é o Xpadder, posso trazer um tutorial futuramente de como usá-lo.

Instalando as bibliotecas

Além disso você vai precisar baixar algumas bibliotecas que vão dentro do processing e do Arduino. Abaixo vou ensinar como baixar cada uma delas.

Na interface do Processing: Sketch -> Importar Biblioteca -> Adcionar Biblioteca

Importando Bibliotecas pelo Processing

Agora baixe as bibliotecas como indicado abaixo:

Instalando Game Control Plus e Sprites
Instalando Firmata
Instalando G4P

Agora que já temos todas as bibliotecas necessárias para trabalhar no Processing, veja como instalar o Firmata no Arduino: Sketch -> Incluir Biblioteca -> Gerenciar Bibliotecas

Importando bibliotecas pelo Arduino
Instalando Firmata no Arduino

Programando o Arduino

Começando com o Arduino, iremos compilar para a placa o código de exemplo que vem com a biblioteca Firmata, chamado ServoFirmata:

Abrindo ServoFirmata

Programando no Processing

Agora que vem a parte mais complicada que é o código do Processing, mas fica tranquilo que eu deixei tudo organizadinho e comentado pra você:

<code>/**
Controlando braço robótico MeArM
Usando qualquer controle compatível
Processing, Firmata e Game Control Plus
by Davi Colares
*/

//Importa as bibliotecas necessárias
import cc.arduino.*;
import processing.serial.*;
import org.gamecontrolplus.gui.*;
import org.gamecontrolplus.*;
import net.java.games.input.*;

//Define algumas coisas úteis para GCP e Firmata
ControlIO control;
ControlDevice stick;
Arduino arduino;

//Define as variáveis
//Valores que recebe do Joystick
//Pinos dos servos e valores iniciais
float c_base, c_left, c_right, c_claw;
int base = 8, 
    left = 13,
    right = 7,
    claw = 12,
    initial_base = 90,
    initial_left = 90,
    initial_right = 90,
    initial_claw = 90;

public void setup()
{
  //Printa as portas disponíveis
  println(Serial.list());
  //Define a porta do Arduino
  //Começando do 0
  //Troque port pela porta
  arduino = new Arduino(this, Arduino.list()[port], 57600);
  
  //Define os pinos do servos
  arduino.pinMode(base, Arduino.SERVO);
  arduino.pinMode(left, Arduino.SERVO);
  arduino.pinMode(right, Arduino.SERVO);
  arduino.pinMode(claw, Arduino.SERVO);
  
  //Coloca eles na posição inicial
  arduino.servoWrite(base, initial_base);
  arduino.servoWrite(left, initial_left);
  arduino.servoWrite(right, initial_right);
  arduino.servoWrite(claw, initial_claw);
  
  //Abre a tela de selação de controle do GCP
  surface.setTitle("PS4 com MeArm by Davi Colares");
  control = ControlIO.getInstance(this);
  stick = control.filter(GCP.STICK).getMatchedDevice("nome_do_arquivo");
  if (stick == null){
    println("Nenhum dispositivo configurado");
    System.exit(-1);
  }
}

//Função que pega os valores do joystick
public void getUserInput(){
  c_base = map(stick.getSlider("nome_X").getValue(), -1, 1, 0, width);
  c_left = map(stick.getSlider("nome_Y").getValue(), -1, 1, 0, height);
  c_right = map(stick.getSlider("nome_Z").getValue(), -1, 1, 0, width);
  c_claw = map(stick.getSlider("nome_W").getValue(), -1, 1, 0, height);
  
  //Usando as mesmas configurações
  //O valor 50 vai ser dado quando
  //o analógico estiver parado
  //Multiplicando por 1.8 temos 90
  c_base = c_base *1.8;
  c_left = c_left *1.8;
  c_right = c_right *1.8;
  c_claw = c_claw *1.8;
}

public void draw(){
  //Printa os valores do joystick
  println(int(c_base), int(c_left), int(c_right), int(c_claw));
  //Chama a função do joystick
  getUserInput();
  //Controla os servos de acordo com o joystick
  arduino.servoWrite(base, int(c_base));
  arduino.servoWrite(left, int(c_left));
  arduino.servoWrite(right, int(c_right));
  arduino.servoWrite(claw, int(c_claw));

  //Delay para não sobrecarregar o arduino
  //E não queimar os servos
  delay(5);
}</code>

E se você tiver algum problema com ele, comenta aí embaixo que te ajudo a resolver. Deixe essa parte parada agora, vamos precisar fazer algo antes.

Ajustando o controle

Vamos precisar executar o código exemplo que vem com a biblioteca do Game Control Plus, Gcp_Configurator: Arquivo -> Exemplos -> Contributed Libraries -> Game Control Plus -> Gcp_Configurator

Agora com seu controle previamente conectado, execute o programa que abrimos. A primeira tela será a exibida abaixo e nela vamos selecionar o controle o programa do Processing que salvamos.

Configurando o Controle

A tela abaixo irá se abrir e você precisará preencher as lacunas do modo descrito abaixo, eu também coloquei uma tolerância de 0.05 para evitar os pequenos erros que ele pode dar. Depois que você configurar tudo, só salvar clicando em “Save”.

Executando

Agora que você está com tudo pronto, é só ligar o Arduino, verificar a porta no programa que a gente fez no Processing e mudar para a porta correta no programa.

Então, vamos executar com o controle e Arduinos conectados no computador, o programa irá abrir uma tela e você deve selecionar o seu controle e confirmar as configurações.

Feito isso, agora é só acompanhar os valores no terminal e curtir controlando seu braço robótico, MeArm, com seu controle compatível.

https://autocorerobotica.blog.br/wp-content/uploads/2020/03/WhatsApp-Video-2020-03-26-at-23.40.43.mp4
Controlando Braço Robótico com PS4

Espero que você tenha curtido esse post, deu uma trabalheira para fazer ele, mas o resultado é incrível! Se você gostou dá uma avaliação aí embaixo e deixa um comentário. E claro, fica ligado que vem muito mais conteúdo por aí! Um abraço do seu maker preferido.

 

Posts relacionados

Aprendendo a configurar a IDE Arduino para ESP8266

por autocore
8 anos ago

Crie projetos com STM32 utilizando a IDE Arduino

por Oderlando Silva
2 anos ago

Excel com Arduino: Como Realizar o Envio de Dados

por autocore
5 anos ago
Sair da versão mobile