Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Componentes e Materiais

Aplicativos e Serviços Online

Sobre o Projeto

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Braços robóticos são incríveis! Fábricas no mundo todo os usam para pintar, soldar e transportar coisas com precisão. Também os encontramos em exploração espacial, veículos operados remotamente subaquáticos e até em aplicações médicas!

E agora você pode ter uma versão mais barata deles na sua casa, escritório ou laboratório! Cansado de fazer um trabalho repetitivo? Programe seu próprio robô para ajudá-lo... ou para bagunçar as coisas! :D

Neste tutorial, mostro como montar um braço robótico e como programá-lo usando um Arduino Mega. Também quis experimentar um método diferente para controlar um braço robótico: usando um Nintendo Nunchuk! Eles são baratos, fáceis de encontrar e têm vários sensores.

Existem várias formas de usar este tutorial. Se você não tem um kit de braço robótico (e não quer comprar ou construir um), ainda pode usá-lo para aprender sobre programação Arduino e como interligar um Nunchuk Wii aos seus próprios projetos. Também pode praticar suas habilidades de eletrônica e mecânica.

Passo 1: Ferramentas e Materiais

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

As seguintes ferramentas e materiais foram usados neste projeto:

Fui informado posteriormente que existe um adaptador Nunchuk que facilita a conexão a uma protoboard (link / link). É uma boa opção se você quiser economizar tempo na soldagem e não quiser destruir o conector original, como descrito no Passo 9.

O kit Sain Smart 6-axis mechanical desktop arm já vem com os seguintes componentes:

Você pode encontrar outros kits de braço robótico online, ou até projetar o seu. Existem alguns projetos incríveis que você pode imprimir em 3D.

Nos próximos 7 passos, mostrarei como montar o kit do braço antes de conectar os circuitos. Se você não tem um kit semelhante, sinta-se à vontade para pular alguns passos. Você pode usar outro kit de braço robótico, montá-lo e pular diretamente para as etapas de eletrônica e programação.

Em cada passo, há um GIF animado mostrando como meu braço robótico foi montado. Só roda na versão desktop do site.

Passo 2: Montando o Braço Robótico Pt1 - Base

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

A primeira parte a ser montada é a base do robô. É feita de dois suportes em formato U, unidos costas com costas usando quatro parafusos e porcas M3, como mostrado nas imagens. Provavelmente é a parte mais fácil de montar.

Passo 3: Montando o Braço Robótico Pt2 - Servo #1

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

O primeiro servomotor é montado perpendicular à base, usando um suporte de servo. Este perfil é fixado à base usando quatro parafusos e porcas M3. O Servo #1 é colocado no topo e fixado com quatro parafusos e porcas M3. Um chifre circular metálico é fixado ao eixo do servo. O kit vem com vários chifres plásticos que não serão usados na montagem do robô.

Passo 4: Montando o Braço Robótico Pt3 - Servo #2

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Outro suporte de servo é montado perpendicular ao anterior. É conectado ao chifre do servo #1 usando quatro parafusos M3. O Servo #2 é instalado com quatro parafusos e porcas M3, e também usa um chifre circular metálico. Um suporte U é então fixado ao chifre usando quatro parafusos. Note que um parafuso M3 é usado oposto ao eixo do servo. Ele dá estabilidade à estrutura. Um rolamento encaixa neste parafuso e é travado com outra porca M3. Assim, o suporte U fica firmemente preso ao eixo central do servo #2.

Passo 5: Montando o Braço Robótico Pt4 - Servo #3

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Outro suporte U é montado usando quatro parafusos e porcas M3. Na outra extremidade, o servo #3 é instalado, usando um chifre circular metálico e quatro parafusos. Um suporte de servo é conectado ao motor, e um perfil em L é ligado ao suporte de servo usando alguns parafusos e porcas. Note que outro rolamento é usado oposto ao eixo do servo, como descrito antes.

Passo 6: Montando o Braço Robótico Pt4 - Servo #4

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Outro suporte U é conectado ao perfil em L usando um conjunto de quatro parafusos e porcas M3. Similarmente ao passo anterior, o servo #4 é montado no suporte U usando quatro parafusos. Outro suporte de servo é conectado ao servo.

Passo 7: Montando o Braço Robótico Pt4 - Servo #5

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

O quinto servo é conectado perpendicular ao servo #4 usando outro suporte de servo, instalado com quatro parafusos e porcas M3.

Passo 8: Montando o Braço Robótico Pt4 - Servo #6

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

