Arduino Roboterarm per Android-App & Bluetooth steuern
Komponenten und Materialien
| Bauteil | Menge |
|---|---|
| LittleArm Roboterarm | 1 |
| Arduino UNO | 1 |
| HC-05 Bluetooth-Modul | 1 |
| Android-Gerät | 1 |
| LittleArm Full Kit | 1 |
Apps und Online-Dienste
- Android
- Arduino IDE
Projektbeschreibung
Der LittleArm wurde traditionell per Desktop-App (Windows/Linux) gesteuert – Kabelverbindung nötig. Jetzt gibt es eine Android-App für kabellose Bluetooth-Steuerung.
Die App steuert alle Freiheitsgrade, kann Befehlsfolgen aufzeichnen und abspielen. Der Arduino-Code bleibt unverändert zur Desktop-Version.
App-Download: LittleArm Android App
Arduino-Code
#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'); // done
}
}
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++; theServo.write(newPos); delay(theSpeed); return 0;
} else if (newPos > (thePos + 5)) {
newPos--; theServo.write(newPos); delay(theSpeed); return 0;
} else return 1;
}
Schaltplan
Herstellungsprozess
- Universelle Android-Fernbedienung mit Arduino, 1Sheeld & IR-Steuerung
- Smartes Sparschwein: Münzprüfer mit Arduino Nano steuern
- Fernsteuerung eines Roboterarms per IoT: Eigenbau mit Arduino MKR1000
- Servogesteuerter Hindernisvermeidungs-Roboter: Bauen mit Arduino & HC-SR04
- LED per Bluetooth mit Arduino steuern – Einfache DIY-Anleitung
- Roomba Create 2 per Arduino & Android steuern – Schritt-für-Schritt
- Arduino-basierter 6-DoF Roboterarm mit Nunchuk-Steuerung
- Zwei Schrittmotoren mit Arduino Nano & Joystick steuern – Einfaches Tutorial
- LittleArm 2C: Robuster 3D-gedruckter Arduino-Roboterarm für STEM-Bildung
- ThimbleKrox: Fingermontierte Maussteuerung mit Arduino Micro & MPU-6050