2

Atualmente ter um Braço Robotico Arduino sem ter que gastar muito dinheiro é seu atual desejo?

Então, eu tenho uma boa notícia para você: é possível, eu já construi um há muito tempo atrás e recentemente eu otimizei o projeto e gostaria de compartilha-lo com você!

Relaxe, pois você não precisará cortar MDF ou se preocupar com impressão 3D para fazer esse tipo de projeto.

O que você irá precisar para a parte estrutural é algumas unidades de palitos de picolé (isso mesmo!), alguns alfinetes, cola para unir tudo e componentes eletrônicos típicos de um Braço Robotico Arduino.

Esse talvez seja o seu primeiro projeto maker e DIY de Robótica com Arduino a definitivamente pôr a mão na massa.

Quer ver?

Então continue neste artigo e siga o passo a passo descrito para ter sucesso na construção do seu Braço Robotico Arduino:

Como surgiu esse projeto?

O Braço Robotico que você está prestes a construir:

Braço Robotico Arduino

Possui uma história peculiar por trás.

E essa história se dá no ano de 2015 onde consegui uma bolsa para desenvolver projetos de robótica e de eletrônica na Universidade na cidade onde habitava.

Além disso, graças a esse período de desenvolvimento de projetos com Arduino que decidi cursar Engenharia, especificamente a Mecatrônica.

Portanto, esse projeto que você está tendo a oportunidade de construir, foi validado na UFV como um projeto de Robótica Educacional promissor.

Veja só, esse sou eu apresentando o Braço Robotico desenvolvido na época:

Sendo assim, após alguns anos dessa época, resolvi aprimorar o projeto e desenvolver melhor sua programação e sua estrutura mecânica para que qualquer leigo na área pudesse construir tal projeto de forma prática e fácil.

Portanto fique ligado nos próximos passos para a construção definitiva do projeto.

Quais são as utilidades de um Braço Robotico?

Antes de entrar na parte definitiva de construção do Braço Robotico Arduino, devemos nos perguntar: onde encontramos esse tipo de tecnologia?

Então, reuni aqui alguns exemplos em nossa sociedade em que Braços Robóticos são bastante úteis.

Eles são encontrados nos seguintes ambientes:

Na Indústria

Braço Robótico Industrial

Certamente esse tipo de tecnologia está muito presente em inúmeras indústrias e possui como objetivo automatizar processos e acelerar a produção no chão de fábrica.

Há alguns anos atrás, devido ao alto custo envolvido, os robôs eram usados principalmente por grandes e lucrativas indústrias que produziam produtos de alto valor.

Mas nos dias de hoje a evolução da tecnologia está mudando a maneira como pensamos sobre a produção e a robótica de baixo custo, ou seja, Braços Robóticos estão cada vez mais presentes em fábricas já que os ganhos com a aplicação dessa tecnologia nesse ambiente refletem em maior lucro, economia de recursos e agilidade na produção.

Em Missões Espaciais

Braço Robótico Espacial

Já outra utilidade desse tipo de tecnologia é encontrada em robôs espaciais como o astromóvel Curiosity.

Ele possui um Braço Robotico de 2.1 metros de comprimento que é bastante útil para coletar amostras do solo, escavar e peneirar os resíduos.

Outra aplicação é o uso dessa tecnologia em naves e cápsulas espaciais:

Braço Robótico Utilizado em naves espaciais

Capsula Dragon da SpaceX sendo agarrada pelo Braço Robotico da Estação Espacial Internacional

Como Prótese Biônica

Braço Robótico Biônico

Com o desenvolvimento da tecnologia, braços biônicos estão se tornando cada vez mais acessíveis para a população.

Por exemplo, é possível encontrar protótipos ativados através do cérebro por um valor muito acessível atualmente.

Além disso, a resposta a estímulos cerebrais é muito eficiente o que permite pessoas segurarem desde objetos pequenos e delicados, como ovos, a coisas mais pesadas e maciças.

Como hobby

Braço Robótico Maker e DIY com Arduino

