Projeto de braço robótico simples usando Arduino

Tempo de leitura: 6 minutes

Projeto de braço robótico usando Arduino

Hoje em dia, o trabalho manual está sendo reduzido em indústrias e fábricas de grande escala para aumentar a eficiência e obter lucro com a instalação de robôs que podem fazer trabalhos repetitivos. Uma única instalação de tal dispositivo pode custar muito, mas, a longo prazo, acabará sendo mais lucrativa do que o trabalho manual. Fora do lote, um braço robótico simples é uma das máquinas mais comumente instaladas. Estamos apresentando os conceitos básicos de um projeto de braço robótico controlado por Arduino.

O braço robótico programável encontra muitas aplicações em seu uso em condições extremas, como missões espaciais ou expedições subaquáticas. Também é usado em usinas nucleares e em atmosfera tóxica onde a vigilância humana é difícil.

Existem vários tipos de braço robótico usados ​​em indústrias, mas forneceremos detalhes sobre um protótipo básico. A movimentação das peças é feita por servomotor, que pode girar aproximadamente até 190 graus. Todo o circuito é alimentado por um adaptador de 12 volts e um Arduino Nano é usado como unidade de controle. O servo motor para braço robótico é controlado pelo celular Android. A comunicação entre o celular e o braço do servo robô é feita pelo módulo Bluetooth HC-05.

 

Componentes Usados

ComponentesEspecificaçõesQuantidade
ArduinoNano1
Servo MotorG94
Braço robóticoPeças de impressora 3D
Módulo BluetoothC-051
Adaptador de energia12 Volt1

 

Projeto Arduino Robotic Arm – Trabalhando

O braço do mini-robô usa quatro servomotores para mover o braço. Os servomotores são controlados pelo Arduino e conectados ao pino PWM do Arduino. Existem oito botões no aplicativo Android. Destes, quatro botões são usados para controlar os quatro servo motores. Um botão é usado para rotação no sentido horário e o outro é usado no sentido anti-horário do braço do mini robô.

A interface do aplicativo Bluetooth é mostrada na figura abaixo.

Interface de aplicativo Bluetooth

 

Dos oito botões, quatro são vermelhos e quatro são amarelos. Quando um botão é pressionado, ele envia um caractere exclusivo para o Arduino via Bluetooth. Assim que o Arduino recebe o caractere, seu comando é identificado e gira o servo motor de acordo.

Para rotação no sentido horário do servo motor, o botão vermelho no aplicativo deve ser pressionado. Quatro botões são usados para cada servomotor. Quando o botão vermelho é pressionado, ele envia dois tipos de caracteres. O primeiro é o personagem de imprensa e o segundo é o personagem de lançamento. Quando um botão é pressionado, um caractere é enviado por Bluetooth e o Arduino gira o servo motor um grau em um ciclo. Se o botão não for liberado, o servomotor se move um grau no próximo ciclo.

Este mesmo processo também é usado quando os botões amarelos são pressionados, mas desta vez o servo motor gira um grau no sentido anti-horário. Os caracteres de imprensa e liberação são mostrados na tabela abaixo.

 

Braço de robô programável – caracteres de imprensa e liberação

InterruptorPressione CharRelease Char
RED1Aa
RED2Bb
RED3Cc
RED4Dd
YELLOW1Zz
YELLOW2Yy
YELLOW3Xx
YELLOW4Ww

Projeto Arduino Braço robótico – Circuito

No circuito, é usado o Arduino Nano e o módulo Bluetooth HC-05 é conectado a ele. Servomotores são conectados a pinos PWM do Arduino e o circuito é alimentado com um adaptador DC de 12 volts.

Existem três pinos no servo motor. Um é o Vcc, o outro é o GND e o terceiro é o pino SIG. O pino SIG é conectado aos pinos PWM do Arduino. Os pinos 6, 9, 10 e 11 são conectados ao servomotor. O módulo Bluetooth possui quatro pinos de conexão. Dois deles são Vcc e GND. Os outros dois são pinos Rx e Tx. O pino Rx está conectado ao pino 8 do Arduino e o pino TX está conectado ao pino 12 do Arduino.

