산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

전용 안드로이드 앱으로 아두이노 로봇팔 제어하기

부품 및 소모품

앱 및 온라인 서비스

프로젝트 소개

이 튜토리얼은 이 페이지의 자료를 기반으로 합니다.

리틀암은 전통적으로 윈도우와 리눅스에서 실행되는 무료 데스크톱 컴퓨터 애플리케이션으로 제어됩니다. 하지만 이는 리틀암이 컴퓨터에 연결되어 있어야 제어할 수 있다는 의미입니다. 마침내 리틀암용 앱을 완성하여 블루투스로 아두이노를 무선 제어할 수 있게 되었습니다.

이 앱으로 리틀암의 모든 자유도(DOF)를 제어할 수 있을 뿐만 아니라 명령 세트를 기록하고 재생할 수도 있습니다. 아두이노 코드는 기존 소프트웨어 패키지의 전통적인 코드에서 변경되지 않았습니다.

이 프로젝트용 리틀암 앱은 여기서 다운로드할 수 있습니다.

전용 안드로이드 앱으로 아두이노 로봇팔 제어하기

소스 코드

아두이노 코드

이 코드는 블루투스 또는 USB를 통해 데스크톱 또는 안드로이드 앱과 함께 사용할 수 있습니다.

#include  // 아두이노 라이브러리
#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("시작됨");
  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;
  int status2 = 0;
  int status3 = 0;
  int 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;
  }
}

회로도

전용 안드로이드 앱으로 아두이노 로봇팔 제어하기

제조공정

  1. 아두이노, 1Sheeld, IR 제어로 만능 안드로이드 리모컨 만들기
  2. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  3. 원격 IoT 제어 커스텀 로봇 팔: 아두이노 MKR1000과 심링크(Simulink) 활용
  4. 서보 모터 구동 장애물 회피 로봇: 아두이노 & HC-SR04로 제작하기
  5. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  6. 아두이노와 안드로이드로 룸바 크리에이트 2 제어하기: 단계별 가이드
  7. 아두이노 메가 기반 닌텐도 눙크 컨트롤 6자유도 로봇 암 키트
  8. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  9. LittleArm 2C: 3D 프린팅 아두이노 로봇 팔 – STEM 교육용 4자유도 로봇 암
  10. ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