亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

通过专用 Android App 蓝牙控制 Arduino 机械臂

组件与物料

LittleArm 机械臂×1
Arduino UNO×1
HC-05 蓝牙模块×1
Android 设备×1
LittleArm 完整套件×1

应用与在线服务

Android
Arduino IDE

项目简介

本教程基于该页面资源。LittleArm 传统上使用在 Windows 和 Linux 上运行的免费桌面应用程序控制,这要求机械臂必须连接电脑。我们终于完成了 LittleArm 的 Android App,让你能通过蓝牙无线控制 Arduino。

App 可控制 LittleArm 的所有自由度,还能录制指令集并回放。Arduino 端代码与桌面版软件包中的传统代码一致。

LittleArm App 下载地址:[此处]

通过专用 Android App 蓝牙控制 Arduino 机械臂

代码

Arduino 代码

#include  // Arduino 库
#include   // 标准 C 库
#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);   // 舵机连接引脚 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') { // 最后一个字节为 'd' 则停止读取并执行命令,'d' 代表 'done'
      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;
  // 当前位置小于目标位置(含 5 度容差)则递增
  if (startPos < (thePos - 5)) {
    newPos = newPos + 1;
    theServo.write(newPos);
    delay(theSpeed);
    return 0;
  }
  // 当前位置大于目标位置(含 5 度容差)则递减
  else if (newPos > (thePos + 5)) {
    newPos = newPos - 1;
    theServo.write(newPos);
    delay(theSpeed);
    return 0;
  }
  else {
    return 1; // 已到达目标位置
  }
}

原理图

通过专用 Android App 蓝牙控制 Arduino 机械臂

制造工艺

  1. 基于 Arduino、1Sheeld 与红外控制的万能安卓遥控器
  2. 智能存钱罐:Arduino Nano 控制硬币识别器实现余额显示
  3. 基于 Arduino MKR1000 与 ThingSpeak 的远程 IoT 机械臂控制系统
  4. 舵机驱动避障机器人:基于 Arduino 与 HC-SR04 构建
  5. Arduino + HC-05 蓝牙控制 LED:MIT App Inventor 手机 App 开发全攻略
  6. Arduino + Android 蓝牙控制 Roomba Create 2 扫地机器人完整指南
  7. Arduino Mega 驱动 Wii Nunchuk 控制 6 自由度机械臂
  8. Arduino Nano + 摇杆控制双步进电机:Visuino 图形化教程
  9. LittleArm 2C:3D 打印 Arduino 机械臂 - STEM 教学专用,坚固易装
  10. ThimbleKrox:基于 Arduino Micro 与 MPU-6050 的指戴式鼠标控制器
  11. DIY Arduino 蟑螂控制系统 —— 30 美元以内自制指南
  12. Arduino 打造会说话的智能人形机器人「Mofiza」