Управление манипулятором LittleArm через Android-приложение по Bluetooth
Компоненты и материалы
| Название | Количество |
|---|---|
| Набор LittleArm (или 4 сервопривода + рама) | 1 |
| Arduino UNO | 1 |
| Bluetooth-модуль HC-05 | 1 |
| Android-смартфон/планшет | 1 |
Приложения и сервисы
- Приложение LittleArm для Android (скачивается со страницы проекта)
- Arduino IDE
О проекте
Ранее LittleArm управлялся только с ПК (Windows/Linux) по USB. Теперь появилось Android-приложение, позволяющее управлять всеми степенями свободы манипулятора по Bluetooth, записывать последовательности команд и воспроизводить их. Код Arduino не изменился — тот же, что и для десктопной версии.
Код (Arduino)
Скетч принимает по Serial (USB или Bluetooth) целевые углы для базы, плеча, локтя и захвата, а также задержку между кадрами. Сервоприводы двигаются плавно параллельно.
#include <Servo.h>
#include <math.h>
#define PI 3.141
Servo baseServo, shoulderServo, elbowServo, gripperServo;
struct JointAngle { int base, shoulder, elbow; };
JointAngle desiredAngle;
int desiredGrip, desiredDelay;
int servoSpeed = 15;
int ready = 0;
void setup() {
Serial.begin(9600);
baseServo.attach(9);
shoulderServo.attach(10);
elbowServo.attach(11);
gripperServo.attach(6);
Serial.setTimeout(50);
baseServo.write(90);
shoulderServo.write(150);
elbowServo.write(110);
Serial.println("started");
}
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'); // подтверждение
}
}
if (ready) {
int s1=0, s2=0, s3=0, s4=0, done=0;
while (!done) {
s1 = servoParallelControl(desiredAngle.base, baseServo, desiredDelay);
s2 = servoParallelControl(desiredAngle.shoulder, shoulderServo, desiredDelay);
s3 = servoParallelControl(desiredAngle.elbow, elbowServo, desiredDelay);
s4 = servoParallelControl(desiredGrip, gripperServo, desiredDelay);
if (s1 && s2 && s3 && s4) done = 1;
}
ready = 0;
}
}
int servoParallelControl(int target, Servo& sv, int speed) {
int cur = sv.read();
if (cur < target - 5) { sv.write(cur + 1); delay(speed); return 0; }
if (cur > target + 5) { sv.write(cur - 1); delay(speed); return 0; }
return 1;
}
Схема подключения
HC-05: VCC → 5V, GND → GND, TX → RX (D0), RX → TX (D1) через делитель напряжения. Сервоприводы: Base → D9, Shoulder → D10, Elbow → D11, Gripper → D6. Питание серв — отдельное 5-6 В / 2А.
Производственный процесс
- Универсальный Android-пульт на Arduino, 1Sheeld и ИК-управлении
- Умная копилка: управление монетоприёмником на Arduino Nano
- Удаленное IoT-управление самодельной манипулятором
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Управление светодиодом по Bluetooth с Arduino: простой DIY-гид
- Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
- LittleArm 2C: 3D-печатаемый робот-манипулятор на Arduino для STEM-обучения
- ThimbleKrox: управление мышью с пальца на Arduino Micro и MPU-6050