Outra principal utilidade, mas não menos importante, que muitos da área de eletrônica e robótica gostam, é poder construir seus próprios projetos e ter a chance de criar algo do zero.

Você não concorda que a melhor sensação de projetos de robótica é ver eles funcionando depois de construídos?

Porventura você não concorde comigo, mas, aposto que seu primeiro acender de LED’s com Arduino foi uma sensação inédita e fabulosa: ver aquelas luzes cintilando operando de acordo com a programação criada não tem preço.

Talvez essa sensação não tenha sido a sua, mas com certeza foi a minha quando construí meus primeiros projetos usando luzes!

E, é isso que você irá sentir ao final de ter construído este Braço Robotico Arduino.

Projetos assim que unem criatividade e robótica são os meus favoritos e se deixar, passo o dia construindo coisas.

Tutorial de construção do Braço Robotico Arduino – DIY

Calibração dos Servos Motores e dos Potenciômetros

Antes de colocar a mão na massa você precisa configurar todos os servos, menos o servo da garra, para a posição central de 90º.

Mas como fazer esse ajuste?

Apenas siga a montagem do seguinte circuito abaixo mudando os seus servos para calibrar todos e insira o código que está a seguir no seu Arduino:

Montagem da calibracao de servos motores do Braço Robótico
Montagem utilizada para calibrar os servos em um ângulo de 90°
#include <Servo.h>  // Inclua a biblioteca do Servo Motor

Servo meuservo;  // Crie uma variável objeto para controlar o Servo

int potpin = 0;  // Pino Analógico usado para conectar o potenciômetro
int val;    // Variável de leitura do valor do Pino Analógico

void setup() {
  meuservo.attach(9);  // Conecta o Servo no pino 9 do objeto Servo
  Serial.begin(9600);
}

void loop() {
  val = analogRead(potpin);            // Faz a leitura do potenciÔmetro (valor entre 0 e 1023)
  Serial.print("Valor analogico lido: ");
  Serial.println(val);
  val = map(val, 0, 1023, 0, 180);     // Faz a conversão para ser utilizado como graus no Servo (valor entre 0 e 180 graus)
  meuservo.write(val);                  // Configura o servo de acrodo com o valor convertido
  delay(15);                           // Espera o Servo completar o ângulo 
}

Com tudo montado você irá abrir o monitor serial e girar o potenciômetro de forma que o valor analógico lido seja de 512.

Monitor Serial de calibração

Lembrando que você deve repetir isso para todos os servos que for utilizar, mas não para o servo da garra.

Combinado?

Então vamos para a montagem de fato!

Montagem estrutural

Para você construir esse Braço Robotico inédito, sugiro ter em mãos os seguintes materiais:

  • 1x Cola Instantânea (do tipo TekBond);
  • 1x Cola Quente;
  • 1x Pacote de Palitos (os palitos devem possuir 11,5 cm de comprimento);
  • 5x Alfinetes;
  • 2x Parafusos 1/8 por 3/4 (para segurar a garra) e 2x porcas;
  • 1x Fita adesiva ou fita isolante para impedir os palitos de trincarem quando forem furados;
  • 2x Engrenagens (as que utilizo é um par retirado de uma impressora velha onde ambas possuem diâmetro de 1,5cm);
  • 1x Arame de 20 cm de comprimento e 2 mm de espessura (para fazer a comunicação servo-garra);
  • 2x Cotonetes (para impedir de o arame envergar);

Já para furar e cortar tudo isso, recomendo você se equipar com:

  • Alicate de corte (para cortar a madeira, fios, alfinete, etc);
  • Ferro de solda velho ou que não irá prejudicar suas soldas com estanho (para fazer furos na madeira);
  • Chave Philipis.

Montagem da base do Braço Robótico Arduino

Primeiramente, é preciso construir a plataforma de sustentação de todo o projeto.

No meu caso, juntei 10 palitos e os uni na extremidade.

Veja só:

Basedo braço robótico arduino
  • Base 1 – Usada para a protoboard + circuito + Arduino;
  • Base 2 – Usada para os potenciômetros.

Servo motor da base

Para fixar nosso primeiro servo é preciso fazer um apoio para ele da seguinte forma:

