Braço Robótico para Arduino

APLICAÇÃO E FUNCIONAMENTO – O Braço Robótico é um braço mecânico desenvolvido para quem está iniciando no ramo de automação de robôs, proporcionando diversas possibilidades de movimento e ações....

APLICAÇÃO E FUNCIONAMENTO

– O Braço Robótico é um braço mecânico desenvolvido para quem está iniciando no ramo de automação de robôs, proporcionando diversas possibilidades de movimento e ações. Comumente utilizado para executar determinado movimento, ele é utilizado junto de plataformas de prototipagem como, Raspberry Pi e Arduino.

braco-robotico-capa-

– Desenvolvido com o intuito de ser considerado uma ferramenta de baixo custo e grande funcionalidade, o Braço Robótico MDF deve ser montado junto de 4 Micro Servo Motores de 180º, responsáveis pelos movimentos executados pelo mesmo.

– Comumente os Servos são conectados diretamente ao Arduino, porém neste caso como trabalhamos com uma maior quantidade de servos, faremos uso de um drive controlador capaz de alimentar e controlar os servos motores em questão sem reduzir a sua capacidade e conseguindo suprir a corrente necessário por todos os equipamentos.

– Para aumentar a capacidade do Arduino e expandir o seu número de portas de entrada e saída, vamos utilizar um Arduino Sensor Shield – Expansor de Entradas e Saídas V5.0 alimentado com 6V.

modulo-para-servo.fw

– Para realizar o controle do movimento de cada motor, vamos utilizar um joystick que conforme será movimentado, irá realizar o movimento do servo e consequentemente do braço robótico de forma instantânea.

– Para saber mais sobre o Micro Servo Motor SG90, acesse o link do nosso projeto e tire suas dúvidas referentes a este pequeno e funcional servo motor.

– Micro Servo Motor: http://blog.usinainfo.com.br/controle-de-posicao-do-micro-servo-motor-180/.

– Para realizar o referente projeto, precisará de uma biblioteca especial não existente em seu histórico do Arduino, deste modo, entre no site Github, disponível no seguinte link: https://github.com/netlabtoolkit/VarSpeedServo e faça o download da biblioteca principal.

– Ao clicar no link acima, uma janela semelhante a esta irá aparecer e então você devera ir até o botão verde escrito “Clone or download” e realizar o Download da biblioteca clicando em Download ZIP, observe:

Untitled-1.fw

– Depois de ter baixado o arquivo, descompacte o mesmo em uma parta denominada “VarSpeedServo” dentro da pasta libraries da IDE do seu Arduino.

 

TESTE PRÁTICO

– Para pormos o nosso braço robótico em funcionamento, vamos utilizar um Expansor de entradas e saídas com uma alimentação de aproximadamente 6V conectado diretamente em um Arduino, onde conectaremos os quatro servos e os dois joysticks utilizados em nosso projeto.

PRODUTOS UTILIZADOS NO TESTE:

– 1 Arduino UNO;

– 1 Arduino Sensor Shield – Expansor de Entradas e Saídas V5.0;

– 1 Braço Robótico MDF com Parafusos e Micro Servo Motor;

– 2 Joysticks;

– Jumper Fêmea -Fêmea.

 

MONTAGEM FÍSICA (HARDWARE)

– Para fazer a ligação correspondente basta observar com atenção o esquema abaixo e reproduzir em seu projeto a pinagem utilizada.

novostick.fw

FUNCIONAMENTO DO PROGRAMA (SOFTWARE)

// Código para teste de funcionamento do Braço Robótico para Arduino;
// Controle de movimento realizado por Joysticks;
// Usinainfo - www.usinainfo.com.br
 
#include <VarSpeedServo.h> // Inclui a Biblioteca VarSpeedServo.h
 
VarSpeedServo servo_sobe; //Cria objeto para controlar o servo sobe
VarSpeedServo servo_frente; //Cria objeto para controlar o servo frente
VarSpeedServo servo_garra; //Cria objeto para controlar o servo garra
VarSpeedServo servo_corpo; //Cria objeto para controlar o servo corpo
 
int pino_x = A0; //Inicializa o pino analógico ao eixo X do joystick
int pino_y = A1; //Inicializa o pino analógico ao eixo Y do joystick
int pino_z = A3; //Inicializa o pino analógico ao eixo Z do joystick
int pino_w = A4; //Inicializa o pino analógico ao eixo W do joystick
int val_x; //Armazena o valor lido pelo eixo X do joystick
int val_y; //Armazena o valor lido pelo eixo Y do joystick
int val_z; //Armazena o valor lido pelo eixo Z do joystick
int val_w; //Armazena o valor lido pelo eixo W do joystick
 
