1. 개요
어렵게 느껴지던 로봇암의 관절을 줄여 손쉽게 조립하고 제어할 수 있습니다.
서보를 3개 제어할 수 있는 모든 제어기를 사용할 수 있습니다. 제일 처음 아두이노 우노를 시작으로 마이크로 비트, 헥사보드, 코드위즈 등 다양한 보드를 이용해 보도록 하겠습니다.
기본 제어, 조이스틱 등 다양한 센서 모듈 제어, 인공지능 제어 등을 교육할 수 있습니다.
어렵게 느껴지던 로봇암의 관절을 줄여 손쉽게 조립하고 제어할 수 있습니다.
서보를 3개 제어할 수 있는 모든 제어기를 사용할 수 있습니다. 제일 처음 아두이노 우노를 시작으로 마이크로 비트, 헥사보드, 코드위즈 등 다양한 보드를 이용해 보도록 하겠습니다.
기본 제어, 조이스틱 등 다양한 센서 모듈 제어, 인공지능 제어 등을 교육할 수 있습니다.
1. 전선의 색상
케이블 색상에 대한 의미를 알고 있으면 조금 더 쉽게 입출력 장치를 연결할 수 있습니다.
2. 서보모터의 영점 (필수!!)
서보모터는 0~180도를 움직이며, 보통 90도를 영점이라고 합니다. 쉽게 말하면 움직일 수 있는 각도의 중심입니다. 처음 개봉하는 서보모터의 경우 대부분 90도이지만 아닌 경우도 제법 되기 때문에 조립하기 전 꼭 영점으로 정렬를 해 주어야 합니다. 다른 각도로 정렬하는 제품도 있으나 중요한 것은 조립 전 원하는 각도로 정렬 후 조립해야 된다는 것이지요. 아래처럼 Arduino IDE와 mBlock5 로 각도를 제어하는 프로그램 작성하여 우노 보드에 업로드 후 서보모터를 연결하여 각도를 정렬합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <Servo.h> Servo SV_1; void setup() { SV_1.attach(4); } void loop() { SV_1.write(90); } | cs |
3. 나사의 종류
조이스틱을 사용하지 않는 경우 조립하지 않아도 됩니다^^
[영상으로 보기]
1. 그리퍼 조립
서보를 기본 각도만 주어 이동하는 방법과 목표 각도까지 +1도씩 부드럽게 움직이는 방법을 알아봅니다.
웹캠을 활용하여 티처블머신으로 이미지 학습 후 P5를 이용하여 로봇암에 전달하여 분류 동작을 합니다.
기본 형식은 아래 사진과 같습니다.
티처블 머신은 계속하여 시리얼을 통해 분류 결과를 전송하기 때문에 전달되고 있는 데이터를 지우는 것이 포인트입니다.
조이스틱으로 로봇암을 조종합니다.
왼쪽 조이스틱 Y축 -> 몸체 좌우회전
Z축 -> 그리퍼 벌리기
오른쪽 조이스틱 X축 -> 로봇암 올리고 내리기
Z축 -> 그리퍼 닫기
동작 소스입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | // 조이스틱으로 공 옮기기 // 왼쪽 조이스틱 좌우를 움직이면 로봇암 몸체가 좌우로 // 오른 조이스틱 앞뒤로 움직이면 로봇암 팔이 앞뒤로 기울어짐 // 왼쪽 버튼 누르면 물건 놓기, 오른쪽 버튼 누르면 물건 잡기 #include <Servo.h> Servo grip; // 그리퍼서보 Servo arm; // 암 서보 Servo bottom; // 몸통 서보 int left_Y = A1; // 왼쪽 조이스틱 Y축(좌우) A1번핀 연결 int right_X = A2; // 오른쪽 조이스틱 X축(위아래) A2번핀 연결 int bottom_i = 90; // 몸통 회전 각도 int arm_i = 90; // 암 회전 각도 int left_B = 8; // 왼쪽 조이스틱 z축(누름) 디지털 8번핀 int right_B = 9; // 오른쪽 조이스틱 z축(누름) 디지털 9번핀 void setup() { Serial.begin(9600); pinMode(left_B, INPUT_PULLUP); //왼쪽 조이스틱 누름 인풋 풀업 pinMode(right_B, INPUT_PULLUP); //오른쪽 조이스틱 누름 인풋 풀업 bottom.attach(4); // 몸통 서보 디지털 4번핀 연결 arm.attach(5); // 암 서보 디지털 5번핀 연결 grip.attach(6); // 그리퍼 서보 디지털 6번핀 연결 // 서보모터 영점 및 각도는 업로드후 세부조정할 것 bottom.write(90); //<=방향 180 , =>방향 0 왼쪽 135,가운데 95, 오른쪽 55 arm.write(90); //팔 올리는 각도:90도, 내리는 각도:175도 grip.write(90); //집게 잡는 각도:90도, 놓는 각도:50도 } void loop() { //좌우로 이동 if (analogRead(left_Y) > 700) { bottom_i++; bottom.write(bottom_i); delay(10); if (bottom_i > 135) bottom_i = 135; } if (analogRead(left_Y) < 300) { bottom_i--; bottom.write(bottom_i); delay(10); if (bottom_i < 55) bottom_i = 55; } //앞뒤로 이동 if (analogRead(right_X) < 300) { arm_i++; arm.write(arm_i); delay(20); if (arm_i > 175) arm_i = 175; } if (analogRead(right_X) > 700) { arm_i--; arm.write(arm_i); delay(20); if (arm_i < 90) arm_i = 90; } //집게 if (digitalRead(right_B) == 0) { //잡기 grip.write(90); } if (digitalRead(left_B) == 0) { //놓기 grip.write(45); } } | cs |
허스키렌즈에 이미지 학습하여 물체를 분류할 수 있습니다.
아래 영상은 녹색공과 빨간색공을 학습하여 분류하는 영상입니다.
동작의 정확성을 위해 ID1,2는 빈 모습, 가져다 놓고 있는 모습(손가락이 보이는 모습)으로 하고 ID 3,4번을 각각 녹색, 빨강으로 하였습니다.
※ 허스키렌즈 사용법 보러가기 -> 링크 클릭!!
엠블록5는 아두이노 우노를 제어하는 블록형 코딩 중 가장 편리한 것 같습니다. 실시간 동작(라이브)와 업로드 2가지 모두 지원하고, 업로드 후에도 '업로드 모드 브로드 캐스트'라는 확장기능을 이용해 스프라이트와 소통할 수도 있습니다.
1. 장치 추가
Arduino Uno를 검색하여 장치를 추가합니다. ar만 검색해도 나옵니다^^.
2. 업로드 모드
그냥 사용하면 됩니다. 프로그램 작성 후 '업로드 모드'를 클릭하면 프로그램이 업로드 됩니다.
프로그램 작성 중에는 라이브로, 완성되면 업로드 모드로 하는 것을 권장드립니다. 프로그램 수정하는 중에 로봇암이 계속 움직이니까요^^;;
3. 라이브 모드
라이브로 제어하기 위해서는 엔트리처럼 연결 후 펌웨어를 업데이트 하면 됩니다. 단, 프로그램을 업로드를 한 뒤 다시 라이브를 이용하려면 또 다시 펌웨어를 업데이트 하면 됩니다.
업데이트 후 다시 연결합니다.
로봇암의 적당한 각도를 찾기 위해 프로그램을 계속 수정해야 하는 경우에 라이브모드로 하면 좋습니다.
라이브 모드는 컴퓨터와 계속 통신하며 동작을 하기 때문에 동작이 느려질 수도 있습니다.
당연히, 업로드 모드와 라이브 모드에 사용할 수 있는 이벤트 블록의 차이가 있습니다.
[ 기본 동작 해보기 ]
업로드 후 로봇암의 동작을 테스트하고 다시 다른 프로그램을 작성하는 동안 로봇암이 계속 움직이니, 프로그램은 라이브 모드로 짜 나가고, 완성되면 업로드를 하는 것도 좋은 방법입니다.
여기에서는 적당한 각도를 찾아 계속 값을 바꾸어 봐야 하니 펌웨어 업로드하여, '라이브 모드'로 진행합니다.
1. 서보모터 기본 동작
로봇팔의 각도(5번핀에 연결)를 40 → 90 → 140 → 90도로 움직이는 것을 반복합니다.
③ 그리퍼 각도 찾기
그리퍼가 물체를 너무 꽉 쥐면, 전류의 소모량이 많아져서 전력부족으로 리셋이 될 수도 있습니다. 적당히 살짝 잡는 각도를 찾아냅니다.
그리고 물체를 잘 놓을 수 있는 각도도 찾아봅니다. 그리퍼는 각도를 줄이면 잡고, 늘이면 벌립니다.
4. 가운데 물체를 왼쪽으로 이동시켜 보기
순서를 잘 생각하여 로봇암의 각도를 조절하여 가운데 물체를 왼쪽으로 이동시켜 봅니다.
서보모터가 너무 과격^^하게 움직이니 부드럽게 움직여 보도록 하겠습니다.
간단하게 원하는 각도에 도달할 때까지 1도씩 움직이게 하는 것입니다.
아래 변수명과 함수명에 한글을 사용했는데, 경험 상 한글을 쓰면 간혹 오류가 있습니다. 편의상 한글로 만들었으니 매뉴얼을 보시는 분은 영어도 편하면 영어로 만드세요~^^
1. 각각의 서보모터 각도의 변수 만들기
[ 함수를 만들어 사용해 보기 ]
각각 이동에 대한 내 블럭 생성합니다. 저는 '왼쪽, 가운데, 오른쪽, 올리기, 내리기, 잡기, 놓기' 로 만들어 봅니다.
새로 생성한 블록의 각도 값은 최초의 값이 설정되어 있지 않으니, 모든 '내 블록'의 동작 테스트는 아래 사진처럼 기본 프로그램에 추가하여 동작을 확인하여야 합니다.
1. 몸체
그리퍼는 굳이 부드럽게 움직일 필요는 없습니다. 그냥 각도만 정해줍니다.^^
4. 기본 동작 해보기
가운데 물체를 집어서 왼쪽으로 옮기고 다시 영점으로 돌아옵니다.
5. 응용
다양한 나만의 블럭을 만들어 봅니다.
예를 들어, 왼쪽으로 옮기고 돌아오기나 오른쪽으로 옮기고 돌아오기 등을 만들 수 있겠지요.
원하는 동작이 완성이 되면, 업로드 모드로 바꾸고, 이벤트 블록을 '아두이노 우노가 켜지면' 으로 바꾼 뒤 업로드를 해봅니다.
업로드하여 동작하는 것이 조금 더 원활하게 되는 것을 볼 수 있습니다.
[ 확장 추가 ]
1. 장치에서 확장을 클릭하여 INPUT_PULLUP 을 추가하여 줍니다.
엔트리 하드웨어 연결 프로그램을 실행한 후 "아두이노"를 검색하여 "아두이노 확장 쉴드" 를 선택합니다.
아두이노 우노 호환보드 SMD 타입 사용 시 드 CH340 드라이버를 설치합니다.
펌웨어도 업로드 합니다.