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

Arduino - 웹을 통한 제어 팔 로봇

구성품 및 소모품

Arduino UNO
× 1
Arduino용 PHPoC WiFi 실드
× 1
6DOF 암 로봇
× 1

이 프로젝트 정보

초보자인 경우 다음 자습서를 읽는 것이 좋습니다.

<울>
  • Arduino - 모터
  • Arduino - 서보 모터
  • 아두이노 - 와이파이
  • 1. 시연

    2. 사용자 인터페이스

    로봇 팔에는 6개의 모터가 있습니다.

    <울>
  • 영역 A:모터 2, 3, 4 제어(손 관절 3개 제어)
  • 영역 B:제어 모터 1(제어 베이스)
  • 영역 C:제어 모터 5(그리퍼 회전 제어)
  • 영역 D:제어 모터 6(제어 그리퍼)
  • 3. 시스템 아키텍처

    4. 작업 흐름

    클라이언트 측 (웹 사용자 인터페이스 - JavaScript + HTML + CSS로 작성)

    사용자가 손가락을 터치하거나 쓸어넘길 때(또는 마우스를 클릭하거나 움직일 때) 좌표(x, y)를 얻을 수 있습니다. 작업 흐름은 다음과 같습니다.

    Zone A의 경우 모터 2, 3, 4의 각도를 계산하려면 기하학적 계산을 해야 합니다. . 이 페이지 끝에서 참조할 수 있습니다.

    서버측 (Arduino 코드):

    클라이언트로부터 일련의 각도를 수신하면 6개의 모터가 현재 각도에서 새로운 각도로 점진적으로 이동합니다. 6개의 모터가 동시에 움직여 새로운 각도에 도달해야 합니다. 모든 모터를 제어하는 ​​방법에 대해 자세히 설명하기 전에 단일 모터를 제어하는 ​​방법을 살펴보겠습니다. 모터를 현재 각도(각도)에서 새 각도(new_angle)로 이동하려고 한다고 가정합니다. 모터의 속도가 빠르기 때문에 속도를 줄여야 합니다. 그렇게 하려면 모터가 새로운 각도에 도달할 때까지 다음 두 단계를 반복합니다.

    <울>
  • 작은 걸음으로 모터를 움직입니다.
  • 잠시 멈췄다가 다른 단계로 이동합니다.
  • 다음 다이어그램은 새 각도가 현재 각도보다 큰 경우 위의 방식을 보여줍니다.

    wherestep_num은 모터가 거쳐야 하는 단계 수입니다. 단계 및 시간 은 사전 정의된 값입니다. 속도와 부드러움은 나중에 두 가지가 결정합니다. 위의 내용은 하나의 로봇에만 해당됩니다. 로봇이 움직이기 시작하고 동시에 목적지에 도달하게 하려면 다음과 같이 하면 됩니다. 6개의 모터가 동일한 step_num을 사용합니다. 하지만 단계 각각의 모터는 서로 다릅니다. 따라서 step_num을 선택해야 합니다. 이 프로젝트에서 최대입니다.

    일반적으로 Arduino의 작업 흐름은 다음과 같습니다.

    5. 기하학적 계산

    로봇 팔 계산을 다음 기하학 문제로 만들어 보겠습니다.

    알려진

    <울>
  • C 고정
  • 알려진 점 - D는 사용자의 입력입니다.
  • 기점 - CB, BA, AD(각각 b, a, d로 표시)
  • 각 팔 부분의 길이 찾기: 각도 C, B, A 해결책:
  • 각 B와 A가 같다고 가정
  • 포인트 및 세그먼트 추가
  • 계산

    <울>
  • 우리는 점 C와 D를 알고 있었습니다 => 우리는 DC의 길이를 계산할 수 있습니다(c로 표시됨)
  • δ를 계산할 수도 있습니다.
  • 삼각형 ABE를 보면 AE =BE 및 ∠E =π - 2α임을 추론할 수 있습니다.
  • 그래서:
  • <울>
  • 삼각형 CDE의 코사인 법칙:
  • <울>
  • (1)과 (2)를 (3)으로 바꾸면:
  • 단순화

    <울>
  • 위를 단순화:
  • <울>
  • , b, c, d를 알고 있으므로 위의 2차 방정식을 풀면 α 값을 계산할 수 있습니다. - 그리고 β =π – α - 지금까지 우리는 β를 찾았습니다. γ - 삼각형 BDC와 BDA의 코사인 법칙:
  • <울>
  • 이 방정식을 풀면 γ를 계산할 수 있습니다.
  • 따라서 필요한 각도는 (δ+γ), β 및 β입니다. 이것은 각각 모터 2, 3, 4의 각도입니다.
  • 6. 소스 코드

    소스 코드는 두 개의 파일을 포함합니다:

    <울>
  • RobotArmWeb.ino :아두이노 코드
  • Remote_arm.php :PHPoC WiFi Shield 또는 PHPoC Shield에 업로드되는 웹 앱 코드입니다. (이 문서의 지침을 참조하십시오.)
  • 또한 이미지 파일 flywheel.png를 PHPoC Shield에 업로드해야 합니다.

    초보자를 위한 최고의 Arduino 스타터 키트

    Arduino 키트를 찾고 있다면 초보자를 위한 최고의 Arduino 키트를 참조하십시오.


    함수 참조

    <울>
  • Arduino - 서보 라이브러리
  • Servo.attach()
  • 서보.write()
  • Servo.writeMicroseconds()
  • 서보.read()
  • Servo.attached()
  • 서보.분리()
  • Serial.begin()
  • Serial.println()
  • <섹션 클래스="섹션 컨테이너 섹션 축소 가능" id="코드">

    코드

    <울>
  • 로봇암웹
  • remote_arm.php
  • RobotArmWebArduino
    이것은 Arduino 코드
    #include #include int angle_init[] ={90, 101, 165, 153, 90, 120}입니다. // 모터가 똑바로 서 있을 때. 웹에서 모터가 똑바로 서 있을 때의 각도는 {0, 90, 130, 180, 0, 0};int angle_offset[] ={0, 11, -15, -27, 0, 137}; // 실제 서보 모터와 webint의 각도 사이의 오프셋 cur_angles[] ={90, 101, 165, 153, 90, 120}; // 6개 모터의 현재 각도(도) int dest_angles[] ={0, 0, 0, 0, 0, 0}; // 목적지 anglesint angle_max[] ={180, 180, 160, 120, 180, 137};int angle_min[] ={ 0, 0, 0, 20, 0, 75};int direction[] ={1, 1 , 1, 1, 1,-1};int angleSteps[] ={3, 2, 2, 2, 4, 4}; // 각 모터의 이동 단계(각도)서보 서보1;서보 서보2;서보 서보3;서보 서보4;서보 서보5;서보 서보6;서보 서보[6] ={서보1,서보2,서보3,서보4,서보5,서보6};PhpocServer 서버 (80); PhpocClient 클라이언트; int stepNum =0; 무효 setup(){ Serial.begin(9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("원격_암"); 서보1.attach(2); // 핀 2의 서보를 서보 객체에 연결합니다. servo2.attach(3); // 3번 핀의 서보를 서보 객체에 연결합니다. servo3.attach(4); // 4번 핀의 서보를 서보 객체에 연결합니다. servo4.attach(5); // 5번 핀의 서보를 서보 객체에 연결합니다. servo5.attach(6); // 6번 핀의 서보를 서보 객체에 연결합니다. servo6.attach(7); // 7번 핀의 서보를 서보 객체에 연결합니다. for(int i =0; i <6; i++) servo[i].write(angle_init[i]);}void loop() { PhpocClient client =server.available (); if(클라이언트) { 문자열 angleStr =client.readLine(); if(angleStr) { 직렬.println(angleStr); 정수 쉼표 위치1 =-1; 정수 쉼표Pos2; for(int i =0, i <5, i++) { commaPos2 =angleStr.indexOf(',', commaPos1 + 1); int 각도 =angleStr.substring(commaPos1 + 1, commaPos2).toInt(); dest_angles[i] =각도 * 방향[i] + angle_offset[i]; 쉼표 위치 1 =쉼표 위치 2; } int angle5 =angleStr.substring(commaPos1 + 1).toInt(); dest_angles[5] =angle5 * 방향[5] + angle_offset[5]; 단계 번호 =0; // 모터가 갑자기 움직이지 않도록 모터가 부드럽게 움직이도록 여러 작은 단계로 모터를 움직입니다. 아래는 for(int i =0; i <6; i++) { int dif =abs(cur_angles[i] - dest_angles[i]); int 단계 =dif / angleSteps[i]; if(stepNum <단계) stepNum =단계; } } } // 모터를 단계적으로 이동 if(stepNum> 0) { for(int i =0; i <6; i++) { int angleStepMove =(dest_angles[i] - cur_angles[i]) / stepNum; cur_angles[i] +=angleStepMove; if(cur_angles[i]> angle_max[i]) cur_angles[i] =angle_max[i]; else if(cur_angles[i]  
    remote_arm.phpPHP
    이 코드는 웹 앱입니다.
    Arduino - Arm Robot - Web<스타일>본문 { 텍스트 정렬:가운데; }캔버스 { 배경색:#FFFFFF; }

    Arduino - 웹을 통한 제어 팔 로봇

    웹소켓:null

    회로도

    6개의 모터에 외부 전원을 공급해야 합니다.

    제조공정

    1. 간단한 파이 로봇
    2. Arduino 제어 센터
    3. IoT를 사용하여 로봇 팔 원격 제어
    4. 서보 모터로 로봇을 피하는 장애물
    5. 라인 팔로워 로봇
    6. Arduino 가습기 제어
    7. Arduino - 직렬을 통해 웹에 온도 보내기
    8. Littlearm 2C:3D 인쇄 Arduino 로봇 팔 제작
    9. 자율 홈 어시스턴트 로봇
    10. 멋진 실내 내비게이션용 로봇