Fixação do Servo Motor da base
  • 3 – Conjunto de 6 a 7 palitos de 5 cm de comprimento empilhados um cima do outro;
  • 4 – Palitos que irão fixar o servo com a ajuda de seus parafusos.

Como eu irei utilizar os servos em projetos futuros, irei preferir parafusa-los na madeira, como você deve ter notado na imagem acima.

Montagem da base dos servos 2 e 3

Já para os servos do ombro e do cotovelo (servos 2 e 3), precisaremos de uma base para fixa-los.

Veja a imagem abaixo em que essa base está melhor representada:

Base dos servos motores 2 e 3
  • 5 – Parafuso utilizado para prender o eixo na base – isso gerará mais estabilidade para o seu Braço Robotico Arduino;
  • 6 – Base para suportar os servos 2 e 3.

Note que você deve prender o eixo do servo 1 na base dos servos 2 e 3 (utilize o parafuso que veio com ele).

Já para mover todo o conjunto, você deve colar o atuador do seu servo na base, assim:

Fixação da base dos servos 2 e 3

Construção da estrutura de locomoção do Braço Robotico Arduino

Agora é hora de você construir os mecanismos que irão movimentar o braço de fato, ou seja, o “ombro” e o “cotovelo” do seu Braço Robotico Arduino.

Veja só:

Estrutura de Locomoção Braço Robótico Arduino
  • 7 – Conjunto referente ao ombro;
  • 8 – Conjunto referente ao cotovelo.

PS: Tenha atenção nessa etapa do projeto pois ela é fundamental para a movimentação da maneira correta do nosso Braço Robotico Arduino.

Para o cotovelo, teremos a seguinte estrutura:

Estrutura de locomoção do cotovelo do Braço Robótico Arduino
  • 9 – Estrutura de locomoção do cotovelo;
  • 10 – O comprimento dessa peça que vai colada no atuador do servo é de 5,5 cm.

Veja que as setinhas menores estão apontando para a posição de cada alfinete utilizado no Braço Robotico Arduino.

Prefira utilizar alfinetes ao invés de parafusos pela sua praticidade e por serem fáceis de perfurar os palitos.

VÍDEO MOVIMENTAÇÃO COTOVELO (EM BREVE)

Sendo assim, o próximo passo é medir distância do eixo do servo até a base:

Palito de picole para sustentação do braço

Mas você deve estar se perguntando, qual é essa altura e onde a obtenho?

Ela é oriunda dessa distância abaixo:

Indicação da altura dos servos motores

Onde, no meu caso, D está próximo de 2,2 cm.

Mas porque dessa medida?

Igual você deve ter notado, essa medida é necessária para o palito de sustentação de todo o conjunto do Braço Robotico Arduino.

Veja só:

Palito de picolé que sustenta o Braço Robótico Arduino

PS: Não cole os palitos 11 e 12 na base ainda.

  • 11 – Palito de sustentação do conjunto ombro+cotovelo. Esta peça possui 4,5 cm de comprimento;
  • 12 – 2x Calços de 1 cm de comprimento para dar maior aderência e fixação quando colados.

Observe que nele há um alfinete que servirá para unir os dois servos e o conjunto de locomoção do nosso braço.

Depois que você já tiver obtido a medida da posição do alfinete (D = 2,2 cm), e tiver com a estrutura do cotovelo montada, o próximo passo deverá ser construir o ombro que ficará assim:

Estrutura de locomoção do ombro do Braço Robótico Arduino
  • 13 – Estrutura de locomoção do ombro.
  • 14 – Palito de picolé que vai colado no atuador do servo (em cinza);

Portanto, para colar a peça 14 no atuador do servo você pode utilizar um palito de mais ou menos 3 cm, ou seja, do mesmo comprimento do atuador do servo.

Observe:

Palito de picolé fixador do ombro do Braço Robótico Arduino
  • 15 – Cole essas duas peças em um ângulo de mais ou menos de 90°, para elas poderem se movimentar assim:

VÍDEO MOVIMENTAÇÃO OMBRO SLDWORKS (EM BREVE)

