DIY Arduino 및 Bluetooth 제어 로봇 팔을 만드는 방법?

최근 세기에 로봇 공학은 가장 새로운 연구 분야입니다. 로봇은 인간이하던 거의 모든 것을 제어했습니다. 우리 사회에서 다양한 업무를 수행하는 자율 로봇을 볼 수 있습니다. 다양한 작업을 수행하는 데 도움이되는 원격 제어 로봇도 있습니다. 공학 분야의 나노 회로 제작부터 의료 분야의 복잡한 수술에 이르기까지 로봇은 인간보다 더 신뢰할 수 있습니다.



로봇 팔

이 프로젝트에서는 Arduino 마이크로 컨트롤러에 의해 제어되는 Robotic Arm을 만들 것입니다. 그것은 안드로이드 원격 제어 앱의 도움으로 블루투스를 통해 제어됩니다.



Arduino를 사용하여 로봇 팔을 제어하는 ​​방법?

이제 우리 프로젝트의 개요를 알았습니다. 회로에 대한 더 많은 정보를 수집하고 Bluetooth 제어 로봇 팔을 만들고 Bluetooth를 통해 제어 해 보겠습니다.



1 단계 : 구성 요소 수집

프로젝트를 시작하는 가장 좋은 방법은 전체 구성 요소 목록을 만드는 것입니다. 이것은 프로젝트를 시작하는 지능적인 방법 일뿐만 아니라 프로젝트 중간에 많은 불편 함을 덜어줍니다. 이 프로젝트의 구성 요소 목록은 다음과 같습니다.



  • HC-05 무선 블루투스 직렬 트랜시버
  • 6V 어댑터
  • 점퍼 와이어
  • 브레드 보드

2 단계 : 구성 요소 연구

우리가 사용할 모든 구성 요소의 전체 목록이 있으므로 한 단계 더 나아가 모든 구성 요소에 대한 간략한 연구를 진행하겠습니다.

Arduino Nano 다른 회로에서 다양한 작업을 수행하는 마이크로 컨트롤러 보드입니다. 그것은 C 코드 이사회에 어떤 작업을 어떻게 수행해야하는지 알려줍니다. 13 개의 디지털 I / O 핀이있어 13 개의 다른 장치를 작동 할 수 있습니다. Arduino Nano는 Arduino Uno와 정확히 동일한 기능을 가지고 있지만 크기는 상당히 작습니다. Arduino Nano 보드의 마이크로 컨트롤러는 ATmega328p. 13 개 이상의 장치를 제어하려면 Arduino Mega를 사용하십시오.

Arduino Nano



HC-05 무선 블루투스 직렬 트랜시버 :이 프로젝트에서는 무선 통신이 필요하므로 블루투스 기술을 사용할 예정이며 사용할 모듈은 HC-05입니다. 이 모듈에는 여러 가지 프로그래밍 가능한 전송 속도가 있지만 기본 전송 속도는 9600bps입니다. 마스터 또는 슬레이브로 구성 할 수있는 반면 다른 모듈 HC-06은 슬레이브 모드에서만 작동 할 수 있습니다. 이 모듈에는 4 개의 핀이 있습니다. 하나는 VCC (5V) 용이고 나머지 3 개는 GND, TX 및 RX 용입니다. 이 모듈의 기본 비밀번호는 다음과 같습니다. 1234 또는 0000 . 두 개의 마이크로 컨트롤러간에 통신하거나 전화 또는 노트북과 같은 Bluetooth 기능이있는 장치와 통신하려는 경우 HC-05가이를 수행하는 데 도움이됩니다. 이 프로세스를 훨씬 쉽게 만들어주는 여러 Android 애플리케이션이 이미 있습니다.

HC-05 블루투스 모듈

전형적인 로봇 팔 여러 세그먼트로 구성되며 일반적으로 6 개의 관절이 있습니다. 컴퓨터에 의해 제어되는 최소 4 개의 스테퍼 모터가 포함되어 있습니다. 스테퍼 모터는 다른 DC 모터와 다릅니다. 정확한 증분으로 정확하게 이동합니다. 이 로봇 팔은 다양한 작업을 수행하는 데 사용됩니다. 원격 제어를 통해 수동으로 작동하거나 자율적으로 작동하도록 프로그래밍 할 수 있습니다.

