제조공정
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
초보자인 경우 다음 자습서를 읽는 것이 좋습니다.
<울>
1. 시연
2. 사용자 인터페이스
로봇 팔에는 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. 기하학적 계산
로봇 팔 계산을 다음 기하학 문제로 만들어 보겠습니다.
알려진
<울>계산
<울>단순화
<울>
6. 소스 코드
소스 코드는 두 개의 파일을 포함합니다:
<울>또한 이미지 파일 flywheel.png를 PHPoC Shield에 업로드해야 합니다.
초보자를 위한 최고의 Arduino 스타터 키트
Arduino 키트를 찾고 있다면 초보자를 위한 최고의 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개의 모터에 외부 전원을 공급해야 합니다.
제조공정
Arduino 자습서 시리즈의 네 번째 Arduino 자습서에 오신 것을 환영합니다. 이 튜토리얼에서는 PWM(Pulse Width Modulation)을 사용하여 DC 및 서보 모터를 제어하는 방법을 배웁니다. 이것은 따라하기 쉬운 단계별 비디오 자습서입니다. 또한 동영상 아래에서 이 튜토리얼에 필요한 부품과 동영상의 예제 소스 코드를 찾을 수 있습니다. 첫 번째 예에 필요한 구성요소 DC 모터 ........................................................... 또는 CPU 팬
이 튜토리얼에서는 어떤 방향으로든 움직일 수 있는 Arduino Mecanum Wheels 로봇을 만드는 방법을 배울 것입니다. 로봇의 이러한 독특한 이동성은 메카넘 휠(Mecanum Wheels)이라는 특수한 유형의 바퀴를 사용하여 이루어집니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다. 개요 저는 실제로 이 휠을 디자인하고 3D로 인쇄했습니다. 구매 비용이 조금 비쌀 수 있기 때문입니다. 그것들은 아주 잘 작동하고 나는 이 로봇 플랫폼을 운전하는 것이 매우 재미있다고 말해야 합니다. NRF24L01