Projeto de braço robótico simples usando Arduino
Conteudo
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
Componentes | Especificações | Quantidade |
---|---|---|
Arduino | Nano | 1 |
Servo Motor | G9 | 4 |
Braço robótico | Peças de impressora 3D | |
Módulo Bluetooth | C-05 | 1 |
Adaptador de energia | 12 Volt | 1 |
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.
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
Interruptor | Pressione Char | Release Char |
---|---|---|
RED1 | A | a |
RED2 | B | b |
RED3 | C | c |
RED4 | D | d |
YELLOW1 | Z | z |
YELLOW2 | Y | y |
YELLOW3 | X | x |
YELLOW4 | W | w |
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.
O diagrama do circuito é fornecido abaixo.
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).
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); }