No projeto de braço robótico usando Arduino, um PCB gravado é usado. O design do PCB é fornecido abaixo.

Projeto Arduino Robotic Arm – PCB Design

 

O diagrama do circuito é fornecido abaixo.

Projeto de braço robótico simples usando Arduino – Diagrama de circuito

 

 

Montagem de peças impressas 3-D

Peças impressas em 3D são usadas no braço. Visite o link http://www.instructables.com/id/EEZYbotARM/ para montagem de peças. Se você tiver uma impressora 3D, pode baixar os arquivos do link ou visitar qualquer site de e-commerce (Mercado Livre).

Braço Robótico Controlado Arduino

 

 

Programa / Código

No início do código, dois arquivos de cabeçalho são usados. O primeiro é “SoftwareSerial.h” que é usado para o módulo Bluetooth e o segundo é “servo.h” que é usado para o braço do servo-robô. Agora os pinos Bluetooth Rx e Tx são definidos pela função “Software Serial mySerial(7, 8)” em que o pino 7 é conectado ao pino Rx do módulo Bluetooth e o pino 8 é conectado ao pino Tx.

Agora os servomotores são declarados pela função “Servo myServo”. Quatro servos são declarados pela mesma função da linha 6 a 9. Depois disso, quatro inteiros são declarados pelos nomes pos1 a pos4. Todos os inteiros são iguais a 90 (graus), que é a posição inicial do servo motor. Outro número inteiro é declarado pelo nome “in”, que é igual ao caractere de entrada vindo do telefone móvel.

Na configuração de vazio, “mySerial.begin(9600)” é usado para o início de comunicação usando Bluetooth. Todos os servo motores são ativados usando “myServo.attach()”

No loop void, mySerial.available() é usado no loop if, ele será executado ao receber dados do lado móvel. Agora, este char é atribuído no intiger “em”.

Na linha “32 in ==‘ A ’“ é usado dentro do loop “if” quando se torna verdadeiro, a pos1 começa a aumentar. A mesma condição é usada na linha 33 para Z para diminuir o valor de pos1. Essas condições são usadas para pos2, pos3 e pos4. Agora a função “myServo.write(pos)” é usada para mover na posição “pos”.

#include <SoftwareSerial.h>
#include <Servo.h>

SoftwareSerial mySerial(7, 8);

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;

int pos1=90;
int pos2=90;
int pos3=90;
int pos4=90;

int in;

void setup() {
  mySerial.begin(9600);

  myservo1.attach(6);
  myservo2.attach(9);
  myservo3.attach(10);
  myservo4.attach(11);
}

void loop() { 
  if (mySerial.available()) {
    in = mySerial.read();
  }

  if (in == 'A')    {  pos1=pos1+1; if(pos1>180) {pos1=180;} Serial.println(pos1); delay(10);} 
     if (in == 'Z') {  pos1=pos1-1; if(pos1<0)   {pos1=0;  } Serial.println(pos1); delay(10);}

  if (in == 'B')    {  pos2=pos2+1; if(pos2>180) {pos2=180;} Serial.println(pos2); delay(10);} 
     if (in == 'Y') {  pos2=pos2-1; if(pos2<0)   {pos2=0;  } Serial.println(pos2); delay(10);}

  if (in == 'C')    {  pos3=pos3+1; if(pos3>180) {pos3=180;} Serial.println(pos3); delay(10);} 
     if (in == 'X') {  pos3=pos3-1; if(pos3<0)   {pos3=0;  } Serial.println(pos3); delay(10);}

  if (in == 'D')    {  pos4=pos4+1; if(pos4>180) {pos4=180;} Serial.println(pos4); delay(10);} 
     if (in == 'W') {  pos4=pos4-1; if(pos4<0)   {pos4=0;  } Serial.println(pos4); delay(10);}
  
  myservo1.write(pos1);
  myservo2.write(pos2); 
  myservo3.write(pos3); 
  myservo4.write(pos4); 
}