Finalmente, essa etapa de construção deverá ficar assim:

Montagem final da estrutura de locomoção do braço
  • A esquerda – Locomoção do ombro;
  • A direita – Locomoção do cotovelo.
Montagem final de locomoção do braço

Não se esqueça do alfinete que irá unir todo o conjunto ombro/cotovelo no palito de sustentação.

Como mencionado anteriormente, ele se passa no interior das pecinhas dos servos motores.

Depois que finalizar essa estrutura de locomoção do Braço Robotico Arduino, cole-a na base dos servos 2 e 3 e cole também os servos motores.

Mas, para fixar os servos nessa base você pode colá-los diretamente, o que não acho uma boa opção se você for utilizá-los em projetos futuros, ou pode fazer uma adaptação utilizando seus parafusos, por exemplo:

Servos motores de locomoção do Braço Robótico Arduino
  • 16 – Parafusos que fixam os servos na base.

Para fazer isso funcionar você deve colar duas tiras de palito de picolé de forma que fiquem bem presas e de forma que você consiga parafusar o servo no meio delas.

DICA: Pegue uma chave Philips e vá forçando o parafuso contra a madeira até que ele entre por completo. Depois é só colocar o servo motor na posição inserindo o parafuso novamente.

Feito isso, basta colar as tiras de palito com os servos parafusados na base, respeitando a distancia entre os servos, assim:

Distância entre os servos motores do Braço Robótico
  • D – Distância equivalente a 3,7 cm.

PS: Cole primeiro a estrutura ombro/cotovelo e, após, os servos pois essa medida pode variar com o tipo de servo que estiver utilizando.

Feito isso, corte 2 tiras de palito com comprimento de 3,5 cm, ou seja, da mesma altura do seu servo, e cole-as na base de forma que fiquem encostando na lateral dos servos:

Estabilização do Braço Robótico
  • 17 – Apoios estabilizadores para os servos.

Posicionamento do Servo Motor 4

Estamos quase finalizando nosso projeto!

Agora, precisamos construir nossa garra com o Servo Motor Tower Pro de 9g.

Esse servo irá fechar e abrir a garra de acordo com o acionamento do pushbutton.

Observe como deverá ficar:

Madeira sustentação garra e servo motor Arduino

Utilize o palito de 10 cm de comprimento (de acordo com a imagem acima) para servir como sustentação para seu servo motor e para sua garra.

Você deve fura-lo com alfinetes para os servos locomoverem o Braço Robotico Arduino respeitando as distâncias abaixo:

Distância de furação com alfinetes e palito de picolé
  • D1 – 3,3 cm;
  • D2 – 6 cm.

Agora, para o servo, faça o seguinte apoio:

Apoio do servo da garra
  • 18 – Arame de 15 cm de comprimento e 2 mm de espessura com 2 pedaços de  cotonete para impedir seu envergamento.
  • 19 – Conjunto palitos de apoio para fixar o parafuso do servo (1cmx1cm);

Caso você também não quiser parafusar o servo você tem a opção de colá-lo na madeira.

Se for parafusa-lo, não se esqueça de passar bastante cola e prender bem firme a madeira uma na outra para impedir que ela se rompa quando o parafuso estiver perfurando-a.

Construção da garra do seu Braço Robótico Arduino

Para a garra, você precisará fazer uma estrutura bem simples.

Veja só:

Construção da base de apoio do servo motor da garra do Braço Robótico Arduino
  • D1 – 3 cm;
  • 20 – Peça de 2cm de comprimento que é usada para dar mais apoio a base da garra (quando colada).

Observe que há dois furos nessa peça. Isso é necessário para poder passar o parafuso e prender as engrenagens.

DICA 1: Utilize algo quente para perfurar a madeira, como um ferro de solda velho e encaixe a madeira nos eixos dos potenciômetros como na imagem acima. No meu caso, eu utilizei um ferro de solda antigo para não danificar o ferro que uso em soldas de estanho.

O diâmetro desse furo irá depender da engrenagem que estiver utilizando. No meu caso essa medida está próxima de 0,4 cm.