void setup() {
 servo_sobe.attach(5, 1, 180); //Define que o servo está conectado a porta 5 do Arduino
 servo_frente.attach(3, 1, 180); //Define que o servo está conectado a porta 3 do Arduino
 servo_garra.attach(10, 1, 180); //Define que o servo está conectado a porta 10 do Arduino
 servo_corpo.attach(11, 1, 180); //Define que o servo está conectado a porta 11 do Arduino
}
 
void loop() {
 val_x = analogRead(pino_x); //Recebe o valor lido pelo eixo X do joystick
 val_x = map(val_x, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
 servo_sobe.slowmove(val_x, 60); //Movimenta o servo até a posição definida pelo eixo X

 val_y = analogRead(pino_y); //Recebe o valor lido pelo eixo Y do joystick
 val_y = map(val_y, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
 servo_frente.slowmove(val_y, 60); //Movimenta o servo até a posição definida pelo eixo Y
 
 val_z = analogRead(pino_z); //Recebe o valor lido pelo eixo Z do joystick
 val_z = map(val_z, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
 servo_garra.slowmove(val_z, 60); //Movimenta o servo até a posição definida pelo eixo Z

 val_w = analogRead(pino_w); //Recebe o valor lido pelo eixo W do joystick
 val_w = map(val_w, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
 servo_corpo.slowmove(val_w, 60); //Movimenta o servo até a posição definida pelo eixo W

 delay(30);
}

 

CONCLUSÃO

– O Braço Robótico é um produto de grande funcionalidade que pode ser aplicado nos mais diversificados projetos, no entanto, quando utilizado junto de um potenciômetro deve-se ter mais atenção e evitar movimentos bruscos devido à “delay” de comunicação, o que pode acarretar na falha dos movimentos do servo. Quanto à utilização do joystick, vale ressaltar que assim como o próprio, o Braço também volta ao seu estado inicial quando em repouso, ou seja, não fixa sua localização e acompanha todos os movimentos reproduzidos através do joystick.

Categorias
Arduino
51 Número de Comentários
  • denilson de araujo azarias
    22 agosto 2016 at 21:43
    Enviar Resposta

    desculpe a pergunta,mas onde vai os potenciômetros nesse projeto? não visualizei ele no vídeo, somente no vídeo que mostra o teste do servo.

    • Equipe Usinainfo
      23 agosto 2016 at 13:21
      Enviar Resposta

      Olá Denilson, o projeto foi atualizado e retiramos os potenciômetros.
      Qualquer dúvida estamos a disposição
      Att Equipe Usinainfo

  • Alexandre Telles Estanieski
    3 abril 2017 at 12:49
    Enviar Resposta

    Olá, gostaria de adquirir esse kit BRAÇO ROBÓTICO PARA ARDUINO, mas onde consigo a lista completa de componentes que preciso comprar?

  • S.RAMOS
    11 abril 2017 at 17:12
    Enviar Resposta

    O código está pronto para uso ou tem que adicionar mais alguma coisa ?

    • Equipe Usinainfo
      12 abril 2017 at 14:36
      Enviar Resposta

      Olá, sim o código esta pronto para uso.
      Att Equipe Usinainfo

  • S.RAMOS
    11 abril 2017 at 17:15
    Enviar Resposta

    Esse pino do joystick que não está conectado é o SW ?

    • Equipe Usinainfo
      12 abril 2017 at 14:40
      Enviar Resposta

      Sim, é o SW.
      Att Equipe Usinainfo

  • S.RAMOS
    12 abril 2017 at 14:51
    Enviar Resposta

    O que está alimentando os servos motores ?

    • Equipe Usinainfo
      13 abril 2017 at 13:11
      Enviar Resposta

      Bom dia, para complementarmos a corrente necessária para o funcionamento dos servos, utilizamos uma fonte de bancada.
      Att Equipe Usinainfo

  • ose Carlos
    24 junho 2017 at 00:43
    Enviar Resposta

    Boa noite, a alimentação poder ser feita por uma fonte de 9V – 1A? E a ligação é feita no Arduíno ou na outra placa?

    • Equipe Usinainfo
      27 junho 2017 at 12:59
      Enviar Resposta

      Olá, devido as especificações do servo motor utilizado, o recomendado é a utilização de uma fonte de alimentação 6V 1A.

  • Jose carlos
    27 junho 2017 at 00:00
    Enviar Resposta

    Boa noite, a alimentação esta sendo feita pelo Arduino, ou pela outra placa? E esta dando um erro na compilação do meu arduino, segue erro ”
    C:\Users\Carlos.Bueno\Desktop\Bra_o_teste\Bra_o_teste.ino:5:66: fatal error: VarSpeedServo.h: No such file or directory

    #include // Inclui a Biblioteca VarSpeedServo.h

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno”

    • Equipe Usinainfo
      30 junho 2017 at 13:35
      Enviar Resposta

      Bom dia, para garantir as funcionalidades de todos os Servos e do Arduino, utilizamos duas alimentações independentes, uma alimentação para o Arduino e outra para os Servos através do Shield.
      Quanto ao erro que está ocorrendo, é devido a um problema com a biblioteca necessária para o funcionamento do código.

  • Carolina
    10 julho 2017 at 00:25
    Enviar Resposta

    Olá, eu montei o braço perfeitamente, fiz as ligações elétricas e utilizei a programação que está acima. Só que o braço fica se mexendo bem fraco e os Joystick nem manda comando, o que pode ser , só utilizei alimentação do USB.

    • Equipe Usinainfo
      10 julho 2017 at 17:30
      Enviar Resposta

      Olá Carolina, possivelmente é falta de energia, pois a corrente do USB é de no máximo 250mA.
      O recomendado é utilizar alimentação externa.
      Att Equipe Usinainfo

    • Equipe Usinainfo
      10 julho 2017 at 17:34
      Enviar Resposta

      Olá Carolina, possivelmente é falta de energia, pois a corrente do USB é de no máximo 250m,
      o recomendado é utilizar alimentação externa.
      Att Equipe Usinainfo

  • natan
    16 agosto 2017 at 01:58
    Enviar Resposta

    o meu esta dando o seguinte erro Arduino: 1.8.4 Hourly Build 2017/08/10 11:33 (Windows 7), Placa:”Arduino/Genuino Uno”

    C:\Users\NATAN\AppData\Local\Temp\arduino_modified_sketch_972105\ISRBlink.pde:1:66: fatal error: VarSpeedServo.h: No such file or directory

    #include // Inclui a Biblioteca VarSpeedServo.h

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    O que eu faço ?????

    • Equipe Usinainfo
      21 agosto 2017 at 13:22
      Enviar Resposta

      Bom dia Natan!
      Pelo que vejo o código não está conseguindo encontrar a biblioteca VarSpeedServo.h dentro da libraries.
      Para isto basta seguir os passos especificados no transcorrer deste mesmo artigo, na área que falamos do GitHub.
      Qualquer duvida estamos a disposição.
      Att Equipe UsinaInfo

  • VITOR ARLEI BOEIRA DA SILVA
    28 agosto 2017 at 23:05
    Enviar Resposta

    Esse projeto funciona com programação? Ou só com os joystick??
    Queria comprar só o arduíno e a shild,tem como adaptar um Bluetooth para controlar pelo Cell??

    • Equipe Usinainfo
      29 agosto 2017 at 18:14
      Enviar Resposta

      Boa tarde!
      Sim, este projeto necessita de uma programação para realizar a leitura do joystick e movimentar os servos motores.
      Possivelmente tenha como controlar pelo celular, vai depender do aplicativo utilizado e da programação executada.

  • VITOR ARLEI BOEIRA DA SILVA
    30 agosto 2017 at 23:37
    Enviar Resposta

    Mas ele funciona sem os joystick?? Só com a programação??

    • Equipe Usinainfo
      31 agosto 2017 at 14:51
      Enviar Resposta

      Bom dia!
      Caso seja devidamente programado ele pode ser utilizado sem Joystick não há problema algum.
      Att Equipe UsinaInfo

  • Jean Arrais
    14 setembro 2017 at 22:29
    Enviar Resposta

    amigo na hora de compilar o código ele da erro segue erro
    Arduino: 1.8.4 (Windows 8.1), Placa:”Arduino/Genuino Uno”

    O sketch usa 2782 bytes (8%) de espaço de armazenamento para programas. O máximo são 32256 bytes.
    Variáveis globais usam 143 bytes (6%) de memória dinâmica, deixando 1905 bytes para variáveis locais. O máximo são 2048 bytes.
    avrdude: ser_open(): can’t open device “\\.\COM1”: O sistema não pode encontrar o arquivo especificado.

    Problema ao carregar para a placa. Veja http://www.arduino.cc/en/Guide/Troubleshooting#upload para sugestões.
    Biblioteca inválida encontrada em C:\Users\jean\Documents\Arduino\libraries\Downloads: C:\Users\jean\Documents\Arduino\libraries\Downloads
    Biblioteca inválida encontrada em C:\Users\jean\Documents\Arduino\libraries\Downloads: C:\Users\jean\Documents\Arduino\libraries\Downloads

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    • Equipe Usinainfo
      26 setembro 2017 at 14:18
      Enviar Resposta

      Bom dia!
      Ao que pude perceber você está com dois problemas, inicialmente o seu programa não está se conectando á porta COM específica do seu Arduino, tente alterar a porta COM. Maiores informações sobre este processo você pode encontrar em nosso artigo “COMO GRAVAR BOOTLOADER COM SHIELD AVR ISP E ARDUINO”, clicando aqui http://blog.usinainfo.com.br/como-gravar-bootloader-com-shield-avr-isp-e-arduino/ .
      Quanto ao segundo problema, existe uma biblioteca que está impedindo a utilização do referente código, tente entrar no caminho C:\Users\jean\Documents\Arduino\libraries e excluir a pasta “Downloads” para verificar se resolverá o problema. Caso desejar, recomendamos que crie uma cópia em outro lugar do referente arquivo para que não perca o mesmo caso necessite dele em projetos futuros.
      Att Equipe UsinaInfo

  • Rudimar
    11 novembro 2017 at 15:24
    Enviar Resposta

    Boa tarde, para usar a alimentação externa, tem que deixar ou retirar o jumper? não consegui ver onde é alimentado, se é na shield ou no arduino? Posso colocar a alimentação externa de 6v. Também ligo o arduino na alimetação?

    • Equipe Usinainfo
      16 novembro 2017 at 13:41
      Enviar Resposta

      Devido ao consumo de ambos os equipamentos, o recomendado é a utilização de uma fonte externa de aproximadamente 6V 1A para o shield que alimenta os servos e outra alimentação para o Arduino que pode ser via USB ou através de fontes de alimentação.

  • Douglas
    18 novembro 2017 at 05:42
    Enviar Resposta

    OLÁ

    Fiz a todo o processo de extrair o arquivo na pasta libraries e infelizmente está dando esse erro, poderiam me ajudar ?

    Arduino: 1.8.5 (Windows 10), Placa:”Arduino/Genuino Uno”

    C:\Users\ESK\Documents\Arduino\sketch_nov18d\sketch_nov18d.ino:1:66: fatal error: VarSpeedServo.h: No such file or directory

    #include // Inclui a Biblioteca VarSpeedServo.h

    ^

    compilation terminated.

    exit status 1
    Erro compilando para a placa Arduino/Genuino Uno

    Este relatório teria mais informações com
    “Mostrar a saida detalhada durante a compilação”
    opção pode ser ativada em “Arquivo -> Preferências”

    • Equipe Usinainfo
      30 novembro 2017 at 10:41
      Enviar Resposta

      Bom dia!
      O que ocorre, é que a sua biblioteca VarSpeedServo.h não foi devidamente instalada junto á pasta libraries do Arduino, verifique novamente o processo e tente outra vez. Vale lembrar que a pasta onde fica o arquivo .h preferencialmente deve conter o mesmo nome do arquivo, neste caso “VarSpeedServo”.

  • GABRIEL
    29 novembro 2017 at 18:24
    Enviar Resposta

    Boa tarde! Os motores possuem encoder? Para saber a posição do braço robótico (ângulos das juntas)

    Grato!

    • Equipe Usinainfo
      30 novembro 2017 at 10:43
      Enviar Resposta

      Bom dia Gabriel.
      O braço utiliza-se de servos motores para seu funcionamento, ou seja, possuem sua posição pré determinada pelo Arduino, não possui encoders para identificação de posição.
      Att Equipe UsinaInfo

  • Rodrigo Gonçalves Ribeiro
    26 dezembro 2017 at 01:48
    Enviar Resposta

    Tem como utilizar um controle do PS2 com fio neste projeto do braço robótico.

    • Equipe Usinainfo
      8 janeiro 2018 at 12:37
      Enviar Resposta

      Bom dia!
      É possível realizar a adaptação de um controle de PS2 em projetos eletrônicos com Arduino, vai depender somente da adaptação que irá realizar junto ao seu projeto.

  • Luciano
    24 janeiro 2018 at 22:57
    Enviar Resposta

    Boa noite
    Toda vez que o arduino é inicializado, o servomotor vai para uma posição com uma certa velocidade
    Gostaria de saber como faço para mudar essa posição e como controlo essa velocidade, após posicionar
    ele assume a velocidade programada no arduino

    • Equipe Usinainfo
      7 fevereiro 2018 at 16:27
      Enviar Resposta

      Boa tarde!
      Para solucionar o seu problema, acredito que a melhor forma é a inclusão da variável servo.write(ângulo) ao seu projeto, dê uma olhada e verifique a adaptação da mesma ao seu código.

  • Celso
    2 fevereiro 2018 at 16:40
    Enviar Resposta

    Boa tarde,

    ao iniciar o projeto do braço robótico, notei que existe um erro que deve ter passado despercebido.

    Ao atribuir as funções:

    VarSpeedServo servo_sobe; //Cria objeto para controlar o servo sobe
    VarSpeedServo servo_frente; //Cria objeto para controlar o servo frente

    Vocês atribuíram subir duas vezes, fazendo com que a função frente não existisse:

    void loop() {
    val_x = analogRead(pino_x); //Recebe o valor lido pelo eixo X do joystick
    val_x = map(val_x, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
    servo_sobe.slowmove(val_x, 60); //Movimenta o servo até a posição definida pelo eixo X

    val_y = analogRead(pino_y); //Recebe o valor lido pelo eixo Y do joystick
    val_y = map(val_y, 0, 1023, 1, 180); //Converte o valor lido para um valor em graus (1 a 180º)
    servo_sobe.slowmove(val_y, 60); //Movimenta o servo até a posição definida pelo eixo Y

    Mudei o “sobe” da última linha para o “frente”e o braço funcionou conforme o vídeo mostrado.

    Abraços!

    • Equipe Usinainfo
      6 fevereiro 2018 at 19:29
      Enviar Resposta

      Olá Celso!
      Pedimos desculpas pelo equivoco e agradecemos pela dica, realmente deixamos passar esta variável de forma incorreta durante o desenvolvimento do artigo, já corrigimos o erro e o código está correto novamente.

  • rodrigo Gonçalves Ribeiro
    16 maio 2018 at 21:52
    Enviar Resposta

    Equipe Usinainfo

    Meu braço robotico estou alimentando somente pela porta usb do computador no arduino. Quando faço ligação dos servos na shield principalmente o base gira sozinho. O que estou fazendo de errado.

  • Gustavo rocha
    1 junho 2018 at 15:51
    Enviar Resposta

    Posso desenvolver esse projeto utilizando Arduino Mega ou só o UNO ? A placa de expansão shield descrita serve tbm no Arduino Mega ? Obrigado amigo.

    • Equipe Usinainfo
      4 junho 2018 at 14:13
      Enviar Resposta

      Olá Gustavo!
      Pode utilizar tanto o Arduino UNO quanto o Mega para desenvolver o referente projeto, vale observar somente o encaixe do Shield com o Mega na hora da instalação e as devidas alterações junto à IDE Arduino.

  • Flavio
    29 julho 2018 at 02:29
    Enviar Resposta

    Este braço pode ser controlado com os modulos de radio frequencia de 433mhz ?

    • Equipe Usinainfo
      3 setembro 2018 at 13:43
      Enviar Resposta

      Bom dia!
      É possível desenvolver um projeto que utilize o Braço controlado através de um módulo RF, basta desenvolver um código e esquema compatível.

  • joao dolizney
    5 agosto 2018 at 22:19
    Enviar Resposta

    oi! o braço se movimenta sozinho, ja chequei os pinos etc e nenhuma alteração ,sabem o problema?

    • Equipe Usinainfo
      17 setembro 2018 at 19:53
      Enviar Resposta

      Olá, você está utilizando um sistema de alimentação adicional de 6V e aproximadamente 1A? Estes movimentos involuntários podem estar associados à falta de corrente, verifique a alimentação do seu projeto em primeiro lugar.

  • Gabriel
    27 agosto 2018 at 22:49
    Enviar Resposta

    Olá poderiam me enviar um arquivo em PDF com o manual de montagem ?

    • Equipe Usinainfo
      11 setembro 2018 at 13:44
      Enviar Resposta

      Olá Gabriel!
      Infelizmente não disponibilizamos o arquivo em PDF para Download, o mesmo é encaminhado de forma impressa junto com os pedidos realizados em nosso site.

    Enviar Resposta

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados