Controle Braço Robótico Arduino via App Android Dedicado
Componentes e Materiais
- 1x LittleArm (braço robótico)
- 1x Arduino UNO
- 1x Módulo Bluetooth HC-05
- 1x Dispositivo Android
- 1x Kit Completo LittleArm (opcional)
Aplicativos e Serviços
- App Android LittleArm
- Arduino IDE
Sobre o Projeto
O LittleArm era tradicionalmente controlado por um aplicativo desktop gratuito (Windows/Linux), exigindo conexão por cabo ao computador. Agora, com o app Android dedicado, você pode controlar o Arduino sem fio via Bluetooth.
O app permite controlar todos os graus de liberdade (DOF) do LittleArm, além de gravar sequências de comandos e reproduzi-las. O código do Arduino não muda em relação ao código tradicional dos pacotes de software.
O app LittleArm pode ser baixado na página do projeto.
Código do Arduino
#include <Servo.h>
#include <math.h>
#define PI 3.141
Servo baseServo;
Servo shoulderServo;
Servo elbowServo;
Servo gripperServo;
int command;
struct jointAngle {
int base;
int shoulder;
int elbow;
};
int desiredGrip;
int gripperPos;
int desiredDelay;
int servoSpeed = 15;
int ready = 0;
struct jointAngle desiredAngle;
int servoParallelControl(int thePos, Servo theServo, int theSpeed);
void setup() {
Serial.begin(9600);
baseServo.attach(9);
shoulderServo.attach(10);
elbowServo.attach(11);
gripperServo.attach(6);
Serial.setTimeout(50);
Serial.println("iniciado");
baseServo.write(90);
shoulderServo.write(150);
elbowServo.write(110);
ready = 0;
}
void loop() {
if (Serial.available()) {
ready = 1;
desiredAngle.base = Serial.parseInt();
desiredAngle.shoulder = Serial.parseInt();
desiredAngle.elbow = Serial.parseInt();
desiredGrip = Serial.parseInt();
desiredDelay = Serial.parseInt();
if (Serial.read() == '\n') {
Serial.flush();
Serial.print('d'); // confirmação de comando concluído
}
}
int status1 = 0, status2 = 0, status3 = 0, status4 = 0;
int done = 0;
while (done == 0 && ready == 1) {
status1 = servoParallelControl(desiredAngle.base, baseServo, desiredDelay);
status2 = servoParallelControl(desiredAngle.shoulder, shoulderServo, desiredDelay);
status3 = servoParallelControl(desiredAngle.elbow, elbowServo, desiredDelay);
status4 = servoParallelControl(desiredGrip, gripperServo, desiredDelay);
if (status1 == 1 && status2 == 1 && status3 == 1 && status4 == 1) {
done = 1;
}
}
}
int servoParallelControl(int thePos, Servo theServo, int theSpeed) {
int startPos = theServo.read();
int newPos = startPos;
if (startPos < (thePos - 5)) {
newPos = newPos + 1;
theServo.write(newPos);
delay(theSpeed);
return 0;
} else if (newPos > (thePos + 5)) {
newPos = newPos - 1;
theServo.write(newPos);
delay(theSpeed);
return 0;
} else {
return 1;
}
}
Esquemáticos
Diagrama de conexões do LittleArm com Arduino UNO e módulo HC-05 disponível na documentação.
Processo de manufatura
- Controle Remoto Universal Android com Arduino, 1Sheeld e IR
- Mealheiro Inteligente: Controlar Aceitador de Moedas com Arduino Nano
- Controle IoT Remoto de Braço Robótico Personalizado
- Robô Desviador de Obstáculos com Servo: Construa com Arduino e HC-SR04
- Controlar um LED via Bluetooth com Arduino – Guia DIY Simples
- Controlar Roomba Create 2 com Arduino e Android: Guia Passo a Passo
- Braço Robótico 6 GDL Controlado por Nunchuk com Arduino Mega
- Controle Dois Motores de Passo com Arduino Nano e Joystick – Tutorial Simples
- LittleArm 2C: Braço Robótico Arduino 3D-Printado Durável para Educação STEM
- ThimbleKrox: Controle de Mouse Dedo-Montado com Arduino Micro e MPU-6050