DICA: Experimente fazer esses furos com o ferro de solda e caso os palitos trincarem, passe cola instantânea em volta ou fita para impedir os palitos de se partirem ao meio.

A montagem final do mecanismo da garra ficará da seguinte forma após você ter feito o furo para o parafuso poder fixar as engrenagens:

Procedimento de construção da garra do braço robótico

Já as medidas e as peças usadas nesse conjunto são as seguintes:

Montagem final da estrutura da garra
  • 21 – Garra;
  • 22 – Palito (3 cm de comprimento) que através do arame faz a comunicação com o servo e com a garra;
  • 23 – Engrenagem utilizada que deve ser colada na peça 21;
  • 24 – Base da garra e de todo esse conjunto.

Observe na imagem acima que a garra se encaixa perfeitamente após fazermos alguns cortes na madeira.

DICA: Não aperte os parafusos de forma que o servo precise de mais do que sua capacidade de torque (força) para mover a garra. Portanto, sugiro que deixe uma folga no sistema.

Além disso para melhorar a aderência ao pegar objetos, você pode colar 2 pedaços de EVA na extremidade da garra, veja só:

Estrutura final da garra do Braço Robótico Arduino
  • E1 – 2 Pares de EVA de 3 cm de comprimento e 1,5 cm de largura.

Construção do Braço de Comandos (potenciômetros)

Assim que acabar de construir todo o braço, parta para a construção do nosso Braço de Comandos que ficará da seguinte forma:

Braço de Comandos com potenciômetros

DICA 1: Não cole os potenciômetros na madeira para ser possível regular a posição do seu braço robotico futuramente.

Nessa ilustração, temos o seguinte:

  • 25 – Potenciômetro responsável por movimentar o servo do cotovelo através de um palito de comprimento 5 cm;
  • 26 – Potenciômetro que movimenta o servo do ombro através de um palito palito de comprimento 6 cm);
  • 27 – Potenciômetro que movimenta o servo da base através de um palito palito de comprimento 8 cm);
  • 28 – Botão que abre e fecha a garra.

Para esse último componente, o botão, faça uma base de uns 4 a 5 palitos e depois insira o switch colando-o por cima dos palitos.

Posteriormente, você deve conectá-lo ao Arduino e para isso você deve soldar dois fios nos seus terminais ficando atento as conexões internas desse tipo de botão:

Esquema das conexões de um botão em Arduino

Os pinos que “não estão conectados” você deve direcionar um deles para o Arduino e o outro para o GND.

No próximo tópico iremos abordar o circuito e a montagem dos componentes com mais detalhes.

Base de comandos alternativa

Se você preferir, pode optar por construir uma base de potenciômetros mais compacta como no exemplo que fiz abaixo:

Base alternativa de potenciômetros para o projeto

Você pode colar a base de potenciômetros ao lado onde se localiza o circuito e, assim, economizar espaço no projeto e deixa-lo mais reduzido.

Montagem dos componentes do Braço Robotico Arduino

Chegamos na parte elétrica do nosso projeto e para construir o circuito você irá precisar dos seguintes componentes:

  • 4x Servo Motores Tower Pro;
  • 4x Potenciômetros de 10kOhms;
  • 1x Botão;
  • 1x Arduino Uno;
  • 1x Fonte de Alimentação para inserir na protoboard;
  • 1x Fonte de 9V ou uma bateria de 9V;
  • Alguns fios jumpers.

Veja a montagem dos componentes na imagem abaixo:

Braço Robótico Arduino e montagem dos componentes

Montagem dos componentes do Projeto Braço Robotico Arduino
Braço Robótico Arduino e montagem do esquema elétrico

Montagem do esquema elétrico do Projeto Braço Robótico Arduino

NOTE: O Arduino será alimentado pela porta Vin e não por uma porta USB. Então, fique atento às conexões!

Caso você não possua muito conhecimento sobre Arduino e gostaria de aprofundar nessa tecnologia, recomendo acessar agora o artigo com tudo que você precisa saber sobre a plataforma.