로봇 팔.

3 단계 : 구성 요소 조립

이제 사용되는 모든 주요 구성 요소의 작동에 대해 알고 있습니다. 조립을 시작하고 원격 제어 로봇 팔을 만드는 회로를 만들어 보겠습니다.

  1. 브레드 보드에 Arduino Nano 보드를 부착합니다. Arduino는 어댑터의 양극 및 음극 와이어를 통해 전원이 공급됩니다.
  2. Bluetooth 모듈도 브레드 보드에 놓습니다. Arduino를 통해 Bluetooth 모듈의 전원을 켭니다. Bluetooth 모듈의 Tx 핀을 Arduino Nan 보드의 Rx 핀에 연결하고 Bluetooth 모듈의 Rx 핀을 Arduino Nano 보드의 Tx 핀에 연결합니다.
  3. 4 개의 스테퍼 모터가 있다는 것을 알고 있습니다. 각각에는 기술적 인 이름이 있습니다. 그들 불리는 팔꿈치 , 어깨 , 베이스,그리퍼 . 모든 모터의 Vcc 및 접지는 공통이며 6V 어댑터의 양극 및 음극에 연결됩니다. 4 개의 모터의 Signal 핀은 모두 Arduino Nano의 pin5, pin6, pin9, pin11에 연결됩니다.
  4. 연결이 다음 회로도를 따르는 지 확인하십시오.

    회로도

4 단계 : Arduino 시작하기

아두 이노 IDE에 익숙하지 않더라도 마이크로 컨트롤러 보드와 함께 아두 이노 IDE를 설정하고 사용하는 단계별 절차가 아래에 설명되어 있으므로 걱정하지 마십시오.

  1. 다음에서 Arduino IDE의 최신 버전을 다운로드하십시오. Arduino.
  2. Arduino Nano 보드를 노트북에 연결하고 제어판을 엽니 다. 그런 다음 하드웨어와 사운드 . 이제 장치 및 프린터. 여기에서 마이크로 컨트롤러 보드가 연결된 포트를 찾으십시오. 제 경우에는 COM14 하지만 컴퓨터마다 다릅니다.

    포트 찾기

  3. 도구 메뉴를 클릭하고 보드를 Arduino Nano 드롭 다운 메뉴에서.

    설정 보드

  4. 동일한 도구 메뉴에서 이전에 확인한 포트 번호로 포트를 설정합니다. 장치 및 프린터 .

    포트 설정

  5. 동일한 도구 메뉴에서 프로세서를 ATmega328P (이전 부트 로더).

    프로세서

  6. 서보 모터를 작동하는 코드를 작성하려면 서보 모터에 대한 여러 함수를 작성하는 데 도움이되는 특수 라이브러리가 필요합니다. 이 라이브러리는 아래 링크에서 코드와 함께 첨부됩니다. 라이브러리를 포함하려면 스케치> 라이브러리 포함> ZIP 추가. 도서관.

    라이브러리 포함

  7. 아래 첨부 된 코드를 다운로드하여 Arduino IDE에 붙여 넣으십시오. 클릭 업로드 버튼을 눌러 마이크로 컨트롤러 보드의 코드를 굽습니다.

    업로드

코드를 다운로드하려면 여기를 클릭하십시오.

5 단계 : 앱 다운로드

이제 전체 회로를 조립하고 마이크로 컨트롤러 보드에 코드를 업로드했습니다. 로봇 팔의 원격 제어로 작동 할 모바일 앱을 다운로드 할 수 있습니다. Google Play 스토어에서 무료 앱을 사용할 수 있습니다. 앱의 이름은 작은 팔 로봇 제어 . Bluetooth 연결을 설정하려면 모바일에서 Bluetooth를 켜십시오. 설정으로 이동하여 모바일을 HC-05 모듈과 페어링하십시오. 그런 다음 앱에서 Bluetooth 버튼을 누릅니다. 녹색으로 바뀌면 앱이 이제 연결되어 로봇 팔을 조작 할 준비가되었음을 의미합니다. 원하는대로 로봇 팔을 작동하도록 설정하는 슬라이더가 있습니다.

6 단계 : 코드 이해

