Controla tu brazo robótico Arduino con app Android dedicada
Componentes y suministros
- Kit LittleArm (brazo robótico) × 1
- Arduino UNO × 1
- Módulo Bluetooth HC-05 × 1
- Dispositivo Android × 1
- LittleArm - Kit completo × 1
Aplicaciones y servicios
- App Android (LittleArm)
- Arduino IDE
Sobre el proyecto
El LittleArm se controlaba tradicionalmente desde una aplicación de escritorio (Windows/Linux) vía USB. Ahora existe una app Android que permite control inalámbrico por Bluetooth, manteniendo el mismo código Arduino.
La app permite controlar todos los grados de libertad, grabar secuencias de comandos y reproducirlas. El código Arduino es compatible tanto con la app de escritorio como la Android, vía Bluetooth o USB.
Código 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("started");
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');
}
}
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ático
Diagrama de conexiones: Arduino UNO + HC-05 (TX/RX a pines 0/1 o SoftwareSerial) + 4 servos en pines 9, 10, 11, 6.
Enlace a la app
App LittleArm para Android disponible en la página del proyecto.
Proceso de manufactura
- Mando universal Android con Arduino, 1Sheeld y control IR
- Alcancía Inteligente: Controla un Aceptador de Monedas con Arduino Nano
- Control Remoto IoT de Brazo Robótico Personalizado con Arduino MKR1000 y ThingSpeak
- Robot evasor de obstáculos con servo: Construcción con Arduino y HC-SR04
- Controla un LED por Bluetooth con Arduino – Guía DIY paso a paso
- Controla tu Roomba Create 2 con Arduino y Android: Guía Completa
- Brazo Robótico de 6 Grados de Libertad Controlado por Nunchuk con Arduino
- Controla Dos Motores Paso a Paso con Arduino Nano y Joystick - Tutorial Sencillo
- LittleArm 2C: Brazo Robot 3D Imprimible para Educación STEM con Arduino Nano
- ThimbleKrox: Control de ratón montado en el dedo con Arduino Micro y MPU-6050
- Sistema DIY de Control de Cucarachas con Arduino – Construcción por Menos de $30