Além disso, não se preocupe caso não possuir o mesmo servo motor que estou utilizando aqui no projeto – de engrenagem metálica, você pode optar por utilizar o servo SG90 que o braço robotico ainda funcionará.

Caso você quiser saber as diferenças entre ambos servos utilizados, veja a tabela abaixo:

Diferenças entre o Servo Motor SG90 e MG90 do braço robótico
EspecificaçõesSG90MG90S
Torque a 4.8V1.2 kgf·cm1.8 kgf·cm
Torque a 6.0V1.6 kgf·cm2.2 kgf·cm
Peso9 g13.4 g
Dimensões22.2 x 11.8 x 3122.5 x 12 x 35.5
EngrenagemNylonMetálica

Como estamos utilizando uma fonte de alimentação que nos fornece aproximadamente 4.8V, nossos servos trabalham com um torque de 1.8 kgf·cm (MG90) e 1.2 kgf·cm (SG90).

A definição dessa grandeza física – torque – está relacionada a capacidade de um motor de realizar uma rotação em volta de seu eixo.

Ou seja, quanto maior o torque, mais força um servo motor terá para levantar os objetos e os palitos de picolé.

Além disso, outra diferença clara entre esses dois componentes é que um possui engrenagens metálicas (MG90) e o outo possui sua engrenagem de nylon (SG90).

Veja os datasheets desses componentes aqui: SG90 e MG90.

Código utilizado no projeto

O código utilizado para controlar os servos motores é o seguinte:

/*

 Controlando um Braço Robotico Arduino com 4 servos, 3 potenciômetros e 1 switch.
  Por: Flávio Babos
 Mais projetos como esse, acesse: <http://flaviobabos.com.br>
 
*/


#include <Servo.h> // Biblioteca do servo

// -- Declarando os servos como objetos

Servo servogarra; 
Servo servobase;
Servo servoombro;
Servo servocotovelo;


// -- Declarando variáveis globais --

// Relacionando as portas analógicas aos potenciômetros
int pot1 = 0;  // Pot. da base       
int pot2 = 1;  // Pot. do ombro 
int pot3 = 2;  // Pot. do cotovelo 

// Variaveis que representam o ângulo que cada servo irá fazer
int ang1;          
int ang2; 
int ang3;

int botao = 10;     // Atribuindo a porta digital ao push button
int garraabre = 0; // Angulo usado para abrir a garra
int garrafecha = 100;  // Angulo usado para fechar a garra

bool estadobotao;   // Variável usada para ler o estado do botao, 'bool' quarda uma condição verdadeira ou falsa

void setup() {

  // Diz ao arduino em quais pinos os servos estão conectados
  servobase.attach(9); 
  servoombro.attach(8);
  servocotovelo.attach(7);       
  servogarra.attach(6);
  
  // Declare o botao como input pois, o arduino fará a leitura de 
  // um botão externo para checar se ele está pressionado ou não
  pinMode(botao, INPUT_PULLUP);   

  // Inicializa a porta serial da IDE
  Serial.begin(9600);

}