코드는 잘 설명되어 있고 이해하기 쉽습니다. Bur 여전히 아래에 간략하게 설명되어 있습니다.

1. 처음에는 서보 모터를 작동하는 코드를 작성하기위한 라이브러리가 포함되어 있습니다. 다른 도서관 math.h 코드에서 다른 수학적 연산을 수행하기 위해 포함됩니다. 4 개의 서보 모터에 사용하기 위해 4 개의 오브젝트도 초기화됩니다.

#include // arduino 라이브러리 #include // 표준 c 라이브러리 #define PI 3.141 Servo baseServo; 서보 숄더 서보; 서보 팔꿈치 Servo; 서보 그리퍼 Servo; int 명령;

2. 그런 다음베이스, 숄더 및 엘보 서보 모터에 대한 값을 취하는 구조가 선언됩니다.

struct jointAngle {// 구조체 디클레어 링 int base; int 어깨; int 팔꿈치; };

3. 그 후, 서보 모터의 원하는 그립, 지연 및 위치를 저장하기 위해 일부 변수가 초기화됩니다. 속도는 15로 설정되고 구조물의 각도 값을 취하도록 물체가 만들어집니다.

int desiredGrip; int gripperPos; int desiredDelay; int servoSpeed ​​= 15; int 준비 = 0; struct jointAngle desiredAngle; // 서보의 원하는 각도

네. 무효 설정 () Arduino의 핀을 INPUT 또는 OUTPUT으로 설정하는 데 사용되는 기능입니다. 이 기능에서 우리는 모터의 핀이 Arduino의 어느 핀에 연결될 것인지 선언했습니다. 또한 Arduino가 너무 오랫동안 직렬 입력을 읽지 않도록합니다. 초기 위치 및 전송 속도도이 기능에서 설정됩니다. Baud Rate는 마이크로 컨트롤러 보드가 연결된 서보 및 Bluetooth 모듈과 통신하는 속도입니다.

void setup () {Serial.begin (9600); baseServo.attach (9); // 9 번 핀의 기본 서보를 서보 객체에 연결합니다. shoulderServo.attach (10); // 9 번 핀의 숄더 서보를 서보 객체에 연결합니다. elbowServo.attach (11); // 9 번 핀의 팔꿈치 서보를 서보 객체에 연결합니다. gripperServo.attach (6); // 9 번 핀의 그리퍼 서보를 서보 객체에 연결합니다. Serial.setTimeout (50); // arduino가 너무 긴 시간 동안 직렬을 읽지 않도록합니다. Serial.println ( 'started'); baseServo.write (90); // 서보의 초기 위치 shoulderServo.write (150); elbowServo.write (110); 준비 = 0; }

5. servoParallelControl () 로봇 팔의 현재 위치를 감지하여 모바일 앱을 통해 주어진 명령에 따라 이동시키는 기능입니다. 현재 위치가 실제 위치보다 작 으면 팔이 위로 이동하고 그 반대의 경우도 마찬가지입니다. 이 함수는 현재 위치의 값과 서보의 속도를 반환합니다.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // 현재 위치 읽기 int newPos = startPos; // int theSpeed ​​= 속도; // 명령과 관련하여 pos의 위치를 ​​정의합니다. // 현재 위치가 실제 위치보다 작 으면 위로 이동 if (startPos (thePos + 5)) {newPos = newPos-1; theServo.write (newPos); 지연 (theSpeed); 반환 0; } else {return 1; }}

6. 무효 루프 () 루프에서 반복적으로 실행되는 함수입니다. 이 함수는 직렬로 들어오는 데이터를 읽고 각 서보의 각도를 구조에 저장합니다. 처음에는 모든 서보의 상태가 0으로 설정됩니다. 여기에 기능 servoParallelControl () 호출되고 매개 변수가 전달됩니다. 이 함수는 값을 반환하고 상태 변수에 저장됩니다.

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}} // end of while}

자, 이것은 로봇 팔을 만드는 전체 절차였습니다. 코드를 굽고 앱을 다운로드 한 후 앱의 슬라이더를 움직이면 로봇이 완벽하게 작동합니다. 원하는 작업을 수행하기 위해 자율적으로 작동하도록 팔을 프로그래밍 할 수도 있습니다.