A garra é então conectada ao eixo do servo #5. No topo, o servo #6 é conectado usando alguns parafusos, porcas e um chifre metálico. A garra tem engrenagens que transformarão a rotação do servo em movimento linear da garra.

Passo 9: Preparando o Controle Nunchuk

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Para este projeto, decidi usar um controle Nintendo Nunchuk por vários motivos:

Infelizmente, joysticks Nunchuk têm um conector complicado, difícil de interligar com outras eletrônicas. Para conectá-lo ao Arduino, tive que cortar seu cabo e expor seus fios. Assim, não funcionará mais com um Nintendo Wii... :/

Primeiro, cortei o conector do joystick e removi o isolamento dos fios. Usando um multímetro e baseando-me na cor de cada fio, determinei a função de cada fio (Vcc, GND, SCL e SDA) baseado no esquemático do conector mostrado na imagem. A cor dos fios não tem padrão. Já ouvi as seguintes possibilidades:

Original: SDA=verde, SCL=amarelo, 3V3=vermelho, GND=branco
Réplica #1: SDA=amarelo, SCL=branco, 3V3=verde, GND=vermelho
Réplica #2: SDA=azul, SCL=branco, 3V3=rosa, GND=verde

Soldei os fios a um jumper macho, para facilitar a conexão à placa Arduino. Usei ferro de solda e tubo termorretrátil, como mostrado nas imagens.

Passo 10: Conectando os Circuitos

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Uma vez que a estrutura está montada e os conectores do Nunchuk prontos, você estará pronto para conectar os circuitos. Usei o shield de controle que veio com meu kit de braço robótico. Ele facilita a conexão dos componentes, pois já vem com conectores específicos para servomotores, fonte de alimentação, etc.

Nunchuk:

Se estiver usando Arduino Uno, os pinos SCL e SDA do Nunchuk devem ser conectados a pinos diferentes do Arduino:

Servos:

Se não estiver usando o shield de controle, use a seguinte configuração de pinos:

Você também precisará conectar uma fonte externa de 12V. Sugiro uma com mais de 2A de saída. Os servos consomem muita energia, e se a fonte não for potente o suficiente, os servos vibrarão e esquentarão muito. Também perderão força.

Não conecte a fonte de energia até ter feito o upload do código Arduino (mostrado nos próximos passos). Há um botão de energia no shield. Mantenha-o na posição desligada. Conecte um cabo USB no Arduino e prossiga para o próximo passo.

Passo 11: Configurando a Arduino IDE

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Agora que o hardware está pronto, é hora de trabalhar no código Arduino.

1. Baixe e instale a versão mais recente da Arduino IDE em https://www.arduino.cc/en/main/software.

2. Adicionando as bibliotecas

Para este projeto usei a incrível biblioteca Nunchuk do Robert Eisele! Você pode encontrar mais sobre ela no site dele: https://www.xarg.org/2016/12/using-a-wii-nunchuk-with-arduino/

Baixe a biblioteca em https://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Navegue até Sketch -> Include Library -> Manage Libraries na sua Arduino IDE para adicionar a biblioteca.

Como a biblioteca funciona?

A biblioteca Nunchuk vem com um conjunto de funções para ler os sensores do controle:

Os ângulos são retornados em radianos. Converto esses valores para graus no meu código Arduino.

Passo 12: Código Arduino

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Baixe o arquivo sketch do Arduino. Conecte o cabo USB na porta USB do computador e faça o upload do código. O upload leva algum tempo. Você pode usar esse tempo para dar um 'like' e 'compartilhar' este tutorial enquanto espera! :D

Após o upload completar, desconecte o cabo USB, conecte a fonte de alimentação e ligue o botão de energia. O código começará a rodar imediatamente.

Aviso: quando o código começar a rodar, o braço robótico se moverá muito rápido para sua posição inicial. Tenha cuidado para não se machucar ou danificar equipamentos próximos durante a inicialização!

Possivelmente você terá que substituir o ângulo inicial de cada servomotor dependendo de como seus servos foram montados.

Código explicado:

Antes do setup, o código importa as bibliotecas usadas no sketch (nunchuk.h, wire.h e servo.h). Pinos a serem usados são definidos, e variáveis globais são declaradas. As variáveis inteiras angle# armazenam a posição inicial para cada servo. Se quiser que seu robô inicie em posição diferente, altere os valores nessas variáveis.