void loop() {
  
  // Variável que recebe a informação se o botão está pressionado ou não
  estadobotao = digitalRead (botao);  

  if(estadobotao == LOW){  // Se o botão estiver pressionado 
   servogarra.write(garrafecha);   // Servo Motor executa o fechamento da garra 
   Serial.print("GARRA: fechada"); // Printa no Monitor Serial o status atual
   delay(15);
   }
    
   else{                   // Se o botão não estiver pressionado   
     servogarra.write(garraabre);  // Servo Motor realiza a abertura da garra 
     Serial.print("GARRA: aberta"); // Printa no Monitor Serial o status atual
     delay(15);
     }
      
  ang1 = analogRead(pot1);            // Lê o valor do potênciometro 1 (valor entre 0 e 1023)
  ang1 = map(ang1, 0, 1023, 0, 180);     // Transforma esse valor em graus (valor entre 0 e 180)
  servobase.write(ang1);                    // Faz o servo girar de acordo com o valor transformado
  delay(15);  

  ang2 = analogRead(pot2);            // Lê o valor do potênciometro 2 (valor entre 0 e 1023)
  ang2 = map(ang2, 0, 1023, 0, 160);     // Transforma esse valor em graus (valor entre 0 e 160)
  servoombro.write(ang2);                  // Faz o servo girar de acordo com o valor transformado
  delay(15); 

  ang3 = analogRead(pot3);            // Lê o valor do potênciometro 3 (valor entre 0 e 1023)
  ang3 = map(ang3, 0, 1023, 0, 160);     // Transforma esse valor em graus (valor entre 0 e 160)
  servocotovelo.write(ang3);                // Faz o servo girar de acordo com o valor transformado
  delay(15); 
  
  Serial.print("    Servo BASE: ");    // Escreve na tela o ângulo que o servo da base está executando
  Serial.print(ang1); Serial.print("º");
  Serial.print("    Servo OMBRO: ");   // Escreve na tela o ângulo que o servo do ombro está executando
  Serial.print(ang2); Serial.print("º");
  Serial.print("   Servo COTOVELO: "); // Escreve na tela o ângulo que o servo do cotovelo está executando
  Serial.print(ang3); Serial.print("º");
  Serial.println(" ");                 // Salta uma linha na leitura para recomeçar o loop novamente
   
  }

Explicação passo a passo do código do Projeto Braço Robotico Arduino

Seta BIBLIOTECA USADA

Primeiro de tudo devemos incluir a biblioteca do Servo Motor:

#include <Servo.h> // Biblioteca do servo

Seta VARIÁVEIS GLOBAIS

Posteriormente, declare os servos motores utilizados como objetos para serem controlados pelo programa:

Servo servogarra; 
Servo servobase;
Servo servoombro;
Servo servocotovelo;

As próximas variáveis que você irá criar relacionam os valores obtidos no potenciômetro com os respectivos ângulos que os servos irão rotacionar.

A lógica para isso acontecer você irá aprender dentro do loop, mas por agora não se esqueça de declarar tais variáveis globais:

int pot1 = 0;  // Pot. da base       
int pot2 = 1;  // Pot. do ombro 
int pot3 = 2;  // Pot. do cotovelo 

int ang1;          
int ang2; 
int ang3;
int garraabre = 0; // Angulo usado para abrir a garra
int garrafecha = 100;  // Angulo usado para fechar a garra

Por fim e não menos importante, declare o pino em que o botão se encontra conectado na porta digital do Arduino: D10 e, além disso, crie uma variável para ler o estado desse botão:

int botao = 10;     
bool estadobotao; 

Seta CONFIGURANDO A FUNÇÃO NATIVA SETUP ()

Geralmente a primeira coisa que fazemos no setup () é definir os pinos que os componentes externos estão conectados.

Veja só:

  servobase.attach(9); 
  servoombro.attach(8);
  servocotovelo.attach(7);       
  servogarra.attach(6);

Definimos nomes para os servos para facilitar na hora da programação e na montagem da estrutura do braço:

Em seguida declare o botão, com o auxílio do pinMode(), como um componente de entrada (INPUT) e inicialize a comunicação serial a 9600 bps:

pinMode(botao, INPUT_PULLUP);   
 
Serial.begin(9600);
servogarra.write(garraabre);

Seta CONFIGURANDO A FUNÇÃO NATIVA LOOP ()

Dentro do loop() comece fazendo a leitura do estado do botão: pressionado –  HIGH, não pressionado – LOW.

estadobotao = digitalRead (botao);  

Seta A CONDIÇÃO IF()…ELSE

Utilizamos essa função como uma condição para verificar se o botão estiver pressionado, fazer a ação de fechar a garra e usamos a função else para, senão estiver pressionado, abrir a garra.

Veja só como essa lógica é simples:

  if(estadobotao == LOW){  
   servogarra.write(garrafecha);   
   Serial.print("GARRA: fechada");
   delay(15);
   }
    
   else{                 
     servogarra.write(garraabre);  
     Serial.print("GARRA: aberta"); 
     delay(15);
     }

Servo.write () é o comando da biblioteca do servo que executa o ângulo que estiver dentro dos parênteses e Serial.print () é a função que imprime o estado atual do servo motor no monitor serial.

E, falando em monitor serial, você poderá acompanhar ao vivo o circuito e ter um feedback de como os servos são responsivos de acordo com o movimento dos potenciômetros.

Seta PARTE ESSENCIAL DO CÓDIGO

As linhas seguintes são cruciais para o devido funcionamento dos servos motores:

ang1 = analogRead(pot1);            
  ang1 = map(ang1, 0, 1023, 0, 179);     
  servobase.write(ang1);                    
  delay(15);  

  ang2 = analogRead(pot2);            
  ang2 = map(ang2, 0, 1023, 0, 160);     
  servoombro.write(ang2);                  
  delay(15); 

  ang3 = analogRead(pot3);            
  ang3 = map(ang3, 0, 1023, 0, 160);     
  servocotovelo.write(ang3);
  delay(15); 

A lógica funciona assim:

  1. as variáveis ang1, ang2 e ang3 irão receber os valores de cada potenciômetro pot1, pot2 e pot3 que estão associados a cada servo motor diferente;
  2. Posteriormente esse valor precisa ser transformado em um valor referente a graus. Dessa forma, utilizamos a função map() para converter os valores analógicos 0 à 1023 lidos pelos potenciômetros para valores em graus que variam de 0 a 179;
  3. Finalmente, com a ajuda da função servo.write(), o servo irá girar de acordo como ângulo que lhe foi informado.

Seta PARTE FINAL: IMPRIMINDO NO MONITOR SERIAL

Por fim, termine de printar os ângulos dos servos restantes para verificar se tudo está funcionando como esperado:

Serial.print("    Servo BASE: ");    
  Serial.print(ang1); Serial.print("º");
  Serial.print("    Servo OMBRO: "); 
  Serial.print(ang2); Serial.print("º");
  Serial.print("   Servo COTOVELO: ");
  Serial.print(ang3); Serial.print("º");
  Serial.println(" "); 

Dessa forma, você poderá acompanhar ao vivo o que está ocorrendo com o circuito:

Monitor Serial do Braço Robótico Arduino

Projeto finalizado

Se você seguiu firme na construção do Braço Robótico Arduino até aqui e concluiu todas as etapas de montagem, é muito provavel que ele irá se parecer com o Braço das imagens abaixo:

Braço Robótico Arduino Final
Braço Robótico Arduino – finalizado!
Braço Robótico Arduino Potenciômetros
Braço Robótico Arduino mostrando o Braço de Comandos

Veja o vídeo abaixo e note como se dá seu movimento:

O Braço Robótico Arduino está um pouco instável devido a um potenciômetro que movimenta o servo do cotovelo estar dando mal contato.

Além disso, não foi falado aqui, mas, para minimizar essa instabilidade recomendo utilizar no circuito um capacitor de 470uF e bons potenciômetros, claro!

E aí, gostou desse projeto Braço Robotico Arduino?

Então compartilha com alguém para que todos tenham a oportunidade de construir um também!

E, se você ficar preso em algum lugar deste projeto Braço Robotico Arduino, sinta-se à vontade para enviar suas perguntas através da seção de comentários abaixo, combinado?

Até o próximo projeto!

Flávio Babos
Futuro Engenheiro Mecatrônico pela Federal de Uberlândia, fanático por Tecnologia, Empreendedorismo e Gestão. Desde pequeno faz projetos com Arduino e recentemente atuou na Empresa Júnior do seu curso gerenciando equipes de engenharia no setor de vendas e de projetos.

Internet das Coisas: o que é + 13 exemplos que você precisa conhecer

Previous article

You may also like

2 Comments

  1. Flávio, gostei muito do seu projeto, Eu estou com um projeto, gostaria de falar contigo sobre o seu e fazer umas perguntas!
    Aguardo seu retorno.
    Obrigado.

    1. Olá Wanderson, tudo certo? Que bom que curtiu o projeto!! Pode entrar em contato comigo diretamente por e-mail [email protected] e estou a disposição para conversarmos!
      Valeuu, até!

Leave a reply

Your email address will not be published. Required fields are marked *