Variáveis servo#_speed definem a velocidade de movimento de cada servo. Se quiser que um servo específico se mova mais rápido, aumente seu valor. Variáveis angle#min e angle#max são usadas para limitar o ângulo máximo e mínimo para cada servo. Você pode definir essas variáveis para evitar colisões entre juntas consecutivas do robô.

//Incluir bibliotecas
#include <nunchuk.h>
#include <wire.h>
#include <servo.h>

//definir variáveis
#define SERV1 8
#define SERV2 9
#define SERV3 10
#define SERV4 11
#define SERV5 12
#define SERV6 13

Servo s1; Servo s2; Servo s3; Servo s4; Servo s5; Servo s6;

//ângulos iniciais
int angle1 = 90; int angle2 = 30; int angle3 = 0;
int angle4 = 90; int angle5 = 90; int angle6 = 45;

//velocidades
int servo1_speed = 3; int servo2_speed = 3; int servo3_speed = 3;
int servo4_speed = 1; int servo5_speed = 1;

//limites
int angle1min = 0; int angle1max = 180;
int angle2min = 0; int angle2max = 180;
int angle3min = 0; int angle3max = 180;
int angle4min = 0; int angle4max = 180;
int angle5min = 0; int angle5max = 180;
int angle6min = 0; int angle6max = 180;

boolean display_angles = true;

Durante o setup, cada servo é anexado a um pino específico e sua posição é iniciada. Comunicação serial (para Monitor Serial) e comunicação I2C com o Nunchuk também são iniciadas aqui.

void setup() {
  s1.attach(SERV1); s1.write(angle1);
  s2.attach(SERV2); s2.write(angle2);
  s3.attach(SERV3); s3.write(angle3);
  s4.attach(SERV4); s4.write(angle4);
  s5.attach(SERV5); s5.write(angle5);
  s6.attach(SERV6); s6.write(angle6);
  Serial.begin(9600);
  Wire.begin(); nunchuk_init();
}

O loop principal é repetido continuamente. O status do Nunchuk é lido a cada ciclo. Dependendo das leituras, diferentes comandos são executados.

void loop() {
  if (nunchuk_read()) {
    int x = nunchuk_joystickX();
    int y = nunchuk_joystickY();
    boolean z = nunchuk_buttonZ();
    boolean c = nunchuk_buttonC();
    float pitch = nunchuk_pitch();
    float roll = nunchuk_roll();
    // ... lógica de controle (ver código completo no arquivo nunchuk.ino)
  }
}

O joystick X controla o servo #1 (rotação esquerda/direita). O joystick Y controla o servo #3 (movimento cima/baixo). O servo #2 permanece fixo neste código. A rotação da garra é dada pelos ângulos de roll e pitch do controle, medidos pelo acelerômetro. Para facilitar o controle, o ângulo da garra só é atualizado quando os botões C ou Z são pressionados. A garra fecha quando ambos os botões são pressionados; ao soltar qualquer um, o robô abre a garra. Há um bloco de código no final que exibe no Monitor Serial o ângulo atual de cada servomotor, útil para escolher os ângulos iniciais.

Passo 13: Uso

Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega

Agora que tudo está pronto, alimente o robô e divirta-se! O Nunchuk controla os cinco movimentos mostrados nas imagens: rotação direita/esquerda, movimento cima/baixo, rotação da garra, movimento cima/baixo da garra e abertura/fechamento da garra. Você pode combinar esses movimentos para realizar diferentes tarefas. Pode modificar o código para ter movimentos diferentes baseados em combinações dos botões e ângulos do joystick.

Código

nunchuk.ino (disponível para download)

GitHub: https://github.com/infusion/Fritzing/tree/master/Wii-Nunchuk

Processo de manufatura

  1. Construa um Robô de Streaming de Vídeo Controlado por Internet com Arduino e Raspberry Pi
  2. Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
  3. Controle IoT Remoto de Braço Robótico Personalizado
  4. Transforme um Carro RC Antigo em Veículo Controlado por Joystick com Arduino
  5. Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
  6. Construa um Braço Robótico 3D Impresso Funcional com Arduino – Guia Passo a Passo
  7. Construa um Robô Controlado por Voz com Arduino Nano
  8. Braço Robô Controlado por Ethernet: Controle Remoto Simplificado
  9. Eletrodomésticos Ativados por Voz: Controle Bluetooth com Google Assistant
  10. Braço Robótico Inteligente Controlado por Arduino: Tutorial